i.MX6q SABRE Board for Smart Devices

i.MX6q SABRE Board for Smart Devices

Skip to end of metadata
Go to start of metadata

This is a page about the Freescale based i.MX6; i.MX6q SABRE Board for Smart Devices.

  • Availability
  • Vendor Documentation
  • Notes
  • Basic Requirements
  • ARM Cross Compiler: GCC
  • Bootloader: U-Boot
  • Linux Kernel
  • Root File System
    • Debian 8
    • Ubuntu 16.04 LTS
  • Root File System (small flash)
    • Debian 8 (small flash)
  • Setup microSD card
  • Install Kernel and Root File System
    • Copy Root File System
    • Set uname_r in /boot/uEnv.txt
    • Copy Kernel Image
    • Copy Kernel Device Tree Binaries
    • Copy Kernel Modules
    • File Systems Table (/etc/fstab)
    • Networking
    • Remove microSD/SD card
  • Comments

Availability

Boards:
MCIMX6Q-SDB at Digi-Key

Vendor Documentation

  • i.MX6q: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q
  • SABRE Board for Smart Devices Based on the i.MX 6 Series: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD

Notes

From: http://cache.freescale.com/files/32bit/doc/quick_start_guide/SABRESDB_IMX6_QSG.pdf
SW6: Boot from SD3 (underneath next to hdmi/ethernet)

D1

D2

D3

D4

D5

D6

D7

D8

off

on

off

off

off

off

on

off

Basic Requirements

  • Running a recent release of Debian, Fedora or Ubuntu; without OS Virtualization Software.
  • ARM Cross Compiler – Linaro: http://www.linaro.org
    • Linaro Toolchain Binaries: http://www.linaro.org/downloads/
  • 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: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
  • ARM based rootfs
    • Debian: https://www.debian.org
    • Ubuntu: http://www.ubuntu.com

ARM Cross Compiler: GCC

This is a pre-built (64bit) version of Linaro GCC that runs on generic linux, sorry (32bit) x86 users, it's time to upgrade...
Download/Extract:

~/
wget -c https: //releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro- 5.3 - 2016.02 -x86_64_arm-linux-gnueabihf.tar.xz
export CC=`pwd`/gcc-linaro- 5.3 - 2016.02 -x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

Test:

~/
${CC}gcc --version
arm-linux-gnueabihf-gcc (Linaro GCC  5.3 - 2016.02 5.3 . 1  20160113
Copyright (C)  2015  Free Software Foundation, Inc.
This is free software; see the source  for  copying conditions.  There is NO
warranty; not even  for  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bootloader: U-Boot

Das U-Boot – the Universal Boot Loader: http://www.denx.de/wiki/U-Boot
eewiki.net patch archive: https://github.com/eewiki/u-boot-patches
Download:

~/
git clone https: //github.com/u-boot/u-boot
cd u-boot/
git checkout v2016. 03  -b tmp

Patches:

~/u-boot
wget -c https: //rcn-ee.com/repos/git/u-boot-patches/v2016.03/0001-mx6qsabre_common-uEnv.txt-bootz-n-fixes.patch
  
patch -p1 <  0001 -mx6qsabre_common-uEnv.txt-bootz-n-fixes.patch

Configure and Build:

~/u-boot
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} mx6qsabresd_defconfig
make ARCH=arm CROSS_COMPILE=${CC}

Linux Kernel

This script will build the kernel, modules, device tree binaries and copy them to the deploy directory.
Download:

~/
git clone https: //github.com/RobertCNelson/armv7-multiplatform
cd armv7-multiplatform/

For v4.1.x (Longterm 4.1.x):

~/armv7-multiplatform
git checkout origin/v4. 1 .x -b tmp

For v4.1.x-rt (Longterm 4.1.x + Real-Time Linux):

~/armv7-multiplatform
git checkout origin/v4. 1 .x-rt -b tmp

For v4.4.x (Longterm 4.4.x):

~/armv7-multiplatform
git checkout origin/v4. 4 .x -b tmp

For v4.4.x-rt (Longterm 4.4.x + Real-Time Linux):

~/armv7-multiplatform
git checkout origin/v4. 4 .x-rt -b tmp

For v4.6.x (Stable):

~/armv7-multiplatform
git checkout origin/v4. 6 .x -b tmp

For v4.7.x (Prepatch):

~/armv7-multiplatform
git checkout origin/v4. 7 .x -b tmp

Build:

~/armv7-multiplatform/
./build_kernel.sh

Root File System

Debian 8

User

Password

debian

temppwd

root

root

Download:

~/
wget -c https: //rcn-ee.com/rootfs/eewiki/minfs/debian-8.5-minimal-armhf-2016-06-06.tar.xz

Verify:

~/
sha256sum debian- 8.5 -minimal-armhf- 2016 - 06 - 06 .tar.xz
1aa0fe4f56280eb7bf0df11a562d8ab3abd4baf5228a2046fe602ddbe407567c  debian- 8.5 -minimal-armhf- 2016 - 06 - 06 .tar.xz

