嵌入式系統原理與應用——基于Linux和ARM( 簡體 字) | |
作者:蔣建春,曾素華,林峰 | 類別:1. -> 作業系統 -> Linux 2. -> 電腦組織與體系結構 -> 嵌入式系統 -> Cortex |
出版社:電子工業出版社 | 3dWoo書號: 56068 詢問書籍請說出此書號! 有庫存 NT售價: 345 元 |
出版日:9/1/2022 | |
頁數:380 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121442810 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第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) 本書基于典型的ARM處理器和Linux嵌入式系統講解嵌入式系統基本原理、軟件架構和應用設計等相關知識。基于長期的嵌入式系統開發和教學經驗,作者從嵌入式系統研發初學者角度出發,以掌握嵌入式系統設計需要的基礎知識、軟件架構、設計方法等為目標,將嵌入式系統的基礎與原理、軟件架構、實踐編程方法和嵌入式系統實際應用開發結合起來,形成一套完整的嵌入式系統原理、設計與開發的教學內容。本書結構合理、層次清晰,易于理解和學習,主要內容包括:嵌入式系統基礎,Linux操作系統基礎與內核,Linux驅動程序結構、開發與典型驅動程序開發實例,Linux系統移植與應用程序開發實例等。本書可供高等學校計算機、電子工程、自動化與控制類等專業的本科高年級學生作為教學參考書使用,也可供人工智能、機器人、智能網聯汽車等相關專業方向的碩士研究生參考。
序 言
嵌入式系統技術在大多數行業都得到了廣泛應用,行業對嵌入式系統開發人才的需求逐年增加。面向嵌入式系統開發的參考書籍與教材也是百花齊放、種類繁多。對于高校教師和學生,選擇一本符合本專業培養目標的教材是一件比較困難的事。對于老師,既要考慮學生能夠容易理解、掌握嵌入式系統原理和關鍵知識點,又要能夠培養學生的實踐和創新能力,這一點通過一本教材的內容是很難在有限的時間里辦到的。對于初學者,需要一本好的參考書,這本書既能夠系統地把嵌入式系統相關的知識說清楚,又能引導初學者學到有用的知識和技能,掌握嵌入式系統的學習方法,為后續學習打下良好的基礎。嵌入式系統課程本身就是一門多學科交叉的課程,涵蓋了電子技術、微機原理、高級編程語言、操作系統等課程內容,還涉及實踐編程環節。要想在一本參考書中把所有這些知識都講清楚是一件非常難的事。同時,不同讀者的基礎不同,學習需求也不一樣。因此,針對電子信息專業類初學者,作者經過多年教學總結和科研成果,從應用開發和初學者的角度,結合嵌入式系統的關鍵技術原理編著本書,力求以最簡潔的內容講解嵌入式系統原理及開發相關的主要知識,把嵌入式系統相關知識結合具體操作系統和處理器進行分析講解,讓讀者既能夠學到嵌入式系統原理知識,又能夠掌握具體的嵌入式系統軟件開發方法,以便后續能夠持續學習。 隨著設備智能化、網聯化的推廣,基于ARM處理器和Linux的嵌入式系統開發越發廣泛,對Linux的嵌入式開發人才需求量越來越大。鑒于此,本書以成熟的ARM處理器和Linux內核為基礎,結合嵌入式系統基礎知識和模塊原理,對系統啟動、驅動程序、嵌入式系統軟件框架和實現難點進行分析,然后以具體實例進行講解。 全書共10章。第1章講解嵌入式系統基本概念、基礎知識、嵌入式可執行代碼生成流程與代碼結構、交叉開發模式等內容;第2章結合嵌入式處理器基礎知識,講解ARM處理器的體系架構、編程模型、內存管理與異常處理等內容,為系統啟動、內核移植與驅動程序開發等內容的理解打下基礎;第3章主要講解操作系統基礎知識、Linux文件系統與模塊機制等內容,為后續Linux內核的學習打下基礎;第4章主要講解Linux的內核結構、進程管理、內存管理、虛擬文件系統、進程間通信等幾個方面,分析Linux內核各模塊的作用與工作原理,為驅動程序與應用程序開發學習提供支撐;第5章主要講解Linux設備驅動程序結構,重點分析內核設備模型、驅動程序結構、platform 總線與設備管理、設備樹等內容,為后續字符設備與塊設備驅動程序的學習打下理論基礎;第6章首先分析字符設備的驅動程序結構、關鍵的數據結構和模塊注冊與卸載方法;然后以基于GPIO的LED驅動程序和基于platform總線的UART驅動程序為例,講解典型字符設備驅動程序的主要開發流程、程序編寫方法和關鍵數據操作;第7章針對塊設備驅動程序的編寫方法進行分析,從內核關鍵數據結構、操作傳遞過程分析講解塊設備驅動程序的主要軟件結構層次、數據結構與重要函數接口、塊設備管理與操作,然后以RAM驅動程序為例,分析說明塊設備驅動程序的實現步驟與方法;第8章主要介紹網絡設備驅動設計方法,首先分析網絡設備驅動程序的數據結構、管理和控制操作方法等,然后以以太網設備驅動程序為例講解網絡設備的驅動程序結構與編寫方法;第9章主要講解Linux移植與系統啟動,該部分內容是Linux應用的一個難點,主要涉及系統啟動、內核裁剪、根文件系統移植等部分,搭建Linux程序正常運行的基本環境;第10章首先綜合分析程序、進程與線程的關系,講解線程管理方法;然后以OBU應用編程為例,講解Linux應用層軟件結構、開發的流程、進程與線程的創建方法、進程與線程的通信編程等,為讀者提供應用程序開發樣例。 在編排方面,整本書先分析講解模塊結構與原理,然后結合軟件結構分析講解實例,并將理論與應用實踐充分結合起來,讓初學者從粗到細、從原理到實例進行學習,這樣更容易掌握和理解嵌入式系統關鍵知識和程序編寫方法。 我們對參與資料整理的何浩、李振東、羅小龍、馬萬路、梁大彬、曾鑫、趙健寬、楊誼、王建軍、林家瑞、連皓寧、王章琦、李蔚敏等同學表示感謝!同時感謝重慶郵電大學自動化學院的領導、自動控制與機器人工程系的同事,感謝他們在本書編著過程中給出的寶貴建議和無私幫助。編著過程中,我們參考了大量網上資料和文獻,通過這些參考資料,我們能夠以淺顯的描述使本書內容在一些細節上更加完美,對這些文獻作者的支持和貢獻表示感謝! 雖然我們在編著過程中力求完美,但書中難免存在不足和錯誤,請讀者給予指正和建議。在此,我們表示衷心的感謝! |