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.

SYS/BIOS in RAM to FLASH Problem

SYS/BIOS 6.31.00.18

XDCTools 3.20.05.76

C28335 DSP

The Target used is ti.targets.C28_float

The platform is based on the ezDsp evaluation board.

I have a SYS/Bios program that works fine on my Production board when loaded into RAM and run. It is based on the SYS/BIOS demo C++(big time) example.

I have updated the RTSC Platform to load in flash. I have updated my custom link cmd file to place loaded things like ramfuncts  into FLASH.

The project builds, but fails to complete flashing to the C28335. 

The problem seems to be that the .switch section has data in it and is trying to load directly into RAM. On a FLASH based system everything must initially load in FLASH.

The deeply buried, automatically generated link file sends the .switch section to DATA (RAM) rather than CODE (FLASH).

I can find no way to to place the .switch section into FLASH and allow the load to complete.

I have worked with the C2812 DSP previously in both RAM and FLASH. I realize there is more to running from FLASH than just loading, but loading is my current roadblock.

The assignment of section .switch to data seems to be rooted in the XDC Target definitions.

I attempted to modify the ti.targets.C28_float SectMap[.switch] in the  project .cfg file, but most attempts failed to compile. Changes that did compile but did not change the section. I am quite new to these RTSC scripts so I may have failed to get the syntax correct.  I was desperate enough to attempt to modify the XDCTools Target definitions directly, but the changes did not make their way into my build,

Any advice would be greatly apreciated,

TIA

Jan

.

 

  • Hi Jan --

    This post should have useful information for you.  You also need to deal with the PIE vectors which are in RAM but loaded in FLASH.

    http://e2e.ti.com/support/embedded/f/355/p/91081/319948.aspx#319948


    You can also use 'Program.sectMap' in your .cfg file to place specific sections.   We updated the "memory" chapter in the BIOS User's Guide to include some of this information. The UG is available via CCSv4 help->contents or via link in release notes.

    Regards,
    -Karl-

  • Thanks for the reply, the above post links to good information but, does not address my problem.

    It addresses issues that can are encountered when booting after flashing.

    My current problem is that I can not flash the 28335 DSP the flash program fails when it encounters a Zone6 address.  I believe the default build is putting the  .switch section in RAM, and it needs to be in FLASH to have the data retained through power cycles.

    TIA

    Jan

     

     

  • I found it!

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4

    In the .cfg file I was adding:

    Program.sectMap[.switch].loadSegment = "FLASH";

     

    It should have been:  

    Program.sectMap[.switch] = "FLASH";

    I used the wrong segment as an example.

     

    Thanks to all who helped,

    Jan