This article illustrates how to generate a bootable class='acmetable' Linux Kernel image for all the Acme board based on Atmel MPUs:
Download and save in your home directory the Linux Kernel sources:
Extract the Kernel sources from the compressed file by typing:
~$ tar xvfJ linux-3.13.6.tar.xz ...
Move inside the new folder:
~$ cd linux-3.13.6 ~/linux-3.13.6$
Download the patch file ariag25.patch and apply it:
~/linux-3.13.6$ patch -p1 < ariag25.patch
Download the patch file foxg20.patch and apply it:
~/linux-3.13.6$ patch -p1 < foxg20.patch
~/linux-3.13.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-ariag25_defconfig ... # configuration written to .config
~/linux-3.13.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-foxg20_defconfig ... # configuration written to .config
If you need to customize the Kernel configuration or just taking a look to the drivers and features activated type:
~/linux-3.13.6$ make ARCH=arm menuconfig
and navigate inside the Kernel configuration using the arrow keys and following the help provided by the menuconfig interface.
~/linux-3.13.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-ariag25.dtb ...
~/linux-3.13.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-foxg20.dtb ...
Compile the Linux Kernel sources and generate a binary image file to save in the first partition of microSD card.
~/linux-3.13.6$ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage ... Image arch/arm/boot/uImage is ready
~/linux-3.13.6$ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ... Kernel: arch/arm/boot/zImage is ready
Append the compiled device tree blog file at91-foxg20.dtb to the end of new Kernel zImage just created:
~/linux-3.13.6$ cat arch/arm/boot/zImage arch/arm/boot/dts/at91-foxg20.dtb > zImage_w_dtb
Create a file loadable by the FOX Board G20 bootloader AcmeBoot by typing:
~/linux-3.13.6$ mkimage -A arm -O linux -C none -T kernel -a 20008000 -e 20008000 -n linux-3.13.6 -d zImage_w_dtb uImage
On a mid-power PC the whole source compilation requires about 5 minutes.
The image generated contains the Linux Kernel and all the built-in device drivers (option [*] in menuconfig) compiled with it.
Al the drivers compiled as external modules (option [M] in menuconfig) need to be compiled and saved in the rootfs /lib directory on the second partition of the microSD. To compile them type:
~/linux-3.13.6$ make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ... ~/linux-3.13.6$ make modules_install INSTALL_MOD_PATH=./modules ARCH=arm ...
Insert a formatted microSD in your Linux PC and copy on it the files directly:
Write the Linux Kernel image and Device tree blog files in the first microSD partition:
Aria G25 and Terra
~/linux-3.13.6$ cp arch/arm/boot/dts/at91-ariag25.dtb /media/$USER/KERNEL/at91-ariag25.dtb ~/linux-3.13.6$ cp arch/arm/boot/uImage /media/$USER/KERNEL/image.binFOX Board G20
~/linux-3.13.6$ cp uImage /media/$USER/KERNEL/uImageIf you are using an Ubuntu release older than 13.10 remove $USER in the path
Write the Kernel modules in the rootfs (second microSD partition):
~/linux-3.13.6$ sudo rsync -avc modules/lib/. /media/$USER/rootfs/lib/.
Use this method if you have a working board accessible via LAN
Write the Linux Kernel image and Device tree blog files in the first microSD partition:
Aria G25 and Terra
~/linux-3.13.6$ scp arch/arm/boot/dts/at91-ariag25.dtb root@ariag25.local:/media/mmc_p1 ~/linux-3.13.6$ scp arch/arm/boot/uImage root@ariag25.local:/media/mmc_p1/image.binFOX Board G20
~/linux-3.13.6$ scp uImage root@foxg20.local:/media/mmc_p1/uImageWrite the Kernel modules in the rootfs (second microSD partition):
~/linux-3.13.6$ rsync -avc modules/lib/. root@ariag25.local:/lib/.
If this command doesn't work verify if rsync in installed on your board. Use apt-get install rsync.
At the first access to the board command line update the module dependencies by typing this command:
~# depmod -a