728x90
반응형
Idle Task는 최하위 우선순위를 가지며
하는일은 단순히 Idle Task내의 카운트를 세는거 밖에 없다..
확인을 위해 기본적인 사용자 태스크를 3개 만들고
각각의 태스크에 Sleep 카운트를 넣은 결과 1초동안 각각의 태스크는
주어진 일을 수행하였으며 1초후 프로그램종료시 Idle 태스크의 카운터를 출력해본결과
대부분의 시간이 Idle Task에 주어졌음을 알수 있었다.
이제 3개의 태스크중에 우선순위가 높은 2개의 태스크에만 Sleep카운트를 넣고
나머지 1개는 넣지 않았다..
예상은 태스크 1번과 2번은 각각 주어진 일을 시간에 맞게 수행하고 나머지 모든 시간은
태스크 3번에 할당되고 Idle 태스크는 우선순위가 가장 낮기 때문에 수행이 되지 않는 거였다.
하지만 예상은 이상하게 Idle 태스크의 카운터가 올라가 있는것이 아닌가?(-ㅁ-;;)
혹시나 초기 값이 잘못되나 싶어서 Idle 태스크 안에 uart출력을 해보니 번듯히 출력이 되었다...
이 예상값과 왜 다르게 나올까 해서.. 몇십분 해맨결과...
그렇다.. 가장 초기에 진입 태스크를 Idle 태스크로 정해논것이 문제였다....
가장 처음 Idle 태스크에 진입하고 스캐쥴링 되는 동안 아무것도 안할것이라 여겼던 Idle 태스크가
일을 한것이다.
얼른 빨리 초기 태스크 진입에대한 명료한 설계를 해야겠다.
728x90