Sources organisation

From ArmadeusWiki
Jump to: navigation, search
Update.png This page is too old and need some updates. Informations on this page are not guaranteed !! Update.png

Project Tree

|-- buildroot ---------------------- contains our buildroot distribution
|   |-- binaries
|   |   ı-- apf9328------------------ contains image files for the apf9328 target: u-boot, kernel, rootfs
|   |   `-- apf27-------------------- contains image files for the apf27 target
|   |-- build_armv4t ---------------- contains all non configurable user-space tools compatible with armv4t architectures
|   |-- build_armv5t ---------------- contains all non configurable user-space tools compatible with armv5t architectures
|   |-- docs
|   |-- package
|   |-- project
|   |-- project_build_armv4t ---------- contains all configurable user-space tools for each target
|   |   `--apf9328 ------------------ contains all configurable user-space tools configured for the apf9328 board
|   |-- project_build_armv5t ---------- contains all configurable user-space tools for each target
|   |   `--apf27 --------------------contains all configurable user-space tools configured for the apf27 board
|   |-- scripts
|   |-- target
|   |   `-- device
|   |        `-- armadeus
|   |           |-- apf27
|   |           |-- apf9328
|   |           |-- linux
|   |           |   `-- kernel-patches
|   |           |-- rootfs
|   |           |   `-- target_skeleton
|   |           `-- u-boot
|   |-- toolchain
|   |-- toolchain_build_armv4t
|   `-- toolchain_build_armv5t
|-- 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
|   `-- uboot_recover---------------- Tools to reload the board when it is no more possible to boot from flash (corrupted bios or empty flash)
`-- 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/apf9328/ folder

Contains the generated binary files:

  • apf9328-linux.bin
  • apf9328-rootfs.arm.jffs2
  • apf9328-u-boot.bin

build_armv4t folder

This place is used to compile the non configurable softwares which will run on your target like portmap, imxregs, fpgaregs...
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_armv4t/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 clean (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)

linux-xxxx

This directory used to compile the linux for your target.

  • the configuration of your linux can be changed like that:
$ make linux-menuconfig (in the top Armadeus directory)

u-boot-xxxx

This directory used to compile the u-boot for your target.

  • the configuration of your u-boot can be changed directly inside the header file apf9328.h located at u-boot/include/configs/

target/device/armadeus folder

  • apf9328 folder: contains the apf9328 configuration files
  • apf27 folder: contains the apf27 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 makefile specific 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 buildroot/build_armv4t corresponding directory before the build process. Modifications of the sources during the development phase have to be done in buildroot/build_armv4t/.