精通嵌入式Linux程式設計(暢銷回饋版) | 拾書所

精通嵌入式Linux程式設計(暢銷回饋版)

$ 558 元 原價 620
內容簡介


精通嵌入式Linux程式設計(暢銷回饋版)


內容簡介

☛☛博碩嚴選!首版熱銷數千本,佳評如潮!回饋發行!☛☛

♛Yocto Project開發者兼Linux Foundation成員~~Richard Purdie推薦
♛駕馭Linux系統,隨心所欲創造出靈活又穩健的嵌入式裝置

本書的內容將帶領你遍覽開發週期的每個環節,並深入環節中的每個階段,說明階段中的元件以及可利用的工具。本書將一路從工具鏈、啟動載入器、Linux內核,再到如何設置一個根目錄檔案系統,以及學習使用Buildroot與Yocto Project這兩款在開發社群中最常見的組建系統,加速並簡化你的開發流程。在此基礎之上,我們將一同探討如何妥善運用NAND/NOR以及管理型eMMC的快閃記憶體特性,以便延長裝置的使用生命與建立可靠的線上更新機制。接著,會討論執行緒的使用情境,這些議題將大大影響成品的效能與回應能力。最後,我們將一同學習perf與ftrace的使用方式,了解對應用程式與內核進行剖析和追蹤的方法。

【適用讀者】
本書的內容適合那些在嵌入式系統領域上已經有所發展的Linux開發者與系統工程師,幫助他們進一步建立出最佳化的裝置。閱讀本書之前,需要具備基礎的C程式語言開發能力,以及對系統程式設計的相關經驗。

【你能夠從本書學習到】
◎了解Linux內核所扮演的角色,對應用程式的定位有所認知。
◎利用Buildroot與Yocto Project,快速有效率地建立出嵌入式Linux系統。
◎使用U-Boot創造出客製化的啟動載入器。
◎透過perf與ftrace來找出效能上的瓶頸。
◎熟悉硬體結構樹的使用,替設備添加新的硬體裝置。
◎開發出可與Linux裝置驅動程式互動的應用程式。
◎利用POSIX標準,設計多執行緒的應用程式。
◎在即時系統中進行量測,修改Linux內核降低延遲。







作者簡介


作者簡介

Chris Simmonds

Chris Simmonds出身於英格蘭南部,身為一名軟體諮商與指導者,他從1990年代末期開始,就持續將Linux使用在嵌入式系統當中。這時他正投身於多項會令人大開眼界的專案,包括3D相機、智慧型體重計、各種機上盒與家用路由器,甚至還有一項專案是巨型的步行機器人。
他也是各種開源軟體與嵌入式大會中的常客,其中包括Embedded Linux Conference、Embedded World,還有Android Builder’s Summit。從2002年開始,他便持續主辦嵌入式Linux的課程與工作坊,而從2010年開始,更跨足到嵌入式Android的領域。他已為許多知名公司開辦過上百場的講座。你也可以到www.2net.co.uk上面的「Inner Penguin」部落格當中,了解他的工作內容。








內容目錄


目錄

Chapter 01:一切由此開始
1.1 選擇正確的作業系統
1.2 源頭
1.3 專案的生命週期
1.4 開放原始碼
1.5 嵌入式Linux的硬體
1.6 本書會用到的硬體
1.7 本書會用到的軟體
1.8 小結

Chapter 02:工具鏈
2.1 什麼是工具鏈?
2.2 工具鏈的類型─原生或是跨平台
2.3 選擇C 語言的函式庫
2.4 尋找工具鏈
2.5 剖析工具鏈
2.6 工具鏈裡的其他工具
2.7 深入C語言函式庫元件
2.8 連結函式庫:靜態和動態的連結
2.9 跨平台編譯的技巧
2.10 跨平台編譯時的問題
2.11 小結

Chapter 03:啟動載入器
3.1 啟動載入器是做什麼的?
3.2 啟動程序
3.3 以UEFI韌體啟動
3.4 從啟動載入器到內核
3.5 硬體結構樹
3.6 選擇啟動載入器
3.7 U-Boot
3.8 Barebox
3.9 小結

Chapter 04:移植與配置內核
4.1 內核是做什麼的?
4.2 選擇內核
4.3 組建內核
4.4 編譯
4.5 清理內核原始碼
4.6 啟動內核
4.7 把Linux移植到新的機板上
4.8 延伸閱讀
4.9 小結

