华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
  當前位置:操作系統(tǒng) > Linux > 文章內容
  

Linux教程:微型嵌入式實時操作系統(tǒng)SmallRTOS常用接口函數(shù)

 [ 2016年2月6日 ] 【

微型嵌入式實時操作系統(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驅動運行;

首頁 1 2 3 尾頁
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網添加到收藏夾 | 每次上網自動訪問考試網 | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關于本站  網站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
Copyright © 2007-2013 中華考試網(Examw.com) All Rights Reserved
邳州市| 邹城市| 九龙城区| 余庆县| 时尚| 凌海市| 白山市| 武安市| 九寨沟县| 湘潭市| 敦化市| 沽源县| 望谟县| 龙江县| 息烽县| 古交市| 图们市| 龙口市| 仁怀市| 酒泉市| 游戏| 延庆县| 崇文区| 九台市| 绥化市| 修武县| 济宁市| 鄄城县| 罗平县| 揭东县| 溆浦县| 德清县| 同心县| 东方市| 长丰县| 阿克苏市| 兴仁县| 巨鹿县| 仪征市| 社旗县| 永丰县|