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.

Booting C6748 from SPI1 flash

Other Parts Discussed in Thread: OMAP-L138, OMAP-L137

We are using the OMAP-L138 EVM development kit from Logic and are trying to get our application to boot from SPI1 flash.  The kit comes with both an  OMAP and DSP SOM and have decided to develop our application only on the DSP for simplicity.  We have build a custom board to mate the SOM to that has some analog stuff on it with a SPI ADC that we are interfacing to (our application reads samples from the ADC and processes them).  We can use either SOM and just use the DSP side and things work great loading our application over an XDS100 emulator.  The next step is to get it to boot from flash.  We have the module strapped to boot from SPI1 flash be default.

We have found a lot of information about burning and booting flash, but things seem to be confused by the fact that we are not using the ARM side of the OMAP or are just using the C6748 SOM.  Right now we are sticking with the C6748 SOM since that seems simpler (for the OMAP, this thread seems to indicate the ARM must load the DSP).  We have finally been able to burn an image to the flash using the spiflash_writer code in the C6748 DSP SDK (using the "dspais" load option).  However it does not seem to be loading our application.  The image we are burning to flash we made with AISgen for D800K002.  The attached configuration file shows how we have AISgen setup.

When we let the module boot from flash and then connect to it in CCS4 (with no GEL initialization), it seems to be stuck in a loop at address 0x00713AF0.  DDR (which is where the code should be) located at 0xC0000000 does not seem to have been loaded with anything.  Does anyone know the right way to get the C6748 to boot from SPI1 flash?

  • Hi Jonathan,

    Are you trying to boot from spi flash at the TI EVM or in your custom board?

  • Hi Mariana,

    Mostly in our custom board.  Actually, looks like we just got it to boot.  Turns out some of the PSC initialization was hanging it up.  Attached is the updated AISgen config.  I also took out the pinmux settings because we do that in code and I initially took out the PSC and Pinmux config to see if it would work like that.

    Now that we have the DSP SOM reliably booting, is there anyway we can do the same thing on the OMAP SOM?  That is, basically boot the DSP to run our code with no concern over what the ARM is doing.  What is the boot process and what is the minimal amount of ARM code we need just to boot and run the DSP?

  • Hi Jonathan,

    Jonathan Berry said:
    Mostly in our custom board.  Actually, looks like we just got it to boot.  Turns out some of the PSC initialization was hanging it up.  Attached is the updated AISgen config.  I also took out the pinmux settings because we do that in code and I initially took out the PSC and Pinmux config to see if it would work like that.

    I'm glad that you got it working.

    Jonathan Berry said:
    Now that we have the DSP SOM reliably booting, is there anyway we can do the same thing on the OMAP SOM?  That is, basically boot the DSP to run our code with no concern over what the ARM is doing.  What is the boot process and what is the minimal amount of ARM code we need just to boot and run the DSP?

     Please see:

    http://e2e.ti.com/support/dsp/tms320c6000_floating-point_dsps/f/115/p/31742/110948.aspx#110948

     We do not have a simple example where the ARM boots the DSP easily. If you are not going to use the ARM, than I suggest you to stay with the DSP only part C6748.

    You could develop your own ARM "simple" code to load the DSP, or you can load DSP code from your Linux application, but if you do not intend to use Linux/ARM that is not efficient at all.

     

     

  • Hi,

    I am a newbie to TI DSP. Please pardon me for joining this thread as I think it is the closest to my questions.

    I am currently working with a OMAP-L138 eXperimeter kit. Similar to Jonathon, I am not using the ARM but just the DSP core. In my project (which eventually will be using TMS32C6747 or 48), I am expected to place my application into and bootup from a SPI Flash. I have been reading plenty of documentations around these area but confused. May I ask:

    1. From document SPRU186q - TMS320C6000 Assembly Language Tools - it says in Chapter 7 that the Linker Command File can determine where you load and run a application (the MEMORY and SECTIONS derivatives). I interpret this as I can ask CCS to load (via .cmd) to load my application SPI-Flash and run it in, say, shared RAM. However, I also read from document SPRAB04 - Using the D800K001 Bootloader - that I must burn my application directly to the Flash.

    2. Is there a step-by-step guide or example explaining how to develop a project (using the DSP of OMAP-L138) to boot an application from SPI Flash?

    Thank you so much.

    Chee-Beng

  • Sorry for the short answers but for:

    1. The linker will place code/data in a .out file (that you can check with a .map file) that a "smart loader" like CCS will put in RAM.  CCS cannot directly burn SPI Flash without some type of routine run by CCS (for example, C:\OMAPL137_dsp_1_00_00_10\dsp_spi_flash_writer\ccsv3.3).  Thus SPRAB04 is correct. 

    2. Your best bet is probabaly looking at a DSPLINK examples on the Wiki while  http://tiexpressdsp.com/index.php/Debugging_the_DSP_side_of_a_DSPLink_application_on_OMAP_using_CCS shows how to debug for OMAP3 (though DSP side of OMAP-L138 is similar). 

    .

  • Hi,

    Thank you very much for your clear explanations.

    Do you know where can I download the DSP SPI Flash Writer image as mentioned? I downloaded one but when I load it to my L138 eXperimenter Kit, CCS3.3 complains I got an unmatched target. I guess I had gotten the wrong writer (may be the DaVinci PSP)

    Thanks.

    Chee-Beng

  • Please see:

    http://tiexpressdsp.com/index.php/GSG_C6748:_Installing_the_SDK_Software

    After you instal the file: C6748_dsp_setupwin32_1_00_00_04.exe, see:

    C:\OMAP-L138_dsp_1_00_00_04\dsp_spi_flash_writer

    see instruction in the readme.doc file. 

     

  • Chee-Beng Ang said:

     I downloaded one but when I load it to my L138 eXperimenter Kit, CCS3.3 complains I got an unmatched target. I guess I had gotten the wrong writer (may be the DaVinci PSP)

    If you have not installed SR12 for CCS 3.3 then you'll get that error because it will not support the 674x CPU core.

  • Hi Mariana,

    Thank you very much for your help. I am truly sorry to bother you again. Pardon me as I am really new and trying to learn as much as I can to use DSP for our product development.

    I had download the spiflash_writer and loaded it to my OMAP-L138 eXperifmenter board. After following the Wiki example, I managed to burn the LED example that comes with the eXperimenter board into the SPI Flash. However, my nightmore started:

    1. Besides the LED example is not working when I boot up with SPI Flash, I realised that my CCS cannot connect to the target anymore. It says something like "... stuck in Wait-In-Reset mode. ....". By the way, my dip switches were set to the default - SPI1 Flash boot. I read some wiki pages about DSPLink, but I don't really understand how to get my target connect with the CCS again.

    2. After some navigation in the community, I found that by switching the dip switch to boot up as EMU Debug mode, I was able to connect to my target again. However, I cannot load the spiflash_writer program in this EMU Debug mode as there are some kind of verification error every time I tried to do it.

    Please help.

    Thanks,

    Chee-Beng

  • Hi Mariana,

    Further to my last post, I didn't have Linux running in the ARM. To be precise, I am using only the DSP core.

    Thanks,

    Chee-Beng

  • On OMAP-L137 I found that one core would hold the other in reset in some of your examples above and had to use a GEL file in CCS to "unreset"  the other core.

    I have not tried on OMAP-L138.

  • Hi Chee-Beng,

    If you have the experimenter kit (less expensive), that means that you have just the OMAP-L138 SOM. In order to boot from spi flash with the DSP only, you would need to use the C6748 DSP only part. Please see:

    http://e2e.ti.com/support/dsp/tms320c6000_floating-point_dsps/f/115/p/31742/110948.aspx#110948