TS-47xx Kernel Compile Guide
For adding new support to the kernel, or recompiling with more specific options you will need to have an X86 compatible linux host available that can handle the cross compiling. Compiling the kernel on the board is not supported or recommended. Before building the kernel you will need to install a few support libraries on your workstation:
yum install ncurses-devel ncurses yum groupinstall "Development Tools" "Development Libraries"
sudo apt-get install build-essential libncurses5-dev libncursesw5-dev git ## If you are on a 64-bit system then 32-bit libraries will be required for the toolchain # sudo apt-get install ia32-libs # On newer distributions with Multiarch support: #sudo dpkg --add-architecture i386 #sudo apt-get update #sudo apt-get install libc6-dev:i386 zlib1g-dev:i386
For other distributions, please refer to their documentation to find equivalent tools.
Set up the Sources and Toolchain
# Download the cross compile toolchain (EABI)from Technologic Systems: wget ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4700-linux/cross-toolchains/arm-2008q3.tar.gz # Extract the toolchain tar xvf arm-2008q3.tar.gz # Move arm-2008q3 to a permanent location, eg /opt/toolchains/ mkdir /opt/toolchains/ mv arm-2008q3 /opt/toolchains/ # Download the Kernel sources git clone https://github.com/embeddedarm/linux-2.6.34-ts471x.git cd linux-2.6.34-ts471x # Set the CROSS_COMPILE variable to the absolute path to the toolchain. export CROSS_COMPILE=/opt/toolchains/arm-2008q3/bin/arm-none-linux-gnueabi- export ARCH=arm # This sets up the default configuration that we ship with for the TS-471x make ts471x_defconfig
Once you have the configuration ready you can make your changes to the kernel. Commonly a reason for recompiling is to add support that was not built into the standard image's kernel. You can get a menu to browse available options by running:
You can use the "/" key to search for specific terms through the kernel.
Build the kernel
Once you have it configured you can begin building the kernel. This usually takes about 5-10 minutes.
The new kernel will be at "arch/arm/boot/Image".
Install the Kernel and Modules
Install the target SD card in your workstation, and mount the Debian partition. For example, if your workstation's SD card is /dev/sdb:
# Update this to point to your SD card block device export DEV=/dev/sdb sudo mkdir /mnt/sd/ sudo dd if=arch/arm/boot/zImage of="$DEV"1 conv=fsync sudo mount "$DEV"2 /mnt/sd/ INSTALL_MOD_PATH=/mnt/sd/ sudo -E make modules_install INSTALL_HDR_PATH=/mnt/sd/ sudo -E make headers_install sudo umount /mnt/sd/ sync
Build compat-drivers (optional)
Optionally if you use the WIFI-N-USB2 module or another recent USB wireless device you can build "compat-drivers" which provides more recent compatibility on this kernel.
# Assuming you are still in the 2.6.34 kernel directory cd ../ export ARCH=arm export CROSS_COMPILE=/opt/toolchains/arm-2008q3/bin/arm-none-linux-gnueabi- # Update this to point to your SD card block device export DEV=/dev/sdb export KLIB=/mnt/sd # Update these paths to point to the linux tree export KLIB_BUILD=../linux-2.6.34-ts471x/ wget http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.8.3/compat-drivers-3.8.3-2-snpu.tar.bz2 && \ tar xf compat-drivers-3.8.3-2-snpu.tar.bz2 && \ cd compat-drivers-3.8.3-2-snpu/ && \ make && \ sudo mount "$DEV"2 /mnt/sd/ && \ INSTALL_MOD_PATH=/mnt/sd/ sudo -E make install-modules && \ sudo umount /mnt/sd/ && \ sync