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