I’m using the Arietta G25 for a project of mine. Earlier I described how to build a bootloader for the 256MB version of the board.
Today I’m going to describe how to build the kernel for the Arietta G25. I needed ADC support as well as modules for some USB to ethernet adaptors that weren’t included in the kernel image ACME Systems provides.
First off you will need to install the toolchain to build armel binaries. ACME Systems has a page describing how to install the ARM9 toolchain. Here’s the short summary:
$ sudo apt-get install emdebian-archive-keyring libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi g++-arm-linux-gnueabi u-boot-tools libncurses5-dev
Once you have the environment setup it’s time to checkout the kernel and build. This is the Jenkins script I use to build the Arietta G25 kernel:
if [ ! -d "linux-3.14.7" ]; then wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.7.tar.xz -O linux-3.14.7.tar.xz tar xvfJ linux-3.14.7.tar.xz cd linux-3.14.7 wget http://www.acmesystems.it/www/compile_linux_3_14/acme.patch -O acme.patch patch -p1 < acme.patch wget https://watchmysys.com/blog/wp-content/uploads/2014/08/linux-at91.config -O .config wget https://watchmysys.com/blog/wp-content/uploads/2014/08/arietta_256m_ikconfig.patch -O arietta_256m_ikconfig.patch patch -p1 < arietta_256m_ikconfig.patch else cd linux-3.14.7 fi make ARCH=arm clean CPUS=$(cat /proc/cpuinfo | grep -c "processor") wget https://watchmysys.com/blog/wp-content/uploads/2014/08/acme-arietta-adc.dtb -O arch/arm/boot/dts/acme-arietta.dtb make -j$CPUS ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage make modules -j$CPUS ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make modules_install INSTALL_MOD_PATH=./modules ARCH=arm mkdir -p modules/boot cp arch/arm/boot/zImage modules/boot/ rm linux-3.14.7-arietta.tar.bz2 tar -C modules -cjvf linux-3.14.7-arietta.tar.bz2 lib/ boot/
The above commands are available in a bash/Jenkins script at the bottom of this post.
Installation is fairly simple, you need to mount the sdcard /boot and / partitions on your computer and then run:
tar -C /path/to/sdcard -jxvf linux-3.14.7-arietta.tar.bz2
My kernel configuration includes the Atmel ADC driver as a module (at91_adc) so you can unload/reload it (possibly to save power). It also includes the dm9601 and sr9700 modules for the Davicom DM96xx USB 2.0 10/100M Ethernet Adaptor, which is an inexpensive USB to ethernet adaptor available online (such as this one).
If you want to generate your own dtb (for instance enable PWM instead of the ADC) you can do that at this ACME Systems page.
Build script: linux-at91.sh
Kernel and modules: linux-3.14.7-arietta.tar.bz2
Kernel Config: linux-at91-3.14.7.config