日出東方,其道大光; 鯤鵬展翅,旭日昇騰!
隨著嵌入式智能硬件在信息社會的快速發(fā)展,從CPU到GPU,再到各類專屬領(lǐng)域的定制芯片,我們迎來了計算機(jī)體系結(jié)構(gòu)的黃金時代!華為海思設(shè)計了支撐華為整個生態(tài)的多種類型芯片,包括麒麟、鯤鵬、昇騰等手機(jī)、服務(wù)器和AI處理器。在應(yīng)用廣泛的物聯(lián)網(wǎng)市場,海思也推出了基于RISCV開源架構(gòu)的Hi3861芯片。該芯片還能適配華為推出的OpenHarmony(開源鴻蒙)操作系統(tǒng)。
所以,當(dāng)華為海思邀請我基于Hi3861芯片開發(fā)一本嵌入式系統(tǒng)教材時,我毫不猶豫地答應(yīng)了。也許是出于對硬科技公司的高度認(rèn)同,也許是出于對同道中人的由衷尊敬,更可能是出于一種骨子里的使命感,我深深地覺得我們太需要能夠在國產(chǎn)嵌入式系統(tǒng)上開發(fā)嵌入式軟件的人才了。對于國產(chǎn)處理器和鴻蒙操作系統(tǒng),生態(tài)圈的培養(yǎng)和用戶編程習(xí)慣的養(yǎng)成可謂重中之重,也是決定該款產(chǎn)品生死存亡的關(guān)鍵。編寫本書的目的是向讀者介紹基于海思Hi3861芯片和OpenHarmony操作系統(tǒng)內(nèi)在的設(shè)計理念,從軟硬件兩方面闡述嵌入式軟件開發(fā)的邏輯,教會讀者上手使用DevEco Studio嵌入式軟件開發(fā)平臺。不積跬步,無以至千里,如果把打造海思物聯(lián)網(wǎng)生態(tài)圈當(dāng)作千里之行,那么本書便是嘗試邁出的第一步。
本書定位為嵌入式軟件開發(fā)領(lǐng)域選修教材,面向工程科技類大學(xué)生和社會開發(fā)者。讀者除需要具備基本的硬件知識和編程能力外,無須預(yù)修任何課程。本書特別理想的受眾是物聯(lián)網(wǎng)、計算機(jī)科學(xué)、軟件工程、網(wǎng)絡(luò)安全、電子工程、自動化、通信工程等專業(yè)領(lǐng)域需要用到嵌入式系統(tǒng)的學(xué)生和開發(fā)者。
本書共10章,內(nèi)容涵蓋嵌入式系統(tǒng)概論、嵌入式處理器與外圍硬件、嵌入式軟件體系結(jié)構(gòu)、嵌入式實時操作系統(tǒng)、板級支持包和操作系統(tǒng)引導(dǎo)、嵌入式軟件開發(fā)環(huán)境、嵌入式操作系統(tǒng)移植及驅(qū)動開發(fā)、典型物聯(lián)網(wǎng)技術(shù)、協(xié)議及應(yīng)用、嵌入式系統(tǒng)安全以及嵌入式系統(tǒng)綜合實驗,希望能夠從理論到實踐,幫助讀者了解Hi3861芯片,并掌握其具體的編程和使用方法,助力讀者基于國產(chǎn)嵌入式處理器和國產(chǎn)嵌入式操作系統(tǒng)打造屬于自己的嵌入式軟件。
空談?wù)`國,實干興邦。愿與諸位讀者共勉。
本書編者均有著8年多的本科生嵌入式軟件設(shè)計課程教學(xué)經(jīng)驗,完成了多輪次、多類型的教育教學(xué)改革與研究工作。感謝孫世磊、劉浩文和陳曦對本書撰寫工作作出的極大貢獻(xiàn),他們在內(nèi)容大綱規(guī)劃上注入了極大精力,并且參與了部分章節(jié)的寫作。如果沒有他們的全心投入,本書將很難順利完成。感謝華為海思劉耀林和謝晶在本書寫作過程中提供的資源和支持。感謝清華大學(xué)出版社盛東亮老師的大力支持,他認(rèn)真細(xì)致的工作保證了本書的質(zhì)量。
由于編者水平有限,書中難免有疏漏和不足之處,懇請讀者批評指正!
編者2024年12月1日
第1章嵌入式系統(tǒng)概論
微課視頻17分鐘
1.1無所不在的嵌入式系統(tǒng)
1.1.1工業(yè)控制
1.1.2智能家電
1.1.3智能機(jī)器人
1.2嵌入式系統(tǒng)定義
1.3嵌入式系統(tǒng)的設(shè)計需求
1.4嵌入式系統(tǒng)的發(fā)展歷程
1.5嵌入式系統(tǒng)的組成
1.5.1嵌入式系統(tǒng)的硬件組成
1.5.2嵌入式系統(tǒng)的軟件組成
1.6嵌入式系統(tǒng)的分類
第2章嵌入式處理器與外圍硬件
微課視頻53分鐘
2.1嵌入式處理器概述
2.1.1嵌入式處理器特點(diǎn)
2.1.2嵌入式處理器體系架構(gòu)
2.2嵌入式處理器的分類
2.2.1嵌入式微處理器
2.2.2嵌入式微控制器
2.2.3嵌入式DSP
2.2.4嵌入式片上系統(tǒng)
2.3RISCV嵌入式微處理器體系結(jié)構(gòu)
2.3.1RISCV處理器
2.3.2總線
2.3.3流水線結(jié)構(gòu)
2.3.4工作模式
2.4RISCV指令集架構(gòu)簡介
2.4.1RISCV指令集分類
2.4.2RISCV指令格式
2.4.3RISCV指令特點(diǎn)
2.5基于RISCV架構(gòu)的Hi3861芯片
2.5.1處理器
2.5.2SPI
2.5.3RTC模塊
2.5.4GPIO接口
2.5.5PWM模塊
2.5.6UART接口
2.5.7WatchDog模塊
2.5.8I2C總線
2.5.9ADC模塊
第3章嵌入式軟件體系結(jié)構(gòu)
微課視頻20分鐘
3.1軟件體系結(jié)構(gòu)的概念
3.2軟件體系結(jié)構(gòu)的作用
3.3輪轉(zhuǎn)結(jié)構(gòu)
3.3.1運(yùn)行方式
3.3.2典型系統(tǒng)
3.4前后臺結(jié)構(gòu)
3.4.1運(yùn)行方式
3.4.2系統(tǒng)性能
3.4.3典型系統(tǒng)
3.5實時操作系統(tǒng)結(jié)構(gòu)
3.5.1運(yùn)行方式
3.5.2系統(tǒng)性能
3.5.3典型系統(tǒng)
第4章嵌入式實時操作系統(tǒng)
微課視頻86分鐘
4.1嵌入式操作系統(tǒng)演化
4.2RTOS的設(shè)計需求
4.2.1及時性
4.2.2強(qiáng)相關(guān)性
4.2.3高性能和魯棒性
4.2.4可剪裁性
4.3RTOS的體系結(jié)構(gòu)
4.3.1宏內(nèi)核結(jié)構(gòu)
4.3.2微內(nèi)核結(jié)構(gòu)
4.4OpenHarmony內(nèi)核啟動過程
4.4.1內(nèi)核簡介
4.4.2嵌入式系統(tǒng)啟動過程
4.4.3內(nèi)核初始化過程
4.4.4應(yīng)用程序初始化過程
4.4.5操作系統(tǒng)啟動過程
4.5時間管理
4.5.1系統(tǒng)Tick
4.5.2軟件定時器
4.6中斷管理
4.6.1基礎(chǔ)概念
4.6.2重要接口
4.6.3使用示例
4.7任務(wù)管理
4.7.1基礎(chǔ)概念
4.7.2TCB結(jié)構(gòu)及使用方法
4.7.3使用示例
4.8內(nèi)存管理
4.8.1靜態(tài)內(nèi)存
4.8.2動態(tài)內(nèi)存
4.9內(nèi)核通信
4.9.1事件
4.9.2消息隊列
第5章板級支持包和操作系統(tǒng)引導(dǎo)
微課視頻43分鐘
5.1嵌入式系統(tǒng)的啟動過程
5.1.1上電復(fù)位、板級初始化階段
5.1.2操作系統(tǒng)引導(dǎo)/操作系統(tǒng)升級階段
5.1.3操作系統(tǒng)初始化階段
5.1.4應(yīng)用初始化階段
5.1.5操作系統(tǒng)運(yùn)行階段
5.1.6LiteOSM操作系統(tǒng)的啟動
5.1.7整體啟動流程
5.2板級支持包
5.2.1BSP的概念
5.2.2BSP中的驅(qū)動程序
5.2.3BSP和BIOS的區(qū)別
5.2.4RTOS中的BSP
5.3RTOS的引導(dǎo)模式
5.3.1需要Boot Loader的引導(dǎo)模式
5.3.2不需要Boot Loader的引導(dǎo)模式
5.3.3操作系統(tǒng)引導(dǎo)實例
5.4Boot Loader代碼分析及開發(fā)
5.4.1loaderboot功能及代碼分析
5.4.2flashboot功能及代碼開發(fā)
第6章嵌入式軟件開發(fā)環(huán)境
微課視頻63分鐘
6.1嵌入式軟件的編譯
6.1.1交叉編譯概念
6.1.2交叉編譯的難點(diǎn)
6.1.3交叉匯編器和工具鏈
6.1.4嵌入式系統(tǒng)的鏈接器/定位器
6.1.5合理安排程序在目標(biāo)主機(jī)上的分布
6.2嵌入式軟件的調(diào)試
6.2.1調(diào)試的準(zhǔn)則
6.2.2基本技術(shù)
6.2.3輸入電路仿真器
6.2.4OCD方式
6.2.5嵌入式軟件調(diào)試環(huán)境搭建
6.3仿真開發(fā)技術(shù)
6.3.1仿真開發(fā)的分類
6.3.2仿真開發(fā)環(huán)境的特點(diǎn)
6.3.3仿真開發(fā)工具QEMU
6.4OpenHarmony編譯系統(tǒng)構(gòu)建
6.4.1GCC編譯器
6.4.2項目構(gòu)建工具
6.4.3項目構(gòu)建流程
6.4.4GDB調(diào)試器
6.5開發(fā)環(huán)境DevEco Device Tool
6.5.1環(huán)境搭建
6.5.2工程管理
6.5.3HDF驅(qū)動管理
6.5.4代碼編輯
6.5.5目標(biāo)代碼編譯運(yùn)行
6.5.6使用仿真器運(yùn)行
6.5.7代碼燒錄
6.5.8代碼調(diào)試
6.6OpenHarmony操作系統(tǒng)實驗
6.6.1操作系統(tǒng)配置編譯裁剪實驗
6.6.2系統(tǒng)基礎(chǔ)服務(wù)裁剪實驗
第7章嵌入式操作系統(tǒng)移植及驅(qū)動開發(fā)
微課視頻52分鐘
7.1嵌入式操作系統(tǒng)移植概述
7.1.1嵌入式操作系統(tǒng)移植通用流程
7.1.2系統(tǒng)移植所必需的環(huán)境
7.1.3內(nèi)核移植
7.1.4系統(tǒng)移植
7.2OpenHarmony移植準(zhǔn)備
7.2.1移植目錄
7.2.2移植流程
7.2.3編譯構(gòu)建適配流程
7.3OpenHarmony內(nèi)核移植
7.3.1芯片架構(gòu)適配
7.3.2內(nèi)核基礎(chǔ)適配
7.3.3內(nèi)核移植調(diào)試
7.4OpenHarmony板級支持包移植
7.4.1板級支持包適配流程
7.4.2CMSIS和POSIX
7.4.3板級驅(qū)動適配
7.4.4HAL實現(xiàn)
7.4.5板級適配XTS測試
7.5OpenHarmony系統(tǒng)驅(qū)動程序開發(fā)
7.5.1LiteOSM中的傳統(tǒng)驅(qū)動開發(fā)
7.5.2HDF的特點(diǎn)
7.5.3HDF驅(qū)動開發(fā)
7.5.4HDF驅(qū)動服務(wù)管理
7.5.5HDF配置管理
7.5.6HDF開發(fā)實例
7.5.7HDF驅(qū)動移植
7.6OpenHarmony系統(tǒng)驅(qū)動程序調(diào)用
7.6.1核心代碼開發(fā)
7.6.2項目內(nèi)配置文件BUILD.gn編寫
7.6.3項目外配置文件BUILD.gn編寫
7.6.4項目編譯運(yùn)行
第8章典型物聯(lián)網(wǎng)技術(shù)、協(xié)議及應(yīng)用
微課視頻49分鐘
8.1物聯(lián)網(wǎng)技術(shù)概述
8.1.1物聯(lián)網(wǎng)體系架構(gòu)及特性
8.1.2物聯(lián)網(wǎng)關(guān)鍵技術(shù)
8.1.3物聯(lián)網(wǎng)典型應(yīng)用
8.1.4物聯(lián)網(wǎng)技術(shù)的發(fā)展
8.2物聯(lián)網(wǎng)通信技術(shù)WiFi概述
8.2.1WLAN和WiFi
8.2.2WLAN發(fā)展歷史與趨勢
8.2.3WiFi射頻及信道
8.2.4WiFi組網(wǎng)與配網(wǎng)
8.2.5WiFi通信實驗
8.3物聯(lián)網(wǎng)通信協(xié)議概述
8.4CoAP及其應(yīng)用
8.4.1CoAP的設(shè)計需求
8.4.2CoAP結(jié)構(gòu)及示例
8.4.3CoAP應(yīng)用示例
8.5MQTT協(xié)議及其應(yīng)用
8.5.1MQTT協(xié)議的設(shè)計需求
8.5.2MQTT控制報文結(jié)構(gòu)及示例
8.5.3MQTT協(xié)議應(yīng)用示例
8.6LwIP及其應(yīng)用
8.6.1LwIP的設(shè)計需求
8.6.2LwIP的工作機(jī)制
8.6.3LwIP應(yīng)用示例
8.7模組通信協(xié)議AT實驗
8.7.1AT命令定義及分類
8.7.2AT命令應(yīng)用示例
第9章嵌入式系統(tǒng)安全
微課視頻17分鐘
9.1嵌入式系統(tǒng)安全趨勢
9.2嵌入式系統(tǒng)安全方案
9.2.1嵌入式領(lǐng)域安全問題
9.2.2嵌入式領(lǐng)域安全策略
9.2.3嵌入式領(lǐng)域安全設(shè)計
9.2.4嵌入式硬件安全實現(xiàn)范例
9.3Hi3861安全子系統(tǒng)
9.3.1安全子系統(tǒng)概述
9.3.2TRNG算子
9.3.3HASH算子
9.4OpenHarmony安全子系統(tǒng)
9.4.1應(yīng)用完整性驗證
9.4.2應(yīng)用權(quán)限管理
9.4.3設(shè)備安全等級管理
第10章嵌入式系統(tǒng)綜合實驗
微課視頻7分鐘
10.1智能小車開發(fā)板硬件介紹
10.2智能小車的設(shè)計需求
10.3智能小車實驗
10.3.1避障實驗
10.3.2循跡實驗
10.3.3平衡車實驗
參考文獻(xiàn)