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.

TMS320F280049C: is it possible to store kernel software in ROM and expand it to RAM when SCI boot is detected ?

Guru 10990 points
Part Number: TMS320F280049C
Other Parts Discussed in Thread: HALCOGEN

Hi, 

I am currently writing via SCI using a serial flash programmer.

Currently, it takes a long time to expand the kernel software to RAM, and it is a problem that it takes about 1 minute. Is there a way to shorten this expansion?
Or, currently, kernel software is downloaded from a PC, but is it possible to store this software in ROM and expand it to RAM when SCI boot is detected?

In summary, we want SCI writes to happen as quickly as possible. Please let me know if you have any solution.

Thanks,

Astro

  • Hi,

    The subject matter expert is out of office due to holiday break. Please expect response by 1st week of January. Sincere apology for inconvenience.

    Regards, Santosh

  • Hi Astro,

    Thanks for your question. Is it possible to store the flash kernel in Flash memory? I'll have to look into what this would be for ROM expansion for RAM.

    Is it viable to use part of the flash memory as EEPROM in your situation?

    Thanks,

    Charles

  • Hi, Charles

    It is possible to use part of flash memory as EEPROM.

    Can you tell me how to store the flash kernel in flash memory?

    Thanks,

    Astro

  • Hi Astro,

    To store the flash kernel in flash memory, you will need to change the linker cmd file so that the sections do not use RAM as configuration and build configuration to use CPU1_Flash configuration.

    We don't have an EEPROM driver example for this device, but there is an EEPROM example in the Hercules SW that can be referenced.

    User guide link for the Flash EEPROM driver http://processors.wiki.ti.com/images/8/88/TI_FEE_User_Guide.pdf

    The example is included in HALCoGen tool (http://www.ti.com/tool/HALCOGEN) for the device “TMS570LS31x_21x” (\ti\Hercules\HALCoGen\v04.07.01\examples\TMS570LS31x_21x\example_TI_Fee_Write_Read)

    Note: Instead of using F021 Flash API 2.0 (Hercules API), you have to instead use F28004x flash API – but the concept is similar.  Hercules devices also have ECC similar to that of F28004x.  Their core is ARM (byte-addressable) and C28x memory is 16-bit addressable.

    Attached is an example linker cmd file for flash kernel usage with the flash banks.

     28004x_flash_bank0_NoLDFU_lnk.cmd

    Thanks,

    Charles

  • Hi, Charles

    User guide link for the Flash EEPROM driver http://processors.wiki.ti.com/images/8/88/TI_FEE_User_Guide.pdf

    The above URL was broken, so please let me know the new link. In parallel with F280049C, F280039C is also considering this content. Are the working principles and command files the same?

    Thanks,

    Astro

  • Hi Astro,

    My apologies, I've added the file here as an upload. Let me know if you are able to receive it. The principles should be the same across devices, commands are going to differ from the listed device (TMS570LS31), as you should use the flash api associated with the F280049C or F280039C respectively. 

    TI_FEE_User_Guide.pdf

    Thanks,

    Charles

  • Hi, Charles

    I've added the file here as an upload. Let me know if you are able to receive it.

    I could see it. Thank you very much. I would like to check the HALCoGen tool from now on, but please let me organize it once.

    To store the flash kernel in flash memory, you will need to change the linker cmd file so that the sections do not use RAM as configuration and build configuration to use CPU1_Flash configuration.

    I understood that storing the Flash kernel in Flash would lead to a reduction in writing time.
    In the Serial Flash Programming procedure, the Kernel is loaded into RAM and executed. If you embed the kernel in Flash, does it run in RAM? I don't quite understand the transition of the program, so it would be helpful if you could explain it in a little more detail.

    Also, I didn't understand the content of the quoted comment above. Is there any reason why you shouldn't set the RAM in the section?

    Thanks,

    Astro

  • Hi Astro,

    If the Kernel is placed in flash, it needs to be loaded from flash and run from RAM if you do not have alternate flash banks available. If you do have flash banks available, then it needs to be run from a flash bank currently not in use or occupied by the kernel. 

    To explain the quoted comment, depending on the size of your application across banks 0 and 1, you may need more RAM space to work with. The linker command file for the kernel uses parts of RAM for its sections, but this can be changed to flash memory if you would like. Some sections however must be executed from RAM, such as the stack.

    Thanks,

    Charles