Compiling BeagleBone Kernel-3.14 from scratch

BeagleBone Black (BBB) is a credit card sized computer having the capability to run many image processing algorithms and low power embedded applications. Main attraction of this hardware that its an OpenHardware. One can get, modify design files or build your own BBB clones and will reduce the Time to Market.

BeagleBone_Black

Ths post will give some idea about the Kernel compilation steps for BeagleBone. The instructions were tested in LinuxMint-17 and can be used with any debian based distros. Kernel version chosen is 3.14, as it is the latest officially supported Kernel from the makers of BBB.

The commands are run in Host system, with ARM cross compilation toolchain preinstalled. For installing GCC ARM toolchain in Ubuntu/LinuxMint run the following command


sudo apt-get install gcc-4.7-arm-linux-gnueabihf ncurses-dev uboot-mkimage build-essential 

Note: The instructions below is deprecated. Please follow the new instructions from https://github.com/beagleboard/linux

git clone git://github.com/beagleboard/kernel.git

cd kernel

git checkout 3.14

./patch.sh

Copy configuration file needed for BeagleBone kernel compilation. This step is important and should be implemented without errors.


cp configs/beaglebone kernel/arch/arm/configs/beagleboneblack_defconfig

wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin

Change directory by typing the following


cd kernel

Make sure you are able to cross compile. Just run “arm-linux-gnueabi-gcc” in your host system terminal.  Terminal should complain as follows


arm-linux-gnueabi-gcc: fatal error: no input files

compilation terminated.

 

This indicated that your cross compilation toolchain for ARM is installed and is on your System Path. For more idea please check into your /usr/bin directory.

Next run the following commands in its given order


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- beagleboneblack_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage dtbs LOADADDR=0x80008000 -j4

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 modules

Next set a Rootfs directory in your home directory by


mkdir rootfs

Install rootfs to this directory


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/home/<username>/rootfs modules_install

Next copy the output files to BBB filesystem after inserting your SD Card with BBB OS.


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage-dtb.am335x-boneblack

rm -f /media/Angstrom/boot/uImage

cp arch/arm/boot/uImage /media/Angstrom/boot/

cp arch/arm/boot/dts/am335x-bone.dtb /media/Angstrom/boot/

Links:

http://processors.wiki.ti.com/index.php/Using_the_WL18xx_Cape_with_BeagleBone_Black

http://wiki.beyondlogic.org/index.php?title=BeagleBoneBlack_Building_Kernel

 

Advertisements

2 thoughts on “Compiling BeagleBone Kernel-3.14 from scratch

  1. Nice posting, got me pointed the right way. However, not surprisingly as things age some of the information is now a bit outdated. For example the github you are pointing at has been deprecated in favour of the linux.git one that has the patches already applied by Robert C Nelson. Its web link is here: https://github.com/beagleboard/linux.
    Perhaps you might consider doing a minor update. Thank you for this and you other interesting blog posts!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s