第1章linux內核2簡介
1.1系統調用接口2
1.1.1 linux系統調用2
1.1.2用戶編程接口2
1.1.3系統調用和服務例程3之間的對應關系
1.1.4系統調用過程3
1.1.5系統調用傳遞的參數4
1.2流程管理4
1.2.1進程4
1.2.2流程描述符5
1.2.3流程狀態6
1.2.4進程調度6
1.2.5進程地址空間8
1.3內存管理10
1.3.1內存管理技術
1.3.2存儲區管理12
1.3.3內核13中獲取內存的幾種方法
1.4虛擬文件系統14
1.4.1虛擬文件系統函數14
1.4.2文件系統註冊15
1.4.3安裝和卸載文件系統15
1.5設備驅動程序17
1.5.1字符設備驅動程序17
1.5.2設備驅動18
1.5.3網絡設備驅動程序21
1.5.4內存和i/o操作22
1.6匯總23
第2章構建嵌入式linux開發環境24
2.1虛擬機和linux安裝24
2.1.1安裝虛擬機24
2.1.2獨立隔墻安裝系統30
2.1.3虛擬機與主機之間的通信設置31
2.1.4 vmware tools工具安裝33
2.1.5虛擬機和主機之間的文件共享* * * 35
2.1.6虛擬機和主機之間的文件傳輸36
2.2交叉編譯器工具38
交叉編譯器工具安裝38
2.2.2交叉編譯器測試43
2.3超級終端和minicom 44
超級終端軟件安裝44
2.3.2 minicom使用45
2.3.3安全使用48
2.4內核、文件系統加載工具48
2.4.1寫引導裝載程序48
內核和文件系統下載52
2.4.3應用程序和文件傳輸54
2.5在開發中使用網絡文件系統(NFS)56
2.5.1虛擬機設置56
2.5.2虛擬機的ip地址設置56
2.5.3驗證網絡連接59
2.5.4設置* * *享受目錄59
2.5.5啟動nfs服務60
2.5.6修改* * *配置後的61
2.5.7安裝nfs 61。
2.5.8雙網卡掛載nfs 61。
2.6摘要62
第二篇系統移植技術
第3章引導程序移植64
3.1引導加載程序64簡介
3.1.1 boot loader與嵌入式linux系統的關系64
3.1.2引導加載程序基本概念64
3.1.3引導加載程序啟動過程66
3.2引導加載程序的u-boot 67
3.2.1 u型靴的優勢67
3 . 2 . 2 U-boot 68的主要功能
u-boot目錄結構68
3.3 u-boot移植過程69
環境配置69
3.3.2修改CPU/arm920t/start.s70
3.3.4特定於平臺的修改79
3.3.5其他部分修改為81。
3 . 3 . 6 u-boot 84的編譯
3.4引導裝載程序的vivi 85
3.4.1薇薇簡介85
3.4.2 vivi配置和編譯85
代碼分析88
3.5薇薇的行動88
3.5.1引導程序啟動階段1 89
3.5.2引導加載程序啟動階段II 95
3.6摘要95
第四章linux內核的裁剪和移植96
4.1 linux內核結構96
4.1.1內核96的主要組件
4.1.2內核源碼目錄介紹97
4.2內核配置選項99
4.2.1壹般選項99
4.2.2內核模塊加載模式支持選項100。
4.2.3與系統調用、類型、特征和啟動相關的選項101
4.2.4網絡協議支持相關選項102。
4.2.5設備驅動程序支持相關選項102
4.2.6文件系統類型支持相關選項103。
4.2.7安全相關選項104
4.2.8其他選項104
4.3內核切割和編譯105
4.3.1安裝內核源代碼105
4.3.2檢查編譯環境設置105。
4.3.3配置內核106
4.3.4編譯內核115
4.4內核鏡像文件移植到arm板116。
4.4.1移植制劑116
4.4.2燒寫系統118
4.5內核升級121
4.5.1準備升級內核文件121。
4.5.2移植流程122
4.6摘要125
第五章制作嵌入式文件系統126
5.1文件系統選擇126
5.1.1閃存硬件方案比較126
5.1.2嵌入式文件系統的層次結構127
5.2基於flash 127的文件系統
5.2.1 jffs文件系統(日誌閃存文件系統)128。
5.2.2 yaffs文件系統(又壹個flash文件系統)130。
5.2.3 cramfs文件系統(壓縮ROM文件系統)133。
5.2.4 romfs文件系統(rom文件系統)134。
5.3基於ram 135的文件系統
5.4制作文件系統135
5.4.1制作內存磁盤文件系統136
5.4.2制作yaffs2文件系統144
5.4.3制作jffs2文件系統150
5.4.4制作其他文件系統152
5.5摘要153
第三篇系統移植和驅動
第六章液晶驅動程序的移植156
6.1了解lcd 156的相關硬件原理
6.1.1 lcd概述156
6.1.2液晶控制器157
6.1.3液晶控制器框圖157
6.1.4液晶控制器操作158
6.1.5 lcd控制寄存器163
6.2 lcd參數設置166
6.3核心lcd驅動機制167
6.3.1幀緩沖區167概述
6.3.2幀緩沖區設備驅動結構167
6.4 Linux 2 . 6 . 25 LCD驅動程序源代碼分析171
6 . 4 . 1 LCD驅動開發的主要工作171
6.4.2 s3c2410fb_init()函數分析172
6.4.3 s3c2410fb_probe()函數分析173
6.4.4 s3c2410fb_remove()函數分析178
6.5在內核中移植lcd驅動程序179
6.5.1 lcd硬件電路圖179
6.5.2修改lcd源代碼179。
6.5.3配置內核184
6.6摘要187
第七章觸摸屏驅動程序的移植188
7.1觸摸屏概述188
7.1.1觸摸屏188工作原理
7.1.2觸摸屏的主要類型188
7.2 s3c2440 adc接口采用191。
7.2.1 s3c2440觸摸屏界面概述191
7.2.2 s3c2440觸摸屏操作界面192
7.3 2.6內核觸摸屏驅動源代碼分析(s3c2410_ts.c源代碼分析)196
7.4 Linux內核輸入子系統201介紹
輸入子系統202概述
輸入設備結構202
7.4.3輸入鏈接205的創建過程
7.4.4使用輸入子系統206
7.4.5編寫輸入設備驅動程序時要做的工作208
7.5觸摸屏驅動移植和內核編譯209
7.5.1修改初始化源代碼209
7.5.2修改硬件驅動源代碼s3c2440_ts.c 211。
7.5.3修改kconfig和makefile 213。
7.5.4配置編譯內核214
7.5.5觸摸屏測試程序設計215
7.6匯總216
第八章usb設備驅動移植217
8.1 usb協議217
8.1.1 usb協議217的主要系統組件。
8.1.2總線物理拓撲結構219
8.1.3 usb設備,配置,接口,端點219
8.1.4 usb設備狀態222
8.1.5 usb枚舉過程223
8.1.6 usb請求塊(urb) 226
8.2 usb主機驅動程序230
8.2.1 usb主機驅動程序結構和功能230
8.2.2主機控制器驅動程序(usb_hcd) 231
8.2.3 ohci主機控制器驅動程序233
8.2.4 s3c24xx ohci主機控制器驅動程序示例234
8.3 usb設備驅動程序237
8.3.1 usb框架程序分析237
8 . 3 . 2 USB驅動程序移植的時鐘設置241
8.4 usb鼠標和鍵盤驅動程序242
8.4.1 usb鼠標驅動代碼分析242
8.4.2 usb鍵盤驅動程序代碼分析245
8.4.3將usb鼠標和鍵盤驅動程序248添加到內核中。
8.5 USB閃存驅動器249
8.5.1內核配置249
8.5.2移植和測試250
8.6摘要252
第九章網卡驅動移植253
9.1以太網概述253
9.1.1以太網連接253
9.1.2以太網技術概述254
9.1.3以太網256的幀結構
9.2網絡設備驅動程序架構258
9.2.1嵌入式linux網絡驅動簡介258
9.2.2 linux網絡設備驅動程序架構259
9.2.3網絡設備驅動程序編程方法259
9.2.4網絡設備驅動261應用示例
9.3網絡設備數據結構262
9.3.1全球信息262
硬件信息263
接口信息263
設備方法266
9.3.5公眾成員
9.4 dm9000網卡概述268
9.4.1 dm9000網卡概述269
9 . 4 . 2dm 9000網卡的特性269
9.4.3內部寄存器270
功能描述274
9.5 dm9000網卡驅動移植275
9.5.1 dm9000網卡連接275
9.5.2驅動程序分析-硬件的數據結構276
9.5.3驅動程序分析-數據讀寫功能277
9.5.4驅動程序分析-重置網卡277
9.5.5驅動程序分析-初始化網卡277
9.5.6驅動程序分析-打開和關閉網卡282
9.5.7驅動程序分析-數據包的發送和接收283
9.5.8 dm9000網卡驅動程序移植285
9.6摘要288
第10章音頻設備驅動移植289
10.1音頻設備接口289
10.1.1 pcm接口289
10.1.2 IIS(IC間聲音)接口289
10.1.3ac97(音頻編解碼器1997)接口289
10.1.4 linux音頻設備驅動框架290
10.2 linux音頻設備驅動程序-OSS驅動程序框架291
10.2.1 oss驅動架構硬件291
10.2.2 oss驅動程序架構代碼291
10.2.3 oss初始化函數oss_init() 293
10.2.4 oss發布函數oss_cleanup() 294
10.2.5打開設備文件函數sound_open() 295
10.2.6錄音功能sound_read() 296
10.2.7播放函數sound_write() 297
10.2.8控制功能聲音_ioctl() 297
10.3 linux音頻設備驅動程序-ALSA驅動程序框架298
10.3.1卡和組件299
10.3.2 pcm設備303
10.3.3控制接口
10.3.4 ac97 api音頻接口308
10.4音頻設備應用程序編程312
10.4.1 dsp接口編程312
10.4.2混音器接口編程315
10.4.3 alsa應用程序編程316
10.5音頻設備驅動程序移植318
10.5.1添加uda1341結構318。
10.5.2修改錄音頻道319
Uda1341驅動程序支持320被添加到10.5.3內核中。
10.5.4移植新內核並測試321
10.6音頻播放器madplay 322的移植
10.6.1準備遷移所需的源文件322
10.6.2交叉編譯322
10.6.3移植和測試323
編譯時可能出現的問題10.6.4 324
10.7匯總324
第11章sd卡驅動移植325
11.1 sd卡簡介325
11.1.1sd卡系統概念325
11.1.2 sd卡寄存器325
11.1.3標清功能描述326
11.2 sd卡驅動程序分析329
11.2.1主機驅動程序330
11.2.2核心驅動333
11.2.3卡驅動程序337
11.3 sd卡移植步驟339
11.3.1添加延遲和中斷339
11.3.2配置內核340
11.3.3寫壹個新的內核341
11.4匯總342
第12章nandflash驅動程序移植343
12.1 NAND閃存343簡介
12.1.1 NAND閃存命令介紹343
12.1.2 nandflash控制器344
12.2 nandflash驅動程序介紹345
1 nand芯片結構345
12.2.2 nandflash驅動程序分析346
12.3 nandflash驅動程序移植351
修改12.3.1內核351
12.3.2內核353的配置和編譯
12.4摘要353
第四篇高級系統移植
第13章minigui和移植356
在PC 356中安裝13.1 minigui
13.1.1安裝所需的安裝文件356
13.1.2 minigui 357的操作模式
13.1.3編譯安裝minigui 357。
編譯和安裝minigui 360所需的13.1.4圖片支持庫
13.1.5編譯minigui應用程序示例360
13.2 eclipse開發minigui程序361
13 . 2 . 1 Linux 361下安裝eclipse介紹
13.2.2用eclipse 363編譯minigui程序
13.2.3設置外部工具367
運行程序368
13.3 vc++6.0開發minigui程序368
13.3.1安裝windows開發庫
13.3.2新建項目369
13.3.3添加文件和設置項目370
13.3.4編譯並運行程序
13.3.5 minigui編程風格示例372
13.4 minigui 374的交叉編譯和移植
13.4.1交叉編譯minigui 375
13.4.2移植minigui程序376
13.5摘要378
第14章qt發育和qtopia移植379
14.1季度安裝和編程379
14.1.1下載安裝qt 379。
1.2 qt編程380
14.1.3使用qmake生成makefile 382
14.2 x86平臺上qtopia核心安裝和應用383
14.2.1 qtopia核心安裝準備383
14.2.2編譯qtopia core 384
14 . 2 . 3 x86平臺上的qtopia應用開發385
14.3 qtopia內核在嵌入式linux 388上的移植
14.3.1 qtopia核心移植制劑389
14.3.2交叉編譯qtopia核心389
14.3.3編譯內核392
應用程序開發392
14.3.5應用移植395
14.4摘要395
第15章伯克利嵌入式數據庫的db移植396
15.1數據庫基本概念396
15.1.1使用文檔和源代碼396
15.1.2創建環境句柄396
創建壹個數據庫句柄397
打開數據庫398
1.5 dbt結構398
15.1.6訪問數據399
關閉數據庫400
15.2伯克利數據庫安裝400
15.2.1安裝為C庫400。
15.2.2安裝為c++庫401。
15.2.3交叉編譯和安裝berkeley db 401
15.3使用伯克利db數據庫403。
15.3.1代碼分析403
編譯並運行程序406
15.4移植berkeley db數據庫407
1數據庫設計407
編寫應用程序407
15.4.3調試和交叉編譯應用409
15.4.4數據庫移植和測試410
15.5匯總410
第16章嵌入式數據庫的移植sqlite 411
16.1 Sqlite 411支持的SQL語句
16.1.1數據定義語句411
16.1.2數據操作語句412
16.2 SQLite數據庫的編譯、安裝和使用
16.2.1安裝sqlite 413
16.2.2使用sql語句操作sqlite數據庫413
16.2.3用C接口414訪問sqlite數據庫
16.3移植sqlite 417
16.3.1交叉編譯sqlite 417
16.3.2交叉編譯應用程序418
16.4移植sqlite數據庫
16.4.1文件描繪419
16.4.2運行應用程序419
16.4.3測試sqlite3 419
16.5匯總421
第17章boa移植嵌入式web服務器422
1寶兒簡介422
17.1.1 boa 422的功能
17.1.2 boa流程分析423
17.1.3 boa配置信息426
17.2 boa編譯和html頁面測試428
17.2.1編譯boa源代碼428
17.2.2設置boa配置信息429
17.2.3測試boa 429
17.3 cgi腳本測試431
17.3.1書寫測試代碼431
17.3.2編譯測試程序431
測試cgi腳本431
17.4 boa交叉編譯移植431
17.4.1交叉編譯boa 432
準備測試程序432
17.4.3配置boa 432
測試433
17.5 boa結合sqlite 433
17.5.1通過cgi程序訪問sqlite 434。
17.5.2編譯和測試436
17.6匯總437
第18章嵌入式web服務器ting)事務)狀態機499
20.3.4 NIST(非邀請服務器(輸入)事務)狀態機500
20.4 osip解析器500
20.4.1初始化解析類型函數osip_body_init() 500。
20.4.2釋放函數osip_body_free() 501。
20.4.3字符串到正文類型轉換函數osip_body_parse() 501
20.4.4體類型到字符串類型的轉換函數osip_body_to_str() 502
克隆函數osip_body_clone() 504
osip解析器分類505
20.5 osip事務層506
20.6 sip會話建立過程508
20.7 rtp協議510
20.7.1 rtp基本概念510
20.7.2發送rtp 511。
20.7.3接收rtp 513
20.8 linphone編譯和測試515
20 . 8 . 1編譯linphone需要的軟件包是516。
20.8.2在x86平臺上編譯安裝516。
linphone測試519
20.8.4進壹步測試和開發523
20.9 linphone交叉編譯523
20.9.1 linphone 523的交叉編譯
20 . 9 . 2 Lin phone 526的測試
20.10匯總527