[meta-freescale] Unable to get u-boot running on i.MX6 SABRE for Smart Devices Eval Board

Guillaume Fournier gfournier at brioconcept.com
Tue Nov 4 14:44:08 PST 2014


I am new to Yocto and I am having a hard time getting a basic environment
setup.  I have read a lot of documentation but I'm still stock so I'd like
to seek your help.

Problem: I can't get u-boot to start on my evaluation board.  No output
whatsoever on the UART.
Board used: i.MX6 Series SABRE for Smart Devices (MCIMX6DL-SDP)

Here are the steps I followed to get to the point where I am:
BSP setup on a Ubuntu 12.04.5 LTS
1) Made sure following required packages were installed
   $ sudo apt-get install gawk wget git-core diffstat unzip texinfo
build-essential chrpath libsdl1.2-dev xterm curl
2) Created a working directory
   $ mkdir ~/axion-dev
3) CD to that directory
4) Installed the REPO tool
   $ mkdir ~/axion-dev/bin
   $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >
   $ chmod a+x ~/axion-dev/bin/repo
5) Downloaded BSP source code
   $ PATH=${PATH}:~/axion-dev/bin
   $ mkdir ~/axion-dev/fsl-community-bsp
   $ cd ~/axion-dev/fsl-community-bsp
   $ git config --global user.email "gfournier at brioconcept.com"
   $ git config --global user.name "Guillaume Fournier"
   $ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b
   $ repo sync
   $ repo start axion --all

Built and installed cross development toolchain
1) Setup the build environment (this changes the current working directory)
   $ source ./setup-environment build
   Accepted the EULA
2) Choose "imx6dlsabresd" as the machine.
3) Modified ~/axion-dev/fsl-community-bsp/build/conf/local.conf to change
   the MACHINE parameter with the name of the selected machine.  For
   MACHINE ??= 'imx6dlsabresd'
4) Launched the build
   $ bitbake meta-toolchain
5) Grabbed a coffee and waited...
6) Launched
   When asked where to install, I choose ~/axion-dev/toolchain
Got and built u-boot
1) Got Freescale u-boot
   $ cd ~/axion-dev
   $ git clone https://github.com/Freescale/u-boot-fslc.git
2) Ran toolchain environment script.  This sets all relevant environment
variables for cross-compilation
3) Built u-boot
   $ cd ~/axion-dev/u-boot-fslc
   $ make LDFLAGS="" CC="$CC" mrproper
   $ make LDFLAGS="" CC="$CC" mx6dlsabresd_config
   $ make LDFLAGS="" CC="$CC"
   The reason behind the [LDFLAGS="" CC="$CC"] is this:
   u-boot top level Makefile contains:
   PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS)
-print-libgcc-file-name`) -lgcc
   The above call gets resolved to "-L ."  Doing ${CC}
-print-libgcc-file-name shows the proper value. The reason
   for this is that U-Boot does not pickup $CC from our environment (which
is including the --sysroot option). Without this
   option -print-libgcc-file-name resolve to a simple file name without a
path. And thus dirname resolve it further to "."
   So the fix is to do: make LDFLAGS="" CC="$CC"
   This passes the ${CC} environment variable to the Makefile which in turns
resolve the PLATFORM_LIBGCC correctly

   As read here:

Flashed an SD card with u-boot
1) Downloaded Mfgtools-Rel-4.1.0_130816_MX6DL_UPDATER.gz from Freescale onto
a Windows machine
   Also called IMX_6DL_6S_MFG_TOOL: Tool and documentation for downloading
OS images to the i.MX 6DualLite and i.MX6Solo. 
   Size (K): 73917 Format: gz Rev #: L3.0.35_4.1.0 Modified: 9/5/2013
2) Uncompressed it
3) Modified {INSTALL_FOLDER}\cfg.ini so it looks like this:
   chip = MX6DL Linux Update

   board = SabreSD

4) Modified {INSTALL_FOLDER}\Profiles\MX6DL Linux Update\OS
Firmware\ucl2.xml to add this list entry:
   <LIST name="AXION-i.MX6DL-SABRESD-SD" desc="Choose SD as media">  
        <CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6dl-sabresd.bin" >Loading U-boot</CMD>
        <CMD state="BootStrap" type="load" file="uImage"
address="0x10800000" loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE" >Loading Kernel.</CMD>
        <CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot"
address="0x10C00000" loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE" >Loading Initramfs.</CMD>
        <CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>

        <CMD state="Updater" type="push" body="send"
file="mksdcard.sh.tar">Sending partition shell</CMD>
        <CMD state="Updater" type="push" body="$ tar xf $FILE ">
        <CMD state="Updater" type="push" body="$ sh mksdcard.sh
/dev/mmcblk1"> Partitioning...</CMD>
        <CMD state="Updater" type="push" body="send"
file="axion/u-boot.bin">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk1
bs=1k seek=1 skip=1 conv=fsync">write u-boot.bin to sd card</CMD>
        <CMD state="Updater" type="push" body="send"
file="files/uImage">Sending kernel uImage</CMD>
        <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk1
bs=1M seek=1 conv=fsync">write kernel image to sd card</CMD>
        <CMD state="Updater" type="push" body="$ mkfs.ext3 -j
/dev/mmcblk1p1">Formatting rootfs partition</CMD>
        <CMD state="Updater" type="push" body="$ mkdir -p /mnt/mmcblk1p1"/> 
        <CMD state="Updater" type="push" body="$ mount -t ext3
/dev/mmcblk1p1 /mnt/mmcblk1p1"/>
        <CMD state="Updater" type="push" body="pipe tar -jxv -C
/mnt/mmcblk1p1" file="files/rootfs.tar.bz2">Sending and writing rootfs</CMD>
        <CMD state="Updater" type="push" body="frf">Finishing rootfs
        <CMD state="Updater" type="push" body="$ umount
/mnt/mmcblk1p1">Unmounting rootfs partition</CMD>
        <CMD state="Updater" type="push" body="$ echo Update
5) Created a directory under {INSTALL_FOLDER}\Profiles\MX6DL Linux Update\OS
Firmware\ named "axion"
6) Copied u-boot.bin from Linux box ~/axion-dev/u-boot-fslc to Windows box
{INSTALL_FOLDER}\Profiles\MX6DL Linux Update\OS Firmware\axion
7) Connected eval board to the Windows box using USB cable (on USB OTG
8) Set all DIP switches on the eval board to OFF (SW6)
9) Powered the board
10)Ran MfgTool2.exe and hit Start
11)Once done, unpowered the board
12)Flip SW6 to '01000010'
13)Connected eval board to the Windows box using USB cable (USB TO UART
14)Launched a terminal (I used PuTTY) on the virtual com port created
(115200 N81)
15)Powered the board

I would expect u-boot to come up here and it doesn't.  I don't have anything
output on the serial port.  I have tried with supplied i.MX6DL-SABRESD-SD
profile in IMX_6DL_6S_MFG_TOOL and it works fine, I get the expected u-boot

What am I doing wrong ?

Guillaume Fournier
Hardware Designer
Brioconcept Consulting Inc.

More information about the meta-freescale mailing list