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.

Gui composer setup

Other Parts Discussed in Thread: CC2650

How do I get gui composer to read/write to my running application?

I am using code composer studio to build a cc2650 application that is hooked up using the xds110.

I created a GUI composer app with a slider used to represent a value from 1-100.

In CCS I've loaded the SimpleBLEPeripheral application. I've got it running on my cc2650 using xds110 jtag debugger.

I've copied the variable name from my main.c file into GUI Composer into the "Binding" area for the slider.

I then installed the GUI Composer app into the view->applications menu.

I run my cc2650 app using the debugger

I run the GUI app by selection view->applications->simple1

Where simple1 is the name of my project.

But nothing happens.

I installed a printf statement inside of the while(1) loop in main.c.

but the variable value does not change the slider

and the slider has no effect on the variable.

Can anyone give me more hints about hooking up my app to GUI composer

  • In terms of procedure, you seem to be doing things right.  Is the variable you are "binding" to a global variable? If you add that variable to the CCS Expressions view, and click the "Continuous Refresh" icon, do you see the variable update continuously with the expected values? 

    Rather than starting up the installed GUI app, have you tried the Preview button from within GUI Composer itself?

  • Preview doesn't help.

    The variable I'm trying out is "intervalX"
    It is declared extern in an h file and declared static in main.c
    it is of type uint8_t
    If I open the "Add global variables" list, I can see that the variable intervalX is in that list.
    However, in the expressions watcher, the columns display as follows

    intervalX unknown Error: identifier not found: intervalX

    Even though in the debugger, I'm hovering over the variable and looking at its value.
    If I select the variable and add it to the "watch" list, I still get the same message in the expressions list - "Error: identifier not found: intervalX"
  • in Addition, I found an innocuous variable in the "variables" list. I don't how these variables got in this list, because i didn't put them there.
    In any case, one of them was "a0". I have no idea what this variable is, but its an integer and it displays a value.
    When I add this variable in the Expressions list, I can see a value (no error). So this is obviously a global that might work, you would think?

    So I add "a0" as the "ID" of the "Binding" set for a text box.
    I leave "Class" blank because I don't know what that should be.
    (Note: if I click on the down arrow menu, I get nothing. Gui Composer can't seem to see any classes anyway.)
  • I suspect the variables you are binding to are not global variables or are being optimized in some way by the compiler. As a test, perhaps you could try adding a new global variable to your source file, declare it volatile (so it does not get optimized), and modify it somewhere in your code, perhaps inside a loop. Then bind that variable to a GUI Composer widget to see if that works.

    There is an example in this training module, it is not specific to the device you are working with, but could serve as a reference if you haven't had a look at it already.

  • My variables are declared external and they appear in the global variables list. So they should be global. Unless there is more than one type of global. ?!?

    I've tried making the variable volatile, and tried to use various types. Nothing works

    Are there any compiler or linker options that I should try?

    How does the runtime know when and how to transfer data between the running code and the GUI composer runtime?

    There is no documented semaphore for this, so I'm curious about how it works. Maybe I'm missing something important.

    -b

  • Bruce Matichuk said:

    How does the runtime know when and how to transfer data between the running code and the GUI composer runtime?

    There is no documented semaphore for this, so I'm curious about how it works.

    Currently the communication between target and host ca occur via JTAG or UART. The training module I pointed to in my previous reply has some high-level information. Besides that, all documentation on GUI Composer is captured in this wiki category and the pages within the category.
    http://processors.wiki.ti.com/index.php/Category:GUI_Composer

  • I think this might be the issue (frok the wiki)

    Advanced Application Debugging - GUI Composer

    Advanced Application Debugging

    GUI Composer uses modern HTML5 web based technologies and Dojo/Dijit JavaScript library. To get access to these during runtime and for other advanced debugging purposes, you're going to need to remote attach a debugger.

    Remote Attach a Debugger

    The easiest way to get runtime access to your application is via the built in Chromium debugger. Open this jar file with winzip/winrar, <install dir>\eclipse\plugins\com.ti.chromium.browser_1.0.0.xyz.jar. Edit the default_settings.ini and update the "remote_debugging_port" to an available port on your PC. Restart GUI Composer, open Google Chrome and set the url to http://localhost:<port>. Click on the remote debug-able browser instance to start debugging the webpage.

    If the browser and application are on different machines, simply replace 'localhost' in the URL above with the IP address of the machine that is running your GUI Composer application.

    ________________

    I did not do this step, so I'm assuming that GUI composer does'nt have a way to access debug information. Does this make sense? Or is Chromium already installed in CCS?

  • Bruce Matichuk said:
    I did not do this step, so I'm assuming that GUI composer does'nt have a way to access debug information.

    This wiki page is referring to debuging the actual GUI Composer app itself. It is not required in your usage scenario of visualizing target variables.

    You mentioned you are working with the SimpleBLEPeripheral example. Is it the out of box example or a modified version? 

  • I've made changes to main.c to talk to the cc2650.
  • I'm not seeing any support specifically for cc2650.

    Does GUI Composer work at all for the CC2650?

    Where can I find specific document or tutorial on using GUI Composer with Code Composer Studio for the cc2650?

    If GUI Composer won't work, is there a good alternative?

    -Bruce

  • I believe the GUI Composer Runtime currently does not have support for CC2650 so you may not be able to export the application and use it stand-alone. However, the GUI Composer designer integrated within CCS should work with CC2650 via JTAG (although I have not personally verified).

    Unfortunately, we do not have specific tutorial for the cc2650, just the ones referenced from that wiki category.