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/F28M35H52C: TMS320F28M35xx Concerto controlCARD - Controlling Execution

Part Number: F28M35H52C
Other Parts Discussed in Thread: CONTROLSUITE

Tool/software: Code Composer Studio

I have followed the instructions in the ControlSuite document F28M35x-FRM-EX-UG.pdf to load the 2 example blinky projects.  I have compiled them both, and got as far as step 12 on page 31.  I loaded the .out files onto their respective cores and then I could see the code in the debug window but running the cores from within the debugger did not produce flashing LEDs.  After I shut down CCS, I did see both LEDs flashing so clearly the code was loaded and ran at some point but I don't understand how to control the run/stop.  Now I power up the board but the LEDs don't flash so the code isn't running.

Any ideas what I'm doing wrong?

  • Well I sort-of found the answer which is in the header comments of blinky_dc_m3.c where it says...

    //! \addtogroup dual_example_list
    //! <h1>Blinky DC (blinky)</h1>
    //!
    //! This Dual Core Blinky Example demonstrates how to run and
    //! implement a standalone application on both cores. Due to an errata in
    //! the bootROM, this example may not run correctly with the debugger connected.
    //! To run the example, program both cores with their respective project and
    //! then disconnect the debugger. Set SW3 switch 1 to the down position
    //! (disconnect TRSTn) as well as setting all 4 switches on SW1 to the down
    //! position. Cycle power and both LEDs should begin to blink.
    //!
    //! \b Build \b Configurations:
    //! - RAM,FLASH - Run and debug application from either RAM or FLASH memory
    //! - RAM,FLASH Standalone - Run application as standalone (CCS debugger not
    //! connected). Application automatically runs from
    //! either RAM or FLASH after boot-up.

    When I make the switch settings suggested and power up without the USB connected, I see one LED flashing (LD3) but the one to the right of it (LD2) was also flashing yesterday when it briefly worked. I think, from examining the code, that the code that's running is on the Master (M3) core but the fact that LD2 is not flashing suggests that code is not running on the Control (C28) core.

    I'll keep going on my own but if anyone can chip in here, you could save me time; obvious questions are:

    1. Do I need to set the switches back before programming new code into the chip?
    2. Is this 'errata in the bootROM' something that has a fix?
    3. Does this mean that I can't debug my code while conencted to the controlCard from CCS?

    FYI, I'm using CCS 7
  • Well, I figured out the issue of the C28 code not running too but I'll post here so that anyone following in my footsteps might benefit.
    I was working from the document I named in my first post F28M35x-FRM-EX-UG.pdf which is in my directory C:\ti\controlSUITE\device_support\f28m35x\v210\doc

    On page 28 (section 2.3) it explains about importing the projects and compiling them
    Within section 2.3 (paragraph 5, it explains how to create a new target configuration, I did this.
    On page 31, it asks you to load the compiled code to each processor (after you have connected to them), it isn't explained well but there's a button with a green down arrow on it that says 'Load' on the tool tip, click the down arrow to the right of this button and select 'Load Program' from the drop down list that appears.

    What's not clear is where the linker parameters are stored, like _FLASH. The comments say they are in the device linker command file but I can't find that - where is it anyone?

    Anyway, there was a secition in the M3 program that said this...

    //#ifdef _STANDALONE
    #ifdef _FLASH
    // Send boot command to allow the C28 application to begin execution
    IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH);
    #else
    // Send boot command to allow the C28 application to begin execution
    IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_RAM);
    #endif
    //#endif

    And I saw that the entire section was greyed out because _STANDALONE was not true. Not having found where this is stored, I commented out the #ifdef statement and then recompiled and it works every time with both LEDs flashing
  • It's awful lonely here...

    Anyway, the flags are defined under Project Properties.  Right click and select project properties and navigate to Build>ARM Compiler and there are all the flags defined with an 'Edit Flags' button lower right.  I added --define="_STANDALONE" and removed my earlier comment tags, recompiled, and all worked as expected.

  • Ted,

    the default examples from controlSuite have preset build configurations. For ex: after you import the blinky example projects from the dual core examples (C:\ti\controlSUITE\device_support\f28m35x\v210\F28M35x_examples_Dual\blinky), right click on the M3 project in the project explorer and you browse through the build configurations -> set Active -> <choose an option>.

    For ex: if you choose Flash standalone then, certain predefined symbols are defined for this configuration;. This will allow you to build the project as it fits your current development stage.

    You can look at the predefined symbols by : right click on project in the project explorer->click properties->Build->AdvancedOptions->Predfined symbols.

    Now you can change the configuration on the right hand tab and browse throught predefined symbols again to see what symbols are defined.

    Hope this helps.

    Best regards

    Santosh Athuru

  • Santosh,

    Thanks, it was as you described although, in my case, _STANDALONE wasn't listed under predefined symbols (perhaps because of my earlier edits) but I was able to add it and the effect on the compilation was the same as expected.

    The real question is what does 'STANDALONE' mean? Was it intended that this would be used for someone who was not using the Debugger? Is it required to be true if the debugger is not connected? In my case, I ran into this issue because there was a documented issue with an 'errata in the bootROM' which (as advertised) prevented me from running the example program from the debugger.

    Was this a quirk of the blinky example or am I going to have this issue with all examples? If yes, then I'm keen to find a fix for it like an updated bootROM.

    Thanks,

    Ted
  • Ted,
    yes, the stand-alone configuration is to have the example/application run without debugger connected. You load the stand-alone build out files into both the cores and disconnect debugger and power off and ON the board and the application(s) should be running.

    Stand-alone configuration is usually chosen after the user is done with the development. During debug and development it is easier to depend on the debug/RAM configuration, then move to debug/flash and then to stand-alone flash.

    With debugger connected user has controls the program load and run. In stand-alone mode, when the device powers up and the boot mode pins are set to boot to flash, the bootROM starts the application in flash.

    Can you check if the Errata affects the revision of the device you have. Usually the Errata says that this is fixed in REV A or lists the revisions affected by the bug.

    The blinky example should work as it is. In Stand-alone mode the M3 application has to send a boot mode IPC command to C28x Boot ROM to let it boot to C28x flash but in debug mode user usually controls how the cores are run.

    Please refer to the Boot ROM chapter of the TRM for more details on how the device boots and section 6.7 is helpful to understand the perspective from applications.

    Hope this helps.

    Best Regards
    Santosh Athuru