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.

Flash Programming from Master System (Master and Control Subsystems)

Other Parts Discussed in Thread: F28M35H52C, UNIFLASH

Hello,

I have the concerto device F28M35H52C and want to flash both subsystems (master and control) in order to update the firmware via an USB mass storage device.

The USB part is done (with the help of the usb-host-example) in the master subsystem. Now I have found the F021 flash API with the example and will test it.

Meanwhile I'm asking myself if it is possible to flash the control subsystem from the master? Do I have access to the control flash?

Regards,
Stefan

  • All right, just read in the spruh22 that there ist a flash pump semaphore since it is shared by the C28 and the M3 core. And if I look at the block diagram I realize that the idea flashing all code from USB stick both subsystems is getting quite complicated. What would be the best way?

    I thought to have an own bootloader program located in the M3 in one flash sector doing the whole process: reading data from USB-device, checking the CRCs and other metadata, programming the flash of M3 and C28x (and external FPGA via SPI). If ready or if no program request is issued then it jumps to the firmware. Now it seems that I must have a piece of bootloader program in the C28x as well and to transfer the program from the USB via the M3 to the C28x to program its flash.

    Does anyone has a better solution? Suggestions?

  • Stefan,

    Sadly there is no good way to flash the C28 flash from the M3 CPU.  You will in fact need two bootloaders, one on the M3 and one on the C28.  You have a couple options for how you pass data to the C28 though... you can use the shared memories, or one of the serial loopbacks which go in between the two cores (SPI or UART).

    Feel free to ask specific implementation questions.  I've worked a lot with these parts and have a pretty good handle on how firmware updates can be architected across the two cores.

  • Hi Trey,

    I just verified my own reply before marking yours as verified answer. Funnily even that worked... yesterday we had a holiday in German so I'm back today.

    Thanks for your responce, I was already quite sure that it can't be done directly. Too bad since I already thought that I'm almost done with my update firmware since it is quite tightly scheduled in our project and I was just asked to do this "tiny little piece". And I didn't know anything about TI controllers before.

    So if I had a wish for redesign this would definitely one! Maybe a special boot mode and code in the boot ROM of the C28? (Another wish I run into is the uCRC issued in the following thread: http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/218067/915114.aspx#915114).

    Following the motto "begin with the easy things moving to the more compIicated" I have decided first to deal with programming the M3. If that works I will have to take care of the C28. Since our other developers already use the shared memory I will probably go for that way. Right now I have no other questions than if there is an code example or app note where I can profit from?

    Regards,
    Stefan

  • One further question / remark to the SPI / UART way:

    Is there an internal serial loopback in the controller so I don't need an external wiring? Would it be possible then to use an already existant C28 boot mode (SPI or UART) for programming it via the M3? Would it save me to include a special bootloader and programmer code in the C28?

    Stefan

  • Stefan,

    No problem, happy to help out.

    The C28 does have a few boot modes that can be started by using IPC commands, and these include the standard modes such as SCI and SPI much the same as other C2000 devices.

    The loopback mechanism I talked about is internal to the chip and requires no external components/wires.  Search the documentation for SERPLOOP (that's the register name).

    You definitely can architect a system to program the flash of the C28 using nothing but the M3, internal loopback, and one of the C28 peripheral boot modes (SPI/SCI).  In fact this is exactly how our Uniflash tool is able to program both core of the device using a serial connection.  This isn't the easiest way to implement flash programming on the C28, but certainly one of the cleaner methods.  Keep in mind you'll need to load anything needed to program the C28 (i.e. flashAPI and code to be programmed) from the M3.