微型嵌入式實時操作系統(tǒng)SmallRTOS是一個源代碼開放的、易于移植的、面向深度嵌入式應用的微內核實時操作系統(tǒng),主要應用領域為工業(yè)控制,智能傳感器開發(fā),智能終端,物聯(lián)網等。任何人在遵循SmallRTOS許可協(xié)議的前提下均可免費使用該嵌入式實時操作系統(tǒng)。最新版本源代碼及示例工程的發(fā)布網站為: //www.smallrtos.org
下載到SmallRTOS的源代碼壓縮包后,進行解壓,可以看到SmallRTOS的目錄結構如下:
Kernel: 存放SmallRTOS的內核文件OS及和CPU相關的移植文件;
Demo: 存放SmallRTOS提供的示例文件;
Doc: 存放SmallRTOS相關說明/教程文檔;
License:存放SmallRTOS使用許可;
微型嵌入式實時操作系統(tǒng)SmallRTOS在設計時,其文件命名、函數(shù)名及變量命名由專用的前綴進行區(qū)分:前綴為OS,表示為SmallRTOS的內核,這些是與平臺無關的內核部分,在進行跨平臺移植時,無需更改;前綴為Fit,表示為硬件(芯片類型等)相關的部分,在進行移植時,這一部分的文件、函數(shù)及變量需要根據(jù)硬件平臺(芯片類型等)進行適當?shù)恼{整;
微型嵌入式實時操作系統(tǒng)SmallRTOS是多任務搶占式操作系統(tǒng),高優(yōu)先級任務可以搶先執(zhí)行,體現(xiàn)了操作系統(tǒng)的實時性。在SmallRTOS系統(tǒng)中,優(yōu)先級0為最低優(yōu)先級,該優(yōu)先級為SmallRTOS系統(tǒng)的保留優(yōu)先級,作為空閑任務OSIdleTask的專用優(yōu)先級,用戶創(chuàng)建的任務無法使用。除此之外的優(yōu)先級,用戶可以根據(jù)任務的重要程度自行分配使用。優(yōu)先級高的任務會搶先執(zhí)行。
為了突顯嵌入式操作系統(tǒng)配置的靈活性,在SmallRTOS系統(tǒng)設計之初就進行了全面的考量,部分參數(shù)采用了宏定義的方式進行配置。每個任務均有自己的名稱及優(yōu)先級,任務名稱長度最大為OSNAME_MAX_LEN, 該變量是一個宏定義,超出該最大長度的名稱會自動舍棄,默認為10個字符。任務優(yōu)先級的定義為OSTASK_MAX_PRIORITY, 這是一個非常重要的參數(shù),系統(tǒng)默認值為10。
Ticks經常被稱為時鐘滴答,是SmallRTOS系統(tǒng)中最小的時間單位,這個參數(shù)可以根據(jù)硬件平臺的性能進行設置。在SmallRTOS系統(tǒng)中,該參數(shù)采用宏定義configTICK_RATE_HZ進行配置。在SmallRTOS提供的大部分示例工程中,均配置的為1000Hz,即每個時鐘滴答間隔是1毫秒,該參數(shù)會影響SmallRTOS系統(tǒng)對任務的控制精度。系統(tǒng)調度器啟動后,會按照任務的優(yōu)先級進行執(zhí)行,直至該任務讓出執(zhí)行權或者被更高級的任務搶斷。如果沒有符合條件的任務需要執(zhí)行,則運行系統(tǒng)中預留的OSIdleTask(空閑任務)。
在SmallRTOS系統(tǒng)中,除了相關參數(shù)采用宏定義進行配置之外,功能模塊也采用宏定義進行配置。其中宏定義OS_SEMAPHORE_ON表示是否啟用信號量(Semaphore,又稱作旗語)功能模塊,若定義為1,則表示啟用信號量(Semaphore,又稱作旗語)功能模塊,若定義為0,則該功能模塊不被啟用;宏定義OS_MSGQ_ON表示是否啟用消息隊列,用法同OS_SEMAPHORE_ON;宏定義OS_MUTEX_ON表示是否啟用互斥信號量,用法同OS_SEMAPHORE_ON;
下面是微型嵌入式實時操作系統(tǒng)SmallRTOS中經常用到的接口函數(shù),供大家使用時參考;
一、系統(tǒng)中任務相關的API函數(shù)
OSTaskHandle_t OSTaskCreate(OSTaskFunction_t pxTaskFunction,
void* pvParameter,
const uOS16_t usStackDepth,
uOSBase_t uxPriority,
sOS8_t* pcTaskName);
OSTaskCreate為微型嵌入式實時操作系統(tǒng)SmallRTOS的任務創(chuàng)建函數(shù),其中參數(shù)OSTaskFunction_t pxTaskFunction為任務函數(shù),該任務函數(shù)類型定義為void TaskFunction( void *pParameters );任務函數(shù)中的參數(shù)void *pParameters 亦即OSTaskCreate的第二個參數(shù);第三個參數(shù)為任務的?臻gusStackDepth,?臻g需要根據(jù)任務占用的空間多少進行調整;第四個參數(shù)為任務的優(yōu)先級,除最低優(yōu)先級0為系統(tǒng)保留外,均可使用。第五個參數(shù)為任務名字,任務名字也就是任務的標簽,主要方便在調試時區(qū)分不同的任務。
函數(shù)OSTaskCreate的返回值為OSTaskHandle_t類型的任務句柄,該句柄可以被其它系統(tǒng)函數(shù)調用,以設置或控制任務的狀態(tài);
void OSTaskSleep(uOS32_t uxWatiTicks);
OSTaskSleep為微型嵌入式實時操作系統(tǒng)SmallRTOS系統(tǒng)中任務延遲執(zhí)行設置函數(shù),通過此函數(shù),可以把當前任務休眠若干毫秒的時間。參數(shù)uOS32_t uxWatiTicks代表休眠的時間長短,單位為Ticks,用戶可以通過OSTICKS_PER_MS把毫秒轉換為Ticks計數(shù);
void OSTaskYield()
OSTaskYield函數(shù)為SmallRTOS中的任務控制類函數(shù),在任務中調用,用于讓出當前任務的執(zhí)行權,并切換到下一個處于 eTaskStateReady狀態(tài)的任務;函數(shù)OSTaskYield并不改變任務的狀態(tài),只是把當前正在執(zhí)行的任務排列到狀態(tài)為 eTaskStateReady的任務隊列的隊尾,若只有當前任務處于eTaskStateReady狀態(tài),則仍然執(zhí)行當前任務;
uOS16_t OSStart( void )
函數(shù)OSStart為OSStartScheduler()函數(shù)的宏定義,OSStartScheduler()函數(shù)是SmallRTOS中的任務調度啟動函數(shù);在該函數(shù)中,系統(tǒng)會設置空閑任務OSIdleTask及時鐘中斷;OSIdleTask任務為系統(tǒng)空閑任務,若系統(tǒng)當前沒有需要執(zhí)行的任務,則會調用該空閑任務,空閑任務可以用于統(tǒng)計當前系統(tǒng)的利用率,及釋放處于待刪除狀態(tài)任務的資源;時鐘中斷則為系統(tǒng)的ticks配置,整個系統(tǒng)的運行即依賴此ticks驅動運行;
2015職稱計算機考試書PowerPoint2007中 .. 定價:¥45 優(yōu)惠價:¥42 更多書籍 | |
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |