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: Memory fit issues

Part Number: TMS320F280049C
Other Parts Discussed in Thread: TMDSCNCD280049C, C2000WARE

Dear Sirs

I'm trying to get the interrupt_ex1_sw_prioritization example to compile and download into the TMDSCNCD280049C control card.  The example project is located in C:\TI\c2000\C2000Ware_4_00_00_00\device_support\f28004x\examples\interrupts_ex1_sw_prioritization.  Therefore, I would assume that everything is good to go. When I tried to compile the project, I get the following error message.  

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "interrupts_ex1_sw_prioritization.out" not built

>> Compilation failure
makefile:150: recipe for target 'interrupts_ex1_sw_prioritization.out' failed
gmake[1]: *** [interrupts_ex1_sw_prioritization.out] Error 1
makefile:146: recipe for target 'all' failed
gmake: *** [all] Error 2

**** Build Finished ****

The default linker command file that the project uses is 280049M_RAM_lnk.cmd.  knowing that the RAM space is much smaller than the FLASH space, I used 280049M_FLASH_lnk.cmd.  The same error was reported.  The control card uses the F280049C part.  So I used the 280049C_FLASH_lnk.cmd.  The same error was reported.  I went to the C2000 forum and found a post that was 10 years old that had the same issue, program will not fit into available memory - C2000 microcontrollers forum - C2000Tm︎ microcontrollers - TI E2E support forums.  Trey German suggested using F28M35x_generic_M3_FLASH.cmd.  This command file isn't in the dropdown listing but I did find F28M36x_generic_C28_FLASH.cmd and F28M36x_generic_wshared_C28_FLASH.cmd.  Both of these command files work insofar as the project does compile.  However, when I tried to download into the control card, I get the following error message, 

C28xx_CPU1: GEL Output:
Memory Map Initialization Complete
C28xx_CPU1: GEL Output: ... DCSM Initialization Start ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Done ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Start ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Done ...
C28xx_CPU1: Loader: One or more sections of your program falls into a memory region that is not writable. These regions will not actually be written to the target. Check your linker configuration and/or memory map.

Any help is certainly  appreciated.  Thank you. 

  • Hi,

    You cannot use the linker command file for a different device. That might include certain memory blocks which are not present in this device.

    The example comes with a custom linker cmd file. was that not added while you imported the example?

    Regards,

    Veena

  • Veena

    You cannot use the linker command file for a different device. That might include certain memory blocks which are not present in this device.

    Yes, I understand that.  The project listed the TMS320F280049M in the properties "Variant and core" section.  I tried using the 280049M_FLASH_lnk.cmd file and the 280049C_FLASH_lnk.cmd file but it also failed in the downloading.  Using the TMDSCNCD280049C control card, I would have thought these command files should have worked.  In the data sheet, there is no "M" derivative listed.  What is the difference?  

    The example comes with a custom linker cmd file. was that not added while you imported the example?

    The interrupt_ex1_flash_lnk.cmd file was not included in the project folder.  There are two interrupts_ex1_sw_prioritization projects, one in "C:\TI\c2000\C2000Ware_4_00_00_00\device_support\f28004x\examples\interrupts_ex1_sw_prioritization" and one in C:\TI\c2000\C2000Ware_4_00_00_00\driverlib\f28004x\examples\interrupts_ex1_sw_prioritization.  The project listed under C:\TI\c2000\C2000Ware_4_00_00_00\device_support\ did not have the interrupt_ex1_flash_lnk.cmd file, which was the one I started with.  I found the  interrupt_ex1_flash_lnk.cmd file under the C:\TI\c2000\C2000Ware_4_00_00_00\driverlib\ folder.  I copied it over and it works.  Thank you.  I looked at the two command files, interrupt_ex1_flash_lnk.cmd and 280049M_FLASH_lnk.cmd, and saw very little difference.  I have very little experience with linker files.  In the application that I'm writing, I will need to reprioritize two interrupts.  Will I need to write a custom linker file or will the standard linker file work?  Is there any documentation to learn how to deal with linker command files?  

  • https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    This page might be useful to you.

    You can change the section allocation as per your need. Based on the code/data size you may need to use multiple memories for allocating certain sections

    Regards,

    Veena