Troubleshooting¶
TI-RTOS Based Example Compilation Fails During XDCtools Pre-Build Step¶
Symptom¶
In IAR EWARM or CCS, the XDCtools pre-build step for examples based on TI-RTOS fails with an error message that refers to the first part of a directory path containing spaces.
Cause¶
This happens if creation of 8.3 filename equivalents in Windows has been turned off ( NtfsDisable8dot3NameCreation
). XDCtools relies on these short names to support directories with spaces.
Workaround¶
In the Sensor Controller Studio Example Configuration dialog, output the example to a directory path that does not contain spaces. Then re-open the IAR EWARM or CCS project from that location.
Note that this does not fix the underlying problem.
TI-RTOS Based Example Compilation Fails When Using Overrides in the Example Configuration¶
Symptom¶
In IAR EWARM or CCS, the XDCtools pre-build step for examples based on TI-RTOS fails with error message “xdc.services.global.XDCException: xdc.MODULE_NOT_FOUND: xdc.module: no module named ‘Config’ in the package ti.drivers” or similar.
Cause¶
This happens if there are significant structural differences between the selected SDK release and the TI-RTOS version specified through overrides.
Solution¶
Close the IAR EWARM or CCS project.
In the Sensor Controller Studio Example Configuration dialog, select the best matching SDK release . See the Compatibility section in the Revision History for details.
Output the example and re-open the IAR EWARM or CCS project.
If the above does not help, install an SDK release that is listed as supported by the example configuration.
TI-RTOS Based CC13xx/CC26xx Application Stops Working When Using the SCIF Driver¶
Symptom¶
A TI-RTOS based application behaves correctly when it contains no SCIF (Sensor Controller Interface) driver, but stops working when a SCIF driver is used.
Cause¶
This will happen if the operating system selection in the Sensor Controller project (that produces the SCIF driver) is wrong. The application malfunctions because that SCIF driver’s OSAL (operating system abstraction layer) performs system operations that are in conflict with TI-RTOS.
Solution¶
Re-open the Sensor Controller project in Sensor Controller Studio, and select TI-RTOS as operating system in the Project Panel . Then re-generate the SCIF driver in the Code Generator Panel .
Note also that the TI-RTOS OSAL requires extra initialization. See the documentation of the generated driver for details (top of scif_osal_tirtos.h
).
CC13xx/CC26xx Application with Multi-Threaded Sensor Controller Task Control Malfunctions¶
Symptom¶
An application that performs Sensor Controller task control operations ( scifStartTasksNbl()
, scifStopTasksNbl()
, scifExecuteTasksOnceNbl()
and scifWaitOnNbl()
) from multiple threads of execution does not behave correctly.
Cause¶
One logical sequence of task control operations interrupts another.
Solution¶
Follow these guidelines when controlling Sensor Controller tasks from multiple threads of execution:
- Always check the return value from
scifStartTasksNbl()
,scifStopTasksNbl()
,scifExecuteTasksOnceNbl()
andscifWaitOnNbl()
. - Do one of the following if
scifWaitOnNbl()
is called with non-zero timeout from multiple threads of execution:- Call
scifWaitOnNbl()
only after a successful call toscifStartTasksNbl()
,scifStopTasksNbl()
orscifExecuteTasksOnceNbl()
, in the same thread of execution. - Use a semaphore or similar mechanism to ensure that only one thread of execution can perform task control operations at any time.
- Call
- If possible, avoid controlling a single Sensor Controller task from multiple threads of execution. Otherwise, use a semaphore or similar mechanism to ensure that one sequence of task control operations cannot interrupt another.
SCIF Driver Compilation Fails with Error “Declaration May Not Appear After Executable Statement in Block” or Similar¶
Symptom¶
When compiling the generated SCIF driver with for example IAR EWARM, compilation fails with multiple error messages including “Declaration may not appear after executable statement in block” or similar for scif_framework.c
.
Cause¶
The SCIF driver and also Driverlib and TI-RTOS must be compiled with C99 mode enabled.
Solution¶
Enable C99 mode in the compiler toolchain.
This is specified:
- For IDEs, in the project options’ settings for the C compiler
- For command line, as a switch when calling the C compiler for each source file
XDS200 JTAG Probe Is Not Detected¶
Symptom¶
After upgrading to Sensor Controller Studio 1.3.0 (or later), the XDS200 JTAG probe is no longer detected when starting a task testing session.
Cause¶
The XDS200 firmware might be outdated.
Sensor Controller Studio 1.2.x uses XDS Emulation Software Package version 6.0.83.1 . Sensor Controller Studio 1.3.0 uses XDS Emulation Software Package version 6.0.228.0 . The XDS200 firmware must be upgraded to be compatible with version 6.0.228.0 .
Solution¶
Follow these steps to update the XDS200 firmware:
- Make sure only that only the failing XDS200 JTAG probe is connected to the computer.
- Open a Windows Command Prompt in the drivers\common\uscif\xds2xx installation subdirectory (typically C:\Program Files (x86)\Texas Instruments\Sensor Controller Studio\drivers\common\uscif\xds2xx ).
- Run the following command:
update_xds2xx.bat xds200
. - After completion, disconnect and reconnect the XDS200 JTAG probe.
For more information about the XDS200 firmware update tool, see ReadMe.txt in the drivers\common\uscif\xds2xx installation subdirectory.
Examples with Operating System “None” Generate Linker Error in IAR EWARM 8.42.1¶
Symptom¶
IAR EWARM 8.42.1 generates linker error ” Fatal Error[Li014]: error when reading “cpu.o(driverlib.lib)”: More than one .iar.noinitinfo sections ” or similar, when compiling a Sensor Controller Studio example with operating system “None”.
Cause¶
The error is caused by the iobjmanip tool in IAR EWARM 8.42.1.
Solution¶
Use a different version of IAR EWARM, for example 8.40.1. The error will be fixed in a later version of IAR EWARM.
TI PIN Driver Cannot Operate I/O Pins Borrowed from the SCIF Driver¶
Symptom¶
When the System CPU application borrows I/O pins from the Sensor Controller for use with the TI PIN driver (supplied with TI-RTOS/SimpleLink SDKs), this does not work.
Cause¶
The TI PIN driver assumes that unused I/O pins are mapped to the GPIO module. That is not the case for I/O pins used by the Sensor Controller:
- The
scifInit()
function maps all I/O pins used by the Sensor Controller to the AUX I/O controller. - The
scifUninit()
function returns all I/O pins used by the Sensor Controller to the GPIO module.
Solution¶
Add the following code to the System CPU application, after the I/O pin(s) have been opened with the TI PIN driver:
// For each affected I/O pin:
PINCC26XX_setMux(pinHandle, pin, PINCC26XX_MUX_GPIO);