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.

TMS320C6748: How to branching into another entry point from bootloader

Part Number: TMS320C6748

We are developing a C6748 DSP based custom device.

Currently trying to find a way to do the field upgrade in two ways. None of them are working yet.

1. Upgrade via USB thumbdrive -

-- We have a built-in USB 2.0 interface used for data logging. Via existing USB interface, we read firmware.ais in the USB thumb drive and write it to the flash memory. During nandwrite process we use 2 different starting block numbers (10 and 20) alternatively. Once the blockNum 10 is used as a starting flash block number, then it selects 20 for the next upgrade so that there is no "overwrring" access blocks. (firmware upgrade only takes 3 blocks) The problem we are facing is that the "entry point" always goes back to the "previous" firmware entry point even after the upgrade. How do you change the entry point dynamically and permanently?

2. Via Modbus RTU.

I know this is possible but I couldn't find any examples or tutorials on this method

  • Hi Daniel,

    I've looped in my colleague who is more familiar with the bootloader to look at this.

    Regards,
    Sahin

  • Daniel,

    How are you setting up the entry point to the application. Is the AISGen tool configured to use an fixed entry point or do you let the AISGen tool locate the cinit00 entry point for the application to pass control ?  Please refer to the section 5.3.10.2 in document below for configuring specific entry point that you are not using that feature

    http://www.ti.com/lit/an/spraat2f/spraat2f.pdf?ts=1588261045829

    Generally the entry point is embedded in the AIS image by the tool either based on specific entry point that user provides or if the specific entry point is not configured to search for the cinit00 symbol which is standard entry point of the TI c6000 compiler. 

    Also, provide the AISGen_log.txt file from generation of the two images. Another way that I can think of is to check the AIS binaries and check the address associated with the Jump and Close command (0x58535906) [Details in section 4.6 of the application notes]

    Regards,

    Rahul

  • Thanks Rahul,

    Here's our field upgrade scenario.

    1. The initial flashing is done using XDS200 JTAG (via host pc) at our company and ship it to the customer.

    2. We send a new upgrade ais file to the customer later.

    3. Customer copy the file in the USB drive and plug in to our device.

    4. Select "FW upgrade" in the menu on our device

    5. Start upgrading....

    To do step#5 we have modified TI's nand_write program and added it to our application program. That program basically does the same thing as what nand_write program origianlly does but it does not erase existing firmware in the different block and it selects the target ais file from the USB thumb drive directly rather than the user input. It seems to read the file from USB correctly and writes to flash blocks but after all that thing is done, it still boots up to the previous version.

  • > Is the AISGen tool configured to use an fixed entry point or do you let the AISGen tool locate the cinit00 entry point for the application to pass control ?

    Fixed entry point. I don't put anything else except "application.out" to the application filed in the aisgen tool.