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.

Programming and bootloading from an SPI Serial Flash on C5515

Other Parts Discussed in Thread: TMS320C5515

Hi,

 

I'm trying to program an SPI Serial Flash (with 24-bit addressing) on a custom board that uses the TMS320C5515.

1. Is it possible to use either programmer_C5515_EVM.out (from the wiki) or programmer.out from evm5515_demo.zip taken from the Spectrum Digital website to achieve that?

The first file I mentioned only shows "SPI" in its menu (3<filepath> - SPI) without any mention of the type, while the other one has the following option:

7x - SPI Flash [PinMap x: 1=EVM]
Not Applicable to TMS320C5515 EVM
This is for 24-bit Address EEPROM or flash memory

2. I'd like to know what does the PinMap define? Does this correspond to the ESBR[PPMODE] Pin Mux modes?

3. What format/parameters should I use with the Hex Conversion Utility in order to create a compatible image?

4. Does the bootloader support booting from SPI Serial Flash or just SPI EEPROM? The bootloader document confirms that it does, but the datasheet only mentioned SPI EPPROM.

 

Regards,

Shahar

  • Shahar,

    I have just relied to you in email about releasing the source code. Now I saw your posting.

    Regards.

     

  • Hi Shahar,

    24-bit SPI Flash is supported by the bootloader and the programmer you have should program the SPI Flash for you.

    The source code for the C5515 EVM programmer is now available online: http://code.google.com/p/c5505-ezdsp/downloads/detail?name=programmer_c5515evm.zip

    But I noticed that this code does not have the 7x - SPI Flash option...

    Looking at the source code for the 7x - SPI Flash option (below)...

    PinMap x: 1=EVM configures EBSR to PPMODE 5 - SPI signals on these pins: (only CS0 present)

    LCD_D[8]/I2S2_CLK/GP[18]/SPI_CLK

    LCD_D[9]/I2S2_FS/GP[19]/SPI_CS0,

    LCD_D[10]/I2S2_RX/GP[20]/SPI_RX

    LCD_D[11]/I2S2_DX/GP[27]/SPI_TX

    PinMap x: 1=VDB configures EBSR to PPMODE 6 - SPI signals on these pins:

    LCD_EN_RDB/SPI_CLK

    LCD_D[0]/SPI_RX

    LCD_D[1]/SPI_TX

    LCD_CS0_E0/SPI_CS0

    LCD_CS1_E1/SPI_CS1

    LCD_RW_WRB/SPI_CS2

    LCD_RS/SPI_CS3

    Source Code:

    case '7':
          printf("SPI Flash...\n");
          /* Setup pin-mapping (SPI on parallel bus) */
          if (buf[PinMappingIndex] == '1') // EVM
             PeripheralPinMapping(PERIPH_BUS_S0_MMCSD0, PERIPH_BUS_S1_MMCSD1, PERIPH_BUS_PP_LCD_UART_SPI);
          else // (buf[PinMappingIndex] == '2') // VDB
             PeripheralPinMapping(PERIPH_BUS_S0_MMCSD0, PERIPH_BUS_S1_MMCSD1, PERIPH_BUS_PP_GPIO_SPI_I2S2_3);
          /* Enable SPI Clock */
          PeripheralClkEnableOnly(PERIPH_CLK_MASTER_CLK | PERIPH_CLK_SPI);
          /* Initialize the device */

    AND...

    #define PERIPH_BUS_PP_LCD_UART_SPI       (5<<12)  // 10:8-bit LCD + 4:UART + 4:SPI(CS-0)
    #define PERIPH_BUS_PP_GPIO_SPI_I2S2_3    (6<<12)  // 6:GPIO + 7:SPI(CS-0,1,2,3) + 4:I2S2 + 4:I2S

    Call hex55 with the following parameter: hex55 -boot -v5505 -serial8 -b INPUT.out -o OUTPUT.bin
    (-v5505 will work for -v5515 - both should work with current hex55 version)

    Hope this helps,
    Mark

     

  • I am also using the SPI flash on a C5515 and would like to use the programmer.pjt.

    Your previous post lists source code to support the 24bit SPI flash but it looks incomplete.

    Robert Applebee

  • Hi Robert,

    Maybe the C5535 SPI Flash programmer code on Spectrum Digital's support page will help you out. Scroll down to eZdsp5535 SPI Boot.

    C5535 and C5515 have the same SPI.

    http://support.spectrumdigital.com/boards/ezdsp5535/

    Hope this helps,
    Mark

  • Thanks for the reply.  Our 5515 board has been delayed so I will have to wait to try out the SPI Flash.

    I did try the SPI I2C on the 5515EVM board and it erased and came back with no errors but it does not boot my application.  Is the hex55 options the same for I2C and SPI when building the image?

    Robert

  • Hi Robert,

    The hex55 command is the same for I2C and SPI.

    The wiki has some information on using the programmer - processors.wiki.ti.com/index.php/C5515_Boot-Image_Programmer

    Try removing your GEL file from CCS and loading the .out file without the GEL file. Make sure it runs without relying on the initialization performed by the GEL file (PLL, Ext Memory, Clock Gates).

    Make sure that all other memories are cleared and try booting from your memory (I2C, SPI).

    See the bootloader appnote for C5515 - http://www.ti.com/lit/an/sprabd7/sprabd7.pdf

    Also see the hex55 documentation in the C55x Assembly Language Tools User's Guide - http://www.ti.com/lit/ug/spru280h/spru280h.pdf

    Hope this helps,
    Mark

  • Sorry I am new to CCS and I can't find how to unload a GEL file or loading the .out file.  Any help wold be appreciated.

    The link to the wiki gives me "Group Not Found"

  • Our board just came in and I am having difficulty enabling the EMIF memory space.  Do the C5515 device registers have to be initialized programaticaly?

    The bootloader app note mentions "optional register configuration data"  but does not discuss how to enter data.

    Is the GEL file just used for the CCS environment to initialize the device?

    Any help getting the EMIF memory to respond in CCS and how to initalize the device registers for a bootable image would be appreciated.

    Robert

  • I am trying to initialize the device registers and I have the following code from the EVM_Sample project:

    #define PERIPHSEL0*    (ioport volatile unsigned *)0x1C00

    void ConfigPort(void)
    {
        //  configure ports
        PERIPHSEL0= 0x4A00;        // parallel port: mode 4, serial port: mode 2
       
    }

    When I view the registers, the PERIPHSEL0 (EBSR) register is not 0x4A00.  When I go to the memory view the I/O memory at 0x1C00 is 0x4A00.  The program memory at 0x1C00 matches the EBSR register value.  Is there something wrong here?