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.

TMS320F280025C: Live Firmware Upgrade without using OTP memory

Part Number: TMS320F280025C

Hi, TI gurus.

I want to use I2C port to upgrade frimware without using OTP memory.

I had read these materials:

1. Live Firmware Update with Device Reset on C2000 MCUs (Rev. A) (ti.com)

2. TMS320F28x Boot Features and Configurations (Rev. A)

but can not draw detailed picture of live firmware update of my applaication.

By using F280025C, therte is only one 128KB flash bank (Flash bank0) can not use the method implement in (1) because it use F280049 as example, and it has two flash bank.

And I noticed it mention by using Flash API in ROM can reduce RAM usage, and flash can not be read/write at the same time.

So the only way to do the job is move necessary function to RAM (including I2C data transmit kernel), use ROM Flash API to read/write new firmware package into flash.

If There is another method, please tell me.

Then there are few questions:

1. After recieved new firmware package, how to set up the entry point for next device reset?

2. Do I need modify the boot select table to change flash entry point like from sector 0 to sector 4, or I can specify any address as entry point in linker command file in new firmware project?

Thanks, Best regards.

  • Hi Chun-Lin,

    Yes for the F28002x device there is one flash bank available to use, so that will have to be accounted for. For the questions:

    1) To set up the entry point for the next device reset, you can change the linker command file to use address 0x84000 for your begin section for the application.

    2) The boot select table does not need to be modified on it's own. This is more for if you have sectors of Flash memory unavailable, unless you want to always start flash memory from a location other than 0x80000. 

    Thanks,

    Charles

  • Thanks for fast reply.

    There is a thing I want to confirm.

    The senario is: at the third time I turn on my device, which I load the new firmware entry point is 0x84000, and I didn't modify the boot table.

    The device will execute the code directly from 0x84000 or it start from 0x80000(set up by boot table), then jump to 0x84000?

    Thanks.

  • Hi Chun-Lin,

    In this scenario, if the device is set to default Flash boot mode, it would start at 0x80000 as indicated by the boot table, and then it would have to jump to 0x84000.  

    Thanks,

    Charles

  • Thanks! It helps a lot!