...
- ARM Cross Compiler
- Bootloader
- Das U-Boot – the Universal Boot Loader http://www.denx.de/wiki/U-Boot
- Source – http://git.denx.de/?p=u-boot.git;a=summary
- Linux Kernel
- Linus's Mainline tree: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=summary
- Freescale Linux source tree: git://git.freescale.com/imx/linux-2.6-imx.git
- Freescale BSP meta layer: git://git.freescale.com/imx/meta-fsl-bsp-release
- OpenEmbedded/Yocto BSP layer for Freescale's ARM platform git://git.yoctoproject.org/meta-fsl-arm
- Embedian SMARC-FiMX6 kernel source tree for linux 3.14.28_1.0.0, 4.1.15_1.0.0 and 4.9.11_1.0.0: git@git.embedian.com:developer/smarc-fsl-linux-kernel.git
- ARM based rootfs
- Debian Squeeze: http://www.debian.org/
- Debian Squeeze: http://www.debian.org/
...
To build Embedian’s SMARC-FiMX6 u-boot and linux kernel, you will need to install the following Linaro arm compiler:
For u-boot 2018.03 and Linux 4.14.98, you need to use the following newer Linaro arm compilier.
Info | ||
---|---|---|
| ||
$ wget -c http://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz $ sudo tar -C /opt -xJf gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz $ export CC=/opt/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- |
For u-boot 2017.03, Linux 4.9.11 and Linux 4.9.1188, use the following Linaro arm compilier.
Info | ||
---|---|---|
| ||
$ wget -c httpshttp://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz $ sudo tar -C /opt -xJf gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz $ export CC=/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- |
For u-boot 2015.04 and Linux 4.1.15, use the following Linaro arm compilier.
Info | ||
---|---|---|
| ||
$ wget -c httpshttp://releases.linaro.org/archive/15.05/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf.tar.xz $ sudo tar -C /opt -xJf gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf.tar.xz $ export CC=/opt/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- |
...
If this test fails, verify that you have the 32bit libraries installed on your development system.
Info | ||
---|---|---|
| ||
|
Generating SSH Keys
...
We recommend you use SSH keys to establish a secure connection between your computer and Embedian Gitlab server. The steps below will walk you through generating an SSH key and then adding the public key to our Gitlab account.
...
Clone the U-Boot source code from Embedian Git Server.
Download:
For u-boot v2017v2018.03:
Info | ||
---|---|---|
| ||
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarcfimx6-uboot $ cd smarcfimx6-uboot $ git checkout smarc-imximx6_v2017v2018.03_4.914.1198_12.0.0_ga |
For u-boot v2015v2017.0403:
Info | ||
---|---|---|
| ||
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarcfimx6-uboot $ cd smarcfimx6-uboot $ git checkout smarc-imx_v2015v2017.0403_4.19.1511_1.0.0_ga |
For u-boot v2014v2015.04:
Info | ||
---|---|---|
| ||
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarcfimx6-uboot $ cd smarcfimx6-uboot $ git checkout smarc-imx_v2014v2015.04_34.141.2815_1.0.0_ga |
Configure and Build:
...
Note | ||||
---|---|---|---|---|
| ||||
Note1: If the board is SMARC-FiMX6-Q-2G or SMARC-FiMX6-D-2G, use If the board is SMARC-FiMX6-Q-1G or SMARC-FiMX6-D-1G, use If the board is SMARC-FiMX6-U-1G, use If the board is SMARC-FiMX6-S, use If the board is SMARC-FiMX6-S-1G, use If the board is SMARC-FiMX6-QP-1G, use If the board is SMARC-FiMX6-QP-2G, use Note 2: "ser3" stands for console debug port. In this example, we uses SER3 as debug port. If user uses SER0 as your debug port, make change to "ser0" instead. Same as SER1 and SER2. Note 3: The SMARC-FiMX6 module always boot up from the on-module SPI NOR flash. The factory default will be u-boot.imx pre-installed with SER3 as console output. In some cases when the SPI NOR flash is empty or needs to be upgraded. Users can shunt crossed the TEST# to ground. In this way, the SMARC-FiMX6 module will boot up to carrier SD card, if TEST# pin is shunt crossed. The u-boot.imx image are the same, the difference is how you flash u-boot.imx. This will be explained in the "Setup SD card" section. |
...
Note | ||||
---|---|---|---|---|
| ||||
Note1: If the board is SMARC-FiMX6-Q-2G or SMARC-FiMX6-D-2G, use If the board is SMARC-FiMX6-Q-1G or SMARC-FiMX6-D-1G, use If the board is SMARC-FiMX6-U-1G, use If the board is SMARC-FiMX6-S, use Note 2: "ser3" stands for console debug port. In this example, we uses SER3 as debug port. If user uses SER0 as your debug port, make change to "ser0" instead. Same as SER1 and SER2. Note 3: The SMARC-FiMX6 module always boot up from the on-module SPI NOR flash. The factory default will be u-boot.imx pre-installed with SER3 as console output. In some cases when the SPI NOR flash is empty or needs to be upgraded. Users can shunt crossed the TEST# to ground. In this way, the SMARC-FiMX6 module will boot up to carrier SD card, if TEST# pin is shunt crossed. The u-boot.imx image are the same, the difference is how you flash u-boot.imx. This will be explained in the "Setup SD card" section. |
...
Linux Kernel
...
Download:
For 4.9.111 14.98 (Based on Freescale imx_4.14.98_2.0.0_ga official release):
Info | ||
---|---|---|
| ||
$ git clone git@git.embedian.com:developer/smarc-fsl-linux-kernel.git $ cd smarc-fsl-linux-kernel $ git checkout smarc-imx6_4.14.98_2.0.0_ga |
For 4.9.88 (Based on Freescale imx_4.9.88_2.0.0_ga official release):
Info | ||
---|---|---|
| ||
$ git clone git@git.embedian.com:developer/smarc-fsl-linux-kernel.git $ cd smarc-fsl-linux-kernel $ git checkout smarc-imx6_4.9.88_2.0.0_ga |
For 4.9.11 (Based on Freescale imx_4.9.11_1.0.0_ga official release):
...
Info | ||
---|---|---|
| ||
$ wget -c ftp://ftp.embedian.com/public/dev/minfs/ubuntu/xenial/imx6-ubuntu-16.04.2-armhf-2017-03-02.tar.gz |
...
Info | ||
---|---|---|
| ||
$ md5sum imx6-ubuntu-16.04.2-armhf-2017-03-02.tar.gz0a3b5cf7b2f6c65856e07f21c17f3129 0a3b5cf7b2f6c65856e07f21c17f3129 imx6-ubuntu-16.04.2-armhf-2017-03-02.tar.gz |
...
Info | ||
---|---|---|
| ||
$ wget -c ftp://ftp.embedian.com/public/dev/minfs/debian/jessie/imx6-debian-8.7-armhf-2017-03-02.tar.gz |
...
Ubuntu 14.04 Download:
Info | ||
---|---|---|
| ||
|
Verify:
Info | ||
---|---|---|
| ||
|
Yocto Build Root File System:
...
Find the yocto pre-built root file systems here at Embedian's ftp site based on your module CPU variants.
...
For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.
Info | ||
---|---|---|
| ||
|
Erase SD card:
Info | ||
---|---|---|
| ||
$ |
...
Info | ||||
---|---|---|---|---|
| ||||
$ sudo sfdisk --version sfdisk from util-linux 2.27.1 |
Create Partitions:
Info | ||
---|---|---|
| ||
$ sudo sfdisk ${DISK} <<-__EOF__ 1M , 48M , 0x83 ,* ,,,- __EOF__ |
...
Info | ||||
---|---|---|---|---|
| ||||
U-Boot# mmc rescan; mmc dev; load mmc 0:1 0x10800000 u-boot.imx; sf probe; sleep 2; sf erase 0 0xc0000; sf write 0x10800000 0x400 86000a0000 |
If SPI NOR Flash is empty
...
Copy uEnv.txt to the boot partition:
Info | ||||
---|---|---|---|---|
| ||||
|
Install Kernel zImage
Copy zImage to the boot partition:
Info | ||||
---|---|---|---|---|
| ||||
|
Install Kernel Device Tree Binary
Info | ||
---|---|---|
| ||
|
Note | ||
---|---|---|
| ||
For XGA (1024x768) LVDS panel: For WXGA (1366x768) LVDS panel: For 1080p (1920x1080) LVDS panel: |
Install Root File System and Kernel Modules
...
Info | ||||
---|---|---|---|---|
| ||||
|
Ubuntu 14.04:
Info | ||||
---|---|---|---|---|
| ||||
|
Copy Kernel Modules:
Info | ||||
---|---|---|---|---|
| ||||
|
Note | ||
---|---|---|
| ||
|
...
Edit: /etc/network/interfaces
Info | ||
---|---|---|
| ||
|
Add:
Info | ||||
---|---|---|---|---|
| ||||
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp |
...
For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.
Info | ||
---|---|---|
| ||
|
Mount Partitions:
On some systems, these partitions may be auto-mounted...
...
Copy zImage to rootfs partition:
Info | ||
---|---|---|
| ||
|
Note | ||
---|---|---|
| ||
|
...
Note | ||
---|---|---|
| ||
For WVGA (800x480) LVDS panel: For XGA (1024x768) LVDS panel: For WXGA (1366x768) LVDS panel: For 1080p (1920x1080) LVDS panel: |
Copy real rootfs to rootfs partition:
Yocto Built Root File Systems
Info | ||
---|---|---|
| ||
|
Ubuntu 14.04 Root File Systems
Info | ||
---|---|---|
| ||
Delete all contents starting with "SUBSYSTEM=="
|
Remove SD card:
Info | ||
---|---|---|
| ||
$ sync $ sudo umount /media/boot $ sudo umount /media/rootfs |
...
Create Partition Layout:
Info | ||
---|---|---|
| ||
1 1M , 48 48M , 0x83 ,* ,,,- __EOF__ |
Format Partitions:
...
Install Kernel Device Tree Binary
Info | ||
---|---|---|
| ||
|
Install Root File System
...
Info | ||
---|---|---|
| ||
|
Unmount eMMC:
Info | ||
---|---|---|
| ||
$ sync $ sudo umount /media/boot $ sudo umount /media/rootfs |
Switch your Boot Select to eMMC and you will be able to boot up from eMMC now.
version 1.0a, 3/23/2015
Last updated 20182019-0211-0816