Extract:

~/
tar xf debian- 8.5 -minimal-armhf- 2016 - 06 - 06 .tar.xz

Ubuntu 16.04 LTS

User

Password

ubuntu

temppwd

Download:

~/
wget -c https: //rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04-minimal-armhf-2016-06-06.tar.xz

Verify:

~/
sha256sum ubuntu- 16.04 -minimal-armhf- 2016 - 06 - 06 .tar.xz
7fa17e1ceaf3778080f834d51dba5bfd1b0cfb6ccb2f979782dedfd8379db4b3  ubuntu- 16.04 -minimal-armhf- 2016 - 06 - 06 .tar.xz

Extract:

~/
tar xf ubuntu- 16.04 -minimal-armhf- 2016 - 06 - 06 .tar.xz

Root File System (small flash)

A Root File System around 100Mb in size, for flash applications.

Debian 8 (small flash)

User

Password

debian

temppwd

root

root

Download:

~/
wget -c https: //rcn-ee.com/rootfs/eewiki/barefs/debian-8.5-bare-armhf-2016-06-06.tar.xz

Verify:

~/
sha256sum debian- 8.5 -bare-armhf- 2016 - 06 - 06 .tar.xz
de2538e7efb99bd4f428d1825252cfe39f1f47dc3d5b34f50eadfd72f47175a0  debian- 8.5 -bare-armhf- 2016 - 06 - 06 .tar.xz

Extract:

~/
tar xf debian- 8.5 -bare-armhf- 2016 - 06 - 06 .tar.xz

Setup microSD card

For these instruction we are assuming, DISK=/dev/mmcblk0, lsblk is very useful for determining the device id.

export DISK=/dev/mmcblk0

Erase partition table/labels on microSD card:

sudo dd  if =/dev/zero of=${DISK} bs=1M count= 10

Install Bootloader:

~/
sudo dd  if =./u-boot/u-boot.imx of=${DISK} seek= 2  bs= 512

Create Partition Layout:
With util-linux v2.26, sfdisk was rewritten and is now based on libfdisk.

sfdisk
sudo sfdisk --version
sfdisk from util-linux  2.27 . 1
sfdisk >= 2.26.x
sudo sfdisk ${DISK} <<-__EOF__
1M,,L,*
__EOF__
sfdisk <= 2.25.x
sudo sfdisk --unit M ${DISK} <<-__EOF__
1 ,,L,*
__EOF__

Format Partition:
With mkfs.ext4 1.43, we need to make sure metadata_csum and 64bit are disabled.
As U-Boot CAN NOT currently handle reading files with these newer ext4 options and so Debian 8 (armel/armhf) and Ubuntu 16.04 (armhf) fsck tools will operate correctly.

mkfs.ext4 -V
sudo mkfs.ext4 -V
mke2fs  1.43 -WIP ( 15 -Mar- 2016 )
         Using EXT2FS Library version  1.43 -WIP
mkfs.ext4 >= 1.43
for : DISK=/dev/mmcblk0
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}p1
  
for : DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK} 1
mkfs.ext4 <= 1.42
for : DISK=/dev/mmcblk0
sudo mkfs.ext4 -L rootfs ${DISK}p1
  
for : DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs ${DISK} 1

Mount Partition:
On most systems these partitions may will be auto-mounted...

sudo mkdir -p /media/rootfs/
  
for : DISK=/dev/mmcblk0
sudo mount ${DISK}p1 /media/rootfs/
  
for : DISK=/dev/sdX
sudo mount ${DISK} 1  /media/rootfs/

Install Kernel and Root File System

To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.

-----------------------------
Script Complete
eewiki.net: [user @localhost :~$ export kernel_version= 4 .X.Y-Z]
-----------------------------

Copy and paste that "export kernel_version=4.X.Y-Z" exactly as shown in your own build/desktop environment and hit enter to create an environment variable to be used later.

export kernel_version= 4 .X.Y-Z

Copy Root File System

~/
sudo tar xfvp . /*-*-*-armhf-*/ armhf-rootfs-*.tar -C /media/rootfs/

Set uname_r in /boot/uEnv.txt

~/
sudo sh -c  "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

Copy Kernel Image

Kernel Image:

~/
sudo cp -v ./armv7-multiplatform/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

Copy Kernel Device Tree Binaries

~/
sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

Copy Kernel Modules

~/
sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

File Systems Table (/etc/fstab)

/etc/fstab
sudo sh -c  "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

Networking

Edit: /etc/network/interfaces

sudo nano /media/rootfs/etc/network/interfaces

Add:

/etc/network/interfaces
auto lo
iface lo inet loopback
  
auto eth0
iface eth0 inet dhcp

Remove microSD/SD card

sync
sudo umount /media/rootfs

Comments

Comments, feedback, and questions can be sent to: [email protected]
Please use the Digi-Key Forum: TechXchange Community

  • freescale

1 Child Page

Page: i.MX6q SABRE Board for Smart Devices Comments

你可能感兴趣的:(linux内核,嵌入式系统)