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.

Linker file: Flash API and FEE

Other Parts Discussed in Thread: HALCOGEN, TMS570LS1224

Hi,

 

I am using the TMS570LS1224, Halcogen 4.3, CCS6 and Flash API 2.1.1.

 

I am writing a bootloader, and already have FEE set up in the linker and can properly write and read data.  I tried to add the flash api code to the linker file so that it is stored in flash but runs from RAM, but now I get an undef entry error when I call the init function for FEE.

I have two questions:

1) Does my linker file look ok?

2) Do I need to do anything in my program to get the flash api to run out of RAM? I have been trying to follow the uart bootloader example, but I didn't see anything in it that does.

3) On the 1224 there is only bank 0 and 7.  Do I need to run my entire bootloader from RAM in order to be able to flash anything in bank 0 (I want to flash sectors that the bootloader doesn't reside in)?

My linker file is below.

Thanks,

David

 

--retain="*(.intvecs)"


/*----------------------------------------------------------------------------*/
/* Memory Map                                                                 */

MEMORY
{
    VECTORS 	(X)  : origin=0x00000000 length=0x00000020
    FLASH_API  (RX)  : origin=0x00000020 length=0x000014E0
    FLASH0  	(RX) : origin=0x00001500 length=0x0001EB00
    STACKS  	(RW) : origin=0x08000000 length=0x00003500
    RAM     	(RW) : origin=0x08003500 length=0x0002cb00

}


/*----------------------------------------------------------------------------*/
/* Section Configuration                                                      */

SECTIONS
{
    .intvecs : {} > VECTORS
    flashAPI :
    {
     --library= F021_API_CortexR4_BE.lib < FlashStateMachine.IssueFsmCommand.obj
     					  FlashStateMachine.SetActiveBank.obj
     					  FlashStateMachine.InitializeFlashBanks.obj
     					  FlashStateMachine.EnableMainSectors.obj
     					  FlashStateMachine.IssueFsmCommand.obj
     					  FlashStateMachine.ScaleFclk.obj
                                          Init.obj
                                          Utilities.CalculateEcc.obj
                                          Utilities.WaitDelay.obj
                                          Utilities.CalculateFletcher.obj
                                          Read.MarginByByte.obj
                                          Read.Common.obj
                                          Read.FlushPipeline.obj
     					  Read.WdService.obj
                                          Async.WithAddress.obj
                                          Program.obj > (.text)
   } load = FLASH_API, run = RAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)

    .text    : {} > FLASH0 
    .const   : {} > FLASH0 
    .cinit   : {} > FLASH0 
    .pinit   : {} > FLASH0
    FEE_TEXT_SECTION : {} > FLASH0
    FEE_CONST_SECTION : {} > FLASH0
    .bss     : {} > RAM
    .data    : {} > RAM
    .sysmem  : {} > RAM
    FEE_DATA_SECTION : {} > RAM

}