AnsweredAssumed Answered

i.MX6 u-boot.bin and JTAG

Question asked by Chris C on Mar 7, 2017
Latest reply on Mar 13, 2017 by Chris C

I am trying to load u-boot onto an i.MX6DL board via JTAG without using any other peripherals (ie, USB, SD card, etc).  I am using an ARM DSTREAM JTAG debugger.

 

In the past, I was able to do this with u-boot 2009.08 using the u-boot elf file.  I would do the following:

1. Connect to board with JTAG

2. Load DDR .ds script to initialize DDR registers

3. Load the u-boot ELF file 

4. Start the debugger 

5. Board would boot that loaded u-boot out of memory.

 

 

However, when I try with the current version of u-boot 2016.03, DSTREAM won't even load the u-boot elf file properly. Something has changed in u-boot since 2009 and they use some ELF headers that prevents debuggers from loading the ELF file properly.  So now I am trying to use the "restore" command in DSTREAM to load u-boot.  The procedure I'm tying is:

 

1. Connect to board with JTAG

2. Load DDR .ds script to initialize DDR registers

3. Execute the following commands on debugger to load u-boot:

 

# disable IRQs, MMU and cache

set var $Core::$CPSR.I = 0x1
set var $Core::$CPSR.F = 0x1
set var $CP15::$SBanked::$S_SCTLR.M = 0
set var $CP15::$SBanked::$S_SCTLR.C = 0

# Load binary into memory

restore u-boot.bin binary 0x17800000

# load symbols
add-symbol-file u-boot SP:0x0

# set PC
set var $PC = 0x17800000
set debug-from *0x17800000

4. Start the debugger

5. u-boot does not start

 

I'm assuming NXP uses DSTREAM debuggers to do this, so if anyone can point out what I'm doing wrong I would appreciate it.

Outcomes