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.

CCS/TMS320F28035: No source available for "0x3ff599"

Part Number: TMS320F28035
Other Parts Discussed in Thread: DRV8711, CONTROLSUITE, C2000WARE

Tool/software: Code Composer Studio

Hello,

I am driving DRV8711 using C2000. The code doesn't seem to fit in the RAM so I tried to switch to flash by including F28035.cmd file in the project. The motor seems to run as desired till I reset my Piccolo. Once I do that, CCS displays 'No source available for "0x3ff599"' on the console.

I tried to clean the code and then load again but that displays ‘No source available at 0x3ff8a1’.

I also checked F28035.gel file.

hotmenu EMU_BOOT_FLASH()
{
*0xD00 = 0x55AA; /* EMU_KEY = 0x 55AA */
*0xD01 = 0x000B; /* Boot to FLASH */
}

Kindly help me with a solution.

Thanks in advance,

Nikit Shah

  • Nikit,

    This is not an error. CCS is simply letting you know that "C" source is not available since this code section is in the Boot ROM. If you look at the Disassembly window you should find the assembly code. I hope this answers your question and if so, please click the green "Verified Answer" button. Thank you.

    - Ken
  • So how do I solve it? Is there some routine I need to add or any other changes I need to perform to have the code available at that address at restart?
  • Ken,

    Please elaborate on your answer. i don't understand what you mean.

    Thanks,
    Nikit Shah
  • Nikit,

    Very simply the Boot ROM code was written in assembly language and not C. Therefore, CCS cannot display this as C, and that is why you are seeing a message 'No source available <at address>'. You will also notice that you are giving an option to click "View Disassembly". In the Disassembly window you will find the assembly code from the Boot ROM. So in summary, your C code is compiled to assembly and therefore you can view it as C 'source' and assembly in the Disassembly window. However, for code that is written in assembly, the assembly is the source.

    Also, please note that there is a difference between "reset" and "restart". Reset will reset the device (to the Boot ROM), and Restart will restore the program counter (PC) to the entry point for the currently loaded program, typically at the beginning of the main function.

    I hope this helps. Please let me know if you have any other questions. If this answers your question, please click the green "Verified Answer" button. Thanks.

    - Ken
  • Thanks for clearing that. I see this message on reset and not restart. I don't get this message on restarts but when I reset, this message pops up and as it does not find any source code at that address, it fails to run.
    What can be done to tackle this? I have tried a few things(mentioned on my initial post) but that was not enough. Any suggestions?

    Thanks again for helping.
  • Nikit,
    On a restart the program control goes to your application's entry point. On a reset the program counter is at the reset entry point which is in device boot ROM. If you hit RUN after a reset then device boot ROM is run and what happens and how the device boot ROM functions is explained in the device boot ROM guide. On a stand-alone run without emulator, when device powers up or after the device resets, the device boot ROM is run and then it will boot as per the boot mode pins configured.

    You can do a reset and then restart to set the program counter to your application and run the application. You don't have to run the boot ROM necessarily every time unless you are trying to see if the application can be started after the boot ROM executed. Refer to the device boot ROM guide on what you need to do to make sure the boot ROM starts the application correctly. But I doubt that this is what you are trying to do.

    Nevertheless if you want to see the ROM source code, the ROM source code for your device is available in controlSuite and C2000Ware. In ControlSuite you will find :- C:\ti\controlSUITE\libs\utilities\boot_rom\2803x\2803x_boot_rom_v1

    In C2000Ware the ROM source code for your device is at C:\ti\c2000\C2000Ware_1_00_02_00\libraries\boot_rom\f2803x\v1_0\rom_sources

    Now, after you load your application, you can use ADD symbols option and select the ROM COFF file from the release directory from above folder path. Now if you do a reset it should point to the reset entry point with ROM source code. Note that the ROM source is only provided for reference, you will not be able to build the ROM project and load the ROM.

    Hope this helps

    Best Regards
    Santosh Athuru
  • Nikit,

    Yes, you will see this message on reset and not restart.  From my previous post, reset will cause the PC to be at the device reset entry point, which is in the Boot ROM (i.e. written in assembly - and not C source).  Restart will cause the PC to be at the application code entry point (i.e. in your case written in C source).  Please note that what you are seeing is NOT an error or warning.  All is working correctly and as intended.

    Now, the other issue you need to be aware of is setting the boot modes.  For this I suggest reviewing the workshop materials at:

    http://processors.wiki.ti.com/index.php/C2000_Archived_Workshops#C2000_Piccolo_Multi-Day_Workshop_-_Revision_2.1_December_2010_.28ExpKit_F28035.3B_CCSv4.2.3B_DSP.2FBIOS_5.41.29

    See the boot modes in module 4 and review the lab directions in module 5, specifically step 11.  Please let me know if this helps.

    - Ken

  • Santosh,

    That explanation was helpful. I did add symbols and on running my application SelectMode_Boot.c pops up and the PC is on line
    asm(" ESTOP0")

    void WaitBoot(void)
    {
    WatchDogEnable();
    for(;;)
    {
    // If the emulator stops here
    // a) change EMU_KEY to 0x55AA
    // b) write the appropriate boot mode to EMU_BMODE
    // c) perform a debugger reset, and run
    asm(" ESTOP0");
    }
    }

    I have the respective changes done on f28035.gel file.
    What are your comments on this?Any suggestions?

    -Nikit Shah

  • Nikit,

    I am not sure if your question is specifically about the WaitBoot function, but hopefully I can add some value. In Emulation Boot mode (i.e. debug probe is connected to the target), first the EMU_KEY bit fields are checked for a value of 0x55AA. If either EMU_KEY or EMU_BMODE bit fields are invalid, the “Wait” boot mode is entered. These bit field values can then be modified using the debugger and then a reset is issued to restart the boot process. This is the typical sequence followed during device power-up with the emulator connected, allowing the user to control the boot process using the debugger. In CCS you will find Scripts for loading the EMU_KEY and EMU_BMODE values. From the link in my previous post, please see the module 4 boot mode slides for the boot flow process and lab 5 directions (step 11) for the usage of the CCS Scripts.

    Also sorry, I made a slight error in my earlier post. For this device, the Boot ROM was written in C and all that is needed to display the source is to add the symbols, as Santosh pointed out. I was thinking of our older device where the Boot ROM was written in assembly.

    Again, I hope this helps. Please let us know if you have any further questions. If this answers your question, please click the green "Verified Answer" button. Thanks.

    - Ken