AnsweredAssumed Answered

mfgtool + boundary devices u-boot and kernel boot problem

Question asked by Kamil Lulko on Apr 25, 2013
Latest reply on May 2, 2013 by jimmychan
Branched to a new discussion



We need to be able to load u-boot and kernel image to RAM of our SABRE lite board (from Boundary Devices) using USB loader feature of IMX6. We have performed some tests with LTIB provided u-boot (2009.08) and Boundary Devices u-boot (obtained from by loading it to RAM with mfgtool utility. Here are our results:

- For both 2009.08 and Boundary Devices u-boot versions the u-boot is started correctly and we are able to run u-boot commands.

- In case of 2009.08 u-boot we are able to start Linux kernel with bootm command using either kernel provided with mfgtool or our own custom modified kernel.

- In case of Boundary devices u-boot the boot sequence does not go past "Starting kernel ...". This happens for both mfgtool provided kernel and our own custom one.


We made some further tests by loading exact same u-boot binaries into Flash memory present on SABRE lite and in both cases Linux kernel started properly.


We tried debugging this with memory printouts and so on and we were not able to find reason for this Boundary Devices u-boot + kernel loaded using mfg tool problem. We checked if Machine ID, etc. match in each of these configurations and everything seems ok. Below is printout from boot sequence (it gets stuck on Starting kernel line):


## Current stack ends at 0x4f4fdce0 *  kernel: cmdline image address = 0x10800000

## Booting kernel from Legacy Image at 10800000 ...

   Image Name:   Linux-3.0.35

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    3878800 Bytes = 3.7 MiB

   Load Address: 10008000

   Entry Point:  10008000

   Verifying Checksum ... OK

   kernel data at 0x10800040, len = 0x003b2f90 (3878800)

## No init Ramdisk

   ramdisk start = 0x00000000, ramdisk end = 0x00000000

## No Flattened Device Tree

   Loading Kernel Image ... OK


   kernel loaded at 0x10008000, end = 0x103baf90

using: ATAGS

## Transferring control to Linux (at address 10008000)...


Starting kernel ...



Help is appreciated as we need to be able to boot Linux kernel using our own modified u-boot based on Boundary Devices git U-boot version using mfgtool.


This can be easily tested as this problem does happen with unmodified u-boot straight from Boundary Devices git. Below are contents of our ucl2.xml file (where uImage was either default uImage provided with mfgtool or our own uImage and u-boot is either u-boot from ltib or bounary devices git):




    <STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>

    <STATE name="Updater"   dev="MSC" vid="066F" pid="37FF"/>



  <LIST name="uboot-ram" desc="Boot with u-boot from RAM">

        <CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot.imx" >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="jump" > Jumping to OS image. </CMD>





Bootargs used (minimal just to check if it goes beyond "Starting kernel . . ."): "console=ttymxc1,115200"

Booted using "bootm ${loadaddr}" command, where loadaddr is equal to 0x10800000

So to sum it up: our u-boot binary properly loads and boots kernel when we boot from Serial Flash but when we put exact same u-boot to RAM using mfgtool the boot sequence is stuck on "Starting kernel...". With 2009.08 u-boot kernel boot works properly in any case.