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.

TMS320F2800157-Q1: After dumping the code in flash configuration whether it impact the Bank's memory or not (0x80000U- 0x9FFFFU)

Part Number: TMS320F2800157-Q1
Other Parts Discussed in Thread: TMS320F2800157

Dear TI team,

Can you please clarify that when we dump the code in flash configuration then whether it's using flash's bank memory 0x80000U- 0x9FFFFU or it's using another memory which is not in between 0x80000U- 0x9FFFFU.

Thanks, Rakesh

  • Hello Rakesh,

    I do not understand your question. What do you mean by "dump the code"? And by Flash configuration do you mean when you are executing code from Flash?

    Best regards,
    Ibukun

  • yes when executing the code from flash

  • Hello Rakesh,

    I still don't understand exactly what you mean by "dump the code in flash configuration".

    Please give details of your setup, and what steps you have attempted to take.

    Ibukun

  • Hi Ibukun Olunuyiwa, 

    "dump the code", he means that in CCS IDE there are two configurations or two ways to upload the code on microcontroller. 

    1. RAM

    2. FLASH configuration.

    when we flash the code on Target board via CCS IDE with Flash configuration, binary will be there in Flash nvm of microcontroller. And after power cut off also the same binary will be present in flash NVM. 

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

    Target :

    Now, we want to store some programmable data in NVM memory with TMS320F2800157 uC (for example like ODO meter data of vehicle). 

    Query :

    So here we want to clarify about below queries

    1. Is there any seperate NVM memory feature in TMS320F2800157 ? If yes, kindly give some reference of TRM. 

    2. If there is no seperate NVM memory then, if program writes any data in NVM bank0  address 0x80000U- 0x9FFFFU,  then it will impact the original binary which we have flashed in flash config via CCS ide ? 

    3. When we say code is flashed using Flash config, then which bank of NVM memory will be impacted and what is the start address and end address of that memory? 

    4. when we upload the code in flash configuration then which part of the memory the code uses? Is it using the same flash's bank memory from 0x80000U- 0x9FFFFU or any else?

    Best Regards, 

    Meetkumar P. Parikh

  • Thanks. To answer your questions:

    1. Is there any seperate NVM memory feature in TMS320F2800157 ? If yes, kindly give some reference of TRM.

    The only NVM memory in F280015x is the Flash module. There is a single 256KB Flash bank.

    2. If there is no seperate NVM memory then, if program writes any data in NVM bank0  address 0x80000U- 0x9FFFFU,  then it will impact the original binary which we have flashed in flash config via CCS ide ?

    Not necessarily. The Flash bank consists of sectors; each sector is 1KB. You can technically erase and program data into any sector that is not being used by the application binary. However, the key limitation here is that you cannot program the Flash while executing code from the same Flash. You must be executing from RAM before you can issue a program command to the Flash. Generally, you would do this by placing your Flash programming routines in the .TI.ramfunc code section so that they can be copied to RAM.

    3. When we say code is flashed using Flash config, then which bank of NVM memory will be impacted and what is the start address and end address of that memory? 

    There is only one Flash bank in this device. The exact addresses where your code is located in the Flash are determined by the linker, and you can see its results by looking at the <out_filename>.map file in your build directory. This file contains information about your device memory map and where each object file and symbol has been placed. The linker takes a linker command file (e.g. 280015x_generic_flash_lnk.cmd) as its input; this file tells the linker where to allocate each section. You can modify this file to control what the linker does and exactly where it places specific object files or symbols.

    4. when we upload the code in flash configuration then which part of the memory the code uses? Is it using the same flash's bank memory from 0x80000U- 0x9FFFFU or any else?

    The 0x80000 - 0x9FFFF address region is the Flash bank MAIN region. This does not change. Anything you program to the Flash will be stored here. During run time, most code executes from the Flash, but various symbols and sections can be allocated or even copied to RAM as needed/dictated by the linker command file. For the details of memory allocation, examine the output .map file.

    Best regards,
    Ibukun

  • Hello lbukun Olumuyiwa,

    Thanks for your answer.

     In code i am using to store the data only in sector 0 of bank 0 which is 0x00080000. so what kind of data is in other address like 0x00088000 and 0008a000.

  • Rakesh,

    Flash memory is for user code. If there is something there, your program has placed it there. You can take a look at the <build_artifact_name>.map file in your Debug output directory to confirm where various symbols and output sections are placed in memory.

    Best regards,
    Ibukun

  • Hello lbukun Olumuyiwa,

    What do you mean by "Flash memory is for user code".

  • Rakesh,

    I mean that Flash memory contents are programmed by the user. 0x88000 and 0x8A000 are addresses inside user code Flash. Anything stored in there was programmed by you when you programmed your code into the Flash. If you're not sure what is stored there, look at the .map file in your build output directory (typically "Debug") and it should tell you exactly what was placed at what location.

    Best regards,
    Ibukun