AnsweredAssumed Answered

Code not running following a UART boot load completion

Question asked by jkellar on Feb 28, 2013
Latest reply on Mar 13, 2013 by jkellar

I wasn't sure if this topic needed to be the Blackfin Hardware or Blackfin GNU Toolchain group as I'm not sure where my problem is.


I am using the GNU Toolchain for building, creating the loader file and loading over UART when booting.


My code runs perfectly during debug over JTAG without any issues. I've built Debug and Release versions for creating a loader file. I use the following command to create a loader file:


bfin-elf-ldr -T bf518 -c progUART.ldr prog


I wasn't sure if I needed to add --bmode uart to the end of the command line or not. I did try that and it didn't work either.


It creates a loader file with the following complaint but apparently pads with zeroes to resolve. Not sure if this is a real problem or not. Here's the warning:


Adding DXE 'prog' ... [jump block to 0xFFA00014] [ELF block: 98560 @ 0x00000000] [ELF bloc

k: 10248 @ 0xFF800000] [ELF block: 9546 @ 0xFFA00000] bfin-elf-ldr: count is not 4 byte aligned (0x2

54A % 4 = 2)

bfin-elf-ldr: going to pad the end with zeros, but you should fix this




Now I have my loader file I'm ready to boot over the UART. This load works nicely without any issues:


bfin-elf-ldr -l progUART.ldr /COM6


and I get the following response:


Loading LDR progUART.ldr ... OK!

Opening /COM6 ... OK!

Configuring terminal I/O ... OK!

Trying to send autobaud ... OK!

Trying to read autobaud ... OK!

Checking autobaud ... OK!

Autobaud result: 115200bps 36.864mhz (header:0xBF DLL:0x14 DLH:0x00 fin:0x00)

Sending blocks of DXE 1 ... OK!

You may want to run minicom or kermit now

Quick tip: run 'ldr <ldr> <devspec> && minicom'


It shows loading blocks 1 through 10 successfully.


After that nothing happens at all. It sits there quietly at a standstill. I've even tried to pull up a terminal and type run 'prog.ldr per the "Quick tip" at the end of loading thinking the bootloader may be waiting for a run command or something. Per all the documentation it should jump to vector 0xffa00000 and go. I've looked at the loader file with ldrviewer as well as looking at how my code is mapped. Everything seems to be in its correct location.


What am I missing or doing wrong?