Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

debian basedextrapkgs: (sudo apt-get update ; sudo apt-get install xyz)

Ubuntu 12.04

 

ia32-libs

Debian 7 (Wheezy)

sudo dpkg --add-architecture i386

libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386

Ubuntu 12.10 -> 14.04

 

libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386

Red Hat/Centos/Fedora

 

libstdc++.i686 ncurses-devel.i686 zlib.i686

Red Hat based (rpm)

extra

pkgs: (yum install xyz)

Red Hat/Centos/Fedora

 

libstdc++.i686 ncurses-devel.i686 zlib.i686

Ubuntu 12.04

 

ia32-libs

Ubuntu 12.10 -> 14.04

 

libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386


For For u-boot v2015.07 andv2017.01 and Linux kernel v4.19.41, use Linaro arm compilier that TI used in their Processor SDK 0204.01.00.01.0706

Info
iconfalse
$ wget wget -c httpshttp://releases.linaro.org/15.05/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-46.92.1-20152016.0511-x86i686_64_arm-linux-gnueabihf.tar.xz
$ sudo tar -C /opt -xJf gcc-linaro-46.92.1-20152016.0511-x86_64_arm-linux-gnueabihf.tar.xz
$ export CC=/opt/gcc-linaro-46.92.1-20152016.0511-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-


For u-boot v2016.05 and Linux kernel v4.4.12, use Linaro arm compilier that TI used in their Processor SDK 03.00.00.04

Info
iconfalse
$ wget https-c http://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
$ sudo tar -C /opt -xJf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
$ export CC=/opt/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-


For u-boot v2015.07 and Linux kernel v4.1.10, use Linaro arm compilier that TI used in their Processor SDK 02.00.01.07

Info
iconfalse
$ wget -c http://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-


Test:

If this test fails, verify that you have the 32bit libraries installed on your development system.

Info
iconfalse

$ ${CC}gcc --version
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 - Linaro GCC 2013.04) 4.7.3 20130328 (prerelease)
Copyright (C) 2012 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.

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 v2015v2017.07 01 (Processor-SDK-0204.01.00.01.0706): 

Download

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarc-t437x-uboot
$ cd smarc-t437x-uboot
$ git checkout v2015v2017.0701-smarct4x


For u-boot v2016.05 (Processor-SDK-03.00.00.04):
 

Download

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarc-t437x-uboot
$ cd smarc-t437x-uboot
$ git checkout v2016.05-smarct4x


For u-boot v2015.07 (Processor-SDK-02.00.01.07):
 

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git smarc-t437x-uboot
$ cd smarc-t437x-uboot
$ git checkout v2015.07-smarct4x


Configure and Build:

Info
iconfalse
$ make ARCH=arm CROSS_COMPILE=${CC} distclean
$ make ARCH=arm CROSS_COMPILE=${CC} smarct437x_evm_spi_uart3_defconfig
$ make ARCH=arm CROSS_COMPILE=${CC}
Note
  1. If users use other uart ports as their debug port, simply change uart3 to other index.
  2. The SMARC-T4378 module always boot up from the onboard SPI NOR flash. The factory default will be MLO.byteswap and u-boot.img pre-installed. 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-T4378 module will boot up to carrier SD card. If TEST# pin is shunt crossed to ground, the config will be:

$ make ARCH=arm CROSS_COMPILE=${CC} smarct437x_evm_uart3_defconfig

Linux Kernel

...

Download:

For 4.19.13 41 (Processor-SDK-0204.01.00.01.0706, Stable, LTS):

Download:

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-ti-linux-kernel.git
$ cd smarc-ti-linux-kernel
Branch "smarct4x-800-
$ git checkout smarct4x-800-processor-sdk-linux-02.00.01
Note
04.01.00.06


For 4.4.12 (Processor-SDK-03.00.00.04, Stable, LTS):

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-ti-linux-kernel.git
$ cd smarc-ti-linux-kernel
$ git checkout smarct4x-processor-sdk-linux-
02
03.00.
01" is for
00.04
Note

SMARC-T4378-800 variant . If users use and SMARC-T4378-01G , use both share the same kernel branch "smarct4x-processor-sdk-linux-0203.00.01" branch instead.$ git checkout 00.04" at Linux kernel v4.4.12 and "smarct4x-processor-sdk-linux-0204.01.00.01 

 

06" at Linux kernel v4.9.41.


For 4.41.12 13 (Processor-SDK-0302.00.0001.0407, Stable, LTS):

Download:

Info
iconfalse
$ git clone git@git.embedian.com:developer/smarc-ti-linux-kernel.git
$ cd smarc-ti-linux-kernel
$ git checkout smarct4x-800-processor-sdk-linux-0302.00.00.0401
Note

Branch "smarct4x-800-processor-sdk-linux-02.00.01" is for SMARC-T4378-800 variant and . If users use SMARC-T4378-01Gboth share the same kernel branch , use "smarct4x-processor-sdk-linux-0302.00.00.04" at Linux kernel v4.4.12.01" branch instead.

$ git checkout smarct4x-processor-sdk-linux-02.00.01 

Configure and Build

Info
iconfalse
$ make ARCH=arm CROSS_COMPILE=${CC} distclean
$ make ARCH=arm CROSS_COMPILE=${CC} smarct437x_defconfig
$ make ARCH=arm CROSS_COMPILE=${CC} zImage modules am437x-smarct437x.dtb

