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.

Do the TMS320VC55xx simulators support boot loading? If not, alternatives?

I don't have real TMS320VC55xx hardware of any kind so I can't use hardware emulation, but I've had a little luck getting the (software) simulator for this processor to load and even execute some very simple code that I built with Code Composer Studio V5.x.

What I'm really interested in executing, though, is a different program for which I do not have the source. It's contained in a binary file that contains an image of a boot table (or boot block, whichever it's officially called) for this processor.

Using GEL I can get the simulator to load this binary image into memory byte-for-byte at an address I choose. But once it's in memory, I can't find a way to get the simulator to do anything with it.

Does the simulator simulate the in-ROM bootloader capability of the real DSP hardware? If so it isn't obvious. If the loader is available in the simulator, you'd also have to have some way to tell it what to load from (external memory, HPI, McBSP, etc.)--but there isn't any way with GEL or any other simulator tool, as far as I can tell, to set the state of the GPIO pins that the bootloader samples to determine what to do.


If the code for the boot loader is available I could just tweak it to do what I want. Does anyone know if it is available?

True, the boot loader doesn't do anything very complicated and I suppose that in CCS I could write something to carry out the same function. I'd just like to save myself the trouble if possible.


(By the way, it's clear from examining this binary that it contains code for a TMS320VC5510 or 5510A and that the code was built with CCS. With a little disassembling, I spotted the code for  _c_int00 and some of the other RTS routines.)

  • The C55xx simulator represents the CPU of the device. However, each device has additional peripherals (eg UART, SPI ...) and bootloader surrounding the CPU.
    Regards.
  • If I understand the datasheets correctly, doesn't the 5510/5510A CPU itself contains the bootloader in on-CPU ROM, rather than the bootloader being on some external peripheral? This on-CPU bootloader would be able to boot from a peripheral such as a UART, external memory, the host interface port, etc.

    I believe it would also be able to boot from a boot table that was already in the CPU's RAM?

    Anyway, I made my question somewhat moot by developing a Python script to process the file containing the ROM image of the boot table into an Intel Hex file that would load everything into memory just as if the bootloader had run.

    The Intel Hex file was easy to load into the simulator using Code Composer. Then I just had to find a way to make it execute.

    That took some head-scratching, since I couldn't find a way to tell the simulator where to start execution. Eventually I constructed a Reset interrupt vector that just jumped to my code, which uses the _c_int00 routine from the RTS to set up everything and then call the main routine.

    Steve, maybe you know if there's any way to change the value of the non-MMR CPU registers from the simulator GUI? I can view the registers just fine, but none of the menus (including the context menu brought up by right-clicking on the register view) have a command to change a value.

    The documentation describes a way to do this, but since the menus I'm seeing don't include those commands, maybe they only work if you're emulating using real hardware?

    Since I can modify the simulator's memory with the GUI, it seems like modifying the registers should also be possible...
  • What I tried to pointed out is that Bootloader is part of on-chip ROM which is not included in simulator. Yes, one of the bootloader feature is to load (also decode) code (boot image) from external to internal RAM. Actually, why you want to simulate the bootloader active loading code into RAM, instead, just use the simulator to simulate your program code in memory?
    Regards.
  • Steve, until the other day my code only existed as a file containing a binary image of  a boot table. I don't have any source code or any object code or hex code that CCS was able to load (CCS can't load the simulator memory from a boot table, as near as I can tell).


    As I mentioned in my last post, now I have converted it into Intel Hex format which CCS can load.

    So I no longer have a problem.