當(dāng)前位置: 首頁 > 原創(chuàng)圖書 >《嵌入式Linux基礎(chǔ)教程》
· 多年嵌入式人才培養(yǎng)及項目研發(fā)經(jīng)驗總結(jié)
· 數(shù)百家企業(yè)嵌入式研發(fā)崗位人才需求匯總
· 數(shù)十所嵌入式專業(yè)大學(xué)院校教學(xué)現(xiàn)狀調(diào)研
· 側(cè)重實踐及案例分析并輔以代碼加以講解
本書是嵌入式 linux的經(jīng)典教程,介紹了引導(dǎo)裝入程序、系統(tǒng)初始化、文件系統(tǒng)、閃存和內(nèi)核、應(yīng)用程序調(diào)試技巧等,還講述了構(gòu)建 linux系統(tǒng)的工作原理,用于驅(qū)動不同體系結(jié)構(gòu)的配置,linux內(nèi)核源碼樹的特性,如何根據(jù)需求配制內(nèi)核運行時的行為,如何擴(kuò)展系統(tǒng)功能等內(nèi)容。更重要的是,本書闡述了如何修改系統(tǒng)使之滿足讀者自己的需求,使讀者能從中學(xué)習(xí)一些嵌入式工程中非常有用的提示和技巧。
本書適合 linux程序員閱讀,也可作為高等院校相關(guān)專業(yè)師生的參考讀物。
第1章 引言.
1.1 為什么使用linux
1.2 嵌入式linux現(xiàn)狀
1.3 開源和gpl
1.4 標(biāo)準(zhǔn)和相關(guān)機(jī)構(gòu)
1.4.1 lsb
1.4.2 osdl
1.5 小結(jié)
參考資源
第2章 嵌入式初體驗
2.1 需要嵌入式系統(tǒng)嗎
2.2 嵌入式系統(tǒng)剖析
2.2.1 典型嵌入式linux系統(tǒng)設(shè)置
2.2.2 啟動目標(biāo)板
2.2.3 啟動內(nèi)核
2.2.4 內(nèi)核初始化概述
2.2.5 第一個用戶空間進(jìn)程:init
2.3 存儲的思考
2.3.1 閃存
2.3.2 nand閃存
.2.3.3 閃存的用途
2.3.4 閃存文件系統(tǒng)
2.3.5 存儲器空間
2.3.6 運行上下文
2.3.7 進(jìn)程中的虛擬內(nèi)存
2.3.8 交叉開發(fā)環(huán)境
2.4 嵌入式linux的發(fā)行版
2.4.1 linux商業(yè)發(fā)行版
2.4.2 linux自定義發(fā)行版
2.5 小結(jié)
參考資源
第3章 處理器基礎(chǔ)
3.1 單機(jī)處理器
3.1.1 ibm 970fx
3.1.2 intel pentium m
3.1.3 freescale mpc7448
3.1.4 配套芯片組
3.2 集成化處理器:片上系統(tǒng)
3.2.1 powerpc
3.2.2 amcc powerpc
3.2.3 freescale powerpc
3.2.4 mips
3.2.5 broadcom mips
3.2.6 amd mips
3.2.7 其他類型的mips
3.2.8 arm
3.2.9 ti arm
3.2.10 freescale arm
3.2.11 intel arm xscale
3.2.12 其他arm
3.2.13 其他體系結(jié)構(gòu)
3.3 硬件平臺
3.3.1 compactpci
3.3.2 atca
3.4 小結(jié)
參考資源
第4章 linux內(nèi)核——不同視角
4.1 背景知識
4.1.1 內(nèi)核的版本
4.1.2 內(nèi)核源碼庫
4.2 linux內(nèi)核構(gòu)造
4.2.1 頂層資源目錄
4.2.2 編譯內(nèi)核
4.2.3 嚴(yán)格意義上的內(nèi)核:vmlinux
4.2.4 內(nèi)核映像組件
4.2.5 子目錄結(jié)構(gòu)
4.3 內(nèi)核構(gòu)建系統(tǒng)
4.3.1 .config文件
4.3.2 配置編輯器
4.3.3 makefile的目標(biāo)
4.3.4 內(nèi)核配置
4.3.5 自定義配置選項
4.3.6 內(nèi)核makefile
4.3.7 內(nèi)核文檔
4.4 獲取linux內(nèi)核
4.5 小結(jié)
參考資源
第5章 內(nèi)核初始化
5.1 合成內(nèi)核映像:piggy及其他
5.1.1 image目標(biāo)文件
5.1.2 體系結(jié)構(gòu)相關(guān)的目標(biāo)文件
5.1.3 第二階段引導(dǎo)裝入程序
5.1.4 引導(dǎo)信息
5.2 初始化控制流
5.2.1 內(nèi)核入口點:head.o
5.2.2 內(nèi)核啟動:main.c
5.2.3 體系結(jié)構(gòu)設(shè)置
5.3 內(nèi)核命令行處理
5.4 子系統(tǒng)初始化
5.5 init線程
5.5.1 通過initcall初始化
5.5.2 引導(dǎo)的最后步驟
5.6 小結(jié)
參考資源
第6章 系統(tǒng)初始化
6.1 根文件系統(tǒng)
6.1.1 fhs
6.1.2 文件系統(tǒng)布局
6.1.3 最小文件系統(tǒng)
6.1.4 根文件系統(tǒng)帶來的挑戰(zhàn)
6.1.5 試錯法
6.1.6 自動化文件系統(tǒng)構(gòu)建工具
6.2 內(nèi)核的最后引導(dǎo)過程
6.2.1 用戶空間下第一個程序
6.2.2 解決依賴
6.2.3 定制初始化進(jìn)程
6.3 init進(jìn)程
6.3.1 inittab
6.3.2 web服務(wù)器啟動腳本示例
6.4 初始ram磁盤
6.4.1 初始ram磁盤的目的
6.4.2 使用initrd引導(dǎo)
6.4.3 引導(dǎo)裝入程序?qū)τ趇nitrd的支持
6.4.4 initrd的奧妙所在:linuxrc文件
6.4.5 initrd探究
6.4.6 構(gòu)建initrd映像文件
6.5 使用initramfs
6.6 關(guān)機(jī)
6.7 小結(jié)
參考資源
第7章 引導(dǎo)裝入程序
7.1 引導(dǎo)裝入程序的作用
7.2 引導(dǎo)裝入程序的挑戰(zhàn)
7.2.1 dram控制器
7.2.2 閃存與ram
7.2.3 映像的復(fù)雜性
7.2.4 執(zhí)行上下文
7.3 通用的引導(dǎo)裝入程序:das u-boot
7.3.1 執(zhí)行上下文
7.3.2 u-boot命令集
7.3.3 網(wǎng)絡(luò)操作
7.3.4 存儲子系統(tǒng)
7.3.5 從磁盤啟動:u-boot
7.4 移植u-boot
7.4.1 為ep405開發(fā)板移植u-boot
7.4.2 u-boot的makefile配置目標(biāo)
7.4.3 ep405處理器初始化
7.4.4 特定開發(fā)板的初始化
7.4.5 移植概要
7.4.6 u-boot映像格式
7.5 其他引導(dǎo)裝入程序
7.5.1 lilo
7.5.2 grub..
7.5.3 其他引導(dǎo)裝入程序
7.6 小結(jié)
參考資源
第8章 設(shè)備驅(qū)動程序基礎(chǔ)
8.1 設(shè)備驅(qū)動程序基本概念
8.1.1 可加載模塊
8.1.2 設(shè)備驅(qū)動程序的體系結(jié)構(gòu)
8.1.3 最小設(shè)備驅(qū)動程序示例
8.1.4 模塊構(gòu)建的基礎(chǔ)設(shè)施
8.1.5 安裝設(shè)備驅(qū)動程序
8.1.6 加載設(shè)備驅(qū)動程序模塊
8.2 模塊實用程序
8.2.1 insmod
8.2.2 模塊參數(shù)
8.2.3 lsmod
8.2.4 modprobe
8.2.5 depmod
8.2.6 rmmod
8.2.7 modinfo
8.3 驅(qū)動程序方法
8.3.1 驅(qū)動程序文件系統(tǒng)操作
8.3.2 設(shè)備節(jié)點與mknod
8.4 匯總
8.5 設(shè)備驅(qū)動程序與gpl
8.6 小結(jié)
參考資源
第9章 文件系統(tǒng)
9.1 linux文件系統(tǒng)的概念
9.2 ext2文件系統(tǒng)
9.2.1 掛載文件系統(tǒng)
9.2.2 文件系統(tǒng)完整性檢查
9.3 ext3文件系統(tǒng)
9.4 reiserfs文件系統(tǒng)
9.5 jffs2文件系統(tǒng)
9.6 cramfs文件系統(tǒng)
9.7 nfs文件系統(tǒng)
9.8 偽文件系統(tǒng)
9.8.1 proc文件系統(tǒng)
9.8.2 sysfs文件系統(tǒng)
9.9 其他文件系統(tǒng)
9.10 構(gòu)建簡單的文件系統(tǒng)
9.11 小結(jié)
參考資源
第10章 mtd子系統(tǒng)
10.1 啟用mtd服務(wù)
10.2 mtd基礎(chǔ)知識
10.3 mtd分區(qū)
10.3.1 redboot分區(qū)表
10.3.2 內(nèi)核命令行分區(qū)
10.3.3 映射驅(qū)動程序
10.3.4 閃存芯片驅(qū)動程序
10.3.5 特定開發(fā)板的初始化
10.4 mtd實用程序
10.5 小結(jié)
參考資源
第11章 busybox
11.1 busybox簡介
11.2 busybox配置
11.3 busybox操作
11.3.1 busybox之init
11.3.2 rcs初始化腳本示例
11.3.3 在目標(biāo)平臺安裝busybox
11.3.4 busybox命令
11.4 小結(jié)
參考資源
第12章 嵌入式開發(fā)環(huán)境
12.1 交叉開發(fā)環(huán)境
12.2 主機(jī)系統(tǒng)需求
12.3 為目標(biāo)板提供服務(wù)
12.3.1 tftp服務(wù)器
12.3.2 bootp/dhcp服務(wù)器
12.3.3 nfs服務(wù)器
12.3.4 使用nfs為目標(biāo)板掛載根文件系統(tǒng)
12.3.5 u-boot nfs根掛載示例
12.4 小結(jié)
參考資源
第13章 開發(fā)工具
13.1 gdb
13.1.1 調(diào)試核心轉(zhuǎn)儲
13.1.2 調(diào)用gdb
13.1.3 gdb調(diào)試會話
13.2 ddd
13.3 cbrowser/cscope
13.4 追蹤和程序分析工具
13.4.1 strace
13.4.2 strace的變體
13.4.3 ltrace
13.4.4 ps
13.4.5 top
13.4.6 mtrace
13.4.7 dmalloc
13.4.8 內(nèi)核oops
13.5 二進(jìn)制實用程序
13.5.1 readelf
13.5.2 使用readelf檢查調(diào)試信息
13.5.3 objdump
13.5.4 objcopy
13.6 其他二進(jìn)制實用程序
13.6.1 strip
13.6.2 addr2line
13.6.3 strings
13.6.4 ldd
13.6.5 nm
13.6.6 prelink
13.7 小結(jié)
參考資源
第14章 內(nèi)核調(diào)試技術(shù)
14.1 內(nèi)核調(diào)試的難點
14.2 使用kgdb調(diào)試內(nèi)核
14.2.1 kgdb內(nèi)核配置
14.2.2 支持kgdb的內(nèi)核啟動
14.2.3 有用的內(nèi)核斷點
14.3 linux內(nèi)核的調(diào)試
14.3.1 gdb遠(yuǎn)程串口協(xié)議
14.3.2 調(diào)試優(yōu)化后的內(nèi)核代碼
14.3.3 gdb用戶定義命令
14.3.4 有用的內(nèi)核gdb宏
14.3.5 調(diào)試可加載模塊
14.3.6 printk調(diào)試
14.3.7 magic sysreq鍵
14.4 硬件輔助調(diào)試
14.4.1 使用jtag探測器對閃存編程
14.4.2 用jtag探測器進(jìn)行調(diào)試
14.5 無法啟動時
14.5.1 早期串口調(diào)試輸出
14.5.2 轉(zhuǎn)儲printk日志緩沖區(qū)
14.5.3 kgdb捕捉崩潰
14.6 小結(jié)
參考資源
第15章 調(diào)試嵌入式linux應(yīng)用程序
15.1 目標(biāo)機(jī)調(diào)試
15.2 遠(yuǎn)程(交叉)調(diào)試
15.3 使用共享庫進(jìn)行調(diào)試
15.4 多任務(wù)調(diào)試
15.4.1 多進(jìn)程的調(diào)試
15.4.2 多線程應(yīng)用程序的調(diào)試
15.4.3 引導(dǎo)裝入程序/閃存代碼的調(diào)試
15.5 遠(yuǎn)程調(diào)試的附加選項
15.5.1 串行端口調(diào)試
15.5.2 綁定到正在運行的進(jìn)程
15.6 小結(jié)
參考資源
第16章 移植linux
16.1 linux源代碼的組織
16.2 為開發(fā)板定制linux
16.2.1 前提和假設(shè)
16.2.2 定制內(nèi)核初始化
16.2.3 靜態(tài)內(nèi)核命令行
16.3 平臺初始化
16.3.1 早期變量訪問
16.3.2 開發(fā)板信息結(jié)構(gòu)
16.3.3 機(jī)器相關(guān)的調(diào)用
16.4 匯總
16.5 小結(jié)
參考資源
第17章 linux與實時
17.1 什么是實時
17.1.1 軟實時
17.1.2 硬實時
17.1.3 linux 調(diào)度
17.1.4 中斷延遲
17.2 內(nèi)核搶占
17.2.1 搶占的缺陷
17.2.2 搶占模型
17.2.3 smp內(nèi)核
17.2.4 搶占延遲源
17.3 實時內(nèi)核補(bǔ)丁
17.3.1 實時的特性
17.3.2 o(1) 調(diào)度器
17.3.3 創(chuàng)建實時進(jìn)程
17.3.4 臨界區(qū)管理
17.4 調(diào)試實時內(nèi)核
17.4.1 軟鎖檢測
17.4.2 搶占調(diào)試
17.4.3 調(diào)試喚醒時間
17.4.4 喚醒延遲歷史
17.4.5 中斷響應(yīng)時間
17.4.6 中斷響應(yīng)歷史
17.4.7 延遲跟蹤
17.4.8 調(diào)試死鎖環(huán)境
17.4.9 鎖模式的運行時控制權(quán)
17.5 小結(jié)
參考資源
附錄a 可配置的u-boot命令
附錄b busybox命令
附錄c sdram接口的注意事項
附錄d 開源項目資源
附錄e bdi-2000配置文件示例...