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.

TMS320F280023: _FLASH part initialize, JUMP between different CCS PROJECTS(Bootloader - App), convenient Software reset

Part Number: TMS320F280023
Other Parts Discussed in Thread: C2000WARE

Hi, I'm designing a ' firmware update' program on TMS320F280023, with TI. V20.2.4.LTS

I'm trying to combine several projects with each one having individual role.

1. The Bootloader section

 - This section would check the EEPROM and decide the update occurence

 - I'm planning to use Flash API to update the firmware.

 - If only it's more convenient, I'm gonna split out the firmware update flash API into another project. 

2. Main application. ( I alreay'd made main app part , I'm trying to combine this with the bootloader)

--------------------------------------------------------------

I'm new to CCS and TI based firmware programming so here's my questions.

When making "JUMP TO MAIN APP" process, I've tried assembly long branch code and ((void (*)(void))EntryAddr)(); as well.

I am not sure these ways are safe enough.

Secondly,

I get warning message says Sysctl_delay has no source ... or something like that.. Seems like there's an issue in Device_init() function and

I believe _FLASH part ( shaded part with if / endif statement ) is not defined while configuring the codes, so I tried setting DCSM but it doesn't work. 

Is there any way I can further try to fix this ?

Thus what is the most covenient way to reset the mcu via software ? 

Thanks,

DI

 

  • Hi DI,

    1) If the jump code is working fine, that should be good.  ((void (*)(void))bootEntryAddress)() is the recommended technique.

    2) Can you send the exact warning message that you received regarding the Sysctl_delay?  

    3) I did not understand your comment regarding the _FLASH definition.  Are you saying you did not define it and hence some code is not executed - like the memcpy() routine?  If yes, you can define _FLASH as needed.  Not sure what did not work when you tried setting DCSM.  Please provide clear details so that we can help you well.  

    4) Regarding the reset: Please see below snapshot taken from the device TRM (https://www.ti.com/lit/pdf/spruin7)

    Thanks and regards,
    Vamsi

  • it says ' no source for Sysctl_delay() ' 

    regarding FLASH, I think I didn't properly initialize flash area neither properly configured DCSM register, I found the dcsm_sysfig thing and trying on it.

    and thanks for the snapshot Slight smile

    DI

  • Hi DI,

    "No source for Sysctl_delay()" is not a bug I guess. It may be an inline and hence is the note.  I will ask our driverlib expert to take a look.  Hope you are using the latest C2000Ware.  If not, please install the latest C2000Ware to get all the latest bug fixes.  

    If you have further questions on initializing flash or DCSM, please open separate posts instead of mixing here.  That would help us to assign corresponding experts to help you in parallel.

    Thanks and regards,
    Vamsi