This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280038C-Q1: Run from Flash code and questions for F28003x

Part Number: TMS320F280038C-Q1
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Just trying to get a program that has been working with the debugger in Flash to boot to flash when the product is running without the debugger.

I am using EABI calls and ELF linker output format.

I have dragged most of the startup code into my project and using the FLASH cmd file for the processor

The start vector that gets loaded into BEGIN in a start program called boot28.asm.  I had to add ".retain" to it and make some other changes but now it loads the address of the start code into 0x80000 (BEGIN).

I notice in some documentation though it says that this should be a branch instruction.  In some it says just the start address.

Anyway if I power up, my code does not work and if I connect the debugger at this point the processor is executing in the Boot Rom and eventually hits an ESTOP0 command.

Q1 - should the 'data' at BEGIN be a vector or a branch instruction?

Q2 - if the boot fails and falls out to the bootloader is there a way to determine the cause?

Further info

  • Using CCS 12.8
  • BOOT0 and BOOT1 are high at reset
  • Programs run OK from flash under the debugger
  • I have not (knowingly) changed OTP memory
  • If I use memory viewer I can see a valid start address stored at 0x80000.
  • I have not done anything with WDT.
  • Hi Donald,

    The expert is currently out of office today due to US holiday. Please expect a delay in response.

    Best Regards,

    Aishwarya

  • Hi Donald,

    Q1: In general, it should be a branch instruction. I will look into this more and let you know what I find. I don't think the entry address being there is an issue as the application is executing as expected when the debugger is connected.

    Q2: You can debug the bootload process by loading the symbols associated with BROM and placing break points/stepping through it. Follow the below steps below:

    1. Connect to the device via CCS

    2. Load the application to flash

    3. Tools -> Debugger Options -> Auto Run and Launch Options

    4. Un-check the "On a program load or restart" box under Auto Run Options

    2. Perform a CPU reset on the device

    3. Select Load -> Load Symbols -> C2000Ware_Install_Location\libraries\boot_rom\f28003x\rev0\rom_sources\ccs_files\cpu\Release\F28003x_ROM.out

    4. When prompted to locate the files associated with BROM source code, select this location C2000Ware_Install_Location\libraries\boot_rom\f28003x\rev0\rom_sources\F28003x_ROM\bootROM\source

    5. At this point, you should see the device in the boot28.asm file

    6. Step through the code until you see where it fails

    I don't expect the flash boot to fail, but this will help you verify.

    Can you send the linker .cmd file associated with your application?

    Kind regards,

    Skyler