Sources organisation
Contents
Project Tree
|-- buildroot ---------------------- contains our buildroot distribution | |-- binaries | | `-- armadeus------------------ contains image files for the target: u-boot, kernel, rootfs | |-- build_arm | |-- docs | |-- package | |-- project | |-- project_build_arm | | `--armadeus | |-- scripts | |-- target | | `-- device | | `-- armadeus | | |-- apf9328 | | |-- apm9328 | | |-- linux | | | `-- kernel-patches | | |-- rootfs | | | `-- target_skeleton | | `-- u-boot | |-- toolchain | `-- toolchain_build_arm |-- downloads ---------------------- holds all the downloaded files by default |-- firmware ----------------------- contains the custom FPGA's IPs | |-- BRAMTest | |-- led | |-- PS2 | |-- PS2_Opencore | `-- sram_test |-- host -------------------------- contains the custom software needed on the devt PC (obsolete) | `-- patches |-- patches ----------------------- contains the patches needed to be applied to buildroot | `-- cygwin--------------------- obsolete |-- software ---------------------- contains software running one part on the PC and one part on the APF | |-- demos---------------------- Qtopia DAC client/server demo | |-- orchesta | `-- uboot_recover `-- target ------------------------ contains all our custom software for the APF |-- demos |-- linux |-- packages `-- test
Buildroot strategy
Buildroot strategy is to leave unchanged the initial sources. This means that for each package/software, you will find a "source directory" with at least a makefile and a "build directory" where it will be copied and compiled.
More details can be found here: http://buildroot.uclibc.org/buildroot.html
Software/packages modifications
During a development phase, your modifications have to be applied in the "build directory". For a release, a patch/commit has to be created/done in order to modifiy the initial "source directory".
buildroot/binaries/armadeus/ folder
Contains the generated binary files:
- linux-kernel-2.6.xxx-arm.bin
- rootfs.arm.jffs2
- uboot.bin
build_arm folder
This place is used to compile the softwares which will run on your target like linux, u-boot...
A new package selected in the buildroot menuconfig will have a dedicated directory here.
Modifications of the target software have to be done here during the development phase.
The arm compiler for your platform and the libs are although placed here (under staging_dir)
package folder
This place contains all the packages available from the buildroot menuconfig.
Each package has its own folder with a makefile and several patches if required.
The makefile is responsible for the download of the software and for the installation in the build_arm folder.
- If you need to change the version of a package, you have to do the modification in the makefile.
project_build_arm/armadeus folder
root
This place is used to build the whole rootfs for your board.
- If you need to modify your rootfs (ie add nodes, startup files), you can do the modifications here during the development phase.
This folder is created during the first toolchain installation. A rootfs skeleton located in target/device/armadeus/roofs is used to build the initial rootfs.
- If you want to keep a special rootfs across projects, the skeleton has to be replaced with your own file.
The rootfs can be clean up with the following command:
$ make roofs-dirclean (in the top Armadeus directory)
busybox-xxxx
This directory used to compile the busybox for your target.
- the configuration of your busybox can be changed like that:
$ make busybox-menuconfig (in the top Armadeus directory)
target/device/armadeus folder
- apf9328 folder: contains the apf9328 configuration files
- apm9328 folder: contains the apm9328 (apf9328 prototype) configuration files
- linux folder: contains the linux patches for the Armadeus projects
- rootfs folder: contains the rootfs skeleton and the device table which will be used to create the rootfs nodes and directories
- uboot folder: contains the uboot patches required for the Armadeus boards
target
- linux: contains the debug tools like imxregs and the armadeus specific drivers.
- packages: contains small applications to control some peripherals like the DAC
- test: contains some stress test programs
Similar to the buildroot packages, the target subfolders are not used for the compilation. Each makefile will copy the required files in the build_arm/buildroot corresponding directory before the build process. Modifications of the sources during the development phase have to be done in build_arm/buildroot.