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.

C5533 boot loading from SPI

We have a custom board utilizing a C5533 DSP. I am using Code Composer 5.4 to build and debug the application. That works well. We are not at a point where the code needs to be placed into SPI flash from which the DSP will boot. We are using a micron M25P10 device to store the code. I have programmed the flash device with the executable which has been converted from the *.out file to a bin file. I have Code Composer 5.4 executing a post build step :

hex55 -i app.out -o app.bin -b -serial8 -boot -v5505
 

which builds the boot image. The produced app.bin is then burned into the flash, the custom board is reset and ....... nothing. Am I missing something. The same code runs well when debugged using Code Composer and Olimex TMS320-Jtag-XDS100-V2 device.

  • One important step between developing in CCS and booting, is to make sure that you are not relying on the GEL file for any initializations. All init should occur in the bootloaded image. Remove the GEL file from the Target Configuration, then verify that the program still works.

    Things like PLL, Clock Gating, EBSR pin muxing, removing domains from IDLE (MPORT for DMA):

    // enable the MPORT and disable HWA

    *(volatile ioport Uint16 *)0x0001 = 0x020E;

    asm("   idle");

    Make sure using SPI_CS0 only.

    Dont try to bootload any code into SARAM31 - it is used by bootloader.

    Make sure SPI flash follows this protocol: http://processors.wiki.ti.com/index.php/File:C5535-SPI-Flash-Boot-Waveform.png

    Capturing the SPI signals right after boot will show how far the bootloader got. If very short, then probably not seeing the 0x095A boot signature. If long, but no program, then probably something to do with program init lacking.

    Hope this helps,
    Mark

  • Hi Mark, Thanks for the quick reply. I have no GEL file during initialization. We have been using a TI project as our starting point and that project (CSL_USB_MSC_dmaExample)  does not use a GEL file as far as I can tell. SPI seems to correct. I see clock signal for about 2 seconds at which point I would expect my application to run. The bootloader is expecting a binary representation of the generated hex file not, correct?

  • Are there any examples of code that runs in both Code Composer debug and can also boot from SPI or some other device?

  • All examples in CSL rely on GEL files to set the PLL. The GEL file is called via the Target Configuration. You can verify that by View->Target Configurations->CPU Properties.

    Also, are you aware this wiki page: http://processors.wiki.ti.com/index.php/C5515_Boot-Image_Programmer

    Help this help.

  • Steve,

    It is my understanding that the boot loader looks for a signature. If found, loads code from the device which in my case is  SPI flash. Using an oscilloscope I can see quite a bit of data coming from the SPI device towards the micro during boot. So I think that the code burned into the SPI flash is correct.

    How soon into the main function should the PLL initialization occur? I setup the PLL in a function called from main().

    In the Target Configuration->Advanced for my project there is no initialization script listed, so I do not think my CCS environment is depending on a GEL file for PLL initialization.

  • Can you try with the cleaner.bin file from the wiki page?

    Regards.