Chapter 05:建立根目錄檔案系統
5.1 根目錄檔案系統中都有些什麼?
5.2 根目錄檔案系統中的程式
5.3 根目錄檔案系統中的函式庫
5.4 裝置節點
5.5 proc 與sysfs 檔案系統
5.6 內核模組
5.7 把根目錄檔案系統佈署到目標環境上
5.8 建立啟動用模擬磁碟
5.9 init程式
5.10 配置使用者帳號
5.11 啟用常駐服務
5.12 管理裝置節點的好辦法
5.13 配置網路
5.14 以裝置表建立檔案系統映像檔
5.15 用NFS掛載根目錄檔案系統
5.16 用TFTP來載入內核
5.17 延伸閱讀
5.18 小結

Chapter 06:選擇組建系統
6.1 別再手工打造嵌入式Linux6
6.2 組建系統
6.3 套件類型與套件管理工具
6.4 Buildroot
6.5 Yocto Project
6.6 延伸閱讀
6.7 小結

Chapter 07:建立儲存空間的方式
7.1 儲存空間的選擇
7.2 從啟動載入器存取快閃記憶體
7.3 從Linux 存取快閃記憶體
7.4 用於快閃記憶體的檔案系統
7.5 適用NOR 與NAND 的檔案系統
7.6 適用管理型快閃記憶體的檔案系統
7.7 唯讀的壓縮檔案系統
7.8 暫存檔案系統
7.9 將根目錄檔案系統設為唯讀
7.10 選擇檔案系統
7.11 上線後的更新
7.12 延伸閱讀
7.13 小結

Chapter 08:裝置驅動程式
8.1 裝置驅動程式扮演的角色
8.2 字元裝置
8.3 區塊裝置
8.4 網路裝置
8.5 在執行期獲取驅動資訊
8.6 找到適用的裝置驅動程式
8.7 用戶空間中的裝置驅動程式
8.8 開發內核裝置驅動程式
8.9 載入內核模組
8.10 探索硬體配置
8.11 延伸閱讀
8.12 小結

Chapter 09:動起來吧!init程式
9.1 在內核啟動之後
9.2 init程式
9.3 BusyBox的init
9.4 System V的init
9.5 systemd
9.6 延伸閱讀
9.7 小結

Chapter 10:程序與執行緒
10.1 要用程序還是執行緒?
10.2 程序
10.3 執行緒
10.4 排程管理
10.5 延伸閱讀
10.6 小結

Chapter 11:記憶體管理
11.1 虛擬記憶體的二三事
11.2 記憶體在內核空間的情形
11.3 記憶體在用戶空間的情形
11.4 程序對記憶體的對映
11.5 置換空間
11.6 用mmap來做記憶體對映
11.7 應用程式用了多少記憶體?
11.8 個別程序的記憶體使用情形
11.9 偵測記憶體洩漏
11.10 記憶體不足
11.11 延伸閱讀
11.12 小結

Chapter 12:以GDB除錯
12.1 GNU的除錯器
12.2 除錯的準備
12.3 用GDB對應用程式除錯
12.4 用gdbserver進行遠端除錯
12.5 開始除錯
12.6 對共享函式庫除錯
12.7 即時除錯
12.8 對分支與執行緒除錯
12.9 記憶檔
12.10 GDB的使用者介面
12.11 對內核程式碼除錯
12.12 延伸閱讀
12.13 小結

Chapter 13:剖析與追蹤
13.1 觀測者效應
13.2 開始剖析
13.3 用top進行剖析
13.4 介紹perf剖析工具
13.5 其他剖析工具:OProfile與gprof
13.6 追蹤事件
13.7 介紹Ftrace追蹤工具
13.8 使用LTTng
13.9 用Valgrind對應用程式進行剖析
13.10 Callgrind
13.11 Helgrind
13.12 用strace顯示系統呼叫
13.13 小結

Chapter 14:即時系統開發
14.1 什麼是即時性?
14.2 導致不確定的因素
14.3 排程延遲
14.4 對內核插隊
14.5 即時系統版本的Linux內核(PREEMPT_RT)
14.6 以執行緒處理中斷訊號
14.7 允許插隊的內核資源鎖
14.8 獲取PREEMPT_RT修補程式
14.9 高精確度的計時器
14.10 避免即時應用程式發生分頁錯誤
14.11 摒除中斷
14.12 量測排程延遲
14.13 延伸閱讀
14.14 小結







ISBN: 9789864344444

Brand Slider