预购商品
书目分类
特别推荐
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 小結
作者簡介 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」部落格當中,了解他的工作內容。
客服公告
热门活动
订阅电子报