Mu-arm
From Bashlinux
ARM Microcontroller
Build the kernel
To get running the kernel, we need to setup the environment with the proper toolchain so we can start to cross-compile the kernel.
GNU ARM Toolchain
- Download arm-none-linux-gnueabi from sourcery.mentor.com or the manufacturer website
- Decompress the tarball and place in `~/CROSS_COMPILER`
- Add the path to your environment by editing `~/.bash_profile` and adding
PATH=$PATH:$HOME/bin:~/CROSS_COMPILER/arm/4.4.3/bin
Build the kernel
- Download the kernel from kernel.org
- Create a working directory and decompress the kernel inside there
# mkdir kernel # cd kernel # wget http://mirrors.kernel.org/...linux-2.6.36... # tar zxvf linux-2.6.36*tgz # mkdir kernel-bin # cd linux-2.6.36
- Generate `.config`
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig
- Modify the kernel
# cd ../kernel-bin # make ARCH=arm menuconfig # cd ../mini2440
- Cross compile the kernel and modules
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/
- If using uboot, then generate uImage
# ../uboot/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage ../uImage
=== Kernel Modules ===
- Build the modules that are going to be placed into the filesystem
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ modules CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=.. modules_install
- Mount the FS image and copy the files inside the root folder
# cp ../lib/modules/2.6.36/ /mnt/mini2440/rootfs/lib/modules/ -r
=== uboot ===
- Get the sources from git repository
# mkdir uboot # cd uboot # git clone git://repo.or.cz/u-boot-openmoko/mini2440.git
- Prepare and build uboot
# cd mini2440 # make mini2440_config # make all