Difference between revisions of "CL-SOM-iMX7: Linux: Kernel"
(→Common Boot Parameters) |
(→Getting kernel sources) |
||
Line 9: | Line 9: | ||
The instructions below assume that the {{filename|/home/development/cl-som-imx7/kernel}} directory has been created for CL-SOM-iMX7 kernel development. | The instructions below assume that the {{filename|/home/development/cl-som-imx7/kernel}} directory has been created for CL-SOM-iMX7 kernel development. | ||
==== Snapshot download ==== | ==== Snapshot download ==== | ||
− | * Download [http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/snapshot/ | + | * Download [http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/snapshot/linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca.tar.gz deb84cde0da96c5ccccb7e4c1204ad89ee801eca] snapshot with your web browser. |
− | * Extract the downloaded archive {{filename| | + | |
+ | * Extract the downloaded archive {{filename|linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca.tar.gz}} | ||
<pre> | <pre> | ||
cd /home/development/cl-som-imx7/kernel | cd /home/development/cl-som-imx7/kernel | ||
− | tar xpf /path/to/downloaded/ | + | tar xpf /path/to/downloaded/linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca.tar.gz |
− | mv | + | mv linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca linux-cl-som-imx7 |
</pre> | </pre> | ||
Line 24: | Line 25: | ||
git clone git://git.freescale.com/imx/linux-2.6-imx.git linux-cl-som-imx7 | git clone git://git.freescale.com/imx/linux-2.6-imx.git linux-cl-som-imx7 | ||
</pre> | </pre> | ||
− | * Create a branch for CL-SOM-iMX7 development. The CL-SOM-iMX7 patches are generated vs. | + | * Create a branch for CL-SOM-iMX7 development. The CL-SOM-iMX7 patches are generated vs. deb84cde0da96c5ccccb7e4c1204ad89ee801eca commit in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts. |
<pre> | <pre> | ||
cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7 | cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7 | ||
− | git checkout -b development | + | git checkout -b development deb84cde0da96c5ccccb7e4c1204ad89ee801eca |
</pre> | </pre> | ||
Line 174: | Line 175: | ||
== See also == | == See also == | ||
− | + | * [[CL-SOM-iMX7: Evaluation Kit: Getting Started]] | |
+ | * [[CL-SOM-iMX7: Evaluation Kit: Hardware Guide]] | ||
* [[CL-SOM-iMX7: Linux: Getting started]] | * [[CL-SOM-iMX7: Linux: Getting started]] | ||
* [[CL-SOM-iMX7: Linux: Debian]] | * [[CL-SOM-iMX7: Linux: Debian]] |
Revision as of 05:45, 27 June 2016
Contents
Overview
The Linux kernel for CL-SOM-iMX7 provides support for on-board peripherals and abstracts the functionality provided by the hardware.
Building kernel for CL-SOM-iMX7
Getting kernel sources
Linux git tree can be cloned or downloaded as a tarball from Freescale public git repository. The instructions below assume that the /home/development/cl-som-imx7/kernel directory has been created for CL-SOM-iMX7 kernel development.
Snapshot download
- Download deb84cde0da96c5ccccb7e4c1204ad89ee801eca snapshot with your web browser.
- Extract the downloaded archive linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca.tar.gz
cd /home/development/cl-som-imx7/kernel tar xpf /path/to/downloaded/linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca.tar.gz mv linux-2.6-imx-deb84cde0da96c5ccccb7e4c1204ad89ee801eca linux-cl-som-imx7
Git clone
- Install git version control system.
- Create a clone of the FreeScale Linux kernel tree
cd /home/development/cl-som-imx7/kernel git clone git://git.freescale.com/imx/linux-2.6-imx.git linux-cl-som-imx7
- Create a branch for CL-SOM-iMX7 development. The CL-SOM-iMX7 patches are generated vs. deb84cde0da96c5ccccb7e4c1204ad89ee801eca commit in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7 git checkout -b development deb84cde0da96c5ccccb7e4c1204ad89ee801eca
Apply the CL-SOM-iMX7 patch
cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7 git am /path/to/cl-som-imx7-linux/kernel/patches/*.patch
Building the kernel
cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7 export ARCH=arm export CROSS_COMPILE=arm-none-linux-eabi- export DTB="imx7d-sbc-imx7.dtb imx7d-cl-som-imx7.dtb" make cl_som_imx7_defconfig make menuconfig make zImage modules ${DTB} && INSTALL_MOD_PATH=/home/development/cl-som-imx7/rootfs make modules_install
In the example above:
- Linux kernel image (zImage) will be created in /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot
- device tree blobs will be created in /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot/dts
- loadable kernel modules will be installed into the /home/development/cl-som-imx7/rootfs/lib/modules directory.
When the CL-SOM-iMX7 is booted with the kernel image created as described above and with networked root filesystem at /home/development/cl-som-imx7/rootfs/, the system will be able to load the kernel modules properly, thus avoiding module version problems.
zImage, DTB files and modules locations
- In the example above, the Linux kernel image (zImage) will be created in the /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot directory.
# ls -al /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot/zImage
- DTB files
# cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot/dtb/ # ls -al ${DTB} # cd -
- The loadable kernel modules will be installed into the /home/development/cl-som-imx7/rootfs/lib/modules directory.
# ls -al /home/development/cl-som-imx7/rootfs/lib/modules
Kernel Version
- In the example above, the Linux kernel release version number will be saved in /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/include/config/kernel.release
# cat /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/include/config/kernel.release
Prepare kernel and modules tarball
- In the example below, the Linux kernel and modules are packed into the tar archive for deploying onto the CL-SOM-iMX7.
# mkdir -p /home/development/cl-som-imx7/rootfs/boot # cp -v /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot/zImage /home/development/cl-som-imx7/rootfs/boot/zImage-cl-som-imx7 # cd /home/development/cl-som-imx7/kernel/linux-cl-som-imx7/arch/arm/boot/dtb/ # cp -v ${DTB} /home/development/cl-som-imx7/rootfs/boot/ # cd - # tar -C /home/development/cl-som-imx7/rootfs -czvf /home/development/cl-som-imx7/linux-image-cl-som-imx7.tar.gz .
Basic platform support
The CL-SOM-iMX7 basic platform support is implemented in the imx7d-sbc-imx7.dtb imx7d-cl-som-imx7.dtb files of the Linux kernel source tree.
These files contain:
- default setup of multi-functional pins;
- registration of the devices integrated in the CL-SOM-iMX7 module;
- definitions of platform-specific configuration for these devices.
Deploying the CL-SOM-iMX7 kernel and modules
- Boot up the CL-SOM-iMX7 computer.
- Copy the previously created linux-image-cl-com-imx7.tar.gz to /root directory of the CL-SOM-iMX7.
Mount boot partition
- Use the below command to mount the boot partition for installing the CL-SOM-iMX7 Linux kernel binary:
# boot_partition=`cat /proc/cmdline | awk '{ for (i=1;i<=NF;i++) { if($i~/^root=/) { print substr($i,6,length($i)-6)"1" } } }'` # mount $boot_partition /boot
Back up old kernel
- It is essential to backup the old (known to work) kernel binary.
# mkdir /boot/`uname -r` # mv /boot/zImage-cl-som-imx7 /boot/*.dtb /boot/`uname -r`/
Installing kernel and modules
Assuming that the linux-image-cl-com-imx7.tar.gz tar ball has been copied to the CL-SOM-iMX7 /root directory.
- Extract and install the Linux kernel binary:
# tar -C / -xvf /root/linux-image-cl-com-imx7.tar.gz
U-Boot Environment
MMC Boot Parameters
To boot from MMC/SD card type:
setenv mmcdev 0 setenv mmcblk mmcblk0p2
Continue to the Common Boot Parameters.
eMMC Boot Parameters
To boot from internal eMMC storage type:
setenv mmcdev 2 setenv mmcblk mmcblk2p2
Continue to the Common Boot Parameters.
Common Boot Parameters
To boot Linux type:
setenv loadaddr 0x80800000 setenv fdt_addr 0x83000000 setenv image zImage-cl-som-imx7 setenv fdt_file imx7d-sbc-imx7.dtb setenv bootargs console=ttymxc0,115200 root=/dev/${mmcblk} rw rootwait mmc dev ${mmcdev} load mmc ${mmcdev} ${loadaddr} ${image} load mmc ${mmcdev} ${fdt_addr} ${fdt_file} bootz ${loadaddr} - ${fdt_addr}
NFS Boot Parameters
To boot via network interface type:
setenv loadaddr 0x80800000 setenv fdt_addr 0x83000000 setenv image zImage-cl-som-imx7 setenv fdt_file imx7d-sbc-imx7.dtb setenv nfsserver <nfs server ip address> setenv tftpserver <tftp server ip address> setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=dhcp nfsroot=${nfsserver}:${nfsroot} dhcp tftpboot ${loadaddr} ${tftpserver}:${image} tftpboot ${fdt_addr} ${tftpserver}:${fdt_file} bootz ${loadaddr} - ${fdt_addr}