2009年6月19日 星期五

MicroCOS-II -CH1

Getting Started with uC/OS-II
Introduction:
一個非常小的即時核心。
preemptible的以優先權驅動的排程,優先權是數字越小優先權越高。
架空DOS的interrupt,然後把自己的掛上去,uC/OS-II可直接往下層存取到DOS或硬體。

Example1: Multitasking

程式架構圖




















main
OSInit: 建立ready list、priority table、TCB、Free pools
Install context switch handler: 將OSCtxSw掛到IVT的0x80
OSTaskCreate: 建立TaskStart的TCB並初始化它
OSStart: 執行context-switch到TasStart

TaskStart
prio: 0
Install tickISR: 將OSTickISR掛到0x08上
Create other task: 建立10個Task的TCB,優先權照建立的順序給
Exit?: 判斷有沒有按下ESC離開,離開會longjmp回到DOS
OSTimeDyHMSM: 沒按下ESC就呼叫Dly睡1秒,去讓其他Task執行

Task1~10
每個Task的prio為他的編號
OSSemPend: 取得Semaphore
random: random取得0~9的數字
OSSemPost: 釋放掉Semaphore
OSTimeDly: Dly自己讓別的Task去執行

執行結果:

沒有留言:

張貼留言