LAUNCHXL-F280039C: GUI Composer. works in CCS but fails to work standalone

Part Number: LAUNCHXL-F280039C
Other Parts Discussed in Thread: CODECOMPOSER, TMS320F280039C, C2000WARE

Tool/software:

I created a simple project in CodeComposer based on the Launchpad demo.  The code just toggles the LEDs and an LED bool variable and counts a counter:

    for(;;)
    {

        GPIO_togglePin(DEVICE_GPIO_PIN_LED1);
        GPIO_togglePin(DEVICE_GPIO_PIN_LED2);
        LED_status = !LED_status;
        counter++;
        DEVICE_DELAY_US(1000000);
    }

If I make a simple V2 GUI Composer Dashboard project and export it to CCS, it works fine.  The LED widget blinks on/off every second and the water meter connected to the counter counts up.

If I try to run it as a dashboard in GUI Composer, I get a failed to connect message over and over again.  Every once in a while, it will show connected but none of the lights on the Launchpad change state (suggesting the the program is not running as they should blink every second). 

Here is my Project settings. I tried both "auto program" checked and unchecked.

Here is the console on the next screen.

If I run the GUI I get this error:

Eventually I might click the connect a few times and it says its connected but the lights showing the code is running stop working.

I intend to turn the gui and hardware over to someone to operate so I prefer the code to run standalone (not inside CCS).  How do I get this to work? or what is the current recommended way to get a GUI on a project?

I tried creating a V3 application and followed all those steps but I had no luck getting that to work either.

