This article illustrates how to generate a bootable Linux Kernel 3.11.6 image for CORE9G25
Hardware requirements:
- an Ubuntu Linux PC (we used an Ubuntu 13.10)
- an CORE9G25 with base board CORE9G25-CON
- a 2 GByte (or bigger) microSD card
- a Debug Serial Port Interface
Installing the toolchain:
Install the cross compiler and the toolchain required on your PC following this article:
Prepare the Kernel sources and build it:
Copy the CORE9G25 Linux-3.11.6.tar.bz2 from the CD to the tmp folder, then do the follow command to uncompress it:
~$ cd ~ ~$ tar xvf /tmp/linux-3.11.6.tar.bz2 -C .
then move in the linux-3.11.6 folder:
~$ cd linux-3.11.6 ~/linux-3.11.6$ ~/linux-3.11.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-ariag25_defconfig
A file called .config will be generated inside the Linux source root directory. All the changes you will make using make menuconfig will be saved on this file so if you want to create you own default configuration simple copy the new .config file in arch/arm/configs with a name like at91-myconfiguration.
the device tree source file (.dts) for your board is in arch/arm/boot/dts/at91-CORE9G25.dts.
then compile it to generate a device tree blob file (.dtb) by typing:
~/linux-3.11.6$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- at91-ariag25.dtb
This file will be used by the Linux Kernel at startup time to configure the initial state of your hardware.
Customize the default Linux Kernel configuration:
If you need customize the Kernel configuration by using menuconfig type:
~/linux-3.11.6$ make ARCH=arm menuconfig
Running the Kernel compilation
To compile the Linux Kernel type:
~/linux-3.11.6$ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ... Kernel: arch/arm/boot/zImage is ready
Copying the binary files generated in the bootable microSD
Create now from arch/arm/boot/zImage file a suitable file that the At91Bootstrap bootloader can load from microSD card by typing:
~/linux-3.11.6$ mkimage -A arm -O linux -C none -T kernel -a 20008000 -e 20008000 -n linux-3.11.6 -d arch/arm/boot/zImage image.bin Image Name: linux-3.11.6 Created: Mon Oct 21 09:58:40 2013 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1709032 Bytes = 1668.98 kB = 1.63 MB Load Address: 20008000 Entry Point: 20008000
Insert a formatted microSD and copy the bootable Linux image.bin file and the hardware description file at91-CORE9G25.dtb in the first microSD partition:
~/linux-3.11.6$ cp arch/arm/boot/dts/at91-ariag25.dtb /media/$USER/kernel/at91-ariag25.dtb ~/linux-3.11.6$ cp image.bin /media/$USER/kernel/
If you are using an Ubuntu release older than 13.10 remove $USER in the path
Compile the Kernel modules
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.11.6$ make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ~/linux-3.11.6$ make modules_install INSTALL_MOD_PATH=./modules ARCH=arm
Copy the kernel modules on the microSD:
~/linux-3.11.6$ sudo rsync -avc modules/lib/. /media/$USER/rootfs/lib/.
At the first access to the CORE9G25 board command line update the module dependencies by typing this command:
~# depmod -a
Use the new Kernel with EmDebian 7.1 Wheezy Grip
Follow this article:
Quick and dirty test
If you want to try the new Kernel quickly use the binary available on:
Related links
Documentation Terms of Use
The Acme Systems srl provides this Debian system development and user manual.
The origin of these doc came from the website: http://www.acmesystems.it
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.