在嵌入式領(lǐng)域,嵌入式實(shí)時(shí)操作系統(tǒng)(Embedded Real Time Operation System,RTOS)正得到越來(lái)越廣泛的應(yīng)用。采用RTOS可以更合理、更有效地利用CPU的資源,簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短系統(tǒng)開發(fā)時(shí)間,更好地保證系統(tǒng)的實(shí)時(shí)性和可靠性。
由于RTOS需占用一定的系統(tǒng)資源(尤其是RAM資源),只有C/OSⅡ、embOS、salvo、FreeRTOS等少數(shù)實(shí)時(shí)操作系統(tǒng)能夠在小RAM單片機(jī)上運(yùn)行。相比于C/OSⅡ、embOS等商業(yè)操作系統(tǒng),F(xiàn)reeRTOS操作系統(tǒng)是完全免費(fèi)的,具有源碼公開、可移植、可裁減、調(diào)度策略靈活的特點(diǎn),可以方便地移植到各種單片機(jī)上運(yùn)行。本書所使用的FreeRTOS版本為10.3.0。
作為一個(gè)輕量級(jí)的操作系統(tǒng),F(xiàn)reeRTOS提供的功能包括任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能等,可基本滿足較小系統(tǒng)的需要。FreeRTOS內(nèi)核支持優(yōu)先級(jí)調(diào)度算法,每個(gè)任務(wù)可根據(jù)重要程度的不同被賦予一定的優(yōu)先級(jí),CPU總是讓處于就緒態(tài)的、優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。FreeRTOS內(nèi)核同時(shí)支持輪換調(diào)度算法,系統(tǒng)允許不同的任務(wù)使用相同的優(yōu)先級(jí); 在沒(méi)有更高優(yōu)先級(jí)任務(wù)就緒的情況下,同一優(yōu)先級(jí)的任務(wù)共享CPU的使用時(shí)間。
在嵌入式領(lǐng)域,F(xiàn)reeRTOS是為數(shù)不多的,同時(shí)具有實(shí)時(shí)性、開源性、可靠性、易用性、多平臺(tái)支持等特點(diǎn)的嵌入式操作系統(tǒng)。目前,F(xiàn)reeRTOS已經(jīng)發(fā)展到支持包含x86、Xilinx、Altera等多達(dá)30種硬件平臺(tái),其廣闊的應(yīng)用前景已經(jīng)越來(lái)越受到業(yè)內(nèi)人士的關(guān)注。
本書基于STM32F4開發(fā)板,使用的芯片型號(hào)為STM32F407VGTx。STM32F4系列包含高速嵌入式存儲(chǔ)器和廣泛的增強(qiáng)型I/O和外設(shè),連接到2個(gè)APB總線、3個(gè)AHB總線和1個(gè)32位多AHB總線矩陣; 使用64KB CCM(內(nèi)核耦合存儲(chǔ)器)數(shù)據(jù)RAM、LCD并行接口,MUC接口采用8080/6800模式; 具有正交(增量)編碼器輸入的定時(shí)器; 5V容錯(cuò)I/O; 并行攝像頭接口; 真隨機(jī)數(shù)發(fā)生器; RTC,具有亞秒級(jí)精度,硬件日歷; 96位唯一ID。
本書分10章系統(tǒng)論述FreeRTOS實(shí)時(shí)操作系統(tǒng)開發(fā)。第1~7章講述FreeRTOS基礎(chǔ)開發(fā); 第8~10章側(cè)重于拓展應(yīng)用。其中,第1章介紹FreeRTOS實(shí)時(shí)操作系統(tǒng)、FreeRTOS實(shí)時(shí)操作系統(tǒng)的移植方法以及FreeRTOS的配置文件; 第2章介紹FreeRTOS的任務(wù),包括任務(wù)創(chuàng)建、任務(wù)刪除、任務(wù)掛起、任務(wù)切換、任務(wù)調(diào)度、任務(wù)信息、中斷優(yōu)先級(jí)、任務(wù)優(yōu)先級(jí)以及臨界區(qū); 第3章介紹FreeRTOS時(shí)間管理,包括時(shí)間片輪轉(zhuǎn)以及任務(wù)延時(shí); 第4章介紹FreeRTOS任務(wù)棧,包括內(nèi)存分配失敗回調(diào)函數(shù)、堆棧溢出以及選擇堆棧大。 第5章介紹FreeRTOS內(nèi)存管理,包括內(nèi)存的申請(qǐng)和釋放以及內(nèi)存分配; 第6章介紹FreeRTOS任務(wù)間通信,包括消息隊(duì)列、二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、互斥信號(hào)量、遞歸互斥信號(hào)量、任務(wù)通知以及事件組; 第7章介紹FreeRTOS定時(shí)器與低功耗; 第8章介紹FreeRTOS CLI命令行界面,通過(guò)CLI的移植以及創(chuàng)建命令的方法與實(shí)現(xiàn)展開敘述; 第9章介紹FreeRTOS FAT文件系統(tǒng),通過(guò)對(duì)文件系統(tǒng)的標(biāo)準(zhǔn)文件系統(tǒng)接口的講述可以實(shí)現(xiàn)對(duì)文件的增刪改查功能; 第10章介紹FreeRTOS的網(wǎng)絡(luò)編程,對(duì)TCP/IP、UDP、TCP客戶端以及TCP服務(wù)器展開敘述。
本書適用于Windows 10系統(tǒng); 使用的編譯軟件為MDK 5.18; 固件庫(kù)為STM32F4xx HAL庫(kù); FreeRTOS版本為10.3.0; 書中全部案例均在武漢飛航科技有限公司生產(chǎn)的飛航STM32F407開發(fā)板上測(cè)試通過(guò)。
本書主要由奚海蛟老師及相關(guān)研發(fā)人員編寫,所有作者均有多年嵌入式設(shè)計(jì)研發(fā)及應(yīng)用經(jīng)驗(yàn)。同時(shí),本書凝聚了武漢飛航科技有限公司和北京鴻爐科技有限公司技術(shù)團(tuán)隊(duì)(楊金星、李澤、王飛、石雄偉、朱世杰)的辛勤勞動(dòng),在此對(duì)他們一一表示感謝。
由于編者水平所限,并且時(shí)間倉(cāng)促,書中難免存在不妥之處,懇請(qǐng)廣大讀者批評(píng)指正。
作者提供長(zhǎng)期、有效的答疑服務(wù),期待與讀者交流相關(guān)技術(shù)問(wèn)題、行業(yè)應(yīng)用或合作意向等話題。
互動(dòng)交流
本書可作為本科及高職院校電子信息類專業(yè)的教材,也可作為嵌入式技術(shù)愛好者與工程師的參考資料。
編者2023年3月
奚海蛟 全國(guó)工業(yè)和信息化職業(yè)教育教學(xué)指導(dǎo)委員會(huì)電子信息職業(yè)教育教學(xué)指導(dǎo)分委員會(huì)委員,北京航空航天大學(xué)博士后,長(zhǎng)期從事嵌入式、物聯(lián)網(wǎng)、人工智能、無(wú)人機(jī)等領(lǐng)域的科學(xué)研究、技術(shù)開發(fā)和人才培養(yǎng)工作,主持研發(fā)了航空航天、軌道交通、風(fēng)力發(fā)電、光纖通信等方向的多個(gè)重大項(xiàng)目,為企業(yè)培養(yǎng)、推薦近萬(wàn)名嵌入式技術(shù)人才。被評(píng)為武漢3551人才引進(jìn)計(jì)劃第八批重點(diǎn)人才,擁有近20項(xiàng)各類專利,出版10余部圖書。
第1章FreeRTOS入門
1.1FreeRTOS簡(jiǎn)介
1.1.1實(shí)時(shí)多任務(wù)操作系統(tǒng)
1.1.2FreeRTOS
1.2FreeRTOS移植
1.2.1開發(fā)原理
1.2.2開發(fā)步驟
1.3FreeRTOS配置文件
第2章FreeRTOS任務(wù)
2.1任務(wù)創(chuàng)建
2.1.1開發(fā)原理
2.1.2開發(fā)步驟
2.1.3運(yùn)行結(jié)果
2.2任務(wù)刪除
2.2.1開發(fā)原理
2.2.2開發(fā)步驟
2.2.3運(yùn)行結(jié)果
2.3任務(wù)掛起
2.3.1開發(fā)原理
2.3.2開發(fā)步驟
2.3.3運(yùn)行結(jié)果
2.4任務(wù)切換
2.4.1開發(fā)原理
2.4.2開發(fā)步驟
2.4.3運(yùn)行結(jié)果
2.5任務(wù)調(diào)度
2.6任務(wù)信息
2.6.1開發(fā)原理
2.6.2開發(fā)步驟
2.6.3運(yùn)行結(jié)果
2.7中斷優(yōu)先級(jí)與任務(wù)優(yōu)先級(jí)
2.7.1開發(fā)原理
2.7.2開發(fā)步驟
2.7.3運(yùn)行結(jié)果
2.8臨界區(qū)
2.8.1開發(fā)原理
2.8.2開發(fā)步驟
2.8.3運(yùn)行結(jié)果
第3章FreeRTOS時(shí)間管理
3.1時(shí)間片輪轉(zhuǎn)
3.1.1開發(fā)原理
3.1.2開發(fā)步驟
3.1.3運(yùn)行結(jié)果
3.2任務(wù)延時(shí)
3.2.1開發(fā)原理
3.2.2開發(fā)步驟
3.2.3運(yùn)行結(jié)果
第4章FreeRTOS任務(wù)棧
4.1內(nèi)存分配失敗回調(diào)函數(shù)
4.1.1開發(fā)原理
4.1.2開發(fā)步驟
4.1.3運(yùn)行結(jié)果
4.2任務(wù)棧溢出
4.2.1開發(fā)原理
4.2.2開發(fā)步驟
4.2.3運(yùn)行結(jié)果
4.3選擇任務(wù)棧大小
4.3.1開發(fā)原理
4.3.2開發(fā)步驟
4.3.3運(yùn)行結(jié)果
第5章FreeRTOS內(nèi)存管理
5.1內(nèi)存申請(qǐng)和釋放
5.1.1開發(fā)原理
5.1.2開發(fā)步驟
5.1.3運(yùn)行結(jié)果
5.2內(nèi)存分配
第6章FreeRTOS任務(wù)間通信
6.1消息隊(duì)列
6.1.1開發(fā)原理
6.1.2開發(fā)步驟
6.1.3運(yùn)行結(jié)果
6.2二進(jìn)制信號(hào)量
6.2.1開發(fā)原理
6.2.2開發(fā)步驟
6.2.3運(yùn)行結(jié)果
6.3計(jì)數(shù)信號(hào)量
6.3.1開發(fā)原理
6.3.2開發(fā)步驟
6.3.3運(yùn)行結(jié)果
6.4互斥信號(hào)量
6.4.1開發(fā)原理
6.4.2開發(fā)步驟
6.4.3運(yùn)行結(jié)果
6.5遞歸互斥信號(hào)量
6.5.1開發(fā)原理
6.5.2開發(fā)步驟
6.5.3運(yùn)行結(jié)果
6.6任務(wù)通知
6.6.1開發(fā)原理
6.6.2開發(fā)步驟
6.6.3運(yùn)行結(jié)果
6.7事件組
6.7.1開發(fā)原理
6.7.2開發(fā)步驟
6.7.3運(yùn)行結(jié)果
第7章FreeRTOS定時(shí)器與低功耗
7.1定時(shí)器
7.1.1開發(fā)原理
7.1.2開發(fā)步驟
7.1.3運(yùn)行結(jié)果
7.2低功耗
7.2.1開發(fā)原理
7.2.2開發(fā)步驟
7.2.3運(yùn)行結(jié)果
第8章命令行界面
8.1FreeRTOS CLI移植
8.1.1開發(fā)原理
8.1.2開發(fā)步驟
8.1.3運(yùn)行結(jié)果
8.2FreeRTOS CLI配置和使用
8.2.1開發(fā)原理
8.2.2開發(fā)步驟
8.2.3運(yùn)行結(jié)果
第9章嵌入式文件系統(tǒng)開發(fā)
9.1FreeRTOS FAT移植
9.1.1開發(fā)原理
9.1.2開發(fā)步驟
9.1.3運(yùn)行結(jié)果
9.2FreeRTOS FAT文件夾創(chuàng)建
9.2.1開發(fā)原理
9.2.2開發(fā)步驟
9.2.3運(yùn)行結(jié)果
9.3FreeRTOS FAT文件讀寫
9.3.1開發(fā)原理
9.3.2開發(fā)步驟
9.3.3運(yùn)行結(jié)果
9.4FreeRTOS FAT文件操作
9.4.1開發(fā)原理
9.4.2開發(fā)步驟
9.4.3運(yùn)行結(jié)果
第10章嵌入式網(wǎng)絡(luò)編程開發(fā)
10.1FreeRTOS TCP/IP移植
10.1.1開發(fā)原理
10.1.2開發(fā)步驟
10.1.3運(yùn)行結(jié)果
10.2FreeRTOS UDP
10.2.1開發(fā)原理
10.2.2開發(fā)步驟
10.2.3運(yùn)行結(jié)果
10.3FreeRTOS TCP客戶端
10.3.1開發(fā)原理
10.3.2開發(fā)步驟
10.3.3運(yùn)行結(jié)果
10.4FreeRTOS TCP服務(wù)器
10.4.1開發(fā)原理
10.4.2開發(fā)步驟
10.4.3運(yùn)行結(jié)果
參考文獻(xiàn)