Regards

  • Hi Neil, 

    Would you be able to collect some logging information? You would need to preview the app (click on Run icon), once new browser tab opens with the app, there should be a connection attempt, which should trigger the error that you are seeing. With that tab active please press F12 to open Browser Dev Tools, click on "Console" tab and enter "gc.console.help()" and press return. This should trigger a help message printout. 

    In the message there should be information on how to enable logging (the syntax is a bit different between v2 and v3 apps). I think it is .setCookie("all",5) for v2 and .setLevel("all",4) for v3. Please copy and paste and execute the command to enable more detailed logging. Then hit F5 to reload the application. 

    This should trigger a lot more logging messages that might give us a clue as to the connection issue. 

    You should be able to Right click on that output and choose Save As. If you could then attach the log then I might be able to offer more info. 

    Martin

  • Martin,

    Thank you for the help.  Here is the log file.  I used V2 for this. 

    I first posted the log and noticed it could not find the ccxml file so I redid it.  Here is the new log:

    webcomponents-lite.js:1372


    GET dev.ti.com/.../ti-core-logger.html 404 (Not Found)
    load @ webcomponents-lite.js:1372
    fetch @ webcomponents-lite.js:1450
    require @ webcomponents-lite.js:1409
    addNodes @ webcomponents-lite.js:1396
    loadSubtree @ webcomponents-lite.js:1762
    bootDocument @ webcomponents-lite.js:1790
    loaded @ webcomponents-lite.js:1781
    receive @ webcomponents-lite.js:1457
    (anonymous) @ webcomponents-lite.js:1448
    (anonymous) @ webcomponents-lite.js:1369
    XMLHttpRequest.send (async)
    load @ webcomponents-lite.js:1372
    fetch @ webcomponents-lite.js:1450
    require @ webcomponents-lite.js:1409
    addNodes @ webcomponents-lite.js:1396
    loadSubtree @ webcomponents-lite.js:1762
    bootDocument @ webcomponents-lite.js:1790
    bootstrap @ webcomponents-lite.js:1887
    ti-core-assets.html.js:187 Help for gc.console:
    To see logs for a particular module, set a cookie for that module name (e.g. gc.console.setCookie('ti-core-backplane',5) ).
    To see logs for all modules, use a module name of 'all (e.g. gc.console.setCookie('all',5) ).
    To see the location that logged the message, click on the triangle to the left of the message to expand the stack trace.
    Colors: Red: error, Orange: warning, Black: info or a generic log, Blue: debug.
    Commands: the following function calls can be called from the Chrome dev tools console window command line:
    gc.console.setCookie(moduleName,<0-5>)
    - creates a cookie for the specified module name. Use 'all' for all modules.
    - value: 0 = remove the cookie, 1 = only errors, 2 = errors and warnings, 3 = errors,warnings,info, 4 = errors,warnings,info,logs, 5=debug+all others
    gc.console.getCookies()
    - dynamically updates any added or removed cookies and returns a list of all currently active cookies and their values.
    gc.console.log(moduleName,msg)
    - To log messages, use gc.console.log / gc.console.error / gc.console.warning / gc.console.info / gc.console.debug

    ti-core-assets.html.js:102 [ti-widget-statusbar].debug: usePrivateLogView = true
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane ready function called
    ti-core-assets.html.js:102 [ti-service-programloader].debug: initialized set to false
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #undefined changed to disconnected
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #undefined changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: initialized set to true
    ti-widget-options-serialport-action.html.js:178 ti-widget-options-serialport-action: could not find ti-service-serialio
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplane event handlers initialized. backplane.currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplane event handlers initialized. backplane.currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_disconnected
    gcFileCache.js:99


    GET dev.ti.com/.../package.json 404 (Not Found)
    (anonymous) @ gcFileCache.js:99
    promise @ q.js:642
    loadFile @ gcFileCache.js:67
    gc.fileCache.readJsonFile @ gcFileCache.js:106
    ready @ ti-widget-helpmenu.html.js:99
    _readySelf @ polymer-mini.html.js:157
    _ready @ polymer-mini.html.js:137
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _tryReady @ polymer-mini.html.js:122
    _initFeatures @ polymer.html.js:4140
    render @ polymer.html.js:5462
    attached @ polymer.html.js:5446
    (anonymous) @ polymer-micro.html.js:272
    whenReady @ polymer-micro.html.js:103
    attachedCallback @ polymer-micro.html.js:263
    attachedCallback @ polymer-mini.html.js:174
    _readySelf @ polymer-mini.html.js:162
    _ensureReady @ polymer.html.js:5395
    _markImportsReady @ polymer.html.js:5400
    (anonymous) @ polymer.html.js:5389
    _makeReady @ polymer-micro.html.js:111
    (anonymous) @ polymer-micro.html.js:117
    (anonymous) @ timeline.js:21
    requestAnimationFrame (async)
    window.requestAnimationFrame @ timeline.js:19
    _catchFirstRender @ polymer-micro.html.js:116
    (anonymous) @ polymer-micro.html.js:163
    checkDone @ webcomponents-lite.js:1212
    loadedImport @ webcomponents-lite.js:1223
    parseImport @ webcomponents-lite.js:1577
    parseLink @ webcomponents-lite.js:1600
    parse @ webcomponents-lite.js:1538
    parseNext @ webcomponents-lite.js:1527
    done @ webcomponents-lite.js:1637
    load (async)
    watchImportsLoad @ webcomponents-lite.js:1237
    (anonymous) @ webcomponents-lite.js:1183
    whenDocumentReady @ webcomponents-lite.js:1201
    whenReady @ webcomponents-lite.js:1182
    (anonymous) @ polymer-micro.html.js:162
    gcFileCache.js:99


    GET dev.ti.com/.../supported_devices.json 404 (Not Found)
    (anonymous) @ gcFileCache.js:99
    promise @ q.js:642
    loadFile @ gcFileCache.js:67
    gc.fileCache.readJsonFile @ gcFileCache.js:106
    (anonymous) @ ti-core-backplane.html.js:1728
    promise @ q.js:642
    _getLocalCcxmlFileLookupList @ ti-core-backplane.html.js:1722
    ready @ ti-core-backplane.html.js:1103
    proxy.<computed> @ SingletonService.js:101
    _readySelf @ polymer-mini.html.js:157
    _ready @ polymer-mini.html.js:137
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _tryReady @ polymer-mini.html.js:122
    _initFeatures @ polymer.html.js:4140
    render @ polymer.html.js:5462
    attached @ polymer.html.js:5446
    (anonymous) @ polymer-micro.html.js:272
    whenReady @ polymer-micro.html.js:103
    attachedCallback @ polymer-micro.html.js:263
    attachedCallback @ polymer-mini.html.js:174
    _readySelf @ polymer-mini.html.js:162
    _ensureReady @ polymer.html.js:5395
    _markImportsReady @ polymer.html.js:5400
    (anonymous) @ polymer.html.js:5389
    _makeReady @ polymer-micro.html.js:111
    (anonymous) @ polymer-micro.html.js:117
    (anonymous) @ timeline.js:21
    requestAnimationFrame (async)
    window.requestAnimationFrame @ timeline.js:19
    _catchFirstRender @ polymer-micro.html.js:116
    (anonymous) @ polymer-micro.html.js:163
    checkDone @ webcomponents-lite.js:1212
    loadedImport @ webcomponents-lite.js:1223
    parseImport @ webcomponents-lite.js:1577
    parseLink @ webcomponents-lite.js:1600
    parse @ webcomponents-lite.js:1538
    parseNext @ webcomponents-lite.js:1527
    done @ webcomponents-lite.js:1637
    load (async)
    watchImportsLoad @ webcomponents-lite.js:1237
    (anonymous) @ webcomponents-lite.js:1183
    whenDocumentReady @ webcomponents-lite.js:1201
    whenReady @ webcomponents-lite.js:1182
    (anonymous) @ polymer-micro.html.js:162
    gcFileCache.js:99


    GET dev.ti.com/.../target_setup.json 404 (Not Found)
    (anonymous) @ gcFileCache.js:99
    promise @ q.js:642
    loadFile @ gcFileCache.js:67
    gc.fileCache.readJsonFile @ gcFileCache.js:106
    (anonymous) @ ti-core-backplane.html.js:1687
    promise @ q.js:642
    _getLocalTargetSetupList @ ti-core-backplane.html.js:1680
    ready @ ti-core-backplane.html.js:1102
    proxy.<computed> @ SingletonService.js:101
    _readySelf @ polymer-mini.html.js:157
    _ready @ polymer-mini.html.js:137
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _tryReady @ polymer-mini.html.js:122
    _initFeatures @ polymer.html.js:4140
    render @ polymer.html.js:5462
    attached @ polymer.html.js:5446
    (anonymous) @ polymer-micro.html.js:272
    whenReady @ polymer-micro.html.js:103
    attachedCallback @ polymer-micro.html.js:263
    attachedCallback @ polymer-mini.html.js:174
    _readySelf @ polymer-mini.html.js:162
    _ensureReady @ polymer.html.js:5395
    _markImportsReady @ polymer.html.js:5400
    (anonymous) @ polymer.html.js:5389
    _makeReady @ polymer-micro.html.js:111
    (anonymous) @ polymer-micro.html.js:117
    (anonymous) @ timeline.js:21
    requestAnimationFrame (async)
    window.requestAnimationFrame @ timeline.js:19
    _catchFirstRender @ polymer-micro.html.js:116
    (anonymous) @ polymer-micro.html.js:163
    checkDone @ webcomponents-lite.js:1212
    loadedImport @ webcomponents-lite.js:1223
    parseImport @ webcomponents-lite.js:1577
    parseLink @ webcomponents-lite.js:1600
    parse @ webcomponents-lite.js:1538
    parseNext @ webcomponents-lite.js:1527
    done @ webcomponents-lite.js:1637
    load (async)
    watchImportsLoad @ webcomponents-lite.js:1237
    (anonymous) @ webcomponents-lite.js:1183
    whenDocumentReady @ webcomponents-lite.js:1201
    whenReady @ webcomponents-lite.js:1182
    (anonymous) @ polymer-micro.html.js:162
    ti-widget-readme.html.js:216


    GET dev.ti.com/.../README.md 404 (Not Found)
    httpGet @ ti-widget-readme.html.js:216
    open @ ti-widget-readme.html.js:176
    domReady @ ti-widget-readme.html.js:290
    (anonymous) @ ti-widget-readme.html.js:237
    (anonymous) @ polymer.html.js:1309
    setTimeout (async)
    run @ polymer-mini.html.js:2099
    async @ polymer.html.js:1308
    attached @ ti-widget-readme.html.js:236
    (anonymous) @ polymer-micro.html.js:272
    whenReady @ polymer-micro.html.js:103
    attachedCallback @ polymer-micro.html.js:263
    attachedCallback @ polymer-mini.html.js:174
    _attached @ webcomponents-lite.js:2028
    attached @ webcomponents-lite.js:2021
    added @ webcomponents-lite.js:1985
    addedNode @ webcomponents-lite.js:1978
    (anonymous) @ webcomponents-lite.js:2097
    (anonymous) @ webcomponents-lite.js:2093
    handler @ webcomponents-lite.js:2091
    childList (async)
    appendChild @ polymer-mini.html.js:642
    insertBefore @ polymer-mini.html.js:814
    appendChild @ polymer-mini.html.js:789
    ready @ ti-widget-helpmenu.html.js:157
    _readySelf @ polymer-mini.html.js:157
    _ready @ polymer-mini.html.js:137
    _readyClients @ polymer-mini.html.js:144
    _ready @ polymer-mini.html.js:132
    _tryReady @ polymer-mini.html.js:122
    _initFeatures @ polymer.html.js:4140
    render @ polymer.html.js:5462
    attached @ polymer.html.js:5446
    (anonymous) @ polymer-micro.html.js:272
    whenReady @ polymer-micro.html.js:103
    attachedCallback @ polymer-micro.html.js:263
    attachedCallback @ polymer-mini.html.js:174
    _readySelf @ polymer-mini.html.js:162
    _ensureReady @ polymer.html.js:5395
    _markImportsReady @ polymer.html.js:5400
    (anonymous) @ polymer.html.js:5389
    _makeReady @ polymer-micro.html.js:111
    (anonymous) @ polymer-micro.html.js:117
    (anonymous) @ timeline.js:21
    requestAnimationFrame (async)
    window.requestAnimationFrame @ timeline.js:19
    _catchFirstRender @ polymer-micro.html.js:116
    (anonymous) @ polymer-micro.html.js:163
    checkDone @ webcomponents-lite.js:1212
    loadedImport @ webcomponents-lite.js:1223
    parseImport @ webcomponents-lite.js:1577
    parseLink @ webcomponents-lite.js:1600
    parse @ webcomponents-lite.js:1538
    parseNext @ webcomponents-lite.js:1527
    done @ webcomponents-lite.js:1637
    load (async)
    watchImportsLoad @ webcomponents-lite.js:1237
    (anonymous) @ webcomponents-lite.js:1183
    whenDocumentReady @ webcomponents-lite.js:1201
    whenReady @ webcomponents-lite.js:1182
    (anonymous) @ polymer-micro.html.js:162
    ti-widget-readme.html.js:187 No README.md file found. error=undefined
    ti-core-assets.html.js:102 [gc.connectionManager].warn: window.onload() never called.
    ti-core-assets.html.js:102 [gc.connectionManager].debug: starting event onLoad
    ti-core-assets.html.js:102 [gc.connectionManager].debug: starting event autoconnect
    ti-core-assets.html.js:102 [gc.connectionManager].log: Starting to Connect
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #programloader changed to connecting
    ti-core-assets.html.js:102 [ti-core-backplane].debug: Start Connecting backplane.
    ti-core-assets.html.js:102 [gc.connectionManager].log: Starting the backplane.
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #xdsZW changed to connecting
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplane event handlers initialized. backplane.currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: backplane event handlers initialized. backplane.currentState.name=disconnected
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #programloader changed to connected
    ti-core-assets.html.js:102 [gc.connectionManager].debug: starting event backplaneReady
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane.connect called. Current state = disconnected
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: updateStateMachine event = onConnectBtnClicked
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: state change from disconnected to connectingToCloudAgent
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: currentState.name=connectingToCloudAgent
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: status=Connecting...
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: agent.getSubModule(File) completed
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: Call to initAgent succeeded. this.currentState.name=connectingToCloudAgent
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: updateStateMachine event = onCloudAgentConnected
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: state change from connectingToCloudAgent to ready
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: currentState.name=ready
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: status=Connected to TI Cloud Agent.
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneConnectionState changed .isConnectedToCloudAgent=true
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to ready
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_ready
    ti-core-assets.html.js:102 [ti-service-programloader].debug: onCurrentStateChanged: currentState.name=backplaneReady
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = showDownloadProgramBtn
    ti-core-assets.html.js:102 [ti-service-programloader].debug: onCurrentStateChanged: currentState.name=showDownloadProgramBtn
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = onSkipProgramDownloadBtnClicked
    ti-core-assets.html.js:102 [ti-service-programloader].debug: onCurrentStateChanged: currentState.name=targetProgrammed
    ti-core-assets.html.js:102 [ti-service-programloader].debug: state change from showDownloadProgramBtn to targetProgrammed
    ti-core-assets.html.js:102 [ti-service-programloader].debug: state change from backplaneReady to showDownloadProgramBtn
    ti-core-assets.html.js:102 [ti-service-programloader].debug: state change from disconnected to backplaneReady
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: backplaneCurrentState changed to ready
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: updateStateMachine event = backplane_ready
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: state change from disconnected to backplaneReady
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: currentState.name=backplaneReady
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: status=
    ti-core-assets.html.js:102 [gc.connectionManager].debug: starting event downloadProgram
    ti-core-assets.html.js:102 [gc.connectionManager].debug: starting event targetReady
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane.getUserCcxmlFile: found file named target/target_config.ccxml
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: boardName=undefined,deviceName=TMS320F280039C,fileName=undefined,fileFolderName=undefined
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: agent.getSubModule(TargetSupport) completed
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: TargetSupport.add(TMS320F280039C/f280039c) completed
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane.configureDebugServer: agent.getSubModule(DS) completed.
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane.configureDebugServer: number of cores = 2
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane.configureDebugServer: connecting to core 0...
    ti-core-assets.html.js:102 [ti-core-backplane].error: Error configuring ds: err=Module Closed
    ti-core-assets.html.js:102 [ti-service-targetaccess].error: failed to configure debug server. error=Failed to connect to TMS320F280039C device: Please unplug your hardware, then plug it back in and try again
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #xdsZW changed to disconnecting
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: updateStateMachine event = reconnect
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: state change from backplaneReady to disconnect
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: currentState.name=disconnect
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: status=
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: updateStateMachine event = disconnectComplete
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: state change from disconnect to disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: onCurrentStateChanged: status=
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #xdsZW changed to disconnected
    ti-core-assets.html.js:102 [gc.connectionManager].log: Starting to Disconnect
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #programloader changed to disconnecting
    ti-core-assets.html.js:102 [ti-core-backplane].debug: Start Disconnecting backplane.
    ti-core-assets.html.js:102 [gc.connectionManager].log: Stopping the backplane.
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: updateStateMachine event = onDisconnectBtnClicked
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: state change from ready to disconnect
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: currentState.name=disconnect
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: status=Disconnect
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: updateStateMachine event = disconnectComplete
    ti-core-assets.html.js:102 [ti-core-backplane].debug: ti-core-backplane: state change from disconnect to disconnected
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-core-backplane].debug: onCurrentStateChanged: status=Disconnected.
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneConnectionState changed .isConnectedToCloudAgent=false
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: onCurrentStateChanged: currentState.name=disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: state change from targetProgrammed to disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-programloader].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: backplaneCurrentState changed to disconnected
    ti-core-assets.html.js:102 [ti-service-targetaccess].debug: updateStateMachine event = backplane_disconnected
    ti-core-assets.html.js:102 [gc.connectionManager].log: Finished Connectting. New state = disconnecting
    ti-core-assets.html.js:102 [gc.connectionManager].debug: status for transport #programloader changed to disconnected
    ti-core-assets.html.js:102 [gc.connectionManager].log: Finished Disconnectting. New state = disconnected
    null:1


    GET dev.ti.com/.../null 404 (Not Found)
    Image (async)
    __setProperty @ polymer.html.js:1460
    _applyEffectValue @ polymer.html.js:1947
    _annotationEffect @ polymer.html.js:1604
    _effectEffects @ polymer.html.js:1465
    _propertySetter @ polymer.html.js:1449
    setter @ polymer.html.js:1528
    showToastMessage @ ti-widget-statusbar.html.js:357
    _showToastMessageHdlr @ ti-widget-statusbar.html.js:344
    fire @ polymer.html.js:1286
    _lastErrorMessageChanged @ ti-core-connection-manager.html.js:209
    _observerEffect @ polymer.html.js:1620
    _effectEffects @ polymer.html.js:1465
    _propertySetter @ polymer.html.js:1449
    setter @ polymer.html.js:1528
    _onStatusChanged @ ti-core-connection-manager.html.js:91
    fireEvent @ ConnectionManager.js:449
    doUpdateStatusBar @ ConnectionManager.js:645
    ConnectionManager.addConsoleMessage @ ConnectionManager.js:1127
    AbstractTargetConnection.addConsoleMessage @ ConnectionManager.js:374
    addConsoleMessage @ ti-core-transport-base-behavior.html.js:289
    addConsoleError @ ti-core-transport-base-behavior.html.js:295
    ConnectionManager.setErrorMessage @ ConnectionManager.js:1162
    setErrorMessage @ ti-service-targetaccess.html.js:1408
    (anonymous) @ ti-service-targetaccess.html.js:766
    _fulfilled @ q.js:794
    (anonymous) @ q.js:823
    Promise.promise.promiseDispatch @ q.js:756
    (anonymous) @ q.js:564
    flush @ q.js:110

  • Hi Neil, 

    The issue most likely has to do with how default target configuration (aka ccxml file) is constructed. GC config panel exposes device and connection setting, which you have correctly picked. Unfortunately this configuration does not work with LaunchPad. You most likely would get the same error in CCS if you imported a "device" example as opposed to launchpad specific example. (The main difference is cJtag setting on XDS110 debug probe). 

    Probably the simplest option is to upload a custom ccxml (from your example project that works in CCS) into your app and use it. 

    The instruction for v2 version of component library are in user guide : 4.2. Target programming — GUI Composer Getting Started

    For v3, assuming you used a code snippet from Connection Manager component help, would be to open .gui (in design mode) and activate Outline view (last button in left navigation panel) and select program model component, this should expose properties where one of them is a custom ccxml. You would then upload ccxml file into root of your project and just provide the name of it in that property. 

    Martin

  • Martin,

    I already followed those instructions and renamed the CCXML file and added it to the project (before posting the log file above).  What is strange is if I hit the flash button at this screen, it works:

    If I go to the console, the following is there:

    Downloading program...
    Downloading program...
    Downloading program into TMS320F280039C ...
    Downloading program into TMS320F280039C ...
    Flash Successful!
    Flash Successful!
    Flash Successful!

    If I go to the next screen and try to hit "connect" I get the following errors:

    Downloading program...
    Downloading program...
    Error configuring Debug Server: error=Failed to connect to TMS320F280039C device: Please unplug your TMS320F280039C, then plug it back in and try again
    Error configuring Debug Server: error=Failed to connect to TMS320F280039C device: Please unplug your TMS320F280039C, then plug it back in and try again

    and sometimes I just get:

    Failed to connect to device TMS320F280039C.

    My eventual goal is to communicate with my custom board but that works the same way so I used the Launchpad and a simple example to make it easier for you to debug/ repeat what is going on.  I have successfully used GUI Composer on an F28379D Launchpad in the past.  I think that there may be an issue with this processor.  Can you get it to work on your end?  I tried both the Launchpad and my custom board both with V2 and V3 and nothing works (except both boards work perfectly if I load the program in CCS and launch GUI Composer within CCS).  I think there is a bug in the standalone version of GUI Composer and the F28003x processor. 

    Regards

  • Hi Neil, 
    I have tried that LP with CCS and since majority of the component that GC uses are common between CCS and GC then that it would work. I'll try out a simple example in GC tomorrow once I have access to the board. 

    Also, when you mentioned that you run it standalone, I just wanted to confirm, do you run the app through a browser OR do you run it locally on your PC when a GC app is combined with GC Runtime. 

    Martin

  • Martin,

    I first tried to run it within the chrome browser by hitting the run button. That fails as described above.  Next, I tried to do the GC app combined with runtime on a windows machine but that failed in the same way.  I tried to do it on the Mac but the link to the GC runtime is broken and never downloads. (Please report this and have it fixed). so I was unable to try it on the Mac. Here is the sample code that I am running.  It's based on one of the basic examples.

    LaunchXL example.zip

    Here is my simple GUI to go with that file:

    LaunchXL_Demo.zip

    This Gui interface is just the dashboard shown above which connects to two variables -- one toggles, the other counts.

  • any word on fixing this?  Unfortunately I have to deliver some code for hardware testing our product soon and running it in CCS is not ideal. 

    thank you for your help!

  • Hi Neil, 

    I tried your program file with a stock 280039C Launchpad. I created a new GC app using online GC Designer (i.e. dev.ti.com/gc) and I used v3 component library. I had no issues connecting to the target without uploading custom ccxml file. I just used regular device/connection settings. 

    The running app picture is shown below. Here is the link to the app I created: Search results for "280029C_lp_test" · Gallery (ti.com) You can run the app on your HW and then you should be able to import it into GC Designer by clicking on GC Icon (bottom left) and examine the app. 

    Martin

  • Martin,

    I tried to run your test GUI on a LaunchXL F280039C and it still has the same error.  I am running on an M1 MacBook Pro.  I tried running it inside of Chrome, standalone, Inside Chrome on Parallels (Running Windows 11), and standalone on Parallels.  Nothing worked.  I am hunting down a standard PC now to eliminate the computer as a problem.

    Is there a problem running it on a Mac running the latest MacOS? I loaded the latest runtimes linked from the gallery view of the file you posted and the GUI from the gallery.

  • I just tried it on a PC running Windows 10 with the same result.  Is it possible that you have something special installed on your machine that is not being installed in the usual process?

  • Hi Neil, 
    There seems to be a problem that I can reproduce on Macs with CCS (Eclipse & Theia) with that board when I import this example : C2000Ware_5_01_00_00\device_support\f28003x\examples\led . I see same error in CCS Theia and GC, which makes sense as they share components. CCS Eclipse (I used most recent 12.7.1) returns a scan chain error. Once I get the board in a bad state, I can still see the issue when trying to use GC app on WIndows. However, if I use CCS 12.7.1 with above example then it works and after GC app will work. 

    I used windows 10 as well. I'll keep in digging, but I wanted to provide you an update. 

    Martin

  •  

    Hi Martin,

    Any progress on this? Is there a workaround that I can do?  My problem is that we are going into production using this chip and I need to give the factory some way of testing the units to make sure they are correct.  I was counting on making a simple gui composer interface that will validate the hardware.  If this is not possible, do you have any other ideas for how I can do this?  My hardware is an F280034 based custom board. I was hoping to use the jtag interface because we do not need to write custom software to make it work. 

    Regards

  • Hi Neil, 

    Just to give you an update. You were correct that CCS (eclipse) 12.x works fine on a mac. CCS Theia and GUI Composer do have an issue that appears to be caused by some dynamic libraries that are getting loaded. The only workaround that I am aware of in the near term is to bypass one of: CLA or JLM core and use that custom target configuration.  I don't have LP to try it out today, I'll give it a try tomorrow. 

    Martin

  • The only workaround that I am aware of in the near term is to bypass one of: CLA or JLM core and use that custom target configuration.

    Martin,

    Turning back to this.  I am not sure what this means.  We currently are not using the CLA core for this test application. 

    Also, As a fallback I am considering running the GUI within Code composer.  My V2 GUI works fine, however, my V3 GUI does not work inside CCS or standalone.

  • You don't have use it in your program. It is present when we try to make connection to the LaunchPad and our software has a bug where the modules loaded for both of these two cores cause a problem. The workaround is to open setup editor and bypass CLA... thus effectively preventing our software from loading conflicting modules for one of the cores. 

    However, even with this workaround, there is an additional issue that I discovered that we need to resolve. I'll post an update as soon as I have some more info. Please note, this issue is not present on windows. 

    Martin

  • Hi Neil, 

    The issue with online GC app not working on a mac is unfortunately still present. It most likely will be resolved in August. However, I was able to get an offline version of the app running on a mac with 2800039C device. 

    Here is the link to the app that I have put together : Search results for "280029C_lp_test" · Gallery (ti.com)  You would need to click on downward pointing arrow and download mac version of the app (links in top portion of the pop up) and run the installer. 

    If you do not have correct GC Runtime then it will ask to download and should run installer automatically. The app should be able to connect to LP, download the program and then connect, The data tab should have a blink counter, graph and led widgets connected and updating. 

    This is app is using v3 version of components library. I am using a custom target configuration file (i.e. ccxml) that has CLA cpu bypassed. 

    You could use this app as a starting point for your own app. Using above link to gallery you could click on GUI Composer icon to import it into GUI Composer design tool and then examine its bindings and configuration. 

    Martin

  • Martin,

    Thank you for the help.  I have some things working and others are not.  Details:

    1. To get anything to run I had to edit your CCXML file to change from Jtag to CJtag (2-wire) for the Launchpad. Once I did this I had the following results:

    1. Mac: The standalone application - Runs! (With caveats -- see below)

    2. Mac: Running the GUI inside of CCS - Runs!

    3. Mac: Running the GUI from Chrome - Runs but I need to power cycle the board every time I do it or I get a "Module Closed" error.

    4. PC (windows 11): The Standalone application -  - Fails! (I get "Error: Failed to connect: IcePick_C_0: Error initializing emulator (Error -260 @ 0x0)

    5. PC (windows 11): Running the GUI inside of CCS -  - Fails! (I get "Error: Failed to connect: IcePick_C_0: Error initializing emulator (Error -260 @ 0x0)

    6. PC (windows 11): Running the GUI from Chrome - Fails! (I get "Error: Failed to connect: IcePick_C_0: Error initializing emulator (Error -260 @ 0x0)

    7. PC (window 8.1) The Standalone application -  - Fails! Does not launch

    8. PC (windows 8.1): Running the GUI inside of CCS - Runs!

    9. PC (windows 8.1): Running the GUI from Chrome - Fails on the 0039 launchpad Error: Failed to Connect. System Already configured.

    On the Mac, When I download the standalone project from your gallery link, I get an installer to run and after I change the .ccxml file, It runs. However, if I download from Chrome using file->export->standalone I get a zip file that needs to be moved to the guicomposer folder.  The problem is the Mac_start app does not run if it is installed this way.  If you double click it you get a security warning and no options.  If I right click it and do open I can override the security warning but it still never runs. If I move some individual files into the directory that was properly installed, the new code runs.  I can also get the new code to run by copying the MAC_Start and Launcher_osx from the installed folder into my new folder replacing the versions that were zipped up. 

    Questions:

    1. How do I install the standalone Mac code without having to move the files around manually?

    2. How can I get the program to run directly from Chrome on a Mac  (so it is easier to debug/improve)?

    3. Once I get this running on my Mac, How can I move it to a PC so it can run there?  I will need this for the factory.

    4. Can you post a GUI Composer project for the PC that does the same thing? (If possible, maybe we can do a 1/2 hour zoom to go through all the issues?)

    Regards

    Neil

  • Hello,

    Please note that the office is closed due to the local holiday. Hence responses will be delayed.

    Thanks

    ki

  • Hi Neil, 

    Thank you for your patience. 

    1. The app that I shared has gone through the process of building an installation package, which is then signed and notarized using TI's Apple developer credentials. This process allows applications to be installed and binaries to execute. I am not sure if there is a better way other than what you are doing... short of setting up your process for signing/notarizing an app. Unfortunately, this is probably not the answer you were looking for. 

    2. There appears to be one or more missing files that is used when running the app through chrome for that device. We are in the process of testing the fix, but I don't know yet when it will be released. 

    3. Most likely the simplest would be: Install windows version of GC RUntime (at this time v12 is latest), export the app as Standalone and then unzip the directory into location of runtime. The default location for the runtime would be something like C:\Users\WindowsUserID\guicomposer\runtime\gcruntime.v12

    See picture below for what this looks like on my windows 10 PC. Blue highlight shows the sample app that I shared with you. 

    Depending on how foolproof you needed to make this or if there are many PCs then it might be worthwhile to put together an installer package for it. 

    4. Windows version is available using the same method as what you used to download mac version... only exception being that you would need to choose windows link. I confirmed today that downloading and installing windows version works without issues. 

    Is it possible that windows does not have that JTAG/ cJtag change (i lost access to actual LaunchPad, thus I used 280039C control card). 

    I can hop on a zoom call if necessary. 

    Martin

  • Martin,

    The GUI downloads the firmware every time it runs.  Is it possible to configure the GUI application to connect to the board without downloading firmware? or only download the firmware if it is not there?

    Regards

  • Hi Neil, 

    Kind of:

    On the program model html tag , see picture below for sequence of steps to get to properties of program model html tag. Box beside step #4 controls whether program is loaded or just symbols, if you check SymbolsOnly the .out file will be used to resolve symbols but it will not be downloaded to the device.

    Unfortunately we do not have any automatic/reliable way of knowing whether correct firmware is present and only then load it. 

  • Martin,

    That did not work for me.  I successfully ran my GUI -- it loaded my firmware file and ran properly.  Next, I flashed the firmware into the hardware board.  I checked off the symbols only and saved the modified standalone GUI program.  I ran the new program and it connects to the board but it does nothing.  Normal operation is the GUI sets some boolean variables to start the process and collects some data that is stored in an array.  Does anything else need to change?

  • Hi Neil, 

    You are correct. Unfortunately we have a bug that seems to be breaking the intended behaviour. I'll file a ticket for this issue. 

    Martin

  • Thank you.  We have the factory waiting for this GUI fix. It is taking too long to flash the board each time it is used.  The GUI is used for testing so every unit manufactured is tested and the wait is slowing our production.  Please see if there is a workaround for us (or an early software release).  

    Regards

  • Martin,

    Any progress here?  Thanks

  • Hi Neil, 

    My apologies for delayed response. I was away for couple of weeks. I have been looking at this and as far I can tell there isn't really a bug in GC. When you select loadSymbols only then GC will loadSymbols (this does not touch the target CPU), then perform connect and run.

    You can simulate this with CCS by 

    • Start a project debug session, load a program verify all is working as expected. Terminate a debug session
    • Now start a project less debug session (open target configuration view) select appropriate CCXML, right click (at least on windows) and choose "Launch Selected Configuration" 
    • You can now choose C28xx_CPU1 in debug view and choose load symbols pointing at the .out file
    • Now click on Connect in debug view to connect to that CPU and run the CPU. (

    The reason why I am describing above is because when I use C28 "led_ex1_blinky" example from the SDK then I do not see quite the same behaviour as other MCUs. If I use CCS (following steps above) then I see that the program does not run, it halts at what looks some cinit function. I have to first click "Restart" in CCS and then run in order for the program to run as expected. 

    If you are seeing something similar in CCS with your program, then that is most likely the reason why GC does not appear to work.... the cpu halts instead of running. Also, other MCUs that have the program in flash memory will automatically start running after power cycle... this does not seem to be the case with board that I am using. 

    Martin

  • Martin,

    I see the same problem. I can connect but it needs a reset in CCS after loading symbols in order to run.  I had a similar problem on a different processor that @ki pointed out:  (https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000605/tms320f280049-connect-only-debug-configuration-does-not-work-when-using-a-flash-program/3724518?tisearch=e2e-sitesearch&keymatch=%2525252520user%252525253A248859#3724518). How can I get the processor to not halt and start running? Would @ki have a solution?

    Regards

  • Hi Neil,

    We are following up with the device experts on this. We will keep you posted of any updates as we receive them.

    Thanks

    ki

  • Hi Ki,

    Thank you for looking into this.  Please let me know when you hear back from them.

    Regards

  • Sorry for the delay. We are still waiting to get concrete details. I gave them another nudge today.

  • Ki,

    No Problem.  Please ping them again when you get a chance.

    Regards,

    Neil

  • Ki,  Any word yet on this?  It would be very helpful if we can resolve it.  

    Regards

  • Martin,  

    We ran into another problem.  VirusTotal (https://www.virustotal.com/) reports that the launcher.exe file generated by TI is malicious.  Can TI fix this so it does not get flagged?  Our manufacturer will not use it in production unless this problem is fixed (I know it is likely a false positive but we are stuck on this)

    Regards 

  • Hi Neil, 
    These types of false positives usually need to be white flagged by tool developer. I'll reach out to virus total to see if they can do this. However, that executable reads a launcher.json file and invokes node with parameters specified. Thus if they are stuck they could easily invoke this tool bypassing the executable and deleting it, thus from command line in apps directory following command could be invoked:

    ..\runtime\TICloudAgentHostApp\node.exe ApplicationServer.js --browser=../runtime/node-webkit/nw.exe

    That is all that launcher.exe performs. 

    Martin