Thread 데모
MXOS는 멀티스레드를 지원하고 있으며 이 스레드들은 각자 독립적인 실행 흐름을 갖고 있다. 스레드는 생성된 이후 우선순위에 따라 O/S의 스케쥴러에 의해 배정된 시간에 자신의 코드를 실행해 갈 것이며, 생성부터 소멸 전까지 아래 테이블과 같은 상태 중 하나에 있게 된다.
여기서 예제는 스레드에 대한 생성과 소멸에 대한 기본적인 예만 보이고 있어 스레드에 대한 내용을 간파하기는 어려울 것이다. 주어진 예제에서 힌트를 얻고 API 를 참조해 코드를 수정 보면서 스레드에 대한 동작과 메커니즘을 이해해 보도록 한다. 스레드는 RTOS 환경의 프로그래밍에서 핵심 역할을 하는 만큼 처음부터 실마리를 잘 플어 가도록 하자. 처음부터 찐을 빼자~~ |
|
⊕ mxos 시스템이 초기화 되면 기본적으로 main 함수라는 스레드가 생성되고 운행되며 우선권은 7으로 설정되어 있다.
1. thread 데모 구현내용
코드위치 | demos/os/os.c |
변수선언 |
thread1
|
스레드가 생성되고 실행되면 실행되었다는 표시로 thread n enter를 로그로 출력한다. 이후 10회의 while loop를 돌면서 스레드는 매번 1초 동안 정지상태(suspend)로 있게 된다. while 루프(loop)에서 빠져 나오면 스레드는 자신을 소멸키며, 가지고 있던 자원을 깨끗이 시스템에 환원한다. |
}
theread_demo |
10개의 스레드를 생성 시킨 후, 모든 thread를 Sleep 상태로 들어가도록 한다. Sleep 상태로 들어간 스레드는 우선권이 높은 순으로 동작을 하게 될 것이다.
|
static void thread_demo(void)
{
}
main 함수 |
}
2. thread 데모 동작확인
♦ 컴파일하고 어플리케이션을 flash에 다운로드 → mxos make os@emw3080 download jtag=jlink
♦ EMW3080을 Reset 하고 DBG 시리얼포트를 통해 동작을 확인한다.