dcsimg
Skip to end of metadata
Go to start of metadata

This is a page about the Freescale based i.MX6; ConnectCore 6 SBC.

Availability

Kit:
Digi International CC-WMX6-KIT at Digi-Key

Vendor Documentation

Basic Requirements

Bootloader: U-Boot

Das U-Boot – the Universal Boot Loader: http://www.denx.de/wiki/U-Boot
These directions going forward now assume your using the "factory" v2013.04.4.2 U-Boot. Please verify with: "version"

Digi U-Boot 2013.04.4.2 (Dec 04 2015 - 13:33:14)
 
CPU:   Freescale i.MX6Q rev1.5 at 792 MHz
CPU:   Temperature 40 C, calibration data: 0x5654db69
Reset cause: POR
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Board: ConnectCore 6 SBC (undefined version)
Boot device: esdhc4 (eMMC)
PMIC:  DA9063, Device: 0x61, Variant: 0x50, Customer: 0x00, Config: 0x56
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
=> version
 
Digi U-Boot 2013.04.4.2 (Dec 04 2015 - 13:33:14)
arm-eabi-gcc (GCC) 4.7
GNU ld (GNU Binutils) 2.22.90.20120727

If your board has something different, take a look here: Upgrade U-Boot

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.9.x (Longterm 4.9.x):

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

For v4.9.x-rt (Longterm 4.9.x + Real-Time Linux):

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

Build:

~/armv7-multiplatform/
./build_kernel.sh

Root File System

Debian 9

User

Password

debian

temppwd

root

root

Download:

~/
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-9.3-minimal-armhf-2017-12-09.tar.xz

Verify:

~/
sha256sum debian-9.3-minimal-armhf-2017-12-09.tar.xz
5120fcfb8ff8af013737fae52dc0a7ecc2f52563a9aa8f5aa288aff0f3943d61  debian-9.3-minimal-armhf-2017-12-09.tar.xz

Extract:

~/
tar xf debian-9.3-minimal-armhf-2017-12-09.tar.xz

Ubuntu 16.04 LTS

User

Password

ubuntu

temppwd

Download:

~/
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.3-minimal-armhf-2017-12-09.tar.xz

Verify:

~/
sha256sum ubuntu-16.04.3-minimal-armhf-2017-12-09.tar.xz
cacc1a8c56649808e3bc27ca58f94dbe817b9e86e660780009a3535709823cc1  ubuntu-16.04.3-minimal-armhf-2017-12-09.tar.xz

Extract:

~/
tar xf ubuntu-16.04.3-minimal-armhf-2017-12-09.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=20

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

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

Format Partition:
With mkfs.ext4 1.43, we need to make sure metadata_csum and 64bit are disabled.
As the version of U-Boot needed for this target CAN NOT correctly handle reading files with these newer ext4 options.

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.vfat -F 16 -n BOOT ${DISK}p1
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}p2
 
for: DISK=/dev/sdX
sudo mkfs.vfat -F 16 -n BOOT ${DISK}1
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}2
mkfs.ext4 <= 1.42
for: DISK=/dev/mmcblk0
sudo mkfs.vfat -F 16 -n BOOT ${DISK}p1
sudo mkfs.ext4 -L rootfs ${DISK}p2
 
for: DISK=/dev/sdX
sudo mkfs.vfat -F 16 -n BOOT ${DISK}1
sudo mkfs.ext4 -L rootfs ${DISK}2

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

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

U-Boot upgrade

Download Factory version: 20151204103304

~/
- For a Quad/Dual CPU with 2GB DDR3:
wget https://rcn-ee.com/repos/bootloader/digi/ccimx6sbc/u-boot-ccimx6qsbc2GB-20151204103304.imx
- For a Quad/Dual CPU with 1GB DDR3:
wget https://rcn-ee.com/repos/bootloader/digi/ccimx6sbc/u-boot-ccimx6qsbc-20151204103304.imx
- For a Quad/Dual CPU with 512MB DDR3:
wget https://rcn-ee.com/repos/bootloader/digi/ccimx6sbc/u-boot-ccimx6qsbc512MB-20151204103304.imx
- For a DualLite/Solo CPU with 1GB DDR3:
wget https://rcn-ee.com/repos/bootloader/digi/ccimx6sbc/u-boot-ccimx6dlsbc-20151204103304.imx
- For a DualLite/Solo CPU with 512MB DDR3:
wget https://rcn-ee.com/repos/bootloader/digi/ccimx6sbc/u-boot-ccimx6dlsbc512MB-20151204103304.imx

Copy u-boot*.imx to microSD

~/
sudo cp -v ./u-boot*.imx /media/boot/u-boot.imx

boot.scr to uEnv.txt wrapper

Create wrapper script "boot.cmd" boot script:

~/boot.cmd
echo "echo \"boot.scr -> uEnv.txt wrapper...\"" > ./boot.cmd
echo "setenv mmcdev 1" >> ./boot.cmd
echo "setenv mmcpart 2" >> ./boot.cmd
echo "ext2load mmc \${mmcdev}:\${mmcpart} \${loadaddr} /boot/uEnv.txt" >> ./boot.cmd
echo "env import -t \${loadaddr} \${filesize}" >> ./boot.cmd
echo "ext2load mmc \${mmcdev}:\${mmcpart} \${loadaddr} /boot/vmlinuz-\${uname_r}" >> ./boot.cmd
echo "ext2load mmc \${mmcdev}:\${mmcpart} \${fdt_addr} /boot/dtbs/\${uname_r}/\${dtb}" >> ./boot.cmd
echo "setenv bootargs console=\${console} \${optargs} root=\${root} rootfstype=\${rootfstype} rootwait fixrtc \${systemd} \${cmdline};" >> ./boot.cmd
echo "echo debug: [\${bootargs}] ... ;" >> ./boot.cmd
echo "echo debug: [bootz \${loadaddr} - \${fdt_addr}] ... ;" >> ./boot.cmd
echo "bootz \${loadaddr} - \${fdt_addr}" >> ./boot.cmd

