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.

Lightweight Flash Program App or Utility for C2000 Devices

Other Parts Discussed in Thread: UNIFLASH, CONTROLSUITE

Hello,

I have a product based on the C2000/28069 device.  I heavily leveraged the ControlStick design, leaving me with a USB/XDS100v2 + serial interface.  Everything is going great and the only thing I really need is a way to load new firmware, occasionally, on multiple devices (10s of devices connected to single computer/host) in the field.  I have looked at all the solutions below, and none of them give me what I need.  My basic questions:

- Did I miss any?  Is there a lightweight, C2000 flash utility out there for multiple USB/XDS100v2 devices connected to a single computer?

- If not, is the XDS1000v2 API documented somewhere such that I can attempt to make my own?

Researched so far:

TI Uniflash: too "heavy", requiring 1GB of RAM minimum.

dfuprog: did not test.  Requires a missing winusb.dll that is hard to find, with TBD distribution rights.

C2000 Flash: too "heavy".  Looks and feels like an entire CCS install.

Blackhawk bhflashburn: No XDS100 support

loadti: I have this doing what I need, and it does it well, but I can't find a clean/simple DSS install mechanism for a customer.  I've also read within ti e2e that the DSS component required is "several hundred megabytes", again making this too heavy for a simple FW update tool. 

Codeskin C2Prog: this is my old-standby for flashing XDS100 devices.  I find it brilliant for lab use and point customers at it as well for single-unit FW upgrades.  But it has some issues flashing devices behind a USB hub, and the redistributable, scriptable functionality I need will cost $7K.  Still an option based on how well the tool is built, but I would need a fix to flash multiple devices behind a USB hub...and 7000 bucks.

Thanks for any help!

John

  • John,

    -1) As far as I am aware all the options are listed. 

    -2) I would not recommend trying to write your own JTAG flash burner.  We don't usually give out the JTAG tap details except for with a few key third parties.  We do have a lot of documentation/software (and forum threads) which describe the process of creating a UART/CAN/etc bootloader which then flashes the device.  However, this doesn't seem like it will solve your problem.

    (one note is that the controlSTICK has a xds100v1 on it, not an xds100v2)


    Thank you,
    Brett

  • Thanks Brett.  Some follow-up questions if you don't mind:

    - Stepping back - generically, what would you recommend for customer firmware updates for C2000 devices?  Would the answer be different for systems with tens of these devices connected?

    - Can you send me a good pointer for the UART/bootloader option on 28069?  Would this method work with the standard controlStick?

    Thanks,

    John

  • John,

    I've seen that many firmware updates are done via some serialport.  C2Prog from Codeskin is again a good choice. 

    From my experience, production programming is often more parallel or JTAG based. 

    However, since you have a full xds100v1 on your board, the choice between serial and the lowish-speed xds100v1 JTAG shouldn't matter too much. 

    ---

    To do a UART bootloader, you'd have the device boot from UART.  This would require a resistor change on the cSTICK.  You'd then have to bootload in a small kernel program that flashes the device via the FlashAPI.  The kernel would be loaded via UART and into RAM at boot time.  Then once the kernel starts it will take over the booting peripheral and download the image and flash it.

    The following post refers to much of the useful documentation:
    http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/221572/781134.aspx

    The FlashAPI library can be found in controlSUITE and is embedded in the BootROM on Piccolo devices.  (on Piccolo, the library is simply a symbol map which points to the functions in BootROM)


    Thank you,
    Brett

  • Thanks Brett.  Is the resistor change on the cSTICK necessary, or can I set EMU_BMODE to 0x0004, and reset the device to get into SCI boot mode?  I have this *nearly* working using CCS5 to set the value and reset the device, then running C2Prog with SCI.  C2Prog gets about 80% of the way for loading the bootloader, then fails so I wondering if that's the resistor change that is required or something different.  Also, if I change the resistor value, are their any drawbacks or do I have all the same functionality, with an option to enter SCI boot mode?

    Thanks again,

    John

  • John,

    EMU_BMODE is used to mode the boot mode to various peripherals when an emulator is connected.  This is most likely not your end use-case. :)

    To update code when an emulator is not connected you'll want to:
    A) Set the boot mode pins to Boot-From-SCI.  You can then send you bootloader across and eventually flash your device.  After the flash update, you'd change the state of the boot mode pins back to Get-Mode (boot to flash mode is the default get-mode).
    B) Set the boot mode pins to Get-Mode.  Leave the OTP keys alone so that it boots from FLASH (the default choice).  You'd then program the FLASH to jump to SCI-boot mode if/whenever you want to update. 

    (A) is often the most conventional choice for when you wish to field update you code.  However, this assumes that the person doing the update has been given the ability to flip a switch to change the boot mode. 

    If you don't have the room/desire to give the person doing the update the ability to change the boot mode via a switch/jumper, I would recommend option (B).  Your software can then look for some signal that an update is desired (a command given via the SCI, for a specific time after reset, etc).

    Taking out the resistor on the cSTICK is the equivalent to changing the boot mode for option (A).

    Hopefully, this clarifies things some.


    Thank you,
    Brett

  • Thanks for all your help and patience Brett.  I now understand what I need to do.

    John

  • Hi All,
    I posted a question on serial flash programmer on 28069 controlCard. I was wondering if anyone has comments or suggestions, especially if you have got it working? Thanks and here is the link:

    e2e.ti.com/.../1538489