...

Info
iconfalse
$ wget -c ftp://ftp.embedian.com/public/dev/minfs/trusty/smarct4x-ubuntu-14.04.tar.gz

Verify:

Info
iconfalse

$ md5sum smarc4x-ubuntu-14.04.tar.gz

2ef6477f7e506e651c2c8a7b4290fefc  smarct4x-ubuntu-14.04.tar.gz

Setup SD Card

...

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

...

On some systems, these partitions may be auto-mounted...

 

Info
iconfalse
$ 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/

...

The MLO.byteswap and u-boot.img is pre-installed in SPI NOR flash at factory default. SMARC-T4378 is designed to always boot up from SPI NOR flash and to load zImage, device tree blob and root file systems based on the device setting of BOOT_SEL. If users need to fuse their own u-boot or perform u-boot upgrade. This section will instruct you how to do that.

Copy MLO.byteswap/u-boot.img to the first boot partition of your SD card.

Info
iconfalse
title~/smarc-t437x-uboot

$ sudo cp -v MLO.byteswap /media/boot/
$ sudo cp -v u-boot.img /media/boot/spi-u-boot.img 

...

Copy MLO/u-boot.img to the first boot partition of your SD card.

Info
iconfalse
title~/smarc-t437x-uboot

$ sudo cp -v MLO /media/boot/
$ sudo cp -v u-boot.img /media/boot/ 

...

Info
iconfalse
title~/smarc-ti-linux-kernel

$ sudo cp -v arch/arm/boot/zImage /media/boot

Install Kernel Device Tree Binary

Info
iconfalse
$ sudo mkdir -p /media/boot/dtbs
$ sudo cp -v arch/arm/boot/dts/am437x-smarct437x.dtb /media/boot/dtbs

Install Root File System and Kernel Modules

...

Info
iconfalse
titledirectory where your root file system is

$ sudo tar xvfz smarct437x-rootfs-image-smarct437x.tar.gz -C /media/rootfs

Ubuntu 14.04:

Info
iconfalse
titledirectory where your root file system is

$ sudo tar xvfz smarct4x-ubuntu-14.04.tar.gz -C /media/rootfs

Copy Kernel Modules:

Info
iconfalse
title~/smarc-ti-linux-kernel

$ sudo make ARCH=arm INSTALL_MOD_PATH=/media/rootfs modules_install

Networking:

Edit: /etc/network/interfaces

Info
iconfalse
$ sudo vim /media/rootfs/etc/network/interfaces

Add:

Info
iconfalse
title/media/rootfs/etc/network/interfaces

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
iconfalse

$ export DISK=/dev/mmcblk0

Mount Partitions:

On some systems, these partitions may be auto-mounted...

...

Copy zImage to rootfs partition:

Info
iconfalse

$ sudo cp -v /media/boot/zImage /media/rootfs/home/root


Note
titleNote
  1. If your rootfs is Ubuntu 14.04, copy to /media/rootfs/home/ubuntu instead of /media/rootfs/home/root

...

Copy device tree blob to rootfs partition:

Info
iconfalse
$ sudo cp -v /media/boot/dtbs/am437x-smarct437x.dtb /media/rootfs/home/root/am437x-smarct437x.dtb 

Copy real rootfs to rootfs partition:

Yocto Built Root File Systems

Info
iconfalse

$ pushd /media/rootfs

$ sudo tar cvfz ~/smarct437x-emmc-rootfs.tar.gz .

$ sudo mv ~/smarct437x-emmc-rootfs.tar.gz /media/rootfs/home/root

$ popd

Ubuntu 14.04 Root File Systems

Info
iconfalse

$ sudo vim /media/rootfs/etc/udev/rules.d/70-persistent-net.rules

Delete all contents starting with "SUBSYSTEM=="

$ pushd /media/rootfs

$ sudo tar cvfz ~/smarct437x-emmc-rootfs.tar.gz .

$ sudo mv ~/smarct437x-emmc-rootfs.tar.gz /media/rootfs/home/root

$ popd

Remove SD card:

Info
iconfalse
$ sync
$ sudo umount /media/boot
$ sudo umount /media/rootfs

...

Now it will be almost the same as you did when setup your SD card, but the eMMC device descriptor is /dev/mmcblk0 now. (SD card will be /dev/mmcblk1)

Info
iconfalse

$ export DISK=/dev/mmcblk0

Erase SD card:

Info
iconfalse

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

...

Copy uEnv.txt/zImage/*.dtb to the boot partition

Info
iconfalse

$ sudo cp -v zImage uEnv.txt /media/boot/

Install Kernel Device Tree Binary

Info
iconfalse
$ sudo mkdir -p /media/boot/dtbs
$ sudo cp -v am437x-smarct437x.dtb /media/boot/dtbs

Install Root File System

...

Info
iconfalse
$ sudo tar -zxvf smarct437x-emmc-rootfs.tar.gz -C /media/rootfs

 

Unmount eMMC:

Info
iconfalse
$ sync
$ sudo umount /media/boot
$ sudo umount /media/rootfs

 

Switch your Boot Select to eMMC and you will be able to boot up from SPI NOR flash and import u-boot environmental parameters and load kernel zImage and device tree blob from eMMC now.

==End of Document==


Last updated 20162018-0802-24