日出東方,其道大光; 鯤鵬展翅,旭日昇騰!
隨著嵌入式智能硬件在信息社會的快速發(fā)展,從CPU到GPU,再到各類專屬領域的定制芯片,我們迎來了計算機體系結(jié)構(gòu)的黃金時代!華為海思設計了支撐華為整個生態(tài)的多種類型芯片,包括麒麟、鯤鵬、昇騰等手機、服務器和AI處理器。在應用廣泛的物聯(lián)網(wǎng)市場,海思也推出了基于RISCV開源架構(gòu)的Hi3861芯片。該芯片還能適配華為推出的OpenHarmony(開源鴻蒙)操作系統(tǒng)。
所以,當華為海思邀請我基于Hi3861芯片開發(fā)一本嵌入式系統(tǒng)教材時,我毫不猶豫地答應了。也許是出于對硬科技公司的高度認同,也許是出于對同道中人的由衷尊敬,更可能是出于一種骨子里的使命感,我深深地覺得我們太需要能夠在國產(chǎn)嵌入式系統(tǒng)上開發(fā)嵌入式軟件的人才了。對于國產(chǎn)處理器和鴻蒙操作系統(tǒng),生態(tài)圈的培養(yǎng)和用戶編程習慣的養(yǎng)成可謂重中之重,也是決定該款產(chǎn)品生死存亡的關鍵。編寫本書的目的是向讀者介紹基于海思Hi3861芯片和OpenHarmony操作系統(tǒng)內(nèi)在的設計理念,從軟硬件兩方面闡述嵌入式軟件開發(fā)的邏輯,教會讀者上手使用DevEco Studio嵌入式軟件開發(fā)平臺。不積跬步,無以至千里,如果把打造海思物聯(lián)網(wǎng)生態(tài)圈當作千里之行,那么本書便是嘗試邁出的第一步。
本書定位為嵌入式軟件開發(fā)領域選修教材,面向工程科技類大學生和社會開發(fā)者。讀者除需要具備基本的硬件知識和編程能力外,無須預修任何課程。本書特別理想的受眾是物聯(lián)網(wǎng)、計算機科學、軟件工程、網(wǎng)絡安全、電子工程、自動化、通信工程等專業(yè)領域需要用到嵌入式系統(tǒng)的學生和開發(fā)者。
本書共10章,內(nèi)容涵蓋嵌入式系統(tǒng)概論、嵌入式處理器與外圍硬件、嵌入式軟件體系結(jié)構(gòu)、嵌入式實時操作系統(tǒng)、板級支持包和操作系統(tǒng)引導、嵌入式軟件開發(fā)環(huán)境、嵌入式操作系統(tǒng)移植及驅(qū)動開發(fā)、典型物聯(lián)網(wǎng)技術(shù)、協(xié)議及應用、嵌入式系統(tǒng)安全以及嵌入式系統(tǒng)綜合實驗,希望能夠從理論到實踐,幫助讀者了解Hi3861芯片,并掌握其具體的編程和使用方法,助力讀者基于國產(chǎn)嵌入式處理器和國產(chǎn)嵌入式操作系統(tǒng)打造屬于自己的嵌入式軟件。
空談誤國,實干興邦。愿與諸位讀者共勉。
本書編者均有著8年多的本科生嵌入式軟件設計課程教學經(jīng)驗,完成了多輪次、多類型的教育教學改革與研究工作。感謝孫世磊、劉浩文和陳曦對本書撰寫工作作出的極大貢獻,他們在內(nèi)容大綱規(guī)劃上注入了極大精力,并且參與了部分章節(jié)的寫作。如果沒有他們的全心投入,本書將很難順利完成。感謝華為海思劉耀林和謝晶在本書寫作過程中提供的資源和支持。感謝清華大學出版社盛東亮老師的大力支持,他認真細致的工作保證了本書的質(zhì)量。
由于編者水平有限,書中難免有疏漏和不足之處,懇請讀者批評指正!
編者2024年12月1日
第1章嵌入式系統(tǒng)概論
微課視頻17分鐘
1.1無所不在的嵌入式系統(tǒng)
1.1.1工業(yè)控制
1.1.2智能家電
1.1.3智能機器人
1.2嵌入式系統(tǒng)定義
1.3嵌入式系統(tǒng)的設計需求
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嵌入式處理器特點
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指令特點
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運行方式
3.3.2典型系統(tǒng)
3.4前后臺結(jié)構(gòu)
3.4.1運行方式
3.4.2系統(tǒng)性能
3.4.3典型系統(tǒng)
3.5實時操作系統(tǒng)結(jié)構(gòu)
3.5.1運行方式
3.5.2系統(tǒng)性能
3.5.3典型系統(tǒng)
第4章嵌入式實時操作系統(tǒng)
微課視頻86分鐘
4.1嵌入式操作系統(tǒng)演化
4.2RTOS的設計需求
4.2.1及時性
4.2.2強相關性
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應用程序初始化過程
4.4.5操作系統(tǒng)啟動過程
4.5時間管理
4.5.1系統(tǒng)Tick
4.5.2軟件定時器
4.6中斷管理
4.6.1基礎概念
4.6.2重要接口
4.6.3使用示例
4.7任務管理
4.7.1基礎概念
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)引導
微課視頻43分鐘
5.1嵌入式系統(tǒng)的啟動過程
5.1.1上電復位、板級初始化階段
5.1.2操作系統(tǒng)引導/操作系統(tǒng)升級階段
5.1.3操作系統(tǒng)初始化階段
5.1.4應用初始化階段
5.1.5操作系統(tǒng)運行階段
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的引導模式
5.3.1需要Boot Loader的引導模式
5.3.2不需要Boot Loader的引導模式
5.3.3操作系統(tǒng)引導實例
5.4Boot Loader代碼分析及開發(fā)
5.4.1loaderboot功能及代碼分析
5.4.2flashboot功能及代碼開發(fā)
第6章嵌入式軟件開發(fā)環(huán)境
微課視頻63分鐘
6.1嵌入式軟件的編譯
6.1.1交叉編譯概念
6.1.2交叉編譯的難點
6.1.3交叉匯編器和工具鏈
6.1.4嵌入式系統(tǒng)的鏈接器/定位器
6.1.5合理安排程序在目標主機上的分布
6.2嵌入式軟件的調(diào)試
6.2.1調(diào)試的準則
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)境的特點
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目標代碼編譯運行
6.5.6使用仿真器運行
6.5.7代碼燒錄
6.5.8代碼調(diào)試
6.6OpenHarmony操作系統(tǒng)實驗
6.6.1操作系統(tǒng)配置編譯裁剪實驗
6.6.2系統(tǒng)基礎服務裁剪實驗
第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移植準備
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)核基礎適配
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的特點
7.5.3HDF驅(qū)動開發(fā)
7.5.4HDF驅(qū)動服務管理
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項目編譯運行
第8章典型物聯(lián)網(wǎng)技術(shù)、協(xié)議及應用
微課視頻49分鐘
8.1物聯(lián)網(wǎng)技術(shù)概述
8.1.1物聯(lián)網(wǎng)體系架構(gòu)及特性
8.1.2物聯(lián)網(wǎng)關鍵技術(shù)
8.1.3物聯(lián)網(wǎ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及其應用
8.4.1CoAP的設計需求
8.4.2CoAP結(jié)構(gòu)及示例
8.4.3CoAP應用示例
8.5MQTT協(xié)議及其應用
8.5.1MQTT協(xié)議的設計需求
8.5.2MQTT控制報文結(jié)構(gòu)及示例
8.5.3MQTT協(xié)議應用示例
8.6LwIP及其應用
8.6.1LwIP的設計需求
8.6.2LwIP的工作機制
8.6.3LwIP應用示例
8.7模組通信協(xié)議AT實驗
8.7.1AT命令定義及分類
8.7.2AT命令應用示例
第9章嵌入式系統(tǒng)安全
微課視頻17分鐘
9.1嵌入式系統(tǒng)安全趨勢
9.2嵌入式系統(tǒng)安全方案
9.2.1嵌入式領域安全問題
9.2.2嵌入式領域安全策略
9.2.3嵌入式領域安全設計
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應用完整性驗證
9.4.2應用權(quán)限管理
9.4.3設備安全等級管理
第10章嵌入式系統(tǒng)綜合實驗
微課視頻7分鐘
10.1智能小車開發(fā)板硬件介紹
10.2智能小車的設計需求
10.3智能小車實驗
10.3.1避障實驗
10.3.2循跡實驗
10.3.3平衡車實驗
參考文獻