small rtos51使用手冊
1.????? Small RTOS(51)文件列表
?
根目錄:
list.txt??????????????????????? :本文件
README.TXT????????????????????? :一些說明
license.txt???????????????????? :許可協(xié)議
manual.txt????????????????????? :用戶手冊
?
.\ex1:
這是第1個例子的目錄
README.TXT????????????????????? :本例子的一些說明
ext1.c????????????????????????? :本例子的程序文件
OS_CFG.H??????????????????????? :本例子的Small RTOS(51)配置文件
config.h??????????????????????? :本例子的配置文件
OS_CPU.H??????????????????????? :本例子的與cpu相關(guān)的配置文件
test.Uv2??????????????????????? :keil c51工程文件
test.plg??? ????????????????????:keil c51工程附屬文件
test.Opt??????????????????????? :keil c51工程附屬文件
?
.\ex2:
這是第2個例子的目錄
README.TXT????????????????????? :本例子的一些說明?????????????
ext2.c????????????????????????? :本例子的程序文件?????????????
OS_CFG.H??????????????????????? :本例子的Small RTOS(51)配置文件
config.h??????????????????????? :本例子的配置文件?????????????
OS_CPU.H??????????????????????? :本例子的與cpu相關(guān)的配置文件
display.c?????????????????????? :對仿真dll的一些操作函數(shù)?????????
display.h?????????????????????? :display.c的頭文件?????????
test.Uv2????????????? ??????????:keil c51工程文件?????????????
test.Opt??????????????????????? :keil c51工程附屬文件
test.plg??????????????????????? :keil c51工程附屬文件
?
.\ex3:
這是第3個例子的目錄
README.TXT????????????????????? :本例子的一些說明???????????????
ext3.c????????????????????????? :本例子的程序文件??? ????????????
OS_CFG.H??????????????????????? :本例子的Small RTOS(51)配置文件?
config.h??????????????????????? :本例子的配置文件???????????????
OS_CPU.H??????????????????????? :本例子的與cpu相關(guān)的配置文件
display.c?????????????????????? :對仿真dll的一些操作函數(shù)????????
display.h???????????? ??????????:display.c的頭文件??????????????
test.Uv2??????????????????????? :keil c51工程文件???????????????
test.Opt??????????????????????? :keil c51工程附屬文件???????????
test.plg??????????????????????? :keil c51工程附屬文件???????????
?
.\ex4:
這是第4個例子的目錄
ext4.c???????? ?????????????????:本例子的一些說明???????????????
README.TXT????????????????????? :本例子的程序文件???????????????
OS_CFG.H??????????????????????? :本例子的Small RTOS(51)配置文件?
config.h??????????????????????? :本例子的配置文件???????????????
OS_CPU.H??????????????????????? :本例子的與cpu相關(guān)的配置文件
display.c?????????????????????? :對仿真dll的一些操作函數(shù)????????
display.h?????????????????????? :display.c的頭文件??????????????
test.Uv2??????????????????????? :keil c51工程文件???????????????
test.Opt??????????????????????? :keil c51工程附屬文件???????????
test.plg??????????????????????? :keil c51工程附屬文件???????????
?
.\keilc51
這是與CPU(8051系列)相關(guān)的移植代碼
OS_CPU_C.C????????????????????? :移植代碼C語言部分
OS_CPU_A.ASM??????????????????? :8任務(wù)版的移植代碼匯編語言部分
OS_CPU_A_task16.ASM???????????? :16任務(wù)版的移植代碼匯編語言部分
?
.\os
這是Small RTOS(51)與CPU無關(guān)部分
OS_CORE.C?????????????????????? :Small RTOS(51)核心
OS.H??????????????????????????? :Small RTOS(51)頭文件
?
?
1.????? 概述:
??? Small RTOS是一個源代碼公開的多任務(wù)實時操作系統(tǒng),Small RTOS 51是其在8051系列處理器上的移植(使用keil c51)。Small RTOS可以簡化那些復(fù)雜而且時間要求嚴(yán)格的工程的軟件設(shè)計工作.本手冊主要講述Small RTOS的使用,本說明了在8051系列處理器上使用應(yīng)該注意的問題。同時講述了Small RTOS的移植。
??? 本手冊僅針對Small RTOS(51) 1.00版本
?
2.?????? Small RTOS的特點:
(1)公開源代碼
??? 只要遵循許可協(xié)議,任何人可以免費獲得源代碼。
(2)可移植
??? 作者盡量使用把與CPU相關(guān)部分壓縮到最小,與CPU無關(guān)部分用ansi c編寫。
(3)可固化
??? Small RTOS為嵌入系統(tǒng)設(shè)計,如果您有固化手段,它可以嵌入到您的產(chǎn)
??? 品中成為產(chǎn)品的一部分。
(4)占先式
??? Small RTOS可以管理16個任務(wù),每個任務(wù)優(yōu)先級不同。
(5)中斷管理
??? 中斷可以使正在執(zhí)行的任務(wù)掛起。如果優(yōu)先級更高的任務(wù)被中斷喚醒,則高優(yōu)先級的任務(wù)在中斷嵌套全部退出后立即執(zhí)行。中斷嵌套層數(shù)可達(dá)255層。如果需要,可以禁止中斷嵌套管理。
(6)RAM需求小
??? Small RTOS為小RAM系統(tǒng)設(shè)計,應(yīng)而RAM需求小,相應(yīng)的,系統(tǒng)服務(wù)也少。
?
?
3.????? Small RTOS的使用:
(1)系統(tǒng)配置:
??? os_cfg.h中定義了一些常量可以配置系統(tǒng),具體定義如下:
?
#define OS_MAX_TASKS? ????? 1 ? /* 最大任務(wù)數(shù)1~16?? ??????????????????????????????????????? */
#define OS_TICKS_PER_SEC??? 10? /* 設(shè)置1秒系統(tǒng)系統(tǒng)節(jié)拍數(shù)? ???????????????????????????????? */
#define USER_TICK_TIMER_EN 0?? /* 禁止(0)或允許(1)系統(tǒng)定時中斷調(diào)用用戶函數(shù)UserTickTimer() */
#define EN_OS_INT_ENTER ??? 1?? /* 禁止(0)或允許(1)中斷嵌套管理??? ???????????????????????? */
#define EN_TIMER_SHARING? ? 1 ??/* 禁止(0)或允許(1)定時器中斷調(diào)用OSTimeTick()?? ??????????? */
#define TICK_TIMER_SHARING? 1?? /* 定義進(jìn)入多少次硬件中斷為一次系統(tǒng)定時器軟中斷?????? ????? */
//
#if EN_TIMER_SHARING == 0
#define TIME_ISR_TASK_ID?? SHOW_TASK_ID? /* 定義系統(tǒng)定時器軟中斷觸發(fā)的任務(wù)ID???????????? */
#endif
?
? ? Os_cpu.h中定義了一些常量可以配置一些與cpu相關(guān)的部分。
針對Small RTOS 51,具體定義如下:
#define EN_SP2??? ????? 0?????????? /* 禁止(0)或允許(1)非屏蔽中斷????? */
#define IDATA_RAM_SIZE 0x100?????? /* idata大小?????????????????????? */
#define Sp2Space??? ??? 4????????? /* 高級中斷(軟非屏蔽中斷)堆棧大小 EN_SP2為0時無效??? */
#define OS_TIME_ISR? ?? 1????????? /* 系統(tǒng)定時器使用的中斷????????????????? ??????????????? */
? //
SET_EA? MACRO?????????????? ;打開所有允許中斷
SETB?? EA
ENDM
?
?
(2)運(yùn)行Small RTOS
??? 在main函數(shù)中調(diào)用OSStart()后系統(tǒng)開始運(yùn)行,OSStart()結(jié)束后運(yùn)行優(yōu)先級為0的任務(wù)。
??? 注意:在調(diào)用OSStart()前不要使能總中斷標(biāo)志,系統(tǒng)會自動使能這個標(biāo)志,對于8051系列,這個標(biāo)志為EA。
(3)建立任務(wù):
??? Small RTOS使用靜態(tài)方法建立任務(wù),在config.h中有這樣一段代碼:
?
?? #ifdef IN_OS_CPU_C
?? extern void TaskA(void);
?? extern void TaskB(void);
?? extern void TaskC(void);
?
?? void? (* const TaskFuction[OS_MAX_TASKS])(void)={TaskA,TaskB,TaskC};
?? //函數(shù)數(shù)組TaskFuction[]保存了各個任務(wù)初始PC指針,其按任務(wù)ID(既優(yōu)先級次序)順序保存
?? #endif
??
用戶只要定義好OS_MAX_TASKS,TaskFuction[],任務(wù)將自動運(yùn)行。其中TaskA等為任務(wù)對應(yīng)函數(shù)。
注意:ID為0的任務(wù)為最高優(yōu)先級任務(wù),系統(tǒng)運(yùn)行后首先執(zhí)行它。
(4)刪除任務(wù)
??? Small RTOS 1.00版不允許刪除任務(wù),因此,每個任務(wù)必須為無限循環(huán)結(jié)構(gòu)。
(5)任務(wù)睡眠
??? 任務(wù)可以調(diào)用OSWait()使自己睡眠,其原型如下:
???
??? unsigned char OSWait (unsigned char typ, unsigned char ticks);
?
??? 功能描述: 系統(tǒng)等待函數(shù),任務(wù)調(diào)用此函數(shù)可以等待一定時間或信號
??? 輸入: typ: 等待事件類型,目前可以取以下值,或是其中任意個值的按位或
????????????? K_SIG: 等待信號
????????????? K_TM 等待超時???
???????? ticks : 等待超時時的系統(tǒng)節(jié)拍數(shù)
??? 輸出 : NOT_OK : 參數(shù)錯誤
????????? TMO_EVENT : 超時到
????????? SIG_EVENT : 有信號
??? 如果任務(wù)等待信號,另一個任務(wù)可以調(diào)用OSSendSignal()使其進(jìn)入就
??? 緒狀態(tài),其原型如下:
??
??? void OSSendSignal (unsigned char TaskId);
?
??? 功能描述: 中斷中給指定任務(wù)發(fā)送信號,既使指定任務(wù)就緒
??? 輸 入: TaskId : 任務(wù)ID
??? 輸 出: 無
??? 中斷調(diào)用OSIntSendSignal()也可以喚醒睡眠任務(wù),其原型如下:
??
??? void OSIntSendSignal (unsigned char TaskId);
?
??? 功能描述: 任務(wù)中給指定任務(wù)發(fā)送信號,既使指定任務(wù)就緒
??? 輸 入: TaskId : 任務(wù)ID
??? 輸 出: 無
(5)優(yōu)先級最低的任務(wù)
??? 優(yōu)先級最低的任務(wù)必須一直處于就緒狀態(tài),不允許調(diào)用OSWait;
(6)Small RTOS 51 任務(wù)特殊處由于
Small RTOS51 使用許可協(xié)議
復(fù)制、發(fā)布和修改的條款和條件:
(1)任何人可以免費獲取Small RTOS51 源代碼用于非商業(yè)目的而無需作者同意。一
旦您得到這些源代碼,表示您接受本協(xié)議。如果您不同意本協(xié)議,請銷毀它,或是將其退回
原購買處。
(2)任何人可以分發(fā)Small RTOS51 源代碼,條件是要完整分發(fā),不能缺少任何一個
文件,目錄結(jié)構(gòu)也不得改變,也不能修改它的任何部分,
(3)如果要將Small RTOS51 用于您的項目中,而您的項目有商業(yè)目的,您也無需支
付任何費用,但您必須將項目的簡要介紹、技術(shù)特點、應(yīng)用范圍、Small RTOS51 的使用情
況等說明文字交給作者,聯(lián)系方法請閱讀readme.txt 文件。
(4)法律與本許可協(xié)議沖突的地區(qū)暫時不允許使用本產(chǎn)品。如果您確實需要,可以與作者
聯(lián)系。
沒有擔(dān)保
由于Small RTOS51 只是最終產(chǎn)品的程序的一部分,作者不提供任何類型的擔(dān)保。不
論是明確的,還是隱含的。包括但不限于合適特定用途的保證。全部的風(fēng)險,由使用者來承
擔(dān)。如果程序出現(xiàn)缺陷,使用者承擔(dān)所有必要的服務(wù)、修改和改正的費用。
評論
查看更多