嵌入式小型排程系統

2021-07-24 17:23:47 字數 1193 閱讀 9721

以前在開發專案中,看到很多作業系統,都有自己的排程器,寫起**來比裸機方便多了,但別人的作業系統又比較大型,占用資源比較多,而且也比較複雜。

所以我自己也就寫了乙個小型的排程器,沒有像操作ucos那樣,進行任務的進出棧。我利用系統的定時器10ms喚醒一次,進行排程工作,如果精度要求不高,可以變成100ms喚醒1次,這樣就會大大的降低了mcu功耗。

其實我寫的這個排程器還是挺簡單的,分享出**給大家看看,已經在乙個工控產品上進行了應用!

struct ke_timer usr_timer[usr_timer_max] = };

static unsigned char gtimertick*** = 0;

static unsigned short gusrusingtimercount = 0;

/* 啟動乙個timer

timer_id: timer_id 裡面註冊

delay:多久後執行當前task,如果系統timer設定為10ms,那麼delay=100,就是1s後執行

例子:ke_timer_set(usr_timer0,100);

*/void ke_timer_set(unsigned short const timer_id, unsigned short const delay)

/* 關閉乙個timer

timer_id: timer_id 裡面註冊

例子:ke_timer_clear(usr_timer0);

*/void ke_timer_clear(unsigned short const timer_id)

/* 核心進行timer的排程工作,這個函式需要在main函式裡面的while迴圈排程*/

void ke_schedule(void)

} }for(timer_id=0;timer_id

下面是任務註冊的地方

/*註冊任務函式

*/void usr_test_timer(unsigned short const msgid)

/*註冊 timer 對應的任務

*/const ke_msg_handler usr_timer_state =

, };

/*獲取 系統有多少個任務,用來分配空間

*/unsigned short get_usr_using_timer_count(void)

小型嵌入式實時作業系統核心之 「排程器」

1.排程器介紹 簡單的說,排程器就是使用相關的排程演算法來決定當前需要實行的任務。所有的排程器有乙個共同的特性 排程器可以區分就緒態任務和掛起任務 由於延遲,訊號量等待,郵箱等待,事件組等待等原因使得任務被掛起 排程器可以選擇就緒態中的乙個任務,然後啟用它 通過執行這個任務 當前正在執行的任務是執行...

嵌入式作業系統(2) 排程

何時排程 程序狀態變化的時候 目標 評價排程演算法指標 公平性 執行排程程式的情況 排程中搶占的情況 排程演算法有三類 fcfs 先來先服務 first come,first served spn sjf srt 短程序優先 短作業優先 剩餘時間優先 shortest process next sh...

嵌入式系統

嵌入式開發的相關領域 搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關 領域包括 a 數字影象壓縮技術 這是嵌入式最重要最熱門的應用領域之一,主要是應掌握mpeg 編譯碼演算法和技術,如 pda 高精電視 機頂盒等都涉及mpeg高速解碼問 題。b 通訊協議及程式設計技術 這...