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.

TMS320F28379D: Possible scenario using USB boot?

Part Number: TMS320F28379D
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Team,

Could you please help with the below question from customer?
Our process has those 2 steps before being able to launch the usb_flash_programmer software.

  • Configure the boot mode using a switch SW1 : OFF/OFF = 1/1
  • Launch CCS to configure register 0x0D00 to the value 0x0C5A via JTAG, then reset the DSP. The USB device (F28x7x USB Boot Loader) then appears under Windows.

1 - Is there a way to select the correct boot mode without manipulating the switches ?
2 - Is there a way to activate the USB device without configuring register 0x0D00 and resetting the DSP ?

My understanding is customer is using the exact sequence as described in sprujh3 section 4.2.5.
But could the OTP be used to enable USB boot first to program flash, then on the subsequent reboot it is detected that the flash was programmed and CPU1 boots from flash (ie without the step 1) and 2) above).

Thanks in advance,

Anthony

  • Hi,

    I would like to add the following questions:

    BMSP Support : Does TMS320F28379D support "Boot Mode Select Pins" for bootmode selection or not... ?

    Use case feasability : If OTP is used, is it really possible after initial programming :

    => to boot from flash (if flash programmed), starting our firmware (USB not connected) ? OR

    => to perform a firmware update when needed (USB connected) using usb_flash_kernel ?

    Major RISK : Can you confirm that : Assigning the wrong value (choice) to a "One SHOT" OTP register can make the DSP unusable (no longer boots firmware or does not boot from USB or only boots from USB !) : no turning back , so only one try per DSP 

    Thx in advance,

    Best regards

    CG

  • Hello,

    1 - Is there a way to select the correct boot mode without manipulating the switches ?

    Unfortunately, you'll need to use the BMSPs to select the intended boot mode on F2837xD devices. 

    Aside: On newer C2000 devices, you can configure a zero-pin boot by disabling all BMSPs, such that the device boots to the same boot mode on reset.

    2 - Is there a way to activate the USB device without configuring register 0x0D00 and resetting the DSP ?

    Yes. For the purposes of your application, you could convert the USB flash kernel to execute from the flash instead of the RAM. This would also require modification of the host programmer to only load the application. Alternatively, I believe you could also try branching to the USB bootloader in the boot ROM directly from your flash application.

    You can also refer to the boot ROM source code for the USB bootloader: C2000Ware_6_00_00_00\libraries\boot_rom\f2837xd\revB\rom_sources\F2837x_bootROM\cpu01-bootROM\source\USB_Boot.c 

    BMSP Support : Does TMS320F28379D support "Boot Mode Select Pins" for bootmode selection or not... ?

    Yes, F2837xD devices offer 2 BMSPs. However, you can't disable them like on the more recent C2000 device families.

    Use case feasability : If OTP is used, is it really possible after initial programming :

    => to boot from flash (if flash programmed), starting our firmware (USB not connected) ? OR

    => to perform a firmware update when needed (USB connected) using usb_flash_kernel ?

    This isn't possible. Once the OTP is programmed, you can either configure flash boot or USB boot, but not both. On newer C2000 device families, this would be possible since up to 8 boot modes can be configured.

    Major RISK : Can you confirm that : Assigning the wrong value (choice) to a "One SHOT" OTP register can make the DSP unusable (no longer boots firmware or does not boot from USB or only boots from USB !) : no turning back , so only one try per DSP 

    It depends. Get boot mode boots to Flash mode when the BOOTCTRL register contains an invalid key. If the BMSPs or BMODE are incorrect, the device will boot to flash by default. You also have a second chance by programming the Z2 DCSM registers. Z2 boot registers take precedence over Z1.

    Best,

    Matt

  • Hello Matt,

    Thanks a lot for the answers.

    Therefore, our understanding is that we have to develop a custom second stage USB bootloader for our need. Are you agree with that ?

    Do you know if such a bootloader was already developed or exists on the market ?

    Regards,

    Sébastien

  • Hello,

    Therefore, our understanding is that we have to develop a custom second stage USB bootloader for our need. Are you agree with that ?

    Yes, this would be the best direction to take. 

    Do you know if such a bootloader was already developed or exists on the market ?

    There's no such bootloader developed already, but you can refer to the USB flash kernel as reference: https://www.ti.com/lit/an/spraco7/spraco7.pdf

    Best,

    Matt