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.

F28377D sci boot

Other Parts Discussed in Thread: CONTROLSUITE

Hi,

I am trying to program flash through SCI-Boot Mode by following the file of "TMS320F281x Boot ROM Serial Flash Programming.pdf ". I use "fw_upgrade_sci_kernels" from controlSUIT as the kernel. After I got the connection between control card and PC via RS232, An echoed 'a' can be received after sending 'a' to control card. After that, I send the .bin file of the kernel software. But I can not receive any echoed characters of the Kernel. According to "TMS320F281x Boot ROM Serial Flash Programming.pdf ", the hyper terminal should receive the sending characters back. Anybody have an idea about this? Thanks.

  • Hi Xiaowei,

    How are you creating the binary file?  Are you using the TI Hex Utility Conversion Utility?  If so, which arguments are you giving it?

    Best Regards,

    sal

  • Hello Sal,

    Thanks for your reply. I didn't check the binary box in the hyper terminal. So I couldn't receive echo back. I have two more questions about the example kernel code.

    1. where I can find out the checksum of the AppCode? There is no Calculate Checksums option in the one-chip flash programmer.

    2. In the example of "fw_upgrade_sci_kernels_cpu01", should I start sending APPCode after I receive Echo autobaud character in SCI_Boot routine? I tried this, but I failed to write APPCode.bin into to flash.

    Following is the first three lines of the APPCode.hex, Is this the correct format for hex file?

    S00600004844521B
    S20808000000482BF983
    S222080002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1


    Regards,

    Xiaowei

  • Hi Xiaowei,

    The SCI kernels will not work properly with a checksum write now.  The SCI kernels presently do a simple echo back byte by byte, the same way the boot loader works.  

    The hex file that should be loaded to the kernels should be the same format the boot loaders require.  It should be the same format the kernels were loaded in.  After sending and receiving the autobaud character 'a', the first 4 bytes of the hex file should be "AA 08".  This is the key the kernel is looking for.  

    We are in process of updating the kernels to work with a checksum instead of the echo back byte-by-byte.  This will increase the performance.  We are working on updating the new kernels with checksum and releasing them with a new "serial_loader2000" tool we are developing to make your flash programming much faster and easier.  We are planning on releasing and supporting the serial_loader2000 in a few weeks.

    Best Regards,

    sal

  • Hi Sal,

    Glad to hear that. 

    I used the arguments "-map AppCode_hex.map-o AppCode.hex -m -memwidth 16" for APPCode before I saw your post.

    Now I use the same arguments for APPCode and Kernel code on "hex2000.exe" and "hex2bin.exe" as following:

    CKFA.out
    -boot
    -sci8
    -map CKFA_hex.map
    -o CKFA.hex
    -I

    Now I can receive the echo back of APPCode.bin byte-by-byte. After sending the APPCode.bin and setting control card to boot to flash, the APPCode doesn't run. Maybe my APPcode is not burned into the flash.  The APPCode is working fine, if I use on board usb xds100v2 emulator.

    Is there any special thing to take care about the APPCode?

    One more thing, If we want to use USB-Boot, what PC host software should we use? We appreciate your help.

    Regards,

    Xiaowei

  • Hi Xiaowei,

    After finishing the firmware update and loading the Appcode, is the kernel branching to you Appcode?

    Is it only when booting to Flash that it will not run the Appcode?

  • Hi Sal,

    I guess the kernel didn't branching to Appcode after finish sending the Appcode.bin file. I add a hint message before  "return EntryAddr;", but I didn't see the hint.

    Xiaowei

  • Ok.   Is your Appcode compiled and linked to run from Flash?  There is currently no error checking to make sure the Flash API is trying to program Flash addresses.  

    So, it doesn't look like the kernel is finishing execution.  Can you confirm with the echo back byte-by-byte that the Appcode was completely transferred?

  • Hi Sal,

    Yes, the Appcode is linked to flash. From the echo back, it seems the Appcode has been completely transferred. The following content is the hex.map file. I guess this should be the correct format.

         INPUT FILE NAME: <blinky_cpu01.out>
         OUTPUT FORMAT:   Intel

    PHYSICAL MEMORY PARAMETERS
       Default data width   :  16
       Default memory width :   8 (LS-->MS)
       Default output width :   8

    BOOT LOADER PARAMETERS
       Table Type:          SERIAL PORT (SCI 8 bit Mode)
       Entry Point:          0x00080000


    OUTPUT TRANSLATION MAP
    --------------------------------------------------------------------------------
    00000000..003fffff  Page=0  Memory Width=8  ROM Width=8
    --------------------------------------------------------------------------------
       OUTPUT FILES: blinky_cpu01.hex [b0..b7]

       CONTENTS: 00000000..00001bb9   BOOT TABLE
                               .cinit : dest=00082000  size=00000016  width=00000002
                            codestart : dest=00080000  size=00000002  width=00000002
                             ramfuncs : dest=00086000  size=00000029  width=00000002
                                .text : dest=00082040  size=00000bc1  width=00000002
                              .econst : dest=00090000  size=000001c0  width=00000002

    --------------------------------------------------------------------------------
    00000000..003fffff  Page=1  Memory Width=8  ROM Width=8  "*DEFAULT PAGE 1*"
    --------------------------------------------------------------------------------
       NO CONTENTS


  • Hi Sal,

    I checked the echo back log byte by byte of the Appcode. The echo back bytes are different from what I send after a few bytes. But the total transferred file size is correct. After sending the Appcode, the  kernel is still waiting for data.


    Xiaowei

  • Hi Xiaowei,

    Are you using hyperterminal to send the data stream?  What baud rate are you using?  The kernel echos back the characters it receives, so it looks like it is not receiving the correct characters.  

    What I think is happening is that the packets (bytes) are being lost by the kernel.  This most likely due to the fact that hyperterminal has no data flow mechanism.  Check the SCIRXST register and the OE bit of that register.  this will tell you if the SCI was overrun with incoming data.

    We need some data flow mechanism because it takes time to program data into flash. While this is happening, packets are most likely being dropped.  That is why we are working on releasing the serial_loader2000.  Hopefully coming out in a few weeks.

    sal

  • Hi Sal,

    Yes, I am using hyperterminal (Tera Term), and still missing a few bytes with the baud rate of 4800. I think I should just wait for the new kernels and tools. Thanks for your help.

    Xiaowei

  • Hi Sal,

    You mentioned that TI will release serial_loader2000 in a few weeks, and that was 6 month ago. I was wondering if this is released now and does it support F28377X? If so where to find it? Many thanks!
  • You can find serial_flash_programmer and examples under the following folder:

    \ti\controlSUITE\device_support\~Utilities\serial_flash_programmer

  • The serial flash programmer and the flash kernels are both available in controlSUITE.

    The Flash kernels are in the dual examples folder of F2837x.