Good day,
I am trying to port TI-RTOS on the MSP430F5438A and I have encountered the following issues.
On the TI-RTOS empty example (which starts an LED toggling task) for the MSP430F5529LP, after changing the target device and compiling the drivers for my specific MCU (as described in this article: processors.wiki.ti.com/.../Creating_TI-RTOS_Projects_for_Other_MSP430_Devices), the project is successfully built and flashed. It is to be noted that the project still links to MSP430F5529LP.lib. Regardless, the GPIO driver works. The System_printf and BIOS_start calls also work. The task is registered, and the loop is executed. However, upon the Task_sleep function call, the task is preempted and never returns to execution. When debugged, the code seems to hang on __interrupt Void ti_sysbios_family_msp430_Hwi54(Void) which contains an infinite while(1) loop. Further testing revealed that if the Task_sleep call is removed, the loop works properly until it is preempted after a period of time. The code hangs on the same interrupt. This test was performed by using both GPIO LED toggle and System_printf calls inside the task loop.
The exact same code (without the GPIO drivers) has also been tested by importing the SYS/BIOS hello example for the MSP430F5438A and the task works properly. It is created and the loop prints a string once a second (using the System_printf and Task_sleep calls).
My guess is that it is a SYS/BIOS scheduling problem.
One other thing that seems dubious to me is the task SYS/BIOS example which uses two tasks (one is called on a timer and increments a counter and the other pends on a semaphore and prints the counter when awakened). The example works, but the task configurations are not present in the main function. Are they placed anywhere else in the project ?
I hope my questions and testing results explanations were clear.
Thank you for your help in advance !