Open a terminal on your Linux PC and download the Linux Kernel sources from the main stream repository:
wget https://github.com/linux4microchip/linux/archive/refs/heads/linux-5.15-mchp.zip
unzip linux-5.15-mchp.zip
mv linux-linux-5.15-mchp linux-5.15-mchp
cd linux-5.15-mchp
Download and set the Kernel defconfig to use for your SOM:
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-roadrunner_defconfig -O arch/arm/configs/acme-roadrunner_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- acme-roadrunner_defconfig
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-acqua_defconfig -O arch/arm/configs/acme-acqua_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- acme-acqua_defconfig
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-aria_defconfig -O arch/arm/configs/acme-aria_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-aria_defconfig
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-arietta_defconfig -O arch/arm/configs/acme-arietta_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-arietta_defconfig
If you need to customize the Kernel configuration or you just want to take a look around the Kernel setup type:
make ARCH=arm menuconfig
and navigate inside the Kernel configuration using the arrow keys and following the help provided by the menuconfig interface.
Download and compile the device tree file:
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-roadrunner.dts -O arch/arm/boot/dts/acme-roadrunner.dts
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- acme-roadrunner.dtb
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-acqua.dts -O arch/arm/boot/dts/acme-acqua.dts
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- acme-acqua.dtb
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-aria.dts -O arch/arm/boot/dts/acme-aria.dts
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-aria.dtb
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-arietta.dts -O arch/arm/boot/dts/acme-arietta.dts
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-arietta.dtb
Compile the Linux Kernel sources and generate the binary compressed image file to save in the first partition of microSD card.
Roadrunner and Acqua
make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage
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. We didn't use any [M] flag in our defconfig so this procedure
is not requested but. in case you add something. these are the commands to use
to compile them:
Roadrunner and Acqua
make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
All SOMs:
make modules_install INSTALL_MOD_PATH=./modules ARCH=arm
Insert a formatted microSD with the boot loader (at91bootstrap) and the rootfs contents already created in your Linux PC and copy on it these files:
Write the Linux Kernel image and the device tree blob in the first microSD partition:
sudo cp arch/arm/boot/zImage /media/$USER/boot
Write also the devicd tree blob file (selected one of these for your board):
sudo cp arch/arm/boot/dts/acme-roadrunner.dtb /media/$USER/boot
sudo cp arch/arm/boot/dts/acme-acqua.dtb /media/$USER/boot
sudo cp arch/arm/boot/dts/acme-aria.dtb /media/$USER/boot
sudo cp arch/arm/boot/dts/acme-arietta.dtb /media/$USER/boot
Copy also the Linux kernel command file cmdline.txt
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-roadrunner_cmdline.txt
sudo cp acme-roadrunner_cmdline.txt /media/$USER/boot/cmdline.txt
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-acqua_cmdline.txt
sudo cp acme-acqua_cmdline.txt /media/$USER/boot/cmdline.txt
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-aria_cmdline.txt
sudo cp acme-aria_cmdline.txt /media/$USER/boot/cmdline.txt
wget https://www.acmesystems.it/www/compile_kernel_5_15/acme-arietta_cmdline.txt
sudo cp acme-arietta_cmdline.txt /media/$USER/boot/cmdline.txt
Write the Linux Kernel modules inside the second microSD partition:
sudo rsync -avc modules/lib/. /media/$USER/rootfs/lib/.
Insert the MicroSD in your Roadrunner board and check on the serial debug port the boot messages
At the first access to the board command line update the module dependencies by typing this command:
sudo depmod -a
In case of changes to the kernel configuration follow this steps to save it:
make ARCH=arm savedefconfig
The file defconfig
contains your configuration. You could rename and copy it in arch/arm/configs/
cp defconfig arch/arm/configs/my_defconfig