As detailed in Concepts used throughout this documentation, JeVois software can be compiled and installed simultaneously for a desktop computer (host mode, typically using an Intel computer for rapid development and testing of new machine vision algorithms, and for the JeVois platform hardware (platform mode, where everything is cross-compiled for the ARM processor inside JeVois).
An additional factor is that the microSD for JeVois may not be available at the time the various elements (Linux kernel, Linux operating system and utilities, OpenCV and other libraries, JeVois core, JeVois modules, etc) are compiled. Thus, compiling and installing in platform mode will make use of some so-called staging areas, which are some directories on the host computers where the various bits and pieces will be assembled so that they can later be flashed to microSD.
Organization overview
- On the platform, all modules and config files get installed into a dedicated VFAT partition:
- JeVois-A33: /jevois (which can be exported by JeVois as a virtual USB drive).
- JeVois-Pro: /jevoispro
- Executables, core libraries and include files get installed into /usr/bin, /usr/lib, /usr/include, etc as usual.
- Hence, on host, we also install all modules and config files into /jevois or /jevoispro (this is mainly to avoid surprises with different paths on host and platform and troubleshooting why a module that worked great in host mode cannot find its data files when running on platform).
- Likewise, we also install executables, libraries and include files natively compiled for host into /usr/bin, /usr/lib, /usr/include, etc as usual.
- JeVois-A33: Further, bootloaders, boot config files, and compiled operating system for the JeVois platform are placed into a first staging directory /var/lib/jevois-build, which is dedicated to all files that will end up into the LINUX and BOOT partitions on the microSD.
- JeVois-A33: Cross-compiled machine vision modules, libraries, and config files for the platform are placed into a second staging directory /var/lib/jevois-microsd, which is dedicated to all files that will end up into the JEVOIS partition on the microSD.
- JeVois-A33: Final microSD flashing script jevois-flash-card combines the contents of /var/lib/jevois-build and /var/lib/jevois-microsd into the final microSD card.
- JeVois-Pro: The operating system for the camera, cross-compiled libraries, etc are in /usr/share/jevoispro-sdk
JeVois-A33 Organization details
- When compiling and installing jevois for host (using
./rebuild-host.sh
inside jevois; see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are installed into /jevois/config/
- Executables including
jevois-daemon
are installed into /usr/bin/
- Include files (needed when compiling modules for host) are installed into /usr/include/jevois/
- The core JeVois library (libjevois.so) is installed into /usr/lib/
- Documentation files are installed into /usr/share/doc/jevois-host/
- Try a
dpkg -c jevois-host-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling and installing jevois for platform (using
./rebuild-platform.sh
inside jevois; see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are staged into /var/lib/jevois-microsd/config/ and will be installed into /jevois/config/ on the actual microSD card.
- Executables including
jevois-daemon
are staged into /var/lib/jevois-build/usr/bin/ and will be installed into /usr/bin/ on the actual microSD card.
- Include files are staged into /var/lib/jevois-build/usr/include/jevois/ and will be installed into /usr/include/jevois/ on the actual microSD card.
- The core JeVois library (libjevois.so) is staged into /var/lib/jevois-build/usr/lib/ and will be installed into /usr/lib/ on the actual microSD card.
- Documentation files are staged into /var/lib/jevois-build/usr/share/doc/jevois-platform/ and will be installed into /usr/share/doc/jevois-platform/ on the actual microSD card.
- Try a
dpkg -c jevois-platform-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When compiling and installing jevoisbase (or, similarly, samplemodule or your own module) for host (using
./rebuild-host.sh
inside jevoisbase (or your module's source tree); see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are installed into /jevois/config/
- Machine vision modules are installed into /jevois/modules/
- Executables (if any) are installed into /usr/bin/
- Include files (possibly needed when compiling further modules for host) are installed into /usr/include/jevoisbase/
- Libraries (if any) is installed into /usr/lib/
- Documentation files are installed into /usr/share/doc/jevoisbase-host/
- Try a
dpkg -c jevoisbase-host-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling and installing jevoisbase (or, similarly, samplemodule or your own module) for platform (using
./rebuild-platform.sh
inside jevoisbase (or your module's source tree); see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are staged into /var/lib/jevois-microsd/config/ and will be installed into /jevois/config/ on the actual microSD card.
- Machine vision modules are staged into /var/lib/jevois-microsd/modules/ and will be installed into /jevois/modules/ on the actual microSD card.
- Executables (if any) are staged into /var/lib/jevois-build/usr/bin/ and will be installed into /usr/bin/ on the actual microSD card.
- Include files are staged into /var/lib/jevois-build/usr/include/jevoisbase/ and will be installed into /usr/include/jevoisbase/ on the actual microSD card.
- Libraries (if any) (e.g., libjevoisbase.so) are staged into /var/lib/jevois-microsd/lib/ and will be installed into /jevois/lib/ on the actual microSD card. Note the deviation here compared to host; this is so that, on host, the libraries can be loaded easily without requiring special fiddling with library paths, while, on platform, it is desirable to have them in /jevois/ so that they can be upgraded by exporting the JEVOIS partition over USB while JeVois is running.
- Documentation files are staged into /var/lib/jevois-build/usr/share/doc/jevoisbase-platform/ and will be installed into /usr/share/doc/jevoisbase-platform/ on the actual microSD card.
- Try a
dpkg -c jevoisbase-platform-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- OpenCV is installed into /usr/share/jevois-opencv-VERSION/ on host and into /usr/bin/, /usr/lib/, /usr/include/, etc on platform. Here again there is a difference between host and platform, which is due to the desire of not being too obtrusive on the host, as more and more other software packages tend to rely on the standard Ubuntu-provided OpenCV packages, even though those may not be appropriate for JeVois (e.g., older OpenCV version, possibly no contribs, possibly no Python or different Python version, etc)
- The jevois-sdk Ubuntu package provides the following files needed to create a JeVois microSD card, which are some of the results of running the complex full rebuild from source in jevois-sdk:
/usr/bin/jevois-flash-card
script to flash microSD cards for JeVois.
- Bootloader files, Linux operating system for platform, etc in /var/lib/jevois-build/boot/
- Try a
dpkg -c jevois-sdk-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- The jevois-sdk-dev Ubuntu package provides the following additional files needed for further development (e.g., cross-compiled OpenCV libraries, cross-compiled boost, cross-compilers, etc), which are some of the results of running the complex full rebuild from source in jevois-sdk:
- Pre-compiled whole buildroot tree in /usr/share/jevois-sdk/out/
JeVois-Pro Organization details
Things can be a bit confusing here as we have three different builds:
rebuild-pro-host.sh
: compiles for host (Intel/AMD amd64 processor) and creates a package to be installed on host (amd64). Use this to compile JeVois software that you will run on your host computer, which is very useful while developing new machine vision modules (no need to copy files to the camera to test them, just use your desktop).
rebuild-pro-platform.sh
: cross-compiles for platform (ARM arm64) and creates a support package to be installed on host (amd64). This package contains arm64 files placed in staging directories so that we can access them from the host, which is why we call it a support package: it supports cross-compiling dependent software for the JeVois platform. This is needed so that you can later cross-compile your own machine vision modules for platform, as these will link against the core JeVois libraries cross-compiled for platform.
rebuild-pro-platform-pdeb.sh
: cross-compiles for platform (ARM arm64) and creates a native package to be installed on platform (arm64). This is what we use to deploy JeVois software to the camera. We create arm64 packages, and then we install those on the camera.
With this in mind:
- When compiling and installing jevois for host (using
./rebuild-pro-host.sh
inside jevois; see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are installed into /jevoispro/config/
- Executables including
jevoispro-daemon
are installed into /usr/bin/
- Include files (needed when compiling modules for host) are installed into /usr/include/jevois/
- The core JeVois library (libjevoispro.so) is installed into /usr/lib/
- Documentation files are installed into /usr/share/doc/jevoispro-host/
- Try a
dpkg -c jevoispro-host-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling and installing jevois for platform as a support package to be installed on host (using
./rebuild-pro-platform.sh
inside jevois; see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are staged into /var/lib/jevoispro-microsd/config/
- Executables including
jevoispro-daemon
are staged into /var/lib/jevoispro-build/usr/bin/
- Include files are staged into /var/lib/jevoispro-build/usr/include/jevois/ and will be used when you cross-compile your own machine vision modules.
- The core JeVois library (libjevoispro.so) is staged into /var/lib/jevoispro-build/usr/lib/ and will be used when you cross-compile your own machine vision modules.
- Documentation files are staged into /var/lib/jevoispro-build/usr/share/doc/jevois-platform/
- Try a
dpkg -c jevoispro-platform-VERSION_amd64.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling jevois for platform as a native platform (arm64) package (using
./rebuild-pro-platform-pdeb.sh
inside jevois; see Compiling JeVois core software from source):
- You will create a deb package for arm64 (64-bit ARM) with the same file locations as used on host.
- This package should be installed on the JeVois-Pro platform using dpkg while logged on the platform.
- Try a
dpkg -c jevoispro-platform-VERSION_arm64.deb
on the deb downloaded from https://jevois.usc.edu to confirm all file locations.
- When compiling and installing jevoisbase (or, similarly, samplemodule or your own module) for host (using
./rebuild-pro-host.sh
inside jevoisbase (or your module's source tree); see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are installed into /jevoispro/config/
- Machine vision modules are installed into /jevoispro/modules/
- Executables (if any) are installed into /usr/bin/
- Include files (possibly needed when compiling further modules for host) are installed into /usr/include/jevoisbase/
- Libraries (if any) is installed into /usr/lib/
- Documentation files are installed into /usr/share/doc/jevoisprobase-host/
- Try a
dpkg -c jevoisprobase-host-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling and installing jevoisbase for platform (or, similarly, samplemodule or your own module) as a support package to be installed on host (using
./rebuild-pro-platform.sh
inside jevoisbase (or your module's source tree); see Compiling JeVois core software from source):
- Config files used by JeVois at runtime are staged into /var/lib/jevoispro-microsd/config/
- Machine vision modules are staged into /var/lib/jevoispro-microsd/modules/
- Executables (if any) are staged into /var/lib/jevoispro-build/usr/bin/
- Include files are staged into /var/lib/jevoispro-build/usr/include/jevoisbase/
- Libraries (if any) (e.g., libjevoisprobase.so) are staged into /var/lib/jevoispro-microsd/lib/ and will be used when cross-compiling your own modules.
- Documentation files are staged into /var/lib/jevoispro-build/usr/share/doc/jevoisbase-platform/
- Try a
dpkg -c jevoisprobase-platform-VERSION_amd64.deb
on the deb downloaded from https://jevois.usc.edu to confirm.
- When cross-compiling jevoisbase as a native platform (arm64) package (or, similarly, samplemodule or your own module) for platform (using
./rebuild-pro-platform-pdeb.sh
inside jevoisbase (or your module's source tree); see Compiling JeVois core software from source):
- You will create a deb package for arm64 (64-bit ARM) with the same file locations as for host.
- This package should be installed on the JeVois-Pro platform using dpkg while logged on the platform.
- Try a
dpkg -c jevoisprobase-platform-VERSION_arm64.deb
on the deb downloaded from https://jevois.usc.edu to confirm all file locations.
- OpenCV and OpenVino are installed into /usr/share/jevoispro-opencv-VERSION/ and /usr/share/jevoispro-openvino-VERSION/ on host and platform, to avoid possible conflicts with other OpenCV and OpenVino installations you may already have.
- The jevoispro-sdk-dev Ubuntu package for host provides the following files needed to cross-compile JeVois software:
- /usr/share/jevoispro-sdk/jevoispro-sysroot contains a sanitized version of the whole operating system that runs on JeVois-Pro. It is sanitized in terms of having all symbolic links converted to relative locations within the jevoispro-sysroot directory, as opposed to having some absolute symlinks in a standard Linux operating system (those absolute links would end up pointing to libraries and other files in your root filesystem, which is for Intel AMD64, as opposed to the needed ARM64 libraries and files).
- Try a
dpkg -c jevoispro-sdk-dev-VERSION.deb
on the deb downloaded from https://jevois.usc.edu to confirm.