<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=CL-SOM-iMX6UL%3A_Linux%3A_Kernel</id>
	<title>CL-SOM-iMX6UL: Linux: Kernel - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=CL-SOM-iMX6UL%3A_Linux%3A_Kernel"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX6UL:_Linux:_Kernel&amp;action=history"/>
	<updated>2026-09-02T08:57:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX6UL:_Linux:_Kernel&amp;diff=2813&amp;oldid=prev</id>
		<title>Grinberg: /* Getting kernel sources */</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX6UL:_Linux:_Kernel&amp;diff=2813&amp;oldid=prev"/>
		<updated>2016-01-07T11:04:46Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Getting kernel sources&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
The Linux kernel for CL-SOM-iMX6UL provides support for on-board peripherals and abstracts the functionality provided by the hardware.&lt;br /&gt;
&lt;br /&gt;
== Kernel boot process ==&lt;br /&gt;
=== Default boot process ===&lt;br /&gt;
The CL-SOM-iMX6UL U-Boot scans the various boot devices and loads the kernel from the first valid boot device. The boot device is valid when:&lt;br /&gt;
* physically present&lt;br /&gt;
* boot partition formatted with vfat&lt;br /&gt;
* has {{filename|zImage-cl-som-imx6ul}} and a DTB file that meets the board configuration&lt;br /&gt;
* or {{filename|boot.scr}} in the root of the boot partition&lt;br /&gt;
&lt;br /&gt;
=== Default boot device layout ===&lt;br /&gt;
The CL-SOM-iMX6UL default boot device layout:&lt;br /&gt;
* {{filename|/boot/zImage-cl-som-imx6ul}} - Linux kernel zImage&lt;br /&gt;
* {{filename|/boot/imx6ul-sbc-imx6ul.dtb}} - SBC-iMX6UL board device tree blob with P9 mmc slot enabled (Evaluation Board)&lt;br /&gt;
* {{filename|/boot/imx6ul-sbc-imx6ul-wilink.dtb}} - SBC-iMX6UL board device tree blob with WiLinki8 WiFi enabled (Evaluation Board)&lt;br /&gt;
* {{filename|/boot/imx6ul-cl-som-imx6ul.dtb}} - CL-SOM-iMX6UL module device tree blob with mmc 0 device enabled&lt;br /&gt;
* {{filename|/boot/imx6ul-cl-som-imx6ul-wilink.dtb}} - CL-SOM-iMX6UL module device tree blob with WiLink8 WiFi enabled&lt;br /&gt;
&lt;br /&gt;
== Building kernel for CL-SOM-iMX6UL ==&lt;br /&gt;
=== Cross-Compiler ===&lt;br /&gt;
There are several options for cross-compilation toolchain setup.&lt;br /&gt;
You can either compile your cross-compiler or use an already built cross-compiler.&lt;br /&gt;
The cross-compiler should support the ARM embedded-application binary interface (&amp;quot;[http://en.wikipedia.org/wiki/Application_binary_interface#EABI EABI]&amp;quot;)&lt;br /&gt;
* Pre-built toolchain:&lt;br /&gt;
** [http://www.codesourcery.com/sgpp/lite/arm/portal/release324 CodeSourcery]&lt;br /&gt;
* Tools for creating cross-compilers:&lt;br /&gt;
** [http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool Crosstool-ng]: Builds a cross-compiler from source. Non-distribution specific.&lt;br /&gt;
** [http://www.gentoo.org/proj/en/base/embedded/handbook/index.xml?part=1&amp;amp;chap=4 Crossdev]: Gentoo's cross-compiler builder. Needs Gentoo.&lt;br /&gt;
&lt;br /&gt;
=== Getting kernel sources ===&lt;br /&gt;
Linux git tree can be cloned or downloaded as a tarball from [http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/ Freescale public git repository].&lt;br /&gt;
The instructions below assume that the {{filename|/home/development/CL-SOM-iMX6UL/kernel}} directory has been created for CL-SOM-iMX6UL kernel development.&lt;br /&gt;
&lt;br /&gt;
==== Git clone ====&lt;br /&gt;
* Install [http://git-scm.com/ git] version control system.&lt;br /&gt;
* Create a clone of the FreeScale Linux kernel tree&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/CL-SOM-iMX6UL/kernel&lt;br /&gt;
git clone git://git.freescale.com/imx/linux-2.6-imx.git .&lt;br /&gt;
git checkout -b development rel_imx_3.14.38_6ul_ga&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Apply the CL-SOM-iMX6UL patch ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git am /path/to/cl-som-imx6ul-linux/kernel/patches/*.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building the kernel ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ARCH=arm&lt;br /&gt;
export CROSS_COMPILE=arm-none-linux-eabi-&lt;br /&gt;
export DTB=&amp;quot;imx6ul-sbc-imx6ul.dtb imx6ul-sbc-imx6ul-wilink.dtb imx6ul-cl-som-imx6ul.dtb imx6ul-cl-som-imx6ul-wilink.dtb&amp;quot;&lt;br /&gt;
make cl_som_imx6ul_defconfig&lt;br /&gt;
make menuconfig&lt;br /&gt;
make zImage modules ${DTB} &amp;amp;&amp;amp; INSTALL_MOD_PATH=/home/development/CL-SOM-iMX6UL/rootfs make modules_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above:&lt;br /&gt;
* Linux kernel image ({{filename|zImage}}) will be created in {{filename|/home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot}}&lt;br /&gt;
* device tree blobs will be created in {{filename|/home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot/dts}}&lt;br /&gt;
* loadable kernel modules will be installed into the {{filename|/home/development/CL-SOM-iMX6UL/rootfs/lib/modules}} directory.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the CL-SOM-iMX6UL is booted with the kernel image created as described above and with networked root filesystem at {{filename|/home/development/CL-SOM-iMX6UL/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.&lt;br /&gt;
&lt;br /&gt;
==== zImage, DTB files and modules locations  ====&lt;br /&gt;
&lt;br /&gt;
* In the example above, the Linux kernel image ({{filename|zImage}}) will be created in the {{filename|/home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot}} directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ls -al /home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot/zImage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* DTB files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot/dtb/&lt;br /&gt;
# ls -al ${DTB}&lt;br /&gt;
# cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The loadable kernel modules will be installed into the {{filename|/home/development/CL-SOM-iMX6UL/rootfs/lib/modules}} directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ls -al /home/development/CL-SOM-iMX6UL/rootfs/lib/modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kernel Version  ====&lt;br /&gt;
&lt;br /&gt;
* In the example above, the Linux kernel release version number will be saved in {{filename|/home/development/CL-SOM-iMX6UL/kernel/include/config/kernel.release}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /home/development/CL-SOM-iMX6UL/kernel/include/config/kernel.release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Prepare kernel and modules tarball  ====&lt;br /&gt;
&lt;br /&gt;
* In the example below, the Linux kernel and modules are packed into the tar archive for deploying onto the CL-SOM-iMX6UL.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mkdir -p /home/development/CL-SOM-iMX6UL/rootfs/boot&lt;br /&gt;
# cp -v /home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot/zImage /home/development/CL-SOM-iMX6UL/rootfs/boot/zImage-cl-som-imx6ul&lt;br /&gt;
# cd /home/development/CL-SOM-iMX6UL/kernel/arch/arm/boot/dtb/&lt;br /&gt;
# cp -v ${DTB} /home/development/CL-SOM-iMX6UL/rootfs/boot/ &lt;br /&gt;
# cd -&lt;br /&gt;
# tar -C /home/development/CL-SOM-iMX6UL/rootfs -czvf /home/development/CL-SOM-iMX6UL/linux-image-CL-SOM-iMX6UL.tar.gz .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic platform support ==&lt;br /&gt;
&lt;br /&gt;
The CL-SOM-iMX6UL basic platform support is implemented in the {{parameter|imx6ul-sbc-imx6ul.dtb imx6ul-sbc-imx6ul-wilink.dtb imx6ul-cl-som-imx6ul.dtb imx6ul-cl-som-imx6ul-wilink.dtb}}  files of the Linux kernel source tree.&lt;br /&gt;
&lt;br /&gt;
These files contain:&lt;br /&gt;
* default setup of multi-functional pins;&lt;br /&gt;
* registration of the devices integrated in the CL-SOM-iMX6UL module;&lt;br /&gt;
* definitions of platform-specific configuration for these devices.&lt;br /&gt;
&lt;br /&gt;
=== SBC-iMX6UL ===&lt;br /&gt;
* MMC: arch/arm/boot/dts/imx6ul-sbc-imx6ul.dts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Suppport for CompuLab SB-SOM-iMX6UL baseboard&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;imx6ul-cl-som-imx6ul.dts&amp;quot;&lt;br /&gt;
#include &amp;quot;imx6ul-sb-som-imx6ul.dtsi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	model = &amp;quot;Compulab iMX6UL on SB-SOM&amp;quot;;&lt;br /&gt;
	compatible = &amp;quot;fsl,imx6ul&amp;quot;, &amp;quot;compulab,cl-som-imx6ul&amp;quot;, &amp;quot;compulab,sbc-imx6ul&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* WiFi: arm/boot/dts/imx6ul-sbc-imx6ul-wilink.dts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Suppport for CompuLab SB-SOM-iMX6UL baseboard&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;imx6ul-cl-som-imx6ul-wilink.dts&amp;quot;&lt;br /&gt;
#include &amp;quot;imx6ul-sb-som-imx6ul.dtsi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	model = &amp;quot;Compulab iMX6UL on SB-SOM&amp;quot;;&lt;br /&gt;
	compatible = &amp;quot;fsl,imx6ul&amp;quot;, &amp;quot;compulab,cl-som-imx6ul&amp;quot;, &amp;quot;compulab,sbc-imx6ul&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deploying the CL-SOM-iMX6UL kernel and modules ==&lt;br /&gt;
&lt;br /&gt;
Boot up the CL-SOM-iMX6UL computer. Copy the previously created {{filename|linux-image-CL-SOM-iMX6UL.tar.gz}} to {{filename|/root}} directory of the CL-SOM-iMX6UL.&lt;br /&gt;
&lt;br /&gt;
==== Mount boot partition ====&lt;br /&gt;
* Use the below command to mount the boot partition for installing the CL-SOM-iMX6UL Linux kernel binary:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# boot_partition=`cat /proc/cmdline | awk '{ for (i=1;i&amp;lt;=NF;i++) { if($i~/^root=/) { print substr($i,6,length($i)-6)&amp;quot;1&amp;quot; } } }'`&lt;br /&gt;
# mount $boot_partition /boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Back up old kernel ====&lt;br /&gt;
* It is essential to backup the old (known to work) kernel binary.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mkdir /boot/`uname -r`&lt;br /&gt;
# mv /boot/uImage-cl-som-imx6ul /boot/zImage-cl-som-imx6ul /boot/*.dtb /boot/`uname -r`/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installing kernel and modules ====&lt;br /&gt;
Assuming that the {{filename|linux-image-CL-SOM-iMX6UL.tar.gz}} tar ball has been copied to the CL-SOM-iMX6UL {{filename|/root}} directory.&lt;br /&gt;
* Extract and install the Linux kernel binary:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# tar -C / -xvf /root/linux-image-CL-SOM-iMX6UL.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== U-Boot Environment ==&lt;br /&gt;
&lt;br /&gt;
=== Common parameters ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv loadaddr 0x82000000&lt;br /&gt;
setenv fdt_addr 0x83000000&lt;br /&gt;
setenv zimage zImage-cl-som-imx6ul&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MMC Boot Parameters ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv fdt_file imx6ul-sbc-imx6ul.dtb&lt;br /&gt;
setenv mmcdev 0&lt;br /&gt;
setenv bootargs console=ttymxc2,115200 root=/dev/mmcblk0p2 rw rootwait ip=dhcp&lt;br /&gt;
&lt;br /&gt;
mmc dev ${mmcdev}&lt;br /&gt;
load mmc ${mmcdev} ${loadaddr} ${zimage}&lt;br /&gt;
load mmc ${mmcdev} ${fdt_addr} ${fdt_file}&lt;br /&gt;
bootz ${loadaddr} - ${fdt_addr}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== eMMC Boot Parameters ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv fdt_file imx6ul-sbc-imx6ul-wilink.dtb&lt;br /&gt;
setenv mmcdev 1&lt;br /&gt;
setenv bootargs console=ttymxc2,115200 root=/dev/mmcblk1p2 rw rootwait ip=dhcp&lt;br /&gt;
&lt;br /&gt;
mmc dev ${mmcdev}&lt;br /&gt;
load mmc ${mmcdev} ${loadaddr} ${zimage}&lt;br /&gt;
load mmc ${mmcdev} ${fdt_addr} ${fdt_file}&lt;br /&gt;
bootz ${loadaddr} - ${fdt_addr}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NFS Boot Parameters ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv fdt_file imx6ul-sbc-imx6ul-wilink.dtb&lt;br /&gt;
setenv nfsserver &amp;lt;nfs server ip address&amp;gt;&lt;br /&gt;
setenv tftpserver &amp;lt;tftp server ip address&amp;gt;&lt;br /&gt;
setenv bootargs console=ttymxc2,115200 root=/dev/nfs rw ip=dhcp nfsroot=${nfsserver}:${nfsroot}&lt;br /&gt;
&lt;br /&gt;
dhcp&lt;br /&gt;
tftpboot ${loadaddr} ${tftpserver}:${zimage}&lt;br /&gt;
tftpboot ${fdt_addr} ${tftpserver}:${fdt_file}&lt;br /&gt;
bootz ${loadaddr} - ${fdt_addr}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX6UL: Linux: Getting started]]&lt;br /&gt;
* [[CL-SOM-iMX6UL: Linux: Debian]]&lt;br /&gt;
* [[Linux: Development for ARM modules]]&lt;br /&gt;
* [[Linux: Debian: Minimal ARM filesystem]]&lt;br /&gt;
* [http://www.debian.org/doc/manuals/reference/index.en.html Debian Reference].&lt;br /&gt;
* [http://www.alsa-project.org ALSA project official website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux|Debian]]&lt;br /&gt;
[[Category:CL-SOM-iMX6UL|Linux: Debian]]&lt;/div&gt;</summary>
		<author><name>Grinberg</name></author>
		
	</entry>
</feed>