Build the firmware for Elphel 10393 series camera systems from scratch.
Prebuilt releases can be found here.
- Update Linux Kernel when developing a driver
- Include application to the default firmware package
- Update Elphel's PHP extension
- C/C++ applications if developed on PC require a cross-compiler and require Yocto installation or some other alternative.
- Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board
- Yocto Poky revision = 2.7.1 (Warrior) - builds in Kubuntu 20.04. Older OSes are not supported. Roll back to get built in 16.04.
Yocto Poky revision = 2.4 (Rocko) - builds in Kubuntu 16.04. Won't build in 18.04 or 20.04.
Yocto Poky revision = 2.0 (Jethro)
- Environment is set up with a single script
- All Elphel projects are configured for Eclipse IDE:
- fpga projects (verilog)
- applications projects
- All steps for fpga projects are run from Eclipse IDE
- Once everything is built it supports updating software projects (files and binaries) on the target system
- access is set up in yocto's local.conf (see setup.py output) + ssh-copy-id
- bitbake some-app -c target_scp from the command line or Eclipse IDE - see examples in elphel-apps-... at Git
- Kubuntu 20.04 x64
Kubuntu 18.04 x64 (as of Dec 2018) - Poky: 2.7.1 Warrior (not tested but might build w/o problems)
Kubuntu 16.04 x64 (as of Dec 2018) - Poky: 2.4 Rocko, 2.7.1 Warrior
The names are listed as they appear in the u-boot configuration header file - actual output files have different names:
|boot.bin||bitbake u-boot||u-boot as the first stage bootloader = Secondary Program Loader (SPL) that boots u-boot-dtb.img|
|u-boot-dtb.img||bitbake u-boot||full size u-boot with a stripped device tree (cat u-boot.img some_stripped_devicetree.dtb > u-boot-dtb.img)|
|devicetree.dtb||bitbake device-tree|| device tree with listed interfaces, zynq registers, interrupts and drivers
|uImage||bitbake linux-xlnx||kernel, drivers|
|rootfs.ubifs, rootfs.ubi, rootfs.tar.gz||bitbake core-image-elphel393||rootfs in different formats - *.ubi* for NAND, *.tar.gz for mmc|
The file are located at elphel393/bootable-images/, which is a link to poky's deploy directory elphel393/poky/build/tmp/deploy/images/elphel393/
- complete set of files for rootfs in NAND Flash: elphel393/bootable-images/nand/
- complete set of files for rootfs on MMC (micro SD card): elphel393/bootable-images/mmc/
Write files to media and boot
Boot from micro SD card
- Use recovery or regular μSD card
- EXT4 partition mounted as /
Boot from NAND flash
- The default boot option - power on.
- A UBIFS image is written to /dev/mtd4 - is mounted as /
- Read more about boot options.
- Poky 2.7.1 Warrior (Kubuntu 20.04)
git clone -b warrior https://git.elphel.com/Elphel/elphel393.git cd elphel393 ./setup.py cd poky . ./oe-init-build-env bitbake u-boot device-tree linux-xlnx core-image-elphel393
Poky 2.4 Rocko (Kubuntu 16.04)
git clone -b rocko https://git.elphel.com/Elphel/elphel393.git cd elphel393 ./setup.py cd poky . ./oe-init-build-env bitbake u-boot device-tree linux-xlnx core-image-elphel393
- Notes: When trying to run bitbake on a new install got problems with older bitbake version (current build uses specific snapshot) and python3.8. So I install old python2.7 and linked it:
sudo apt install python2.7 sudo ln -s python2.7 python2 sudo ln -s python2.7 python
After this bitbake just complained about missing tools (git, build-essential were already installed):
sudo apt install chrpath diffstat gawk makeinfo
Compare built vs deployed software versions
cd elphel393 ./check_versions.py firstname.lastname@example.org