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.

TMS320F280049: Question about serial_flash_programmer

Part Number: TMS320F280049
Other Parts Discussed in Thread: C2000WARE

Hi team,

My customer is working on SCI bootloaer, and the planning is to do some minors changed based on flashapi_ex2_sci_kernel and program it into flash as customized bootloader.

Since they are not familiar with developing host S/W, we are looking at the whether it is possibility to leverage serial_flash_programmer we provide in C2000WARE.

In the original serial_flash_programmer, we need to put MCU into SCI boot first and program SCI kernal first following by the APP code.

In our current demand, since the kernel is already in CPU, we only need to program APP via the programmer.

Does serial_flash_programmer support such operation? 

Regards,

Brian

  • Hi Brian,

    The serial_flash_programmer_appln executable file supports the kernel already existing on the device. If the kernel is loaded to flash memory for this device, then you can use the serial_flash_programmer_appln.exe which will bypass having to download the kernel and give the user a set of commands that they can use. 

    Regards,

    Charles

  • Hi Charles,

    Great I tried some test on it and here is some minor question.

    I did a simple LED blinking testcase, with BEGIN in 0X84000.

    If I load original SCI_KERNAL first and  and use erial_flash_programmer_appln to download the testcase. The code can be download successfully, but after programing, if I select Run in commander linker and input address 0x840000, the code cannot succesfully branch to 0x84000.

    But if I do this simple modification in the original SCI_KERNAL, changing the return() to a LB assembly command. And then I repeat everything above. Then everything works!

    Question:

    1. Why return(EntryAddr) would lead the MCU to the EntryAddr address? I don't understand why from C language perspective.

    2. If I need to use a LB command, how can I LB to a variable address instead of a fixed address?

    Regards,

    Brian

  • Hi Brian,

    To answer your questions:

    1. Return (EntryAddr) is useful for the RUN_CPU1 function gets the entry address for the application and returns to main. It should have the same functionality as LB '0x84000' once we return to  the flashapi_ex2_sci_kernel file. 

    2. This is why the Return(EntryAddr) command is important in question 1, as it allows the EntryAddr to change. 

    Thanks,

    Charles