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.

TMS320F28388D: Boot to USB and USB bootloader

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

I'm trying to download firmware through USB in development kit (using micro usb port). I'm following the steps given in C:\ti\c2000\C2000Ware_3_03_00_00\utilities\flash_programmers\usb_flash_programmer, but the sample code is given for F2837xD devices.

Flash is unprogrammed, i.e., value at 0x80000 is 0xFFFF (removed code_start from linker symbol settings). According to manual device is in boot to USB mode if I understood correctly. GPIO72 and GPIO84 are both high.

contents.txt file says:

Starting the MCU:
Reset the MCU, then write 0x0C5A to the boot mode select address (0xD00) with the debugger.
Run from the reset vector to start the USB boot loader. Connect the MCU to the PC.

Question 1: 0x0C5A is valid for 28388D devices? What does running from reset vector means?

When I connect only micro USB port, USB not recognized is shown in windows PC.

Question 2: Can someone give step by step guide on how exactly I can get the firmware download through USB port?

Followed other threads, but doesn't seem to be working.

Regards,

Amtech

  • Hello

    Running from the reset vector means the starting address of the boot code. When select "reset" (not restart) in CCS, this will bring you there.

    For running USB bootloader, At 0xd00/0xd01 put 0xFFFFFFFF and at 0xD04 put 0x0009. This info is detailed in the device TRM.

    If you are using a controlCARD version MCU063B and later, this uses a 25Mhz oscillator. The USB bootloader requires a 20MHz oscillator. Follow the directions in the controlCARD guide to switch: https://www.ti.com/lit/spruil8 

    Steps

    1. Verify that the device is setup with 20MHz oscillator
    2. Reset device via CCS
    3. Program the 0xD00 to 0xD04 values for USB bootloader
    4. Run in CCS
    5. Use the USB flash programmer to send over the application

    Best regards

    Chris

  • Thank  you very much for your assistance, Chris.

    I was able to boot the code directly using USB flash programmer.

    I'm sorry but can you point me to the section where it mentions this For running USB bootloader, At 0xd00/0xd01 put 0xFFFFFFFF and at 0xD04 put 0x0009. I am reading the ROM Code and Peripheral chapter and not able to interpret the details correctly, maybe.

    One more thing, regarding the flash kernel, I would require to move the downloaded code to flash so that the code runs in standalone mode after it's downloaded through USB. I saw that for F2837xD devices its readily available, but nothing regarding F2838xD devices. How can I achieve that?

    Thanks.

  • Hello,

    Great!

    The "Device Boot Configurations" details the bitfields of the 0xD0X addresses (these are the same as those programable in OTP). The actual address values are in "CPU1 Boot ROM Configuration Registers" section. The boot mode values are in the "GPIO Assignments for CPU1" section.

    Currently, you're best option to reference the F2838x flash programming example to integrate into our USB flash kernel.

    In C2000Ware: \driverlib\f2838x\examples\c28x\flash

    Best regards

    Chris

  • Hi Chris, sorry for the late reply, we were closed due to holidays.

    Thanks for your guidance, I was confused between EMUBOOTCONFIG and EMUBOOTDEF. Now its clear.

    Also, I will go through the F2837xD_usb_flash_kernels\cpu01 example code and try to integrate in 28388d flash programming example.

    Thanks and regards,

    Amtech