Project/simpleOS2012. 1. 15. 20:46
simpleOS 두 번째 동영상

Semaphore & Preemptive Scheduler 구현 

Task 3 개
Task 1(High Priority)
- 처음 시작할 때 Delay로 Wait 상태로 들어감
- Delay 후 Task 2가 가지고 있는 Semaphore를 얻어야 LED 1을 점멸

Task 2(Medium Priority)
- Task1이 Delay된 후에야 Scheduler가 Task 2를 선택하여 수행
- Semaphore를 얻은 후 5번 LED 점멸 후 Semaphore를 놓는다.

Task 3(Low Priority)
- Task 1,2와 관계 없이 FND Count
- Task1, Task 3가 모두 Delay로 Wait 상태에 있어야 동작

 

Posted by 머리
Project/simpleOS2012. 1. 12. 02:51
simpleOS For AVR
첫 번째 테스트 동영상.

Task 3개 생성
Task1 : LED1 점멸
Task2 : LED2 점멸
Task3 : FND Count

동영상은 3 개의 Task가 Multi-Tasking으로 동작하고 있는 모습이다.
LED는 선명하게 보이는데 보드를 한번 심하게 떨어뜨려서 그런지 FND 상태가 안좋다. 동영상 후반부에 주변을 좀 어둡게 하여 FND가 동작하는 모습을 확인할 수 있다.

다음 할 일 : Semaphore 구현

Posted by 머리
Project/simpleOS2012. 1. 7. 23:03
3학년 2학기 임베디드 시스템 / 실험 과목을 수강하고 난 후 아쉬운 점이 많아서 방학기간 동안에 임베디드쪽으로 뭔가 더 해볼까 생각했었는데, 마침 전에 사 두었던 ATmega128 Board가 생각나 이걸 가지고 뭔가 해보기로 맘먹었다.

그럼 이제 뭘 하느냐가 남았는데, 단순히 External I/O로 장난치는건 돈도 많이 들고 별로 재미도 없을 것 같아서.. 간단히 RTOS 하나를 만들어 보기로 하였다. RTOS라고 할 것도 없지만.. 목표하는 대략적인 구현 기능은 다음과 같다.

- Preemptive Multi-Task Scheduler (필수)
- Semaphore / Mutex 등 Critical Section Control을 위한 IPC (필수)
- Task Creation 및 Delete / Delay 등을 위한 몇 가지 API Library(필수)
- Message Queue나 Shared Memory 또는 기타 다른 IPC (선택) 
- Event (선택)
- UART (선택) 

처음엔 Timer Interrupt만 할줄 알면 속도가 붙겠지 생각했는데, 생각보다 어렵고 양도 많다... Datasheet도 조만간 여유 되는 대로 제본을 고려해야겠고, uC/OS나 freeRTOS  실제 OS Source Code도 계속 쳐다보고 있다. 특히 임베디드 시스템 시간에 uC/OS 을 배운 것이 큰 도움이 되고 있다. 

아마 수행 기간은 방학을 거의 다 잡아 먹을 듯 하고, 방학 안에 끝낼 수 있을지도 미지수다. 하지만  어차피 선택 부분은 부가적인 기능이기 떄문에 필수라고 적어놓은 것들은 꼭 해내고 싶다.  
Posted by 머리