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.

TMS320VC5510A: Where to store entry point value for boot table?

Part Number: TMS320VC5510A

We are developing an application for the TMS320VC5510A chip where we are loading the program from an external flash. The process to do so involves reading the program data from the flash and parsing it according to the boot table definition. The first value to parse from the boot table is the "entry point". What is not obvious to us is where we store this entry point value in the code composer studio project after it has been read from the flash. Does anyone have any insight into how to do this?

Thanks

  • Hi Stephen,

    The bootloading process you described above is done by the C5510A ROM bootloader after power up reset.

    What you need to do is to convert the CCS project binary file (OUT file) into a boot image using the HEX55 and flash it onto EEPROM, then the ROM bootloader will read the boot image. The boot table is generated by the HEX55. It will be handled by the ROM bootloader.

    Please refer to the following Appnote for details: https://www.ti.com/lit/pdf/spra763

    Best regards,

    Ming

  • Hi Ming,

    Thanks for the reply. I should have been more specific in my question - We have multiple images stored in the flash. We are able to load the initial program when the chip powers up, but we would like to reset the chip with a different program in a different flash slot through the software.

  • Hi Stephen,

    In that case, you may need to write your own secondary bootloader (SBL). The ROM bootloader will bootloading your SBL at power up, then you SBL will bootloading different application image depending on your needs. The SBL is going to mimic the ROM bootloader which copy the application image from flash into RAM section by section, finally branch to the entry address you desire.

    Best regards,

    Ming

  • Hi Ming,

    Thanks for the insight. We have most of the secondary boot loader already written. What I don't understand is the technical details of where in the RAM do I store the entry point found in the flash image.

  • Hi Stephen,

    The entry address is the first 32 bit word in the boot table, See section 2.4.2 of the SPRA763c.pdf "The Boot Table Structure".

    I did write the ROM bootloader for C5510A, but I did write ROM bootloader for C5505. There will be some reserved RAM section for the ROM bootloader to store its stack, variables etc. For C5505, we use the last 8KB of the on-chip RAM. From the section 2.4.1 of SPRA763c.pdf. "DSP Resources Used by the Bootloader", it seems to me they are using the 0000h−0200h RAM for the ROM bootloader working memory.

    The entry point address is stored at word addresses 0060h and 0061h

    Best regards,

    Ming

  • Hi Ming,

    So if I copy the data of a secondary program image to the chip's internal ram, store the entry point from it's boot table at addresses 0x60/0x61 and then issue a software reset, the chip will boot from the new entry point address and my secondary image will load and run?

    Thanks for the information.

  • Hi Stephen,

    The RAM 0x0000 to 0x0200 is only the working memory for the ROM bootloader. The entry address will be stored at 0x60/0x61. The last step ROM bootloader will do is to jump to the entry address.

    If you have your own SBL done, then after you load your application image, you can store the entry address of your application image at 0x60/61. After you load all sections specified in the boot table, then you can jump to the new entry address to start the application.

    Each reset will trigger a new execution of the ROM bootloader. I do not think you can change that, but you can always change the PC (Program Counter) to a new address and run (or unconditional jump to a new address).

    Best regards,

    Ming