譯者序
前言
第一部分 入 門 指 導
第1章 嵌入式和實時空間 / 2
1.1 什麼是嵌入式 / 2
1.2 什麼是實時 / 3
1.3 為什麼Linux適用 / 3
1.3.1 開源 / 4
1.3.2 移植和定製 / 5
1.4 哪裏用嵌入式Linux / 5
1.5 開源協議 / 6
1.6 資源 / 8
第2章 安裝Linux / 9
2.1 發行版 / 9
2.1.1 Debian GNU/Linux / 10
2.1.2 Fedora / 10
2.1.3 Red Hat企業版Linux / 11
2.1.4 SUSE / 11
2.1.5 Ubuntu / 11
2.2 硬件需求 / 12
2.3 安裝方案 / 12
2.3.1 單機版 / 12
2.3.2 雙啓動 / 12
2.3.3 虛擬化 / 15
2.4 DVD 還是激活CD / 15
2.5 安裝過程 / 15
2.5.1 磁盤分區 / 16
2.5.2 包的選擇 / 17
2.6 資源 / 18
第3章 Linux入門 / 19
3.1 運行Linux——KDE / 19
3.1.1 文件管理器 / 20
3.1.2 shell 窗口 / 20
3.2 Linux屬性 / 21
3.3 保護模式架構 / 22
3.3.1 實模式 / 22
3.3.2 保護模式 / 23
3.3.3 平麵與分段的存儲器模型 / 24
3.3.4 分頁 / 24
3.4 Linux進程模型 / 25
3.4.1 fork()函數 / 25
3.4.2 execve()函數 / 27
3.5 Linux文件係統 / 27
3.5.1 文件權限 / 28
3.5.2 “根”用戶 / 29
3.5.3 /proc文件係統 / 29
3.5.4 文件係統等級標準 / 30
3.5.5 掛載文件係統 / 32
3.6 係統配置 / 33
3.7 shell / 33
3.8 獲得幫助 / 36
3.9 資源 / 37
第4章 主機開發環境 / 38
4.1 交叉開發工具——GNU工具鏈 / 38
4.1.1 GCC / 38
4.1.2 make / 39
4.1.3 GDB / 40
4.2 安裝軟件 / 40
4.2.1 DVD上有什麼 / 40
4.2.2 安裝交叉工具鏈 / 41
4.2.3 安裝根文件係統 / 42
4.3 終端仿真器minicom / 42
4.4 網絡 / 44
4.4.1 網絡地址 / 44
4.4.2 無綫怎麼樣 / 46
4.4.3 網絡文件係統 / 47
4.4.4 普通文件傳輸協議 / 48
4.5 資源 / 49
第5章 硬件 / 50
5.1 嵌入式硬件 / 50
5.2 ARM單闆計算機 / 50
5.3 其他的闆怎麼樣 / 51
5.3.1 BeagleBoard / 51
5.3.2 Gumstix / 52
5.3.3 Raspberry Pi / 53
5.4 設置Mini2440 / 53
5.5 Flash存儲器和文件係統 / 54
5.5.1 Flash存儲器——NAND和NOR / 54
5.5.2 Flash中的根文件係統 / 55
5.6 闆的準備工作 / 56
5.6.1 例程 / 56
5.6.2 factory_images / 57
5.6.3 腳本文件 / 57
5.6.4 過程 / 58
5.6.5 最後幾步 / 60
5.6.6 哪裏會齣錯 / 61
5.7 boot loader / 61
5.8 資源 / 62
第6章 Eclipse 集成開發環境/ 63
6.1 概述 / 63
6.1.1 插件 / 65
6.1.2 工作颱 / 66
6.2 安裝 / 67
6.3 使用Eclipse / 67
6.4 C開發環境——CDT / 68
6.4.1 創建一個新工程 / 68
6.4.2 給工程添加源代碼 / 69
6.4.3 編程助手 / 70
6.4.4 代碼模闆 / 71
6.4.5 自動補齊 / 71
6.5 程序 / 71
6.6 生成工程 / 72
6.7 使用CDT調試 / 72
6.7.1 調試視圖 / 74
6.7.2 變量視圖 / 75
6.7.3 斷點視圖 / 75
6.7.4 存儲器視圖 / 75
6.8 完成調試 / 76
6.9 總結 / 76
6.10 資源 / 76
第二部分 交叉開發環境中的應用編程
第7章 從用戶空間訪問硬件 / 78
7.1 迴顧 / 78
7.2 ARM I/O架構 / 78
7.3 我們的第一個程序——從Linux訪問I/O / 80
7.3.1 創建一個工程 / 80
7.3.2 目標執行環境 / 81
7.4 led 程序 / 82
7.5 一個數據采集的例子 / 84
7.6 資源 / 86
第8章 調試嵌入式軟件 / 87
8.1 使用Eclipse進行遠程調試 / 87
8.2 thermostat / 91
8.3 主機工作站作為調試環境 / 92
8.4 調試器服務框架(DSF) / 96
8.4.1 安裝SSH / 96
8.4.2 為根添加一個口令 / 98
8.4.3 配置RSE / 98
8.4.4 使用RSE調試 / 100
8.5 資源 / 101
第9章 Posix 綫程 / 102
9.1 綫程 / 103
9.2 同步——互斥量 / 105
9.2.1 互斥量屬性 / 106
9.2.2 解決資源共享問題而引入的問題——優先級倒置 / 107
9.3 通信——條件變量 / 109
9.4 綫程終止和取消 / 109
9.5 Pthread實現 / 111
9.6 更新thermostat / 113
9.6.1 Linux設備驅動 / 113
9.6.2 底層I/O API / 114
9.6.3 thermostat.c中需要的改變 / 115
9.7 調試多綫程程序 / 116
9.8 資源 / 116
第10章 嵌入式網絡 / 117
10.1 Sockets / 117
10.1.1 服務器進程 / 118
10.1.2 客戶進程 / 118
10.1.3 socket 屬性 / 119
10.2 一個簡單的例子 / 119
10.2.1 服務器 / 119
10.2.2 客戶 / 120
10.3 遠程thermostat / 121
10.4 嵌入式網絡服務器 / 123
10.4.1 HTTP的背景 / 123
10.4.2 使用瞭網絡的thermostat / 124
10.4.3 動態網絡內容 / 125
10.4.4 錶單和POST方法 / 126
10.4.5 生成和嘗試 / 126
10.5 一個“真正的”網絡服務器——boa / 127
10.6 嵌入式E-mail / 128
10.7 其他應用級協議 / / 131
10.8 資源 / 131
第11章 配置和生成內核 / 132
11.1 開始 / 132
11.1.1 內核版本編號 / 133
11.1.2 內核源樹 / 133
11.2 內核makefile / 135
11.3 修補內核 / 135
11.4 配置內核——make config、menuconfig、xconfig / 136
11.4.1 xconfig 選項 / 140
11.4.2 .config 文件 / 140
11.5 錶象背後——真正發生瞭什麼 / 141
11.6 生成內核 / 142
11.7 引導新內核 / 143
11.8 資源 / 144
第12章 內核模塊和設備驅動 / 145
12.1 內核模塊 / 145
12.1.1 一個模塊的例子 / 146
12.1.2 破壞內核 / 147
12.1.3 內核模塊和GPL / 148
12.1.4 生成內核模塊 / 148
12.1.5 模塊的作用 / 149
12.2 什麼是設備驅動 / 150
12.3 Linux設備驅動 / 151
12.3.1 /dev目錄 / 151
12.3.2 底層用戶空間I/O API / 152
12.3.3 內部驅動結構 / 152
12.3.4 驅動數據結構 / 152
12.3.5 init()和exit() / 153
12.3.6 open()和release() / 154
12.3.7 read()和write() / 154
12.3.8 生成和運行驅動 / 155
12.4 調試內核代碼 / 156
12.4.1 printk / 156
12.4.2 /proc文件 / 157
12.5 處理中斷 / 158
12.5.1 注冊中斷handler / 159
12.5.2 探測中斷 / 160
12.5.3 延遲處理——“bottom half” / 161
12.6 將你的驅動生成至內核 / 162
12.7 資源 / 164
第三部分 組件和工具
第13章 BusyBox和Linux初始化 / 166
13.1 BusyBox簡介 / 166
13.2 配置和安裝BusyBox / 167
13.2.1 BusyBox設置 / 169
13.2.2 小程序 / 169
13.2.3 生成和安裝 / 170
13.3 使用BusyBox / 171
13.4 thermostat 顯示示例 / 171
13.4.1 ANSI終端Escape 序列 / 172
13.4.2 thermostat 顯示 / 172
13.4.3 ncurses庫 / 173
13.5 用戶空間初始化 / 173
13.5.1 第一步boot loader / 173
13.5.2 u-boot / 173
13.5.3 Linux內核 / 174
13.5.4 init進程 / 174
13.6 資源 / 175
第14章 u-boot boot loader和準備發布 / 176
14.1 u-boot / 176
14.1.1 背景 / 176
14.1.2 安裝和配置u-boot / 177
14.1.3 測試一個新的u-boot / 178
14.1.4 通過JTAG重新編程NOR / 178
14.2 創建一個flash文件係統 / 179
14.2.1 關於flash分區的更多考慮 / 180
14.2.2 扁平設備樹 / 181
14.3 資源 / 182
第15章 源代碼控製——git / 183
15.1 背景 / 183
15.2 git介紹 / 184
15.2.1 文件狀態和生命周期 / 186
15.2.2 分支和閤並 / 187
15.3 配置git / 188
15.4 圖形化git / 189
15.5 資源 / 192
第16章 build工具 / 193
16.1 Buildroot / 193
16.2 開源嵌入式 / 195
16.2.1 開始 / 196
16.2.2 個人觀點 / 197
16.3 安卓 / 197
16.3.1 應用開發 / 198
16.3.2 平颱開發 / 199
16.4 總結 / 199
16.5 資源 / 200
附錄A u-boot命令 / 201
附錄B 為什麼軟件不應該有版權 / 207
· · · · · · (
收起)