The meta-elisa layer is an extension set for the Yocto-based AGL (Automotive Grade Linux) Linux Distribution. It supports the addition of software packages for safety critical systems to the AGL distribution.
This repo should contain the Automotive Work Group cluster display demo and extend it with dummy safety functionality. Currently it just contains the configuration and build information for the demo and links to a dummy safety app. The source for the dummy safety functionality can be found in the safety app repo.
Both the ELISA Automotive and Safety Architecture Work Groups maintain the meta-elisa layer.
NOTE: Following the agl installation instructions' terminology (see below),
the build environment will be installed in the current AGL_RELEASE directory of new workspace named AGL_TOP.
That is, in
~/whatever/AGL_TOP/AGL_RELEASE.
Currently, that would be
~/whatever/AGL_TOP/needlefish.
The working directory for a command will be denoted with an
AGL_RELEASE/working_directory>
prompt.
-
Start with a stable supported Linux distribution. Consider creating a stable environment with a chroot or virtualisation solution if the Linux distribution being used is a rolling release version. Ensure the packages required for your distribution have been installed (reference yocto's build host requirements page). Depending on the distribution, the following packages may also have to be installed: curl, python-is-python3, tree
-
The AGL gerrit site requires a git user name and e-mail address. Should they not be set, execute the following commands.
AGL_RELEASE> git config --global user.name "Firstname Lastname" AGL_RELEASE> git config --global user.email "YourId@YourEmailProvider"
Configure the build tools and install the source according to the AGL instructions.
-
Clone meta-elisa into the workspace. Note that the meta-elisa.git must be cloned from a forked GitHub repo, not the ELISA meta-elisa (this) repo, in order to issue pull requests to the ELISA meta-elisa. Refer to this GitHub Workflow Summary for details.
AGL_RELEASE> git clone https://github.com/elisa-tech/meta-elisa.git
-
For building and rebuilding, the shell enviroment must be set.
AGL_RELEASE> source meta-agl/scripts/aglsetup.sh -f elisa-cluster-demo
-
[Optional, but recommended] Configure the build to utilize ELISA's sstate mirror for prebuild packages.
AGL_RELEASE/build> echo 'SSTATE_MIRRORS += "file://.* https://elisa-builder-00.iol.unh.edu/sstate/needlefish/PATH"' >> config/local.conf
Using the sstate can reduce the build time considerably.
-
Build the elisa-cluster-demo-platform target.
AGL_RELEASE/build> bitbake elisa-cluster-demo-platform (to generate the image)
Be advised, building for the first time takes 10-20 hours depending on the machine, rebuilding around 10 minutes. In either case 100-150 GB of disc space are required.
-
To run the demo with QEMU: Refer to the AGL instruction to install the distribution's qemu package and set the runtime envrironment.
Contrary to those instructions, the demo uses the following shell command rather than calling runqemu: Note that simulated hardware watchdog i6300 must be activated for the demo to work properly:
AGL_RELEASE> qemu-system-x86_64 -snapshot -device virtio-net-pci,netdev=net0,mac=52:54:00:12:35:02 \ -device i6300esb \ -netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::2323-:23 \ -drive file=./build/tmp/deploy/images/qemux86-64/elisa-cluster-demo-platform-qemux86-64.ext4,if=virtio,format=raw \ -usb -device usb-tablet -device virtio-rng-pci -vga virtio -soundhw hda \ -machine q35 -cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt -enable-kvm -m 4096 -smp 4 -m 2048 \ -serial mon:stdio -serial null -kernel ./build/tmp/deploy/images/qemux86-64/bzImage \ -append 'root=/dev/vda rw console=ttyS0 mem=4096M ip=dhcp oprofile.timer=1 console=ttyS0,115200n8 quiet '
-
Interacting with the Demo: The demo offers an interface via a named pipe to trigger safe state from within the safety signal source, or corrupt the communication between signal source and safety app to test the mechanisms. Alternatively to writing to the pipe directly, an ncurses based control panel can be used as more convenient alternative. To access the control panel, log into the running QEMU instance as user "root" (no password needed) and start the control panel application
Signalsource-control-panel
Consider to use the prepared docker file and included scripts to simplify the build and handling of buid environment. The necessary steps are documented in wg-automotive Docker_container readme.
There is a Troubleshooting wiki page in this repo listing known warnings and potential hurdles when interacting with the demo. The provided information enhances the documentation. As it will not impact majority of users, they are listed there outside of the formal meta-elisa repo. If you face any issue or bug not listed there, consider to create a new issue.
If you are interested in what ELISA does, please join the appropriate General or Work Group mailing lists.
To contribute to meta-elisa, please send GitHub pull requests to this repository or the Automotive Work Group safety app repository, as appropriate.
Name | GitHub |
---|---|
Jochen Kall | https://github.com/Jochen-Kall |
Gabriele Paoloni | https://github.com/gabpaoloni |
Naoto Yamaguchi | https://github.com/AGLExport |