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.

C6657 UART boot

Other Parts Discussed in Thread: TMS320C6657

I'm trying to make the C6657 boot from UART ports and run my code to start the DSP.

I can't find some help from the evm dvd.

Does Ti provide any help?

Where can I start it?

I found Serial loader utility(slh) in the forum.

Can it help?

Thanks! 

  • I'd suggest starting with the Keystone/C66x Bootloader User Guide.  It can be found in the User Guide section of the TMS320C6657 <-- Product Page.

    Best Regards,
    Chad

  • Hello, Chad

    Thank you for your suggestion.

    I have read that pdf.

    Maybe I am fresh in this area, I still find it hard to start.

    A example like ethernet boot will help a lot.

    If there isn't a example, can you tell how I can transfer my code using UART.

    Is there any protocol between DSP and HOST using UART boot ?

  • UART boot is new in C6657 and we don't yet have any example for it. The boot image should be in the boot table format. The format is explained in the user guide Chad mentioned. The image is sent in blocks after receiving the pings from the CHIP set in UART boot. We only send the 10 pings.  Please let me know if this helps.

    Thanks,

    Arun.

  • Hello, Arun

    I' m not clear what pings means.

    Does it means that sending a boot image to UART boot is everything I should do?

    How can I get the state?

    I need more detail.

    Thanks,

    Mou.

  • Hello, Arun

    I need your help. 

    Please give some tips.

    Thanks,

    Mou.

  • MConnect

    1. convert the .out into a boot table using hex6x, if you device in the little endian mode, then using the bconvert64x to convert to big endian format. Convert the output to i2c format using b2i2c. Convert the i2c output to ccs format using b2i2c and then finally convert that to bin using ccs2bin.

    2. Open a terater or any such application to view serial connection.

    3. Then set the device in uart boot mode.  Connect the device to the host through UART.

    4. Open the terterm and set the speed and baud rate.

    5. load the xmodem file and select the bin file to download.

    6. now power on the board, the image will be downloaded to the device.

    Hope this helps.

    thansk,

    arun.

  • I'm sorry to bore you again.

    arun.

    I can't finish my work by the steps.

    Why does b2i2c have to use twice?

    I guess some mistake.

    Or I do something wrong?

     

  • Hello,

    arun.

    We get a bin file using the command line like below when we work with hex55 and c5000.

    hex55 -boot -v5510:2 -parallel16 -b -o agcmic.bin agcmic.out

    Is there any way I can produce a bin like this?

    I still using the ethernet boot example as a reference.

    And I found that a text file is product named simple.btbl.

    Is "simple.btbl" the right file I should use?

    Thanks,

    Mou.

  • It doesn't work, please make it clear.

    My company won't accept the ethernet boot or any other solution.

    I have to use UART BOOT.

    Thank you!

    Mou.


  • HI Guo,

    Yes That was a mistake. You need to use b2ccs the second time. Unfortunately, i don't have an example that i can share right now. I can ask around to see if we have one.

    Thanks,

    Arun.

  • Hi Arun.

    Thank you for you tips.

    I have tried out b2ccs instead of b2i2c, but fail.

    My steps is:

    1.hex6x  -boot  -a  -e=_c_int00 -order=L  -memwidth=32  -romwidth=32  -o <file.hex>  -map <file.map>  <file.out>

    (I found a reference at http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/217898.aspx :) )

    2.b2i2c file.hex file.1 (I try bconvert64x -le file.hex file_le.hex, but error report.)

    3.b2ccs file.1 file.2

    4.ccs2bin file.2 file.bin

    the bin hex looks like below ( I use the simple.out in ethernet boot example folder, just write some registers, the hex file under this folder I try out as well but fail)

    00000000h: B1 98 60 00 E8 40 00 01 26 02 08 01 28 08 81 01 ; 睒`.鐯..&...(.?
    00000010h: E8 40 80 01 26 36 8C 01 26 02 0C 02 20 A1 01 00 ; 鐯€.&6?&... ?.
    00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
    00000030h: 00 00 00 00 00 00 00 00 04 00 00 00 00 01 81 00 ; ..............?
    00000040h: CD AB 34 12 01 00 00 00 01 02 81 00 12 00 00 00 ; 瞳4.......?....
    00000050h: 02 00 00 00 10 02 81 00 12 34 00 00 00 00 00 00 ; ......?.4......

    Can you see any fomat error?

    Thanks,

    Guo.

  • Guo,

    Give me a couple of days. I will try to get you an example. Also if you can get me your example file, I will try it too.

    Thanks,

    Arun.

  • Hi Arun,

    I have tried many combinations with the tools under ccs and mcsdk folder.

    Some of output is not different.  And none can work.

    If you have some documents in hand, give me more tips.

    And I am still waiting your example.

    Thanks,

    Guo

  • Guo,

    Thanks for the patience.

    Attached is the UART example folder. ONce you get the simple_swap.bin (the folder also has a copy for your reference), follw the procedure below

    1. Set the boot mode to UART boot. For the correct configuration, please refer to the data manual. But for this I used the below configuration.

                   SW3[1-8] = 1 0 0 0 1 0 0 0

                   SW5[1-8] = 0 0 0 1 1 0 0 0

    2. Set the com_sel1 jumper pins based on what uart console mode you are using. I was using the 3 pin uart.

    3. Connect the uart to a PC and open a terminal (I used teraterm).

    4. Set the serial port to 115200, 8 bit data, no parity, 1 stop bit and no flow control.

    5. Power on the board. You will see letter C get typed few time in the console. This is the ping.

    6. Now open file->transfer->XMODEM->send and select the file. ALso select 1k option to send in1k blocks.

    7. If the loading works, you will see the send winodw disappear.. You need to do step 6 and 7 quickly, because the boot pings for 10 times and stop receiving. One thin you can do is before powering up the board, you can start the transfer to avoid missing the window.

    8. Now connect the core and check the A1 register and you will see that it is 0x11223344.

    Please let me know if this helps.

    Thanks,

    Arun.

    8877.uartboot.zip

  • Thanks,

    Arun

    It help!

    And I compare the output I tried before, I find the bytes order is wrong.

    Now I can write a .exe or a .bat to finish my work.

    My colleague is not here. I can't verify the answer.

    Transfer the answer here: http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/239629.aspx.

    Then I can verify the answer.

    Thanks.

    Guo.

  • Hi Arun,


    I am using XTCIEVMK2X. I want to try UART boot in that.

    I used the above example for testing it out. But after the xmodem transfer, when i connect CCS and look at the DSP registers, register A1 is not getting updated.

    I am able to load that bin file through CCS independently (using load option) and it updates the register correctly. But am not able to do it through UART boot.

    Should I do anything different for this EVM (XTCIEVMK2X)?

    Also, i would like to know where I will get the b2i2c, b2ccs and cc2bin executables.

    Is there a linux variant of these executables?