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.

TMS320F280025: Bootloader

Part Number: TMS320F280025
Other Parts Discussed in Thread: C2000WARE

Hi

I am new player in TI C2000 MCU bootloader function. I have couple of questions about it.

1.I don't want to use pin to control MCU to flash boot mode or SCI boot mode. My idea is MCU boot up with flash boot mode normally and using SCI_BOOT() function to control MCU switch to SCI boot mode and wait a SCI communication. Is it possible? if it is possible any example.

2. Flash Kernel B mentioned in document "Serial flash programming of C2000 Microcontrollers" which is stored in MCU ROM or need to download from Host device? What  is step to run it in RAM.

3.Interface between MCU and Host is RS485. Of course, there is RS485 transceiver between MCU SCI and host device (SBC) running Linux and need to write our own application in SCB. Is there are any document describe a communication protocol?

4. How to write custom bootloader if TI SCI boot mode and Flash Kernel B doesn't fulfill our requirement.

Thanks

HK Woo

  • 1.I don't want to use pin to control MCU to flash boot mode or SCI boot mode. My idea is MCU boot up with flash boot mode normally and using SCI_BOOT() function to control MCU switch to SCI boot mode and wait a SCI communication. Is it possible? if it is possible any example.

    This is possible. The flash kernel example for F28002x has a function called sciBootApplication that can be called whenever a image needs to be streamed over SCI to be written into Flash, this can be used. 

    2. Flash Kernel B mentioned in document "Serial flash programming of C2000 Microcontrollers" which is stored in MCU ROM or need to download from Host device? What  is step to run it in RAM.

    The Flash kernel is stored in RAM. The SCI Bootloader in ROM loads the Flash kernel into RAM and then jumps to the entry address for it in RAM. The flash kernel is formatted as a hex file and downloaded via a host utility that can run on your PC. The ROM bootloader will write the hex file into RAM and jump to the entry address specified by the hex file. 

    3.Interface between MCU and Host is RS485. Of course, there is RS485 transceiver between MCU SCI and host device (SBC) running Linux and need to write our own application in SCB. Is there are any document describe a communication protocol?

    Can you elaborate here?

    4. How to write custom bootloader if TI SCI boot mode and Flash Kernel B doesn't fulfill our requirement.

    What are your requirements here? 

    Thanks, 

    Anu

  • Hi Anu

    .I don't want to use pin to control MCU to flash boot mode or SCI boot mode. My idea is MCU boot up with flash boot mode normally and using SCI_BOOT() function to control MCU switch to SCI boot mode and wait a SCI communication. Is it possible? if it is possible any example.

    This is possible. The flash kernel example for F28002x has a function called sciBootApplication that can be called whenever a image needs to be streamed over SCI to be written into Flash, this can be used. 

              Hung Kai Woo said:

              1. I supposed that you said the project "flash_kenrnal_ex3_flash_kenral", is it right?

              2.Do TI have document to describe the code?

              3.Where set variable name BootMode?

    2. Flash Kernel B mentioned in document "Serial flash programming of C2000 Microcontrollers" which is stored in MCU ROM or need to download from Host device? What  is step to run it in RAM.

    The Flash kernel is stored in RAM. The SCI Bootloader in ROM loads the Flash kernel into RAM and then jumps to the entry address for it in RAM. The flash kernel is formatted as a hex file and downloaded via a host utility that can run on your PC. The ROM bootloader will write the hex file into RAM and jump to the entry address specified by the hex file. 

    3.Interface between MCU and Host is RS485. Of course, there is RS485 transceiver between MCU SCI and host device (SBC) running Linux and need to write our own application in SCB. Is there are any document describe a communication protocol?

    Can you elaborate here?

              Hung Kai WOo said:
              In document "Serial Flash Programming of C2000" section 5.1 to 5.2. It seems the command to command MCU to different operation. However, I can't find a command to send an image to MCU.
    4. How to write custom bootloader if TI SCI boot mode and Flash Kernel B doesn't fulfill our requirement.

    What are your requirements here? 

             Hung Kai Woo said:

             For example, flash of MCU is divided into 3 parts A/B/C. A is bootloader, B is application, C is storage of image. In normal operation, application receives a new image via UART and stores it to C. Bootloader determines any need to do firmware updated. If it is necessary to do it, it will copy image from C to B. If not, bootloader will boot to B. It is my idea

  • 1. I supposed that you said the project "flash_kenrnal_ex3_flash_kenral", is it right?

              2.Do TI have document to describe the code?

              3.Where set variable name BootMode?

    1. This is correct, the location in C2000Ware is C2000Ware_4_00_00_00\driverlib\f28002x\examples\flash

    2. The app note SPRAVB4 describes the functionality of the flash kernel project. 

    3. The variable is passed in to sciGetFunction from main, it indicates which boot pins to use for SCI Boot. 

    In document "Serial Flash Programming of C2000" section 5.1 to 5.2. It seems the command to command MCU to different operation. However, I can't find a command to send an image to MCU.

    The serial_flash_programmer utility sends an image from PC to MCU, the DFU command is used to write the image into the MCU. 

    For example, flash of MCU is divided into 3 parts A/B/C. A is bootloader, B is application, C is storage of image. In normal operation, application receives a new image via UART and stores it to C. Bootloader determines any need to do firmware updated. If it is necessary to do it, it will copy image from C to B. If not, bootloader will boot to B. It is my idea

    This custom logic can be added on top of the flash kernel project. The flash kernel facilitates reading in an image from UART and writing it to Flash. All the checks that you want in addition to that you are free to add in. 

    Thanks, 

    Anu