현재 DAC5000 에 있는 여러개의 Task 가 존재한다. 각각의 Task 들은 서로 Message 를 주고 받고, 큐를 만들어서 통신을 한다.
각각이 Taks 는 아래와 같이 생성하게 된다.
task_create((void (*)(void *))keyMicom, NULL, 8192, 7, "tKEYm", 0);
taks_create 라는 시스템 콜을 이용해서 Task 를 만드는 데, 이에 대한 설명을 하자면, 아래와 같다.
이름 | 설명 |
keyMicom | 실행할 함수 |
NULL | 넘겨주는 파라미터 |
8192 | 스택 사이즈 |
7 | 우선순위 |
“tKEYm” | 이름 |
0 | flags |
위에서 짚고 넘어가야 하는 것이 바로 우선순위이다. 각각의 태스크를 생성할 때마다, 우선순위를 정해주어야 하는 데, 숫자가 높을 수록 우선순위가 높다. 전체적인 프로그램이 수행되는 데 있어, 여러가지 태스크의 우선순위가 결정되는 데, 이는 아주 중요하다,
예를 들어, UI 의 우선순위가 A/V 보다 높다면, UI 를 실행하는 동안에는 A/V 가 끊기거나, 멈출 수 있기 때문이다. 때문에 어떤 태스크가 중요한지 또는 중요하지 않은지를 결정해서 우선순위를 부여해야 한다.
DAC5000 사용중인 Task
이름 | 우선순위 |
channelChangeAV | 10 |
channelScan | 12 |
timerTask | 8 |
keyMicom | 7 |
keyTask | 7 |
PsipOperation | 14 |
SignalWait | 13 |