TS-4900 Kernel Compile Guide: Difference between revisions

From embeddedTS Manuals
No edit summary
No edit summary
Line 5: Line 5:
* The "master" branch is 3.10.17 and is largely outdated and replaced with later kernels.  This is used with the old Yocto Dora builds.
* The "master" branch is 3.10.17 and is largely outdated and replaced with later kernels.  This is used with the old Yocto Dora builds.
* The "imx_3.10.53_1.1.0_ga" kernel is a stable supported branch.  If you are using Yocto Dizzy or Fido, you should use this branch.  This is also compatible with the Debian releases.
* The "imx_3.10.53_1.1.0_ga" kernel is a stable supported branch.  If you are using Yocto Dizzy or Fido, you should use this branch.  This is also compatible with the Debian releases.
* The imx_3.14.52_1.1.0_ga" branch is compatible with Yocto Jethro, and should also be used for most Debian releases.
* The "imx_3.14.52_1.1.0_ga" branch is compatible with Yocto Jethro, and should also be used for most Debian releases.
* Th imx_4.1.15_1.0.0_ga branch is still under development and currently only intended for i.MX6ul (TS-4100) support.
* The "imx_4.1.15_1.0.0_ga" branch is still under development and currently only intended for i.MX6ul (TS-4100) support.


The kernel can be rebuilt by cross compiling from an X86/X86_64 Linux.  Our default kernels are rebuilt using the toolchains built by Yocto.  You can download the appropriate cross toolchain for your Linux system here:
You can pick the branch below.  The kernel can be rebuilt by cross compiling from an X86/X86_64 Linux.  Our default kernels are rebuilt using the toolchains built by Yocto.  You can download the appropriate cross toolchain for your Linux system here:


* [ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/distributions/yocto/dora/toolchain/poky-systemd-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh X86_64]
* [ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/distributions/yocto/dora/toolchain/poky-systemd-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh X86_64]
Line 35: Line 35:
git clone https://github.com/embeddedarm/linux-3.10.17-imx6.git
git clone https://github.com/embeddedarm/linux-3.10.17-imx6.git
cd linux-3.10.17-imx6
cd linux-3.10.17-imx6
git checkout imx_3.10.53_1.1.0_ga # switch to the latest kernel release
## Pick your branch here.  Yocto should use this.
git checkout imx_3.10.53_1.1.0_ga  
## Debian should use this.
# git checkout imx_3.14.52_1.1.0_ga


# If you are using the 64-bit toolchain:
## If you are using the 64-bit toolchain:
export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
# If you are using 32-bit toolchain:
## If you are using 32-bit toolchain:
#export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
#export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
export ARCH=arm
export ARCH=arm
Line 46: Line 49:
make ts4900_defconfig
make ts4900_defconfig


# Make any changes in "make menuconfig" or driver modifications, then compile
## Make any changes in "make menuconfig" or driver modifications, then compile
make && make uImage
make && make uImage
</source>
</source>

Revision as of 09:29, 1 June 2016

This board has several kernels released and available in our git depending on the branch name.

  • The "master" branch is 3.10.17 and is largely outdated and replaced with later kernels. This is used with the old Yocto Dora builds.
  • The "imx_3.10.53_1.1.0_ga" kernel is a stable supported branch. If you are using Yocto Dizzy or Fido, you should use this branch. This is also compatible with the Debian releases.
  • The "imx_3.14.52_1.1.0_ga" branch is compatible with Yocto Jethro, and should also be used for most Debian releases.
  • The "imx_4.1.15_1.0.0_ga" branch is still under development and currently only intended for i.MX6ul (TS-4100) support.

You can pick the branch below. The kernel can be rebuilt by cross compiling from an X86/X86_64 Linux. Our default kernels are rebuilt using the toolchains built by Yocto. You can download the appropriate cross toolchain for your Linux system here:

# X86_64 (64 bit)
chmod a+x poky-systemd-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh
sudo ./poky-systemd-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh

# i686 (32 bit)
chmod a+x poky-systemd-eglibc-i686-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh
sudo ./poky-systemd-eglibc-i686-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.6.1.sh

This will ask for the install directory for the toolchain. You can choose another directory than the default, but the following instructions will assume the defaults.

This also requires several tools from your distribution. For Ubuntu/Debian:

sudo apt-get install git build-essential lzop u-boot-tools libncursesw5-dev

Once those are installed:

git clone https://github.com/embeddedarm/linux-3.10.17-imx6.git
cd linux-3.10.17-imx6
## Pick your branch here.  Yocto should use this.
git checkout imx_3.10.53_1.1.0_ga 
## Debian should use this.
# git checkout imx_3.14.52_1.1.0_ga 

## If you are using the 64-bit toolchain:
export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
## If you are using 32-bit toolchain:
#export CROSS_COMPILE=/opt/poky-systemd/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
export ARCH=arm
export LOADADDR=0x10008000

make ts4900_defconfig

## Make any changes in "make menuconfig" or driver modifications, then compile
make && make uImage

To install this to a board you would use a USB SD reader and plug in the card. Assuming your Linux rootfs is all on "sdc1":

export DEV=/dev/sdc1
sudo mount "$DEV" /mnt/sd
sudo rm /mnt/sd/boot/uImage
sudo cp arch/arm/boot/uImage  /mnt/sd/boot/uImage
sudo cp arch/arm/boot/dts/imx6*ts*.dtb /mnt/sd/boot/
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

Change Kernel Splash Screen

The kernel splashscreen allow for a 224 color image, up to the full screen resolution. For the fastest boot speed, it should be kept as small as possible. The image will be centered around a black background.

To convert an image, for example, "mylogo.png":

convert mylogo.png mylogo.ppm
ppmquant 224 mylogo.ppm > mylogo-224.ppm
pnmnoraw mylogo-224.ppm > logo_user_clut224.ppm
cp logo_user_clut224.ppm <kernel build sources>/drivers/video/logo/

Recompile the kernel following the guide in the previous section to have the splashscreen appear on all future boots.

Add to the kernel cmdline in U-Boot, "logo.nologo" in order to completely disable the splash screen.