隨著集成電路、微控制器以及微機電技術(shù)的發(fā)展,多旋翼無人飛行器的控制技術(shù)得到了蓬勃的發(fā)展。隨著大疆、派諾特、3DR等國內(nèi)外一系列無人機公司推出針對普通大眾的消費級無人機產(chǎn)品,無人機作為一個普通消費應用也得到了大眾的認可和接受,越來越多的工程技術(shù)人員將多旋翼無人飛行器作為一個經(jīng)典的控制系統(tǒng)來進行學習和研究。本書主要圍繞多旋翼無人機的飛控系統(tǒng)設計,從嵌入式的基礎知識開始,深入淺出地介紹了無人機的基本知識和硬件構(gòu)成,重點介紹了無人機的飛控系統(tǒng)原理、基礎和開發(fā)流程,針對飛行器系統(tǒng)的狀態(tài)解算介紹了幾種不同的解算方法,并給出相應的實際代碼例程。本書從各方面對無人機系統(tǒng)的設計進行闡述,并提供了前沿的知識和信息,既有初學者希望了解的基礎知識,也有行業(yè)研究者所希望深入了解的算法分析,以及室內(nèi)定位SLAM原理等。
除了正文部分,本書還提供了豐富的附錄,包括四旋翼無人機的組裝、無刷電機與電調(diào)的相關(guān)知識、無人機實驗室的相關(guān)研發(fā)調(diào)試設備,以及業(yè)界流行的開源飛控的相關(guān)知識,甚至包括無人機的相關(guān)應用,讓讀者能夠更全面地熟悉和了解整個無人機行業(yè)的生態(tài)系統(tǒng)。
本書特別適合作為高等院校自動化、計算機、電子工程等相關(guān)專業(yè)“多旋翼無人飛行器設計”課程的教材,也可供從事嵌入式系統(tǒng)開發(fā)與應用的工程技術(shù)人員參考。
前言
萊特兄弟發(fā)明飛機的17年后(即1920年),多旋翼無人飛行器誕生,此后便經(jīng)歷了漫長的沉默期和醞釀期。隨著現(xiàn)代控制理論和技術(shù)的發(fā)展,以及集成電路、嵌入式微處理器和微機電技術(shù)的成功應用,在多旋翼飛行器軟硬件和算法兩方面均發(fā)展成熟的情況下,眾多和無人機產(chǎn)業(yè)相關(guān)的公司如雨后春筍般涌現(xiàn),同時風險投資等各類資本也都紛紛涌入無人機產(chǎn)業(yè)。隨著多旋翼無人飛行器在民用及消費類市場的普及和應用,整個行業(yè)對無人機相關(guān)專業(yè)領(lǐng)域的人才需求也呈爆發(fā)式增長。無人機系統(tǒng)作為一個先進復雜的現(xiàn)代控制系統(tǒng),涵蓋了材料、通信、電子、控制、數(shù)字信號處理和傳感器技術(shù)等各方面的專業(yè)技術(shù)應用,因此也需要各個專業(yè)領(lǐng)域的技術(shù)人才,很多高校也同時開設了相關(guān)專業(yè)。
現(xiàn)在,國內(nèi)外與多旋翼無人飛行器相關(guān)的研究論文尤其是針對飛控系統(tǒng)的論文非常豐富,但是國內(nèi)針對飛控系統(tǒng)的教材和書籍以介紹理論知識居多,偏向應用的資料不夠豐富,而應用級別的教材書籍正是廣大無人飛行器愛好者和基礎研究人員迫切需要的資料。正是在這個背景下,北京航空航天大學的林慶峰老師與武漢飛航科技有限公司共同合作推出了這本開發(fā)指南,希望能夠結(jié)合國內(nèi)外的研究成果和各自的研究技術(shù)及產(chǎn)品,為業(yè)界提供一個基礎學習和入門的資料。
本書為讀者提供了可以從零基礎開始學習的多旋翼無人飛行器的基礎知識,包括無人機所涉及的機架、動力系統(tǒng)、飛控系統(tǒng)、遙控遙測系統(tǒng)、傳感器、衛(wèi)星導航定位系統(tǒng)、光流定位系統(tǒng)、無線圖傳系統(tǒng)和地面測控站等方面的基礎知識,這些內(nèi)容主要在第1章介紹,是針對航模愛好者與初學者的入門參考資料。需要了解飛控系統(tǒng)硬件設計的讀者可以重點閱讀第2章,該章深入淺出地介紹無人機飛控系統(tǒng)的硬件設計,處理器的選型和應用。在此基礎上,讀者可以進一步學習無人機飛控系統(tǒng)軟件開發(fā)的詳細流程與方法,包括嵌入式實時操作系統(tǒng)的相關(guān)知識、飛控系統(tǒng)的各種傳感器的數(shù)據(jù)采集和處理、自動控制的核心(即控制系統(tǒng)的狀態(tài)估計在無人機系統(tǒng)中的應用和開發(fā)),以及PID線性控制規(guī)律的設計核心方案,這些內(nèi)容主要在第6章、第7章和第8章中介紹,這一部分也是本書的重點內(nèi)容。此外,通過本書,讀者還能夠了解到無人機的自主導航的相關(guān)知識,包括室內(nèi)導航和室外導航的一些核心知識,以及避障系統(tǒng)的相關(guān)介紹。本書還介紹了針對無人機地面測控站設計的核心技術(shù)、遙測數(shù)據(jù)鏈路的通信原理設計、飛控參數(shù)存儲加載與更新以及其他一些輔助功能的相關(guān)介紹。此外,本書還對無人機飛控系統(tǒng)的應用調(diào)試與檢測設備進行了詳細的介紹,因此對于希望學習了解無人機飛控軟件算法并且需要進行深入研究的讀者和愛好者,本書都是一種非常有價值的參考書籍。
本書主要由北京航空航天大學林慶峰老師及武漢飛航科技有限公司研發(fā)人員編寫而成,所有作者均有多年從事無人機設計研發(fā)及應用方面的經(jīng)驗。除三位主要作者的工作之外,本書還凝聚了武漢飛航科技有限公司技術(shù)團隊的眾多工程師的辛勤勞動,他們是徐凡、鄭森林、徐仕斌、吳志雄、雷航、王飛、魏德明、畢野、楊金星、奚天麒、張瑋和張偉,在此對他們一一表示感謝。此外,本書還得到了鄭州航空工業(yè)管理學院電子通信工程學院的陳宇老師的支持和指導。本書所介紹和闡述的飛控系統(tǒng)和其他各部分無人機設備及檢測設備均由武漢飛航科技有限公司提供,所介紹的實驗案例均可在該公司的光標系列飛控設備上運行。
由于編者水平所限,并且時間倉促,書中難免存在不妥之處,懇請廣大讀者批評指正。
編者2017年3月
林慶峰 吉林大學交通學院博士畢業(yè),清華大學汽車工程系博士后,密歇根大學訪問學者,現(xiàn)任教于北京航空航天大學交通科學與工程學院。主要研究方向為智能汽車、駕駛輔助系統(tǒng)。出版、參編專著與教材多部。
諶利 北京航空航天大學電子信息工程學院碩士畢業(yè),現(xiàn)任職于武漢飛航科技有限公司副總經(jīng)理,負責領(lǐng)導公司研發(fā)團隊。主要研究方向為嵌入式微處理器,通信與信息系統(tǒng)。出版《深入淺出Coldfire系列 32位嵌入式微處理器》、《ARM 認證工程師應試指南》等專著與教材多部。
奚海蛟 北京航空航天大學電子信息工程學院博士畢業(yè)、博士后,武漢飛航科技有限公司創(chuàng)始人。主要研究方向為飛行器仿真、嵌入式與物聯(lián)網(wǎng)技術(shù)。曾獲首屆中國航空創(chuàng)業(yè)大賽一等獎、中國航空創(chuàng)新創(chuàng)業(yè)大會優(yōu)秀獎等多項獎勵,出版物聯(lián)網(wǎng)、嵌入式技術(shù)等等專著與教材10余部。
第1章多旋翼無人機基礎知識
1.1無人機的介紹
1.2無人機的分類與管理
1.3無人機與航空模型的區(qū)別
1.4多旋翼無人機的發(fā)展歷史
1.5多旋翼無人機的組成
1.5.1機架系統(tǒng)
1.5.2動力系統(tǒng)
1.5.3動力電源與充電系統(tǒng)
1.5.4電子調(diào)速器
1.5.5飛行控制系統(tǒng)
1.5.6遙控器和遙控接收機
1.5.7遙測鏈路數(shù)傳系統(tǒng)
1.5.8光流定位系統(tǒng)
1.5.9全球衛(wèi)星導航系統(tǒng)
1.5.10高度計
1.5.11導航系統(tǒng)
1.5.12無線圖傳系統(tǒng)
1.5.13地面站控制系統(tǒng)
1.5.14任務載荷云臺和攝像頭
1.5.15避障系統(tǒng)
1.5.16虛擬現(xiàn)實和增強現(xiàn)實系統(tǒng)
1.6多旋翼飛行器的結(jié)構(gòu)和飛行原理
1.6.1多旋翼飛行器的機身布局
1.6.2多旋翼飛行器的旋翼結(jié)構(gòu)
1.6.3多旋翼飛行器的飛行原理
1.6.4多旋翼的優(yōu)缺點
1.7開源飛控簡介
第2章飛行控制系統(tǒng)核心硬件
2.1ARMCortexM4架構(gòu)
2.1.1ARM內(nèi)核
2.1.2CortexM4內(nèi)核
2.1.3以ARMCortexM4為核心的微控制器
2.2STM32F4系列微控制器
2.3飛行控制系統(tǒng)硬件架構(gòu)設計與原理
2.3.1遙控接收機接口
2.3.2電調(diào)輸出接口
2.3.3傳感器接口
2.3.4GNSS接口
2.3.5SWD調(diào)試口
2.3.6超聲波接口
2.3.7系統(tǒng)供電
2.3.8遙測數(shù)傳
2.3.9其他功能和擴展接口
2.4“光標”飛控PCB的布局設計
2.5飛控系統(tǒng)硬件設計注意事項
第3章嵌入式實時操作系統(tǒng)和FreeRTOS
3.1實時操作系統(tǒng)簡介
3.1.1實時操作系統(tǒng)的定義
3.1.2實時操作系統(tǒng)的特征
3.2實時操作系統(tǒng)在飛控系統(tǒng)中的重要性
3.3FreeRTOS實時操作系統(tǒng)
3.3.1FreeRTOS簡介
3.3.2FreeRTOS的特點
3.3.3FreeRTOS架構(gòu)概述
3.4調(diào)度策略
3.4.1FreeRTOS支持的調(diào)度方式
3.4.2調(diào)度器簡介
3.4.3搶占式調(diào)度器
3.4.4時間片調(diào)度器
3.5任務及任務優(yōu)先級
3.5.1任務和協(xié)程(Coroutines)
3.5.2任務狀態(tài)
3.5.3任務優(yōu)先級
3.5.4任務優(yōu)先級分配方案
3.6任務間通信——信號量
3.6.1信號量的概念及其作用
3.6.2FreeRTOS任務間計數(shù)信號量的實現(xiàn)
3.6.3FreeRTOS中斷方式計數(shù)信號量的實現(xiàn)
3.6.4計數(shù)信號量API函數(shù)
3.7任務間通信—消息隊列
3.7.1消息隊列的概念及其作用
3.7.2FreeRTOS任務間消息隊列的實現(xiàn)
3.7.3FreeRTOS中斷方式消息隊列的實現(xiàn)
3.7.4消息隊列API函數(shù)
3.8任務間通信——互斥信號量
3.8.1互斥信號量的概念及其作用
3.8.2優(yōu)先級翻轉(zhuǎn)問題
3.8.3FreeRTOS互斥信號量的實現(xiàn)
3.8.4互斥信號量API函數(shù)
3.9飛控系統(tǒng)的任務規(guī)劃與5環(huán)控制
第4章飛行控制系統(tǒng)的定時器
4.1STM32F407的系統(tǒng)時鐘配置
4.1.1STM32F4的系統(tǒng)時鐘樹
4.1.2STM32F4的系統(tǒng)時鐘初始化
4.1.3STM32F4的系統(tǒng)時鐘使能和配置
4.2ST微控制器的定時器模塊
4.2.1高級控制定時器(AdvancedcontrolTimers)
4.2.2通用定時器(GeneralpurposeTimers)
4.2.3基本定時器(BasicTimers)
4.3任務調(diào)度定時器
4.4遙控器PWM編碼和定時器輸入捕獲
4.5電子調(diào)試器的輸出控制PWM和定時器輸出比較模式
第5章飛控系統(tǒng)的傳感器
5.1飛控系統(tǒng)的傳感器
5.2ST微控制器的I2C驅(qū)動
5.2.1I2C簡介
5.2.2I2C驅(qū)動在STM32中的硬件實現(xiàn)
5.2.3I2C驅(qū)動在STM32中的軟件實現(xiàn)
5.3加速度計的原理和測量信息
5.3.1加速度計的原理
5.3.2加速度計的測量信息
5.4加速度計原始數(shù)據(jù)采集、校準和濾波
5.4.1加速度計原始數(shù)據(jù)采集
5.4.2加速度計校準
5.5陀螺儀的原理和測量信息
5.5.1陀螺儀的原理
5.5.2陀螺儀的測量信息
5.6陀螺儀的原始數(shù)據(jù)采集、校準和濾波
5.6.1陀螺儀原始數(shù)據(jù)采集
5.6.2陀螺儀校準
5.6.3加速度計與陀螺儀的濾波
5.7磁力計的工作原理和測量信息
5.7.1磁力計的原理
5.7.2磁力計的測量信息
5.8磁力計的原始數(shù)據(jù)采集、校準和濾波
5.8.1磁力計原始數(shù)據(jù)采集
5.8.2磁力計校準
5.8.3磁力計的濾波
5.9超聲波傳感器簡介
5.9.1超聲波傳感器原理
5.9.2超聲波傳感器簡介
5.10超聲波傳感器的數(shù)據(jù)采集驅(qū)動和濾波
5.10.1超聲波傳感器數(shù)據(jù)采集驅(qū)動
5.10.2超聲波傳感器的濾波
5.11氣壓傳感器簡介
5.12氣壓傳感器的數(shù)據(jù)采集驅(qū)動
5.13激光測距測高傳感器
5.14視覺傳感器
5.14.1光流
5.14.2視覺里程計
第6章狀態(tài)估計
6.1組合導航
6.2飛行器的坐標系
6.3方向余弦矩陣和歐拉角
6.3.1方向余弦矩陣
6.3.2姿態(tài)與歐拉角
6.3.3歐拉角的定軸轉(zhuǎn)動表示矩陣
6.4四元數(shù)
6.4.1四元數(shù)的定義
6.4.2四元數(shù)與旋轉(zhuǎn)的關(guān)系
6.5四元數(shù)的姿態(tài)估計
6.6卡爾曼濾波
6.7擴展卡爾曼濾波
6.8幾種算法的總結(jié)比較
第7章線性控制系統(tǒng)PID控制算法
7.1控制理論與PID線性控制系統(tǒng)原理
7.1.1比例控制
7.1.2積分控制
7.1.3微分控制
7.2飛控算法PID框架設計
7.3飛控算法外環(huán)PID實現(xiàn)
7.4飛控算法內(nèi)環(huán)PID實現(xiàn)
7.5信號濾波
7.5.1移動平滑濾波
7.5.2FIR濾波
7.5.3IIR濾波
7.6PID參數(shù)的調(diào)試
7.6.1飛控的PID參數(shù)
7.6.2調(diào)試步驟
第8章油門和高度控制
8.1油門輸入曲線
8.2油門解鎖功能
8.3油門權(quán)重分配和電調(diào)輸出
8.4高度控制
第9章自主導航系統(tǒng)
9.1自主導航概述
9.2室內(nèi)定位
9.2.1室內(nèi)定位技術(shù)
9.2.2視覺導航
9.2.3SLAM簡介
9.2.4視覺SLAM閉環(huán)檢測與后端優(yōu)化
9.3室外GPS定位和NEMA實現(xiàn)
9.3.1GPS定位系統(tǒng)的基本工作原理
9.3.2單點定位
9.3.3相對定位
9.3.4差分定位
9.3.5GPS標準協(xié)議NEMA
9.4航路規(guī)劃
9.4.1航線規(guī)劃
9.4.2軌跡規(guī)劃
9.5SINS/GPS組合導航的模型和算法
9.5.1SINS和GPS接收機的誤差模型
9.5.2SINS/GPS松組合的狀態(tài)方程和量測方程
9.5.3SINS/GPS緊組合的狀態(tài)方程和量測方程
9.5.4方程離散化和卡爾曼濾波
9.6避障系統(tǒng)
9.6.1避障使用的傳感器
9.6.2避障算法
9.6.3避障過程中存在的問題
第10章遙測數(shù)傳通信鏈路
10.1通用數(shù)傳模塊分類及其性能
10.1.1無人機數(shù)傳模塊簡介
10.1.2調(diào)制方式的劃分
10.1.3傳輸距離及其影響因素
10.2ST微控制器的串口通信和數(shù)傳模塊硬件接口
10.2.1ST微控制器的串口通信
10.2.2數(shù)傳模塊的硬件接口
10.3簡單通信信源編碼協(xié)議及其實現(xiàn)
10.3.1信源編碼
10.3.2串口通信協(xié)議
10.4MAVLink協(xié)議實現(xiàn)
10.4.1MAVLink協(xié)議簡介
10.4.2MAVLink數(shù)據(jù)包結(jié)構(gòu)
10.4.3MAVLink消息幀講解
10.4.4MAVLink消息幀發(fā)送與解析
10.5地面站數(shù)據(jù)接收與數(shù)據(jù)解析
10.5.1PC端地面站數(shù)據(jù)采集與存儲
10.5.2Android地面站數(shù)據(jù)接收
10.5.3Android地面站數(shù)據(jù)存儲與分析
第11章其他輔助功能
11.1參數(shù)存儲、在線更新與加載
11.2調(diào)試LED
11.3失控保護功能
11.4手機WiFi控制
11.5手機藍牙控制
11.6第一人稱視角FPV控制
11.6.1FPV的定義
11.6.2FPV的設備組成
11.6.3FPV眼鏡與VR眼鏡的區(qū)別
11.7無人機應用領(lǐng)域
11.7.1拍照攝影
11.7.2植保無人機
11.7.3電力巡檢
11.7.4環(huán)保領(lǐng)域的應用
第12章基于STM32F4的基礎程序開發(fā)
12.1處理器STM32F4簡介
12.1.1系統(tǒng)總線
12.1.2系統(tǒng)接口
12.2開發(fā)環(huán)境簡介
12.2.1軟件安裝
12.2.2工程創(chuàng)建
12.2.3軟件介紹
12.2.4程序調(diào)試
12.3STM32固件庫
12.3.1固件庫介紹
12.3.2固件庫移植
12.4LED顯示
12.4.1硬件設計
12.4.2軟件設計
12.4.3實驗現(xiàn)象
12.5USART串口的使用
12.5.1硬件設計
12.5.2軟件設計
12.5.3實驗現(xiàn)象
12.6ADC模數(shù)轉(zhuǎn)換器
12.6.1軟件設計
12.6.2實驗現(xiàn)象
12.7定時器中斷
12.7.1定時器中斷的原理
12.7.2軟件設計
12.7.3實驗現(xiàn)象
12.8FreeRTOS實時操作系統(tǒng)簡介
12.8.1FreeRTOS基礎應用
12.8.2FreeRTOS實例
12.8.3實驗現(xiàn)象
12.9FreeRTOS操作EEPROM
12.9.1程序設計
12.9.2實驗現(xiàn)象
12.10FreeRTOS操作MPU6050
12.10.1軟件設計
12.10.2實驗現(xiàn)象
12.11FreeRTOS操作磁力計
12.11.1軟件設計
12.11.2實驗現(xiàn)象
12.12FreeRTOS操作氣壓計
12.12.1軟件設計
12.12.2實驗現(xiàn)象
附錄AF450四旋翼飛行器DIY組裝流程
A.1材料清單
A.2焊接電機
A.3機架的安裝
A.4飛控模塊安裝
A.5電調(diào)行程校準
A.6電調(diào)、遙控接收機、數(shù)傳模塊與飛控的連接
A.7遙控操作說明
A.8圖傳系統(tǒng)連接
附錄B無刷電機與電子調(diào)速器介紹
B.1無刷直流電機
B.2電子調(diào)速器換相的相關(guān)知識
B.3電調(diào)啟動頻率
附錄C無人機實驗室研發(fā)調(diào)試設備
C.1FH550四旋翼無人機研發(fā)系統(tǒng)
C.2應用級無人機系統(tǒng)
C.3高級航拍數(shù)字圖傳系統(tǒng)
C.4便攜式地面測控站系統(tǒng)
C.5高級飛行器3自由度姿態(tài)算法驗證系統(tǒng)
C.6高級飛行器動力系統(tǒng)扭矩測量系統(tǒng)
C.7高級飛行器動力系統(tǒng)拉力測量系統(tǒng)
C.8微機電傳感器測量校準平臺
C.9工業(yè)級數(shù)據(jù)處理中心
附錄D電子羅盤橢球校準算法代碼實例
參考文獻
3.1實時操作系統(tǒng)簡介
3.1.1實時操作系統(tǒng)的定義
實時操作系統(tǒng)(RTOS)是指當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受該事件或數(shù)據(jù)并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應,調(diào)度一切可利用的資源完成實時任務,并控制所有實時任務協(xié)調(diào)一致運行的操作系統(tǒng)。
實時操作系統(tǒng)是保證在一定時間限制內(nèi)完成特定功能的操作系統(tǒng)。實時操作系統(tǒng)有硬實時和軟實時之分,硬實時要求在規(guī)定的時間內(nèi)必須完成操作,這是在操作系統(tǒng)設計時保證的;軟實時則只要按照任務的優(yōu)先級,盡可能快地完成操作即可。我們通常使用的操作系統(tǒng)在經(jīng)過一定改變之后就可以變成實時操作系統(tǒng)。
3.1.2實時操作系統(tǒng)的特征
1.高精度計時
系統(tǒng)計時精度是影響實時性的一個重要因素。在實時應用系統(tǒng)中,經(jīng)常需要精確確定實時地操作某個設備或執(zhí)行某個任務,或精確地計算一個時間函數(shù),這不僅依賴于一些硬件提供的時鐘精度,也依賴于實時操作系統(tǒng)實現(xiàn)的高精度計時功能。
2.多級中斷機制
一個實時應用系統(tǒng)通常需要處理多種外部信息或事件,但處理的緊迫程度有輕重緩急之分,有的必須立即作出反應,有的則可以延后處理,因此需要建立多級中斷嵌套處理機制,以確保對緊迫程度較高的事件及時進行響應和處理。
3.實時調(diào)度機制
實時操作系統(tǒng)不僅要及時響應實時事件中斷,同時也要及時調(diào)度運行實時任務。但是,處理機調(diào)度并不能隨心所欲地進行,因為涉及兩個進程之間的切換,只能在確!鞍踩袚Q”的時間點上進行。實時調(diào)度機制包括兩個方面,一是在調(diào)度策略和算法上保證優(yōu)先調(diào)度實時任務;二是建立更多“安全切換”時間點,保證及時調(diào)度實時任務。
實時操作系統(tǒng)的特點:①異步的事件響應;②切換時間和中斷延遲時間確定;③優(yōu)先級中斷和調(diào)度;④搶占式調(diào)度。
3.2實時操作系統(tǒng)在飛控系統(tǒng)中的重要性
飛行控制系統(tǒng)是無人機的重要組成部分,是飛行控制算法的運行平臺,其性能好壞直接關(guān)系著無人機能否安全可靠地飛行。隨著航空技術(shù)的發(fā)展,無人機飛行控制系統(tǒng)正向著多功能、高精度、小型化和可復用的方向發(fā)展。高精度要求無人機控制系統(tǒng)的精度高,穩(wěn)定性好,能夠適應復雜的外界環(huán)境,因此控制算法比較復雜,計算速度快,精度高;小型化則對控制系統(tǒng)的重量和體積提出了更高的要求,要求控制系統(tǒng)的性能越高越好,體積越小越好。此外,無人機飛行控制系統(tǒng)還要具有實時、可靠、低成本和低功耗的特點。
近年來,實時操作系統(tǒng)在多媒體通信、在線事務處理、生產(chǎn)過程控制和交通控制等各個領(lǐng)域得到了廣泛的應用。并且,實時操作系統(tǒng)將實時多任務機制以功能(函數(shù))調(diào)用的方式提供給用戶,它的系統(tǒng)調(diào)用是標準化、規(guī)格化的,這使得開發(fā)人員不必再考慮多個實時任務的同步問題,從而將更多的精力致力于應用程序的開發(fā)。
3.3FreeRTOS實時操作系統(tǒng)
3.3.1FreeRTOS簡介
FreeRTOS是一款由RealTimeEngineersLtd出品的市場領(lǐng)先的RTOS,如圖31所示,現(xiàn)在已經(jīng)支持35種處理器
圖31FreeRTOSLogo
架構(gòu)。2015年,F(xiàn)reeRTOS的下載量超過12萬次,平均每4.2分鐘就有一次下載,而且商業(yè)使用不需要用戶公開源代碼,也不存在任何版權(quán)問題,開源免費。
FreeRTOS(讀作"freearrtoss")是一個嵌入式系統(tǒng)使用的開源實時操作系統(tǒng)。FreeRTOS設計小巧、簡單和易用,能支持許多不同硬件架構(gòu)以及交叉編譯器。就像所有操作系統(tǒng)一樣,F(xiàn)reeRTOS的主要工作是執(zhí)行任務,大部分FreeRTOS的代碼都涉及優(yōu)先權(quán)、調(diào)度以及執(zhí)行用戶自定義任務;但又與所有其他操作系統(tǒng)不同,F(xiàn)reeRTOS是一款運行在嵌入式系統(tǒng)上的實時操作系統(tǒng)。
3.3.2FreeRTOS的特點
FreeRTOS的主要特點如下:
(1)支持搶占式調(diào)度、合作式調(diào)度和時間片調(diào)度。
(2)SafeRTOS作為FreeRTOS的衍生品大大提高了FreeRTOS在代碼完整性方面的能力。
(3)用于低功耗的Tickless模式。
(4)支持35種系統(tǒng)架構(gòu)。
(5)FreeRTOSMPU支持M3/M4/M7內(nèi)核的MPU(內(nèi)存保護單元)。
(6)設計簡單易用,典型的內(nèi)核使用大小范圍為4~9K。
(7)移植非常簡單,主要用C語言編寫。
(8)同時支持合作式和搶占式任務。
(9)支持消息隊列、二值信號量、計數(shù)信號量、遞歸信號量和互斥信號量,可用于任務與任務間的消息傳遞和同步,以及任務與中斷間的消息傳遞和同步。
(10)支持優(yōu)先級繼承方式的互斥信號量。
(11)擁有高效的軟件定時器。
(12)擁有強大的跟蹤執(zhí)行函數(shù)。
(13)擁有堆棧溢出檢查。
(14)提供豐富的、配置完整的工程例子。
(15)提供論壇技術(shù)支持,有可選的商業(yè)支持和許可版本。
(16)任務的數(shù)量不限。
(17)任務優(yōu)先級數(shù)量不限。
(18)多個任務可以分配相同優(yōu)先級,即支持時間片調(diào)度。
(19)具有免費的開發(fā)工具。
(20)具有免費的嵌入式軟件源碼。
(21)免版權(quán)費。
……