嵌入式Linux編程

《嵌入式Linux編程》是2017年機械工業出版社出版圖書,作者[英] 克里斯·西蒙茲(Chris Simmonds)。

基本信息

作者:[英] 克里斯·西蒙茲(Chris Simmonds) 著
ISBN(書號):978-7-111-56128-6
叢書名:Linux/Unix技術叢書
出版日期:2017-04
版次:1/1
開本:16
定價:¥79.00

內容簡介

本書引導你遍歷整個嵌入式Linux產品的周期,並提供在每個階段可用組件和選項的深入描述。作者首先介紹工具鏈、引導載入程式、Linux核心和配置根檔案系統的相關知識,然後講解如何使用兩個最常用的構建系統,即Buildroot和Yocto項目,以加快和簡化開發過程,接著介紹如何充分使用raw NAND/NOR快閃記憶體和託管快閃記憶體eMMC晶片,包括增加器件壽命的機制以及進行可靠的現場更新,探討POSIX執行緒的使用,這對最終設備的回響能力和性能有著很大的影響。本書的結尾部分探討使用perf與Ftrace剖析和跟蹤應用程式以及核心代碼的技術。

圖書目錄

第1章 概述 1
1.1 選擇合適的作業系統 2
1.2 參與者 3
1.3 項目生命周期 4
1.4 開放源碼 5
1.5 嵌入式Linux系統硬體 6
1.6 本書使用的硬體 7
1.7 本書使用的軟體 9
1.8 總結 9
第2章 學習工具鏈 10
2.1 工具鏈是什麼 10
2.2 工具鏈類型:本地工具鏈和交叉工具鏈 11
2.3 選擇C庫 13
2.4 尋找工具鏈 14
2.5 工具鏈解析 17
2.6 工具鏈中的其他工具 20
2.7 查看C庫的組件 21
2.8 程式庫:靜態和動態連結 21
2.9  交叉編譯藝術 24
2.10 交叉編譯的問題 28
2.11 總結 29
第3章 引導載入程式 30
3.1 引導載入程式都做了些什麼 30
3.2 引導序列 31
3.3 使用UEFI固件引導 32
3.4 從引導載入程式到核心 33
3.5 設備樹介紹 34
3.6 選擇引導載入程式 38
3.7 U-Boot 39
3.8 Barebox 49
3.9 總結 51
第4章 移植與配置核心 52
4.1 核心做了什麼 52
4.2 選擇核心 53
4.3 核心構建 55
4.4 編譯 60
4.5 清理核心源 63
4.6 啟動你的核心 63
4.7 將Linux移植到新板上 66
4.8 延伸閱讀 69
4.9 總結 69
第5章 構建根檔案系統 71
5.1 根檔案系統是什麼 71
5.2 根檔案系統的程式 75
5.3 根檔案系統庫 78
5.4 設備節點 79
5.5 proc與sysfs檔案系統 80
5.6 核心模組 81
5.7 把根檔案系統轉移到目標 81
5.8 創建啟動記憶體磁碟 82
5.9 init程式 85
5.10 配置用戶賬號 86
5.11 啟動守護進程 87
5.12 管理設備節點的更好方法 88
5.13 配置網路 89
5.14 藉助設備表創建檔案系統映像 90
5.15 使用NFS掛載根檔案系統 92
5.16 使用TFTP載入核心 94
5.17 延伸閱讀 95
5.18 總結 95

第6章 選擇構建系統 96

6.1 不再手動創建嵌入式Linux 96

6.2 構建系統 96

6.3 包格式和包管理器 98

6.4 Buildroot 98

6.5 Yocto項目 104

6.6 延伸閱讀 116

6.7 總結 116

第7章 創建存儲策略 117

7.1 存儲器選擇 117

7.2 從引導載入程式訪問快閃記憶體 121

7.3 從Linux中訪問快閃記憶體 122

7.4 快閃記憶體檔案系統 127

7.5 NOR和NAND快閃記憶體的檔案系統 128

7.6 託管快閃記憶體的檔案系統 134

7.7 唯讀壓縮檔案系統 138

7.8 臨時檔案系統 138

7.9 使根檔案系統為唯讀 139

7.10 檔案系統選擇 140

7.11 現場更新 140

7.12 延伸閱讀 142

7.13 總結 143

第8章 設備驅動程式介紹 144

8.1 設備驅動程式的作用 144

8.2 字元設備 145

8.3 塊設備 147

8.4 網路設備 147

8.5 在運行時尋找驅動程式 149

8.6 找到正確的設備驅動程式 153

8.7 用戶空間中的設備驅動程式 153

8.8 編寫核心設備驅動程式 158

8.9 載入核心模組 163

8.10 查找硬體配置 163

8.11 延伸閱讀 166

8.12 總結 167

第9章 啟動初始化程式 168

9.1 在核心啟動後 168

9.2 初始化程式簡介 169

9.3 BusyBox init 169

9.4 System V init 171

9.5 systemd 176

9.6 延伸閱讀 181

9.7 總結 181

第10章 學習進程和執行緒 182

10.1 進程還是執行緒 182

10.2 進程 183

10.3 執行緒 191

10.4 調度 196

10.5 延伸閱讀 200

10.6 總結 200

第11章 記憶體管理 201

11.1 虛擬記憶體基礎 201

11.2 核心空間記憶體布局 202

11.3 用戶空間記憶體布局 205

11.4 進程記憶體映射 206

11.5 交換 207

11.6 用mmap映射記憶體 208

11.7 我的應用程式使用了多少記憶體 209

11.8 每個進程的記憶體使用情況 210

11.9 識別記憶體泄漏 213

11.10 記憶體耗盡 215

11.11 延伸閱讀 217

11.12 總結 217

第12章 使用GDB調試 218

12.1 GNU調試器:GDB 218

12.2 準備調試 218

12.3 使用GDB調試應用程式 219

12.4 使用gdbserver遠程調試 219

12.5 開始調試 221

12.6 調試共享庫 224

12.7 即時調試 225

12.8 調試分叉和執行緒 226

12.9 核心檔案 226

12.10 GDB用戶界面 228

12.11 調試核心代碼 230

12.12 延伸閱讀 237

12.13 總結 237

第13章 剖析和跟蹤 238

13.1 觀察者效應 238

13.2 開始剖析 239

13.3 使用top進行剖析 240

13.4 介紹perf 241

13.5 其他剖析器:OProf?ile和gprof 245

13.6 跟蹤事件 247

13.7 介紹Ftrace 247

13.8 使用LTTng 252

13.9 使用Valgrind剖析應用程式 256

13.10 Callgrind 256

13.11 Helgrind 256

13.12 使用strace顯示系統調用 257

13.13 總結 259

第14章 實時編程 260

14.1 什麼是實時性 260

14.2 確認非確定性的來源 262

14.3 理解調度延遲 263

14.4 核心搶占 263

14.5 實時Linux核心(PREEMPT_RT) 264

14.6 執行緒化中斷處理程式 264

14.7 可搶占的核心鎖 266

14.8 獲得PREEMPT_RT補丁 266

14.9 高精度定時器 267

14.10 在實時套用中避免頁面錯誤 268

14.11 中斷禁止 269

14.12 測量調度延遲 269

14.13 延伸閱讀 273

14.14 總結 273

相關詞條

相關搜尋

熱門詞條

聯絡我們