嵌入式系統原理與應用 — 基於 Linux 和 ARM

蔣建春,曾素華,林峰

  • 出版商: 電子工業
  • 出版日期: 2022-09-01
  • 售價: $414
  • 貴賓價: 9.5$393
  • 語言: 簡體中文
  • 頁數: 380
  • ISBN: 7121442817
  • ISBN-13: 9787121442810
  • 相關分類: 嵌入式系統Linux
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

本書基於典型的ARM處理器和Linux嵌入式系統講解嵌入式系統基本原理、軟件架構和應用設計等相關知識。基於長期的嵌入式系統開發和教學經驗,作者從嵌入式系統研發初學者角度出發,以掌握嵌入式系統設計需要的基礎知識、軟件架構、設計方法等為目標,將嵌入式系統的基礎與原理、軟件架構、實踐編程方法和嵌入式系統實際應用開發結合起來,形成一套完整的嵌入式系統原理、設計與開發的教學內容。本書結構合理、層次清晰,易於理解和學習,主要內容包括:嵌入式系統基礎,Linux操作系統基礎與內核,Linux驅動程序結構、開發與典型驅動程序開發實例,Linux系統移植與應用程序開發實例等。本書可供高等學校電腦、電子工程、自動化與控制類等專業的本科高年級學生作為教學參考書使用,也可供人工智能、機器人、智能網聯汽車等相關專業方向的碩士研究生參考。

作者簡介

蔣建春
汽車智能網聯技術重慶市高校工程研究中心車聯網與智能交通研究所所長,重慶市學術技術帶頭人、芬蘭坦佩雷理工大學訪問學者,重慶市物聯網產業協會委員會專家,成渝地區雙城經濟圈科技創新聯盟專家,重慶智能網聯汽車技術創新聯盟專家。

目錄大綱

第1章嵌入式系統基礎 (1)
1.1 嵌入式系統概述 (1)
1.1.1 嵌入式系統基本概念 (1)
1.1.2 嵌入式系統的分類 (4)
1.1.3 嵌入式系統的現狀和趨勢 (9)
1.2 嵌入式系統基礎知識 (11)
1.2.1 嵌入式系統基本組成 (12)
1.2.2 嵌入式處理器概述 (13)
1.2.3 嵌入式操作系統概述 (15)
1.3 嵌入式可執行代碼生成流程與代碼結構 (20)
1.3.1 嵌入式可執行代碼生成流程 (20)
1.3.2 嵌入式軟件代碼結構 (22)
1.4 嵌入式軟件交叉開發模式 (26)
1.4.1 交叉開發模式概述 (26)
1.4.2 調試通信端口與協議 (27)
作業 (30)

第2章ARM處理器體系架構 (31)
2.1 嵌入式處理器基礎 (31)
2.1.1 處理器的結構 (31)
2.1.2 處理器指令執行過程 (32)
2.1.3 微處理器的體系結構 (34)
2.2 ARM體系架構與編程模型 (37)
2.2.1 ARM處理器體系架構概述 (37)
2.2.2 ARM編程模型 (40)
2.3 ARM處理器內存管理 (46)
2.3.1 內存映射 (46)
2.3.2 集成外設寄存器訪問方法 (48)
2.4 ARM異常處理 (50)
2.4.1 ARM處理器異常類型 (50)
2.4.2 ARM處理器對異常的響應 (51)
2.4.3 ARM系統的中斷編程機制 (53)
作業 (57)

第3章Linux操作系統基礎知識 (58)
3.1 操作系統基礎知識 (58)
3.1.1 操作系統主要功能 (59)
3.1.2 嵌入式操作系統基本概念 (60)
3.2 嵌入式Linux簡介 (69)
3.2.1 Linux內核版本與分類 (69)
3.2.2 Linux系統結構 (71)
3.2.3 嵌入式Linux特點 (72)
3.3 Linux文件系統 (73)
3.3.1 Linux文件系統基本作用 (73)
3.3.2 Linux常見文件系統簡介 (73)
3.3.3 Linux文件系統框架 (76)
3.3.4 Linux文件操作函數 (78)
3.4 Linux模塊機制 (82)
3.4.1 Linux模塊概述 (82)
3.4.2 Linux模塊代碼結構 (83)
3.4.3 模塊加載 (84)
3.4.4 模塊卸載 (85)
作業 (86)

第4章ARM體系結構的Linux內核 (87)
4.1 ARM-Linux內核簡介 (87)
4.1.1 ARM-Linux內核和普通Linux內核的區別 (87)
4.1.2 ARM-Linux代碼結構與內核組成 (88)
4.2 ARM-Linux進程管理與調度 (91)
4.2.1 進程的表示和生命週期 (91)
4.2.2 Linux進程創建、執行和銷毀 (97)
4.2.3 Linux進程調度 (101)
4.3 ARM-Linux內存管理 (105)
4.3.1 內存管理基本概念 (105)
4.3.2 ARM-Linux存儲機制 (107)
4.3.3 虛擬內存管理 (109)
4.4 ARM-Linux虛擬文件系統 (111)
4.4.1 虛擬文件系統介紹 (111)
4.4.2 虛擬文件系統數據結構 (112)
4.4.3 基於虛擬文件系統的文件I/O操作 (118)
4.5 ARM-Linux進程間通信 (121)
4.5.1 進程間通信的目的 (121)
4.5.2 進程間通信的方式 (121)
作業 (130)

