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