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