第5章Linux設備驅動程序結構 (131)
5.1 Linux設備驅動程序簡介 (131)
5.1.1 Linux設備分類 (131)
5.1.2 設備文件與設備號 (133)
5.1.3 Linux設備驅動程序代碼分佈與特點 (134)
5.2 Linux內核設備模型 (135)
5.2.1 設備模型建立的目的 (135)
5.2.2 設備拓撲結構 (135)
5.2.3 設備模型 (136)
5.3 Linux設備驅動程序結構 (139)
5.3.1 Linux設備驅動程序分層思想 (139)
5.3.2 Linux總線設備驅動程序註冊與註銷 (140)
5.3.3 設備打開與關閉 (144)
5.3.4 設備操作函數 (145)
5.3.5 設備中斷與輪詢處理 (147)
5.4 platform總線與設備管理 (151)
5.4.1 platform總線的定義 (151)
5.4.2 platform總線設備重要數據結構與函數 (153)
5.4.3 platform總線設備驅動程序實例 (158)
5.5 設備樹 (160)
5.5.1 設備樹的基本概念及作用 (160)
5.5.2 DTS、DTB和DTC (161)
5.5.3 DTS語法 (162)
5.5.4 設備與驅動程序的匹配 (170)
作業 (173)

第6章字符設備驅動程序與應用實例 (174)
6.1 字符設備驅動程序結構分析 (174)
6.1.1 字符設備驅動程序框架 (174)
6.1.2 字符設備驅動程序組成 (175)
6.2 GPIO設備驅動程序實例—LED驅動程序 (185)
6.2.1 寄存器地址映射 (186)
6.2.2 修改設備樹文件 (187)
6.2.3 LED驅動程序實例分析 (188)
6.3 基於platform總線的UART驅動程序實例 (195)
6.3.1 UART工作原理 (195)
6.3.2 Linux UART驅動程序結構分析 (196)
6.3.3 I.MX6U UART驅動程序分析 (202)
作業 (211)

第7章塊設備驅動程序與應用實例 (212)
7.1 塊設備驅動程序框架 (212)
7.1.1 塊設備數據交換方式 (212)
7.1.2 塊設備讀寫請求 (214)
7.2 塊設備驅動程序數據結構與函數 (216)
7.2.1 gendisk數據結構與操作 (217)
7.2.2 request數據結構與操作 (220)
7.2.3 request_queue數據結構與操作 (223)
7.2.4 bio數據結構與操作 (226)
7.3 塊設備管理與操作 (229)
7.3.1 塊設備的註冊與註銷 (229)
7.3.2 塊設備初始化與卸載 (230)
7.3.3 塊設備操作 (232)
7.4 RAM驅動程序實例 (234)
7.4.1 SDRAM簡介 (234)
7.4.2 基於請求隊列的RAM驅動程序實例 (235)
作業 (241)
第8章網絡設備驅動程序與應用實例 (242)
8.1 Linux網絡設備驅動程序框架 (242)
8.1.1 網絡設備驅動程序框架 (242)
8.1.2 網絡設備驅動程序重要數據結構 (243)
8.1.3 網絡設備管理 (254)
8.1.4 網絡設備數據收發 (264)
8.2 I.MX6ULL以太網驅動程序實例分析 (269)
8.2.1 I.MX6ULL網絡外設設備樹 (269)
8.2.2 I.MX6ULL網絡驅動程序源碼簡析 (272)
8.2.3 fec_netdev_ops操作集 (280)
作業 (285)

第9章Linux移植與系統啟動 (286)
9.1 Linux系統啟動與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內核裁剪 (298)
9.2.1 內核配置過程分析 (298)
9.2.2 內核編譯過程分析 (302)
9.2.3 內核啟動過程分析 (305)
9.2.4 內核移植過程 (319)
9.3 Linux根文件系統移植 (323)
9.3.1 根文件系統概述 (323)
9.3.2 編譯Busybox構建根文件系統 (326)
9.3.3 根文件系統的啟動過程分析 (335)
作業 (336)

第10章Linux應用編程與實例 (337)
10.1 程序、進程與線程 (337)
10.1.1 程序和進程 (337)
10.1.2 進程和線程 (338)
10.2 線程管理 (339)
10.2.1 線程創建 (339)
10.2.2 線程管理 (342)
10.2.3 一個實例 (344)
10.3 C-V2X OBU應用編程實例 (345)
10.3.1 C-V2X OBU功能分析與軟件架構 (345)
10.3.2 應用程序設計 (349)
10.3.3 V2X消息接收線程 (353)
10.3.4 防撞預警線程 (357)
10.3.5 V2N通信線程 (360)
作業 (367)
參考文獻 (368)