CM-T3517: Linux: Kernel

From Compulab Mediawiki
Revision as of 13:19, 27 December 2010 by Igor (talk) (Building the kernel)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Overview

Linux kernel for CM-T3517 modules provides support for on-board peripherals and abstracts the functionality provided by the hardware. Current support coverage is specified at O/S support coverage map page. CompuLab provides ready-to-run binary kernel images, and source code of the modifications and additions made to the Linux kernel to work properly with CM-T3517 modules.

Kernel command line

The Linux kernel for CM-T3517 is shipped with built-in command line parameters:

ubi.mtd=fs,2048 root=ubi0:rootfs rootfstype=ubifs console=ttyS2,115200 \
omapfb.mode=dvi:1024x768-24@60 omapfb.vram=1:4M vram=8M omapdss.def_disp=lcd

The default kernel command line defines primary console, default display settings, root device and root filesystem type.

Setting U-Boot bootargs environment variable overrides default kernel command line and can be used to set desired kernel parameters.

Building kernel for CM-T3517

Cross-Compiler

There are several options for cross-compilation toolchain setup. You can either compile your cross-compiler or use an already built cross-compiler. The cross-compiler should support the ARM embedded-application binary interface ("EABI")

  • Pre-built toolchain:
  • Tools for creating cross-compilers:
    • Crosstool-ng: Builds a cross-compiler from source. Non-distribution specific.
    • Crossdev: Gentoo's cross-compiler builder. Needs Gentoo.

U-Boot mkimage tool

U-Boot mkimage utility is required in order to create kernel images that can be loaded by the CM-T3517 bootloader. You can download prebuilt mkimage binary or build it yourself:

mkdir ~/tmp
cd tmp
wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
tar -xjvf u-boot-latest.tar.bz2
cd u-boot-20xx.xx
touch include/config.{h,mk}
make tools
sudo install tools/mkimage /usr/local/bin

Getting kernel sources

There are two ways to get Linux kernel sources that can be used as a baseline for CM-T3517 kernel. You can create a copy of linux-omap git tree or download a snapshot and extract it. We assume that you have created /home/development/cm-t3517/kernel directory for CM-T3517 kernel development.

Snapshot download

  • Download snapshot with your web browser. Note, that tools like wget and curl will not work here.
  • Extract the downloaded archive linux-omap-2.6-3fd5969.tar.gz
cd /home/development/cm-t3517/kernel
tar xzvf /path/to/downloaded/linux-omap-2.6-3fd5969.tar.gz
This will create /home/development/cm-t3517/kernel/linux-omap-2.6 directory containing linux-omap kernel tree.
  • Apply the CM-T3517 patch
cd /home/development/cm-t3517/kernel/linux-omap-2.6
patch -p1 < /path/to/t3517-linux/kernel/linux-2.6.32-3fd5969a81a9324b58a1c19cf510c0da97c99565-cm-t3517.patch

Git clone

  • Install git version control system.
  • Create a clone of linux-omap kernel tree
cd /home/development/cm-t3517/kernel
git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6
  • Create a branch for CM-T3517 development. The CM-T3517 patches are generated vs. commit 3fd5969a81a9324b58a1c19cf510c0da97c99565 in the linux-omap tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
git checkout -b cm-t3517-dev 3fd5969a81a9324b58a1c19cf510c0da97c99565
  • Apply the CM-T3517 patch
cd /home/development/cm-t3517/kernel/linux-omap-2.6
git apply /path/to/t3517-linux/kernel/linux-2.6.32-3fd5969a81a9324b58a1c19cf510c0da97c99565-cm-t3517.patch

Building the kernel

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-eabi-
make cm_t3517_defconfig
make menuconfig
make && make uImage && \
     INSTALL_MOD_PATH=/home/development/cm-t3517/rootfs make modules_install

In the example above, the Linux kernel image (uImage) will be created in /home/development/cm-t3517/kernel/linux-omap-2.6/arch/arm/boot, and the loadable kernel modules will be installed into the /home/development/cm-t3517/rootfs/lib/modules directory.

When the CM-T3517 is booted with the kernel image created as described above and with networked root filesystem at /home/development/cm-t3517/rootfs/, the system will be able to load the kernel modules properly, thus avoiding module version problems.

See also