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.

Running TMS320f28335 Application from FLASH

Other Parts Discussed in Thread: SYSBIOS

I have a SYS/BIOS 6 flashed application that runs under CCS4, but fails during ti_catalog_c2800_init_Boot_init. In asm single stepping the PC ends up at 0x00C602. The executable then hangs at 0x00C60C executing a LOOPZ instruction.

 

Given that the build works with the debugger I'm thinking it is a linker issue. Does anyone have a linker command file for the 28335 using SYS/BIOS 6 I can review in hopes of resolving this problem?

 

Thanks in advance.

  • If you look at your map file that should be/can be generated, does it indicate that your application is actually loaded into flash and run there?  Just a sanity check suggestion.

    With SYSBIOS, as you probably know, you will need to create your own RTSC platform that describes the memory map.  Ultimately this configuration information is used to produce a linker command file, but the inputs into the build flow is the RTSC platform.

    To determine which one you are using for your project:
    1) go to the menu Project -> Properties.
    2) Select C/C++ Build category
    3) Select Tools Settings tab
    4) Select XDCtools -> Basic Options

    If the RTSC platform = ti.platforms.control28335 (or something similar), odds are that this is targeting SRAM for all of the sections.  You may have edited this platform to target flash, which is why this may not be the issue at all, but something to verify.  You can create your own platform based on the ti.platforms.control28335 to change where sections are targeted.

    You accomplish this by performing the following :
    1) go to the menu Tools -> RTSC Tools -> Platform -> New

    This allows you to create a new platform and customize it accordingly.

     

    Again, this may not be your issue, but wanted to verify it.

  • Thanks for the info. I found a cut and paste error in my linker file that was placing the boot code in the wrong section. This information is vey useful though as I was having to manually replace the CCS4 generated linker with my own one.

     

    The problem I'm now experiencing is that the SWI "tasks" are not running. I also don't see references to them in the map so I don't know what linker section they should be in. If I remove their definition from the config file and create them manually they run as expected.

  • I'm working on a small sample that I'll send across tomorrow.

    I suspect that your problem is related to the interrupt vector table which needs to be loaded in FLASH and copied to 0xd00 by the target app before enabling interrupts.

    -Karl-


    P.S.  The app note below has some useful info if you haven't seen it.

    http://focus.ti.com/lit/an/spra958i/spra958i.pdf

  • I've been distracted but haven't forgotten about this.  I'll hopefully get the small example and notes posted tomorrow.

    Sorry for the delay.

    -Karl-

  • Attached is a sample project for the 28335 control card.   And some slides to describe the few file changes necessary to put  SYS/BIOS app in FLASH.

    You should be able to import the project into CCSv4 and rebuilt it.  You might have to update some paths to make the build happy.  You can also copy the .c and .cfg files to another project where the paths are already in good shape.

    7028.flash28-slides.zip

    8802.flash28335.zip

     

  • I had a problem building the example in CCS 4.2 after importing. I moved the source modules to a different bios project to compile.

    I also needed to add to the boot() function for my application. I setup XINTF initialization, GPIO Initialization for the XINTF data, address, and control Bus and PCLKCR3 setting for XINITF.

    (Karl helped me with that in another thread)

    Jan