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.

RTOS/TMS320C5535: Boot image via uart not working

Part Number: TMS320C5535

Tool/software: TI-RTOS

Hi community member:

This problem has been fixed. Please refer:  http://www.deyisupport.com/question_answer/dsp_arm/c5000/f/48/t/142976.aspx

Thanks Kent Lu ( AVNED  Field Application Manager  ) for your help,  and the same to  .

According to the following application note, C5535 support the boot via UART.  

http://www.ti.com/lit/an/sprabl7c/sprabl7c.pdf

in my board, TMS320C5535  usrt ports connect  to arm STM32f103VG  with Rx, Tx,  RTS and CTS . total 4 lines.

DSP pin:    P13       UART-RxD / I2S3-Rx / GP30

DSP pin:   N12       UART-RTS / I2S3-CLK / GP28  

and the rate 

but it not work !

What is different?  Please refer: http://www.deyisupport.com/question_answer/dsp_arm/c5000/f/48/t/142976.aspx

  • I've forwarded your query to the c55x software experts. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • Hi,

    It sounds like you are very close to having this working properly.

    You say... "can boots from SPI EEPROM and everything is ok."
    But if you use UART boot, then SPI EEPROM = 0xFF (same state as after step 1 - erase flash to 0xFF)...
     - This could be caused either by pinmuxing differences or clocking differences

    Check the EBSR pin mux initialization in your program that boots from UART.
    If you do not initialize the EBSR pinmux, then it will remain in the last state used by the bootloader.
    Question: What C5535 pins connect to the SPI EEPROM in your design?
        The bootloader supports booting from SPI EEPROM using two different sets of SPI pins, configurable with the EBSR pinmux register (PPMODE bits).
        It first tries EBSR PPMODE = MODE 5 (LCD, UART, and SPI). The SPI_CLK comes out from pin LCD_D[8]/I2S2_CLK/GP[18]/SPI_CLK. The bootloader only activates SPI_CS0.
        If no valid boot signature is located on a SPI EEPROM with this pinmux configuration, the bootloader then tries EBSR PPMODE = MODE 6 (GPIO, SPI, I2S2, I2S3). SPI_CLK on LCD_EN_RDB/SPI_CLK. Again, the bootloader only activates SPI_CS0.
        
    In order to get to the UART boot option, the bootloader must firt try and fail to boot from both SPI boot pin mux options. Once The UART boot option is reached, the EBSR pinmux PPMODE bits change back to PPMODE = MODE 5 (LCD, UART, and SPI) to boot over UART... So if your SPI EEPROM requires PPMODE = MODE 6, and your program booted over UART does not change PPMODE from MODE 5, then no SPI activity will arrive at the SPI EEPROM.

    Can you probe the SPI signals at the EEPROM? Is there any activity after the UART activity ends?
        
    Question: What is the SPI_CLK frequency? The SPI_CLK might be running too fast if you did not account for the bootloaer running 3x faster after UART boot (when compared to SPI boot).    
        If CLKSEL = 1, then the bootloader uses system clock = CLKIN for SPI boot. During UART boot, the bootloader configures the PLL to use system clock = CLKIN * 3.
        
    Question: What is your CLKIN frequency and CLKSEL pin state? We can calculate the expected baud rate error based on CLKIN frequency (if used instead of RTC clock).
    "Note that this setup may result in data receive errors if CLK_SEL is set to use CLKIN when CLKIN is
    11.2896 MHz. The error rate may be reduced by the external device by adding additional time between
    frames (bytes)." - SPRABL7C

    "to reduce the probability of a receive error, the external transmitter should set up to use two stop-bits." - SPRABL7C
    I see you are using 1 stop bit in your UART settings. Can yo try using two stop bits?

    You asked... "In transmit , if a error happened ( example:  the odd check error ), can I know it and fix it?"
    The bootloader does not support any error checking, so you would have to add this into your user code that runs after initial UART boot (as it writes to SPI EEPROM)
    You might also blink an LED with real-time status as the program booted from UART is running, and then finished. We often use the XF pin to an LED for status.
        
    Please let us know if you are able to get it working, and how.
        
    Hope this helps,
    Mark