<< Chapter < Page | Chapter >> Page > |
DSP/BIOS provides several different managers manage threads of execution. One of them is the Task Manager (TSK). This module explains the basics of TSK objects and use. This module only explains the use of static TSK objects which are set up using the configuration tool.
Tasks are independent threads of code that conceptually run concurrently. The processor time is shared among the tasks. Each task has a priority which is used to determine which task gets processor time.
Each task has its own stack to store local variables, nesting function calls and for saving the task state when it is preempted. The stack size can be set individually for each task.
A task is always in one of four states
Figure 1 shows a state transition diagram for a task. There is only one thread in the TSK_RUNNING state. When a task is in the TSK_RUNNING state all the other tasks in the TSK_READY state are at the same or lower priority. When a task of higher priority enters the TSK_READY state a preemption immediately occurs and the running task enters the TSK_READY state and the higher priority task enters the TSK_RUNNING state. Tasks can become blocked when a resource is unavailable or when some other event that causes blocking occurs. Semaphores are used to synchronize access to resources and can cause a task to block. When the resource becomes available the task enters the TSK_READY state.
To create a TSK object, open the configuration file, right click on
Scheduling->TSK and select
Insert TSK . You can right click on the object and select
Properties to change its properties. Set the TSK priority on the General tab. Click on the Function tab and put the function name (preceded by an underscore) in for the function you want to handle the TSK. Figure 2 shows a view of the configuration file where the TSKs can be seen in their corresponding priority. Notice that the
TSK_idle
is priority 0 and it is reserved. This is the idle task.
When your program runs, the tasks with the same priority will get initialized in the order that they are shown in the configuration tool.
There are many functions in the TSK module. Some of the more commonly used ones are:
TSK_disable
- Disable DSP/BIOS task schedulerTSK_enable
- Enable DSP/BIOS task schedulerTSK_yield
- Yield processor to equal priority taskTSK_sleep
- Delay execution of the current taskAs an example, suppose there are two task at the same priority as shown in the configuration file in Figure 3. To set up the threads of execution, change the Function properties to
_funTSK0
for task TSK0 and
_funTSK
1 for task TSK1 as shown in Figure 4.
Then the
main.c
file will need two functions
funTSK0
and
funTSK1
as shown in the following listing.
#include<std.h>#include<log.h>#include<tsk.h>#include "tskcfg.h"Void main()
{}Void funTSK0()
{LOG_printf(&trace, "TSK0 Start");
TSK_yield();LOG_printf(&trace, "TSK0 Main");
TSK_yield();LOG_printf(&trace, "TSK0 Finish");
}Void funTSK1(){
LOG_printf(&trace, "TSK1 Start");
TSK_yield();LOG_printf(&trace, "TSK1 Main");
TSK_yield();LOG_printf(&trace, "TSK1 Finish");
}
When the program starts, the TSK0 runs first since it is the first on the list under Priority 1. It will print one statement and then yield to another task at the same priority, which will be TSK1. TSK1 will then begin its execution. The result of the whole run is:
TSK0 Start
TSK1 StartTSK0 Main
TSK1 MainTSK0 Finish
TSK1 Finish
Whe debugging a project it is important to see the characteristics of the components in your project. When using DSP/BIOS in CCS it is possible to view the DSP/BIOS objects and their properties using the RTSC Object Viewer (ROV). RTSC is Real Time Software Components which is a standard for developing software modules/libraries.
To view the DSP/BIOS v5.x objects and properties in the debug mode, select Tools->ROV . This will bring up a window that looks like the following figure.
This figure shows the TSK module and the two tasks in the project. Notice the different properties that can be seen for each task.
Notification Switch
Would you like to follow the 'Ti dsp/bios lab' conversation and receive update notifications?