Using mkimage (u-boot-tools pkg) create boot script

~/
sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "wrapper" -d ./boot.cmd /media/boot/boot.scr

uEnv.txt based bootscript

Create "uEnv.txt" boot script:
Make sure to un-comment which board you have with the dtb variable.

~/uEnv.txt
echo "console=ttymxc3,115200" > ./uEnv.txt
echo "optargs=" >> ./uEnv.txt
echo "root=/dev/mmcblk1p2" >> ./uEnv.txt
echo "rootfstype=ext4" >> ./uEnv.txt
echo " " >> ./uEnv.txt
echo "cmdline=" >> ./uEnv.txt
echo " " >> ./uEnv.txt
echo "dtb=imx6q-ccimx6sbc.dtb" >> ./uEnv.txt

Copy uEnv.txt to the partition:

~/
sudo mkdir -p /media/rootfs/boot/
sudo cp -v ./uEnv.txt /media/rootfs/boot/

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/
sync
sudo chown root:root /media/rootfs/
sudo chmod 755 /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)

sudo sh -c "echo '/dev/mmcblk1p2  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"
sudo sh -c "echo '/dev/mmcblk1p1  /boot/uboot  auto  defaults  0  2' >> /media/rootfs/etc/fstab"

Remove microSD/SD card

sync
sudo umount /media/boot
sudo umount /media/rootfs

Status

Digi U-Boot 2013.04.4.2 (Dec 04 2015 - 13:33:14)
 
CPU:   Freescale i.MX6Q rev1.5 at 792 MHz
CPU:   Temperature 45 C, calibration data: 0x5654db69
Reset cause: POR
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Board: ConnectCore 6 SBC (undefined version)
Boot device: esdhc4 (eMMC)
PMIC:  DA9063, Device: 0x61, Variant: 0x50, Customer: 0x00, Config: 0x56
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
=> env set -f mmcdev 1
=> env set -f mmcbootdev 1
=> run bootcmd
reading boot.scr
628 bytes read in 12 ms (50.8 KiB/s)
## Executing script at 12000000
boot.scr -> uEnv.txt wrapper...
128 bytes read in 43 ms (2 KiB/s)
5315056 bytes read in 301 ms (16.8 MiB/s)
47262 bytes read in 258 ms (178.7 KiB/s)
debug: [console=ttymxc3,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait fixrtc] ...
debug: [bootz 0x12000000 - 0x18000000] ...
## Flattened Device Tree blob at 18000000
   Booting using the fdt blob at 0x18000000
switch to LDO bypass mode
   Using Device Tree in place at 18000000, end 1800e89d
Unable to update property /wireless:mac-address, err=FDT_ERR_NOTFOUND
Unable to update property /bluetooth:mac-address, err=FDT_ERR_NOTFOUND
 
Starting kernel ...

Till we port mainline u-boot, stop u-boot:

Hit any key to stop autoboot:  0
=>

and run:

env set -f mmcdev 1
env set -f mmcbootdev 1
run bootcmd

Upgrade U-Boot

Verify u-boot.imx is present

=> fatls mmc 1
   302528   u-boot.imx
      628   boot.scr
 
2 file(s), 0 dir(s)

Upgrade with u-boot.imx

=> update uboot mmc 1 fat u-boot.imx
Do you really want to program the boot loader? <y/N> y
reading u-boot.imx
302528 bytes read in 30 ms (9.6 MiB/s)
switch to partions #1, OK
mmc0(part 1) is current device
Writing firmware...
 
MMC write: dev # 0, block # 2, count 591 ... 591 blocks write: OK
Reading back firmware...
 
MMC read: dev # 0, block # 2, count 591 ... 591 blocks read: OK
Verifying firmware...
Total of 75632 word(s) were the same
Update was successful
mmc0(part 1) is current device

reset board and verify new version

=> reset
resetting ...
 
Digi U-Boot 2013.04.4.2 (Dec 04 2015 - 13:33:14)

CPU:   Freescale i.MX6Q rev1.5 at 792 MHz
CPU:   Temperature 43 C, calibration data: 0x5654db69
Reset cause: WDOG
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Board: ConnectCore 6 SBC (undefined version)
Boot device: esdhc4 (eMMC)
PMIC:  DA9063, Device: 0x61, Variant: 0x50, Customer: 0x00, Config: 0x56
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0
=> version
 
Digi U-Boot 2013.04.4.2 (Dec 04 2015 - 13:33:14)
arm-eabi-gcc (GCC) 4.7
GNU ld (GNU Binutils) 2.22.90.20120727
=> 

U-Boot, reset enviroment

=> env default -a
## Resetting to default environment
## Error: Can't overwrite "ethaddr"
himport_r: can't insert "ethaddr=00:04:f3:ff:ff:fa" into hash table
## Error: Can't overwrite "wlanaddr"
himport_r: can't insert "wlanaddr=00:04:f3:ff:ff:fb" into hash table
## Error: Can't overwrite "btaddr"
himport_r: can't insert "btaddr=00:04:f3:ff:ff:fc" into hash table
=> saveenv
Saving Environment to MMC...
Writing to MMC(0)... done

Comments

Comments, feedback, and questions can be sent to: eewiki@digikey.com
Please use the Digi-Key's TechForum: TechForum