嵌入式系統(tǒng)原理與應用——基于Linux和ARM
定 價:69 元
- 作者:蔣建春
- 出版時間:2022/9/1
- ISBN:9787121442810
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.85;TP332.021
- 頁碼:380
- 紙張:
- 版次:01
- 開本:16開
本書基于典型的ARM處理器和Linux嵌入式系統(tǒng)講解嵌入式系統(tǒng)基本原理、軟件架構(gòu)和應用設(shè)計等相關(guān)知識;陂L期的嵌入式系統(tǒng)開發(fā)和教學經(jīng)驗,作者從嵌入式系統(tǒng)研發(fā)初學者角度出發(fā),以掌握嵌入式系統(tǒng)設(shè)計需要的基礎(chǔ)知識、軟件架構(gòu)、設(shè)計方法等為目標,將嵌入式系統(tǒng)的基礎(chǔ)與原理、軟件架構(gòu)、實踐編程方法和嵌入式系統(tǒng)實際應用開發(fā)結(jié)合起來,形成一套完整的嵌入式系統(tǒng)原理、設(shè)計與開發(fā)的教學內(nèi)容。本書結(jié)構(gòu)合理、層次清晰,易于理解和學習,主要內(nèi)容包括:嵌入式系統(tǒng)基礎(chǔ),Linux操作系統(tǒng)基礎(chǔ)與內(nèi)核,Linux驅(qū)動程序結(jié)構(gòu)、開發(fā)與典型驅(qū)動程序開發(fā)實例,Linux系統(tǒng)移植與應用程序開發(fā)實例等。本書可供高等學校計算機、電子工程、自動化與控制類等專業(yè)的本科高年級學生作為教學參考書使用,也可供人工智能、機器人、智能網(wǎng)聯(lián)汽車等相關(guān)專業(yè)方向的碩士研究生參考。
蔣建春,教授/博士。汽車智能網(wǎng)聯(lián)技術(shù)重慶市高校工程研究中心 車聯(lián)網(wǎng)與智能交通研究所所長,重慶市學術(shù)技術(shù)帶頭人、芬蘭坦佩雷理工大學訪問學者,重慶市物聯(lián)網(wǎng)產(chǎn)業(yè)協(xié)會委員會專家,成渝地區(qū)雙城經(jīng)濟圈科技創(chuàng)新聯(lián)盟專家,重慶智能網(wǎng)聯(lián)汽車技術(shù)創(chuàng)新聯(lián)盟專家。
目 錄
第1章 嵌入式系統(tǒng)基礎(chǔ) (1)
1.1 嵌入式系統(tǒng)概述 (1)
1.1.1 嵌入式系統(tǒng)基本概念 (1)
1.1.2 嵌入式系統(tǒng)的分類 (4)
1.1.3 嵌入式系統(tǒng)的現(xiàn)狀和趨勢 (9)
1.2 嵌入式系統(tǒng)基礎(chǔ)知識 (11)
1.2.1 嵌入式系統(tǒng)基本組成 (12)
1.2.2 嵌入式處理器概述 (13)
1.2.3 嵌入式操作系統(tǒng)概述 (15)
1.3 嵌入式可執(zhí)行代碼生成流程與代碼結(jié)構(gòu) (20)
1.3.1 嵌入式可執(zhí)行代碼生成流程 (20)
1.3.2 嵌入式軟件代碼結(jié)構(gòu) (22)
1.4 嵌入式軟件交叉開發(fā)模式 (26)
1.4.1 交叉開發(fā)模式概述 (26)
1.4.2 調(diào)試通信端口與協(xié)議 (27)
作業(yè) (30)
第2章 ARM處理器體系架構(gòu) (31)
2.1 嵌入式處理器基礎(chǔ) (31)
2.1.1 處理器的結(jié)構(gòu) (31)
2.1.2 處理器指令執(zhí)行過程 (32)
2.1.3 微處理器的體系結(jié)構(gòu) (34)
2.2 ARM體系架構(gòu)與編程模型 (37)
2.2.1 ARM處理器體系架構(gòu)概述 (37)
2.2.2 ARM編程模型 (40)
2.3 ARM處理器內(nèi)存管理 (46)
2.3.1 內(nèi)存映射 (46)
2.3.2 集成外設(shè)寄存器訪問方法 (48)
2.4 ARM異常處理 (50)
2.4.1 ARM處理器異常類型 (50)
2.4.2 ARM處理器對異常的響應 (51)
2.4.3 ARM系統(tǒng)的中斷編程機制 (53)
作業(yè) (57)
第3章 Linux操作系統(tǒng)基礎(chǔ)知識 (58)
3.1 操作系統(tǒng)基礎(chǔ)知識 (58)
3.1.1 操作系統(tǒng)主要功能 (59)
3.1.2 嵌入式操作系統(tǒng)基本概念 (60)
3.2 嵌入式Linux簡介 (69)
3.2.1 Linux內(nèi)核版本與分類 (69)
3.2.2 Linux系統(tǒng)結(jié)構(gòu) (71)
3.2.3 嵌入式Linux特點 (72)
3.3 Linux文件系統(tǒng) (73)
3.3.1 Linux文件系統(tǒng)基本作用 (73)
3.3.2 Linux常見文件系統(tǒng)簡介 (73)
3.3.3 Linux文件系統(tǒng)框架 (76)
3.3.4 Linux文件操作函數(shù) (78)
3.4 Linux模塊機制 (82)
3.4.1 Linux模塊概述 (82)
3.4.2 Linux模塊代碼結(jié)構(gòu) (83)
3.4.3 模塊加載 (84)
3.4.4 模塊卸載 (85)
作業(yè) (86)
第4章 ARM體系結(jié)構(gòu)的Linux內(nèi)核 (87)
4.1 ARM-Linux內(nèi)核簡介 (87)
4.1.1 ARM-Linux內(nèi)核和普通Linux內(nèi)核的區(qū)別 (87)
4.1.2 ARM-Linux代碼結(jié)構(gòu)與內(nèi)核組成 (88)
4.2 ARM-Linux進程管理與調(diào)度 (91)
4.2.1 進程的表示和生命周期 (91)
4.2.2 Linux進程創(chuàng)建、執(zhí)行和銷毀 (97)
4.2.3 Linux進程調(diào)度 (101)
4.3 ARM-Linux內(nèi)存管理 (105)
4.3.1 內(nèi)存管理基本概念 (105)
4.3.2 ARM-Linux存儲機制 (107)
4.3.3 虛擬內(nèi)存管理 (109)
4.4 ARM-Linux虛擬文件系統(tǒng) (111)
4.4.1 虛擬文件系統(tǒng)介紹 (111)
4.4.2 虛擬文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu) (112)
4.4.3 基于虛擬文件系統(tǒng)的文件I/O操作 (118)
4.5 ARM-Linux進程間通信 (121)
4.5.1 進程間通信的目的 (121)
4.5.2 進程間通信的方式 (121)
作業(yè) (130)
第5章 Linux設(shè)備驅(qū)動程序結(jié)構(gòu) (131)
5.1 Linux設(shè)備驅(qū)動程序簡介 (131)
5.1.1 Linux設(shè)備分類 (131)
5.1.2 設(shè)備文件與設(shè)備號 (133)
5.1.3 Linux設(shè)備驅(qū)動程序代碼分布與特點 (134)
5.2 Linux內(nèi)核設(shè)備模型 (135)
5.2.1 設(shè)備模型建立的目的 (135)
5.2.2 設(shè)備拓撲結(jié)構(gòu) (135)
5.2.3 設(shè)備模型 (136)
5.3 Linux設(shè)備驅(qū)動程序結(jié)構(gòu) (139)
5.3.1 Linux設(shè)備驅(qū)動程序分層思想 (139)
5.3.2 Linux總線設(shè)備驅(qū)動程序注冊與注銷 (140)
5.3.3 設(shè)備打開與關(guān)閉 (144)
5.3.4 設(shè)備操作函數(shù) (145)
5.3.5 設(shè)備中斷與輪詢處理 (147)
5.4 platform總線與設(shè)備管理 (151)
5.4.1 platform總線的定義 (151)
5.4.2 platform總線設(shè)備重要數(shù)據(jù)結(jié)構(gòu)與函數(shù) (153)
5.4.3 platform總線設(shè)備驅(qū)動程序?qū)嵗?(158)
5.5 設(shè)備樹 (160)
5.5.1 設(shè)備樹的基本概念及作用 (160)
5.5.2 DTS、DTB和DTC (161)
5.5.3 DTS語法 (162)
5.5.4 設(shè)備與驅(qū)動程序的匹配 (170)
作業(yè) (173)
第6章 字符設(shè)備驅(qū)動程序與應用實例 (174)
6.1 字符設(shè)備驅(qū)動程序結(jié)構(gòu)分析 (174)
6.1.1 字符設(shè)備驅(qū)動程序框架 (174)
6.1.2 字符設(shè)備驅(qū)動程序組成 (175)
6.2 GPIO設(shè)備驅(qū)動程序?qū)嵗狶ED驅(qū)動程序 (185)
6.2.1 寄存器地址映射 (186)
6.2.2 修改設(shè)備樹文件 (187)
6.2.3 LED驅(qū)動程序?qū)嵗治?(188)
6.3 基于platform總線的UART驅(qū)動程序?qū)嵗?(195)
6.3.1 UART工作原理 (195)
6.3.2 Linux UART驅(qū)動程序結(jié)構(gòu)分析 (196)
6.3.3 I.MX6U UART驅(qū)動程序分析 (202)
作業(yè) (211)
第7章 塊設(shè)備驅(qū)動程序與應用實例 (212)
7.1 塊設(shè)備驅(qū)動程序框架 (212)
7.1.1 塊設(shè)備數(shù)據(jù)交換方式 (212)
7.1.2 塊設(shè)備讀寫請求 (214)
7.2 塊設(shè)備驅(qū)動程序數(shù)據(jù)結(jié)構(gòu)與函數(shù) (216)
7.2.1 gendisk數(shù)據(jù)結(jié)構(gòu)與操作 (217)
7.2.2 request數(shù)據(jù)結(jié)構(gòu)與操作 (220)
7.2.3 request_queue數(shù)據(jù)結(jié)構(gòu)與操作 (223)
7.2.4 bio數(shù)據(jù)結(jié)構(gòu)與操作 (226)
7.3 塊設(shè)備管理與操作 (229)
7.3.1 塊設(shè)備的注冊與注銷 (229)
7.3.2 塊設(shè)備初始化與卸載 (230)
7.3.3 塊設(shè)備操作 (232)
7.4 RAM驅(qū)動程序?qū)嵗?(234)
7.4.1 SDRAM簡介 (234)
7.4.2 基于請求隊列的RAM驅(qū)動程序?qū)嵗?(235)
作業(yè) (241)
第8章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序與應用實例 (242)
8.1 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序框架 (242)
8.1.1 網(wǎng)絡(luò)設(shè)備驅(qū)動程序框架 (242)
8.1.2 網(wǎng)絡(luò)設(shè)備驅(qū)動程序重要數(shù)據(jù)結(jié)構(gòu) (243)
8.1.3 網(wǎng)絡(luò)設(shè)備管理 (254)
8.1.4 網(wǎng)絡(luò)設(shè)備數(shù)據(jù)收發(fā) (264)
8.2 I.MX6ULL以太網(wǎng)驅(qū)動程序?qū)嵗治?(269)
8.2.1 I.MX6ULL網(wǎng)絡(luò)外設(shè)設(shè)備樹 (269)
8.2.2 I.MX6ULL網(wǎng)絡(luò)驅(qū)動程序源碼簡析 (272)
8.2.3 fec_netdev_ops操作集 (280)
作業(yè) (285)
第9章 Linux移植與系統(tǒng)啟動 (286)
9.1 Linux系統(tǒng)啟動與U-Boot (287)
9.1.1 Bootloader的選擇 (287)
9.1.2 U-Boot編譯流程分析 (289)
9.1.3 I.MX6 U-Boot啟動流程 (294)
9.2 Linux內(nèi)核裁剪 (298)
9.2.1 內(nèi)核配置過程分析 (298)
9.2.2 內(nèi)核編譯過程分析 (302)
9.2.3 內(nèi)核啟動過程分析 (305)
9.2.4 內(nèi)核移植過程 (319)
9.3 Linux根文件系統(tǒng)移植 (323)
9.3.1 根文件系統(tǒng)概述 (323)
9.3.2 編譯Busybox構(gòu)建根文件系統(tǒng) (326)
9.3.3 根文件系統(tǒng)的啟動過程分析 (335)
作業(yè) (336)
第10章 Linux應用編程與實例 (337)
10.1 程序、進程與線程 (337)
10.1.1 程序和進程 (337)
10.1.2 進程和線程 (338)
10.2 線程管理 (339)
10.2.1 線程創(chuàng)建 (339)
10.2.2 線程管理 (342)
10.2.3 一個實例 (344)
10.3 C-V2X OBU應用編程實例 (345)
10.3.1 C-V2X OBU功能分析與軟件架構(gòu) (345)
10.3.2 應用程序設(shè)計 (349)
10.3.3 V2X消息接收線程 (353)
10.3.4 防撞預警線程 (357)
10.3.5 V2N通信線程 (360)
作業(yè) (367)
參考文獻 (368)