Difference between revisions of "Poky manual"
From ElphelWiki
(→Setup) |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | ==<font color="blue">Description</font>== | ||
+ | How to build the firmware for Elphel 10393 series camera systems from scratch. | ||
+ | |||
+ | Prebuilt releases can be found [https://community.elphel.com/files/393/ here]. | ||
+ | |||
==<font color="blue">Use cases</font>== | ==<font color="blue">Use cases</font>== | ||
− | * Linux | + | * Update Linux Kernel when developing a driver |
− | * | + | * Include application to the default firmware package |
* Update Elphel's PHP extension | * Update Elphel's PHP extension | ||
* C/C++ applications if developed on PC require a cross-compiler and require Yocto installation or some other alternative. | * C/C++ applications if developed on PC require a cross-compiler and require Yocto installation or some other alternative. | ||
− | Other projects | + | Other projects written in Python, PHP, Javascript, HTML, C/C++ (gcc is installed on the system board) can be developed on the camera. Installing the framework is not required but it can simplify the development process. |
==<font color="blue">Description</font>== | ==<font color="blue">Description</font>== | ||
* Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board | * Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board | ||
− | * Yocto Poky revision = 2. | + | * Yocto Poky revision = 2.7.1 (Warrior) |
* Yocto Poky revision = 2.4 (Rocko) | * Yocto Poky revision = 2.4 (Rocko) | ||
* <s>Yocto Poky revision = 2.0 (Jethro)</s> | * <s>Yocto Poky revision = 2.0 (Jethro)</s> | ||
Line 29: | Line 34: | ||
==<font color="blue">Requirements</font>== | ==<font color="blue">Requirements</font>== | ||
− | * Kubuntu 16.04 x64 (as of Dec 2018) | + | * Kubuntu 16.04 x64 (as of Dec 2018) - Poky: 2.4 Rocko, 2.7.1 Warrior |
− | * Kubuntu 18.04 x64 (as of Dec 2018) | + | * Kubuntu 18.04 x64 (as of Dec 2018) - Poky: 2.7.1 Warrior (not tested but might build w/o problems) |
− | |||
==<font color="blue">Output files</font>== | ==<font color="blue">Output files</font>== | ||
Line 38: | Line 42: | ||
|- | |- | ||
! File(s) | ! File(s) | ||
+ | ! Build Command | ||
! Description | ! Description | ||
|- | |- | ||
| <font color='darkblue'>'''boot.bin'''</font> | | <font color='darkblue'>'''boot.bin'''</font> | ||
+ | | ''bitbake u-boot'' | ||
| u-boot as the first stage bootloader = Secondary Program Loader (SPL) that boots '''u-boot-dtb.img''' | | u-boot as the first stage bootloader = Secondary Program Loader (SPL) that boots '''u-boot-dtb.img''' | ||
|- | |- | ||
| <font color='darkblue'>'''u-boot-dtb.img'''</font> | | <font color='darkblue'>'''u-boot-dtb.img'''</font> | ||
+ | | ''bitbake u-boot'' | ||
| full size u-boot with a stripped device tree (''cat u-boot.img some_stripped_devicetree.dtb > u-boot-dtb.img'') | | full size u-boot with a stripped device tree (''cat u-boot.img some_stripped_devicetree.dtb > u-boot-dtb.img'') | ||
|- | |- | ||
|valign='top'| <font color='darkblue'>'''devicetree.dtb'''</font> | |valign='top'| <font color='darkblue'>'''devicetree.dtb'''</font> | ||
+ | | bitbake device-tree | ||
| device tree with listed interfaces, zynq registers, interrupts and drivers | | device tree with listed interfaces, zynq registers, interrupts and drivers | ||
* ''elphel393/bootable-images/mmc/devicetree.dtb'' - mount rootfs from mmc partition | * ''elphel393/bootable-images/mmc/devicetree.dtb'' - mount rootfs from mmc partition | ||
Line 52: | Line 60: | ||
|- | |- | ||
| <font color='darkblue'>'''uImage'''</font> | | <font color='darkblue'>'''uImage'''</font> | ||
+ | | ''bitbake linux-xlnx'' | ||
| kernel, drivers | | kernel, drivers | ||
|- | |- | ||
| <font color='darkblue'>'''rootfs.ubifs''', '''rootfs.ubi''', '''rootfs.tar.gz'''</font> | | <font color='darkblue'>'''rootfs.ubifs''', '''rootfs.ubi''', '''rootfs.tar.gz'''</font> | ||
+ | | ''bitbake core-image-elphel393'' | ||
| rootfs in different formats - *.ubi* for NAND, *.tar.gz for mmc | | rootfs in different formats - *.ubi* for NAND, *.tar.gz for mmc | ||
|} | |} | ||
Line 90: | Line 100: | ||
</font> | </font> | ||
− | * Poky 2. | + | * Poky 2.7.1 Warrior (Kubuntu 16.04 or 18.04) |
<font size='2'> | <font size='2'> | ||
− | git clone -b ''' | + | git clone -b '''warrior''' https://git.elphel.com/Elphel/elphel393.git |
cd elphel393 | cd elphel393 | ||
./setup.py | ./setup.py | ||
Line 105: | Line 115: | ||
./check_versions.py root@192.168.0.9 | ./check_versions.py root@192.168.0.9 | ||
</font> | </font> | ||
− | |||
− | |||
− | |||
{| | {| | ||
− | |[[File:Check versions.png|thumb|400px|check_versions.py output in terminal]] | + | |[[File:Check versions.png|thumb|400px|check_versions.py output in terminal (web-393 revision on PC is ahead of the one installed on the camera)]] |
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==<font color="blue">Details for development</font>== | ==<font color="blue">Details for development</font>== | ||
[[Development_for_10393|'''Development for 10393''']] | [[Development_for_10393|'''Development for 10393''']] |
Revision as of 11:44, 9 September 2019
Contents
Description
How to build the firmware for Elphel 10393 series camera systems from scratch.
Prebuilt releases can be found here.
Use cases
- 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.
Other projects written in Python, PHP, Javascript, HTML, C/C++ (gcc is installed on the system board) can be developed on the camera. Installing the framework is not required but it can simplify the development process.
Description
- Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board
- Yocto Poky revision = 2.7.1 (Warrior)
- Yocto Poky revision = 2.4 (Rocko)
-
Yocto Poky revision = 2.0 (Jethro)
Features
- Environment is set up with a single script
- All Elphel projects are configured for Eclipse IDE:
- fpga projects (verilog)
- kernel
- 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
Requirements
- Kubuntu 16.04 x64 (as of Dec 2018) - Poky: 2.4 Rocko, 2.7.1 Warrior
- Kubuntu 18.04 x64 (as of Dec 2018) - Poky: 2.7.1 Warrior (not tested but might build w/o problems)
Output files
The names are listed as they appear in the u-boot configuration header file - actual output files have different names:
File(s) | Build Command | Description |
---|---|---|
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 /
Notes
- Read more about boot options.
Setup
- 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
- Poky 2.7.1 Warrior (Kubuntu 16.04 or 18.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
Compare built vs deployed software versions
cd elphel393 ./check_versions.py root@192.168.0.9