Linux系統移植

Linux系統移植

本書全面、系統、由淺入深地介紹了linux系統移植的各方面知識。書中的每個章節都有相應的實例編譯或移植過程,每個移植實例都具有代表性,在實際套用和開發中有很高的價值。

內容簡介

本書附帶1張光碟,內容為本書重點內容的教學視頻和本書涉及的原始碼。另外,還贈送了大量的linux學習視頻和其他學習資料。

本書分為4篇。第1篇簡單介紹了linux核心和嵌入式linux系統開發環境搭建;第2篇介紹了一個最基本的嵌入式系統的組成部分、bootloader移植、核心移植和檔案系統移植;第3篇介紹了lcd、觸控螢幕、usb、網卡、音頻、sd卡、nandflash等流行的設備驅動移植過程;第4篇從嵌入式產品角度出發,介紹了gui、qtopia、嵌入式資料庫berkeley db和sqlite、嵌入式web伺服器boa和thttpd、jvm虛擬機的移植及目前流行的voip技術和相關協定。

本書適合嵌入式linux系統入門人員、linux系統開發和移植、系統分析師等相關人員閱讀,也適合作為大、中專院校相關專業的實驗教材使用。

目錄

第1篇 系統移植基礎篇

第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 記憶體管理技術 10

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

2.2.1 交叉編譯工具安裝 38

2.2.2 交叉編譯器測試 43

2.3 超級終端和minicom 44

2.3.1 超級終端軟體的安裝 44

2.3.2 minicom使用 45

2.3.3 securecrt使用 48

2.4 核心、檔案系統載入工具 48

2.4.1 燒寫bootloader 48

2.4.2 核心和檔案系統下載 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

第2篇 系統移植技術篇

第3章 bootloader移植 64

3.1 bootloader介紹 64

3.1.1 bootloader與嵌入式linux系統的關係 64

3.1.2 bootloader基本概念 64

3.1.3 bootloader啟動過程 66

3.2 bootloader之u-boot 67

3.2.1 u-boot優點 67

3.2.2 u-boot的主要功能 68

3.2.3 u-boot目錄結構 68

3.3 u-boot移植過程 69

3.3.1 環境配置 69

3.3.2 修改cpu/arm920t/start.s 70

3.3.4 具體平台相關修改 79

3.3.5 其他部分修改 81

3.3.6 u-boot的編譯 84

3.4 bootloader之vivi 85

3.4.1 vivi簡介 85

3.4.2 vivi配置與編譯 85

3.4.3 代碼分析 88

3.5 vivi的運行 88

3.5.1 bootloader啟動的階段一 89

3.5.2 bootloader啟動的階段二 95

3.6 小結 95

第4章 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

第5章 嵌入式檔案系統製作 126

5.1 檔案系統選擇 126

5.1.1 flash硬體方案比較 126

5.1.2 嵌入式檔案系統的分層結構 127

5.2 基於flash的檔案系統 127

5.2.1 jffs檔案系統(journalling flash filesystem) 128

5.2.2 yaffs檔案系統(yet another flash file system) 130

5.2.3 cramfs檔案系統(compressed rom file system) 133

5.2.4 romfs檔案系統(rom file system) 134

5.3 基於ram的檔案系統 135

5.4 檔案系統的製作 135

5.4.1 製作ramdisk檔案系統 136

5.4.2 製作yaffs2檔案系統 144

5.4.3 製作jffs2檔案系統 150

5.4.4 其他檔案系統製作 152

5.5 小結 153

第3篇 系統移植與驅動篇

第6章 lcd驅動移植 156

6.1 認識lcd相關硬體原理 156

6.1.1 lcd概述 156

6.1.2 lcd控制器 157

6.1.3 lcd控制器方塊圖 157

6.1.4 lcd控制器操作 158

6.1.5 lcd控制暫存器 163

6.2 lcd參數設定 166

6.3 核心lcd驅動機制 167

6.3.1 framebuffer概述 167

6.3.2 framebuffer 設備驅動的結構 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

第7章 觸控螢幕驅動移植 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

7.4.1 input子系統概述 202

7.4.2 輸入設備結構體 202

7.4.3 輸入鏈路的創建過程 205

7.4.4 使用input子系統 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

第8章 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 u盤驅動 249

8.5.1 核心配置 249

8.5.2 移植和測試 250

8.6 小結 252

第9章 網卡驅動程式移植 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 net_device 數據結構 262

9.3.1 全局信息 262

9.3.2 硬體信息 263

9.3.3 接口信息 263

9.3.4 設備方法 266

9.3.5 公用成員 268

9.4 dm9000網卡概述 268

9.4.1 dm9000網卡總體介紹 269

9.4.2 dm9000網卡的特點 269

9.4.3 內部暫存器 270

9.4.4 功能描述 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(inter-ic sound)接口 289

10.1.3 ac97(audio codec 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 控制函式sound_ioctl() 297

10.3 linux音頻設備驅動——alsa驅動框架 298

10.3.1 card和組件 299

10.3.2 pcm設備 303

10.3.3 控制接口 306

10.3.4 ac97 api音頻接口 308

10.4 音頻設備應用程式編寫 312

10.4.1 dsp接口編程 312

10.4.2 mixer接口編程 315

10.4.3 alsa應用程式編程 316

10.5 音頻設備驅動移植 318

10.5.1 添加uda1341結構體 318

10.5.2 修改錄音通道 319

10.5.3 核心中添加uda1341驅動支持 320

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.1 sd卡系統概念 325

11.1.2 sd卡暫存器 325

11.1.3 sd功能描述 326

11.2 sd卡驅動程式分析 329

11.2.1 host驅動部分 330

11.2.2 core驅動部分 333

11.2.3 card驅動部分 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 nandflash介紹 343

12.1.1 nandflash命令介紹 343

12.1.2 nandflash控制器 344

12.2 nandflash驅動介紹 345

12.2.1 nand晶片結構 345

12.2.2 nandflash驅動分析 346

12.3 nandflash驅動移植 351

12.3.1 核心的修改 351

12.3.2 核心的配置和編譯 353

12.4 小結 353

第4篇 系統移植高級篇

第13章 minigui與移植 356

13.1 minigui在上位機中的安裝 356

13.1.1 安裝需要的安裝檔案 356

13.1.2 minigui的運行模式 357

13.1.3 編譯並安裝minigui 357

13.1.4 編譯安裝minigui需要的圖片支持庫 360

13.1.5 編譯minigui應用程式例子 360

13.2 eclipse開發minigui程式 361

13.2.1 linux下安裝eclipse介紹 361

13.2.2 使用eclipse編譯minigui程式 363

13.2.3 設定外部工具 367

13.2.4 運行程式 368

13.3 vc++6.0開發minigui程式 368

13.3.1 安裝windows開發庫 368

13.3.2 建立新工程 369

13.3.3 添加檔案和設定工程 370

13.3.4 編譯和運行程式 371

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 qt安裝與編程 379

14.1.1 下載安裝qt 379

14.1.2 qt編程 380

14.1.3 使用qmake生成makefile 382

14.2 qtopia core在x86平台上的安裝和套用 383

14.2.1 qtopia core安裝準備 383

14.2.2 編譯qtopia core 384

14.2.3 qtopia在x86平台上的套用開發 385

14.3 qtopia core在嵌入式linux上的移植 388

14.3.1 qtopia core移植準備 389

14.3.2 交叉編譯qtopia core 389

14.3.3 編譯核心 392

14.3.4 應用程式開發 392

14.3.5 應用程式移植 395

14.4 小結 395

第15章 嵌入式資料庫berkeley db移植 396

15.1 資料庫的基本概念 396

15.1.1 利用文檔和原始碼 396

15.1.2 創建環境句柄 396

15.1.3 創建資料庫句柄 397

15.1.4 打開資料庫 398

15.1.5 dbt結構 398

15.1.6 存取數據 399

15.1.7 關閉資料庫 400

15.2 berkeley db資料庫安裝 400

15.2.1 安裝成c庫 400

15.2.2 安裝成c++庫 401

15.2.3 交叉編譯安裝berkeley db 401

15.3 使用berkeley db資料庫 403

15.3.1 代碼分析 403

15.3.2 編譯運行程式 406

15.4 移植berkeley db資料庫 407

15.4.1 資料庫設計 407

15.4.2 編寫應用程式 407

15.4.3 調試和交叉編譯應用程式 409

15.4.4 資料庫的移植和測試 410

15.5 小結 410

第16章 嵌入式資料庫sqlite移植 411

16.1 sqlite支持的sql語句 411

16.1.1 數據定義語句 411

16.1.2 數據操作語句 412

16.2 sqlite資料庫編譯、安裝和使用 412

16.2.1 安裝sqlite 413

16.2.2 利用sql語句操作sqlite資料庫 413

16.2.3 利用c接口訪問sqlite資料庫 414

16.3 移植sqlite 417

16.3.1 交叉編譯sqlite 417

16.3.2 交叉編譯應用程式 418

16.4 移植sqlite資料庫 418

16.4.1 檔案移植 419

16.4.2 運行應用程式 419

16.4.3 測試sqlite3 419

16.5 小結 421

第17章 嵌入式web伺服器boa移植 422

17.1 boa介紹 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

17.3.3 測試cgi腳本 431

17.4 boa交叉編譯與移植 431

17.4.1 交叉編譯boa 432

17.4.2 準備測試程式 432

17.4.3 配置boa 432

17.4.4 測試 433

17.5 boa與sqlite結合 433

17.5.1 通過cgi程式訪問sqlite 434

17.5.2 編譯和測試 436

17.6 小結 437

第18章 嵌入式web伺服器thttpd移植 438

18.1 thttpd介紹 438

18.1.1 web伺服器比較 438

18.1.2 thttpd的特點 438

18.1.3 thttpd核心代碼分析 439

18.2 thttpd編譯和html頁面測試 442

18.2.1 配置檔案介紹 442

18.2.2 thttpd編譯 443

18.2.3 運行和測試thttpd 443

18.3 cgi腳本測試 446

18.3.1 編寫測試代碼 446

18.3.2 編譯測試程式 447

18.3.3 測試cgi腳本 447

18.4 thttpd交叉編譯與移植 447

18.4.1 交叉編譯thttpd 447

18.4.2 交叉編譯cgi程式 448

18.4.3 移植thttpd 448

18.4.4 測試 449

18.5 thttpd與嵌入式資料庫結合 450

18.5.1 通過cgi程式訪問sqlite 450

18.5.2 編譯和測試 452

18.6 小結 453

第19章 jvm及其移植 454

19.1 jvm介紹 454

19.1.1 jvm原理 454

19.1.2 jvm支持的數據類型 455

19.1.3 jvm指令系統 456

19.1.4 jvm暫存器 456

19.1.5 jvm棧結構 456

19.1.6 jvm碎片回收堆 459

19.1.7 jvm異常拋出和異常捕獲 459

19.2 類裝載 460

19.2.1 裝載類的結構體 460

19.2.2 裝載類的操作 461

19.3 垃圾回收 463

19.3.1 mark-and-sweep回收算法 464

19.3.2 分代回收算法 465

19.3.3 增量收集 466

19.4 解析器 466

19.4.1 函式interpret() 466

19.4.2 函式fastinterpret() 467

19.4.3 函式slowinterpret () 469

19.5 java編程淺析 470

19.5.1 java程式命令 470

19.5.2 java構造函式 470

19.5.3 java主函式 470

19.5.4 java程式編譯與運行 471

19.6 kvm執行過程 471

19.6.1 kvm啟動過程 471

19.6.2 kvm用到的計數器清零 474

19.6.3 kvm初始化記憶體管理 475

19.6.4 kvm中的哈希表初始化 476

19.6.5 kvm中的事件初始化 477

19.6.6 kvm中的資源釋放 477

19.7 pc機安裝jvm 477

19.7.1 jvm在windows上的安裝 478

19.7.2 jvm在linux上的安裝 479

19.8 kvm移植和測試 480

19.8.1 sdk安裝和環境變數設定 480

19.8.2 修改makefile和代碼 480

19.8.3 kvm編譯 481

19.8.4 測試 481

19.8.5 移植 483

19.9 小結 485

第20章 voip技術與linphone編譯 486

20.1 voip介紹 486

20.1.1 voip基本原理 486

20.1.2 voip的基本傳輸過程 487

20.1.3 voip的優勢 487

20.1.4 voip的實現方式 487

20.1.5 voip的關鍵技術 488

20.2 osip協定概述 488

20.3 osip狀態機 489

20.3.1 ict(invite client (outgoing) transaction)狀態機 489

20.3.2 nict(non-invite client (outgoing) transaction)狀態機 498

20.3.3 ist(invite server (incoming) transaction)狀態機 499

20.3.4 nist(non-invite server (incoming) transaction)狀態機 500

20.4 osip解析器 500

20.4.1 初始化解析類型函式osip_body_init() 500

20.4.2 釋放函式osip_body_free() 501

20.4.3 字元串到body類型轉換函式osip_body_parse() 501

20.4.4 body類型到字元串類型轉換函式osip_body_to_str() 502

20.4.5 克隆函式osip_body_clone() 504

20.4.6 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

20.8.3 linphone測試 519

20.8.4 進一步的測試和開發 523

20.9 linphone交叉編譯 523

20.9.1 linphone的交叉編譯 523

20.9.2 linphone的測試 526

20.10 小結 527

前言

隨著各種晶片技術的發展,各種嵌入式產品也如雨後春筍一般地出現了。目前,嵌入式產品套用領域涉及移動通信、汽車、醫療、家電等很多領域。而且,如今的嵌入式硬體的速度和容量越來越接近於PC,因此在這些嵌入式產品上運行作業系統就成為了可能。一直以來,很多企業花費了巨大成本研發了大量運行在PC上的軟體產品。如果將這些優秀的軟體套用在嵌入式系統中,將會成為快速開發嵌入式系統,降低嵌入式產品開發成本,提高軟體穩定性和安全性的重要途徑。

目前,國內圖書市場上還鮮見專門介紹Linux系統移植的圖書。為了給廣大Linux開發人員和愛好者學習Linux系統移植提供一些有價值的參考資料,筆者花費一年多的時間編寫了本書。

本書注重實踐,包含了豐富的移植實例,這些實例各具特點,從基礎的系統組成到設備驅動,再到高級套用,適合各個層面的讀者學習和研究。本書中的實例是筆者根據實際項目中嵌入式產品的功能需求,專門選擇的具有代表性的開源軟體進行移植,包含了常見的嵌入式產品的最小系統組成部分移植,同時選擇了套用比較多的資料庫、Web伺服器、GUI等進行移植。筆者通過親自體會每次編譯和移植過程,詳細說明移植的細節,對移植過程中遇到的問題也給出了解決方法。本書最後還介紹了VoIP技術,並結合源碼分析了VoIP的實現,同時還介紹了VoIP的詳細編譯過程。本書是筆者從事嵌入式開發的經驗總結,希望能給目前從事嵌入式研發和學習的讀者提供最有效的幫助,能使讀者的嵌入式系統最快地運行起來,使讀者在最短的時間內成功移植開源軟體。

本書使用的原始碼均為開原始碼,讀者可以從對應的官方網站獲得。本書對於源碼的重要部分進行了詳細的分析,建議讀者在閱讀時對應源碼進行閱讀效果會更好。

本書特色

1.多媒體語音視頻講解,高效、直觀

筆者對本書重點內容專門錄製了多媒體教學視頻,這將會大大提高讀者的學習效率。

2.編譯過程詳細

本書的編譯過程都附有詳細的編譯命令,對於複雜的命令均給出了說明,方便讀者實際操作。讀者可以邊閱讀本書,邊動手進行實驗。

3.內容全面、選材具有特點

本書介紹了最小系統的引導程式移植、核心移植、檔案系統移植、各種驅動移植等內容。另外,本書還專門介紹了嵌入式資料庫、嵌入式GUI、嵌入式Web伺服器、嵌入式JVM、VoIP技術等內容。對於資料庫、GUI、Web伺服器分別選擇了兩種進行介紹,讀者可以從性能上進行對比,然後套用在自己的項目中。

4.內容由淺入深、循序漸進,可操作性強

本書按照由淺入深、循序漸進的梯度安排內容,適合各個層次的讀者閱讀。書中每章內容都遵循原理分析-代碼分析-編譯-測試-移植的學習順序,具有較強的可操作性。

5.貫穿了大量的編譯技巧,可迅速提升移植水平

本書在講解編譯過程時貫穿了大量的編譯技巧,並針對移植過程中的編譯錯誤介紹了如何發現錯誤的源頭,同時給出了解決方法。這則有利於讀者解決類似的編譯問題,提升系統移植的水平。

6.詳細介紹了流行工具的使用

本書介紹了在開發中使用Eclipse和VC++ 6.0,這兩種工具分別為Java程式設計師和C++程式設計師最熟悉的工具。書中介紹了在Linux下安裝Eclipse、使用Eclipse開發C++項目及使用VC++ 6.0開發的基本方法等。

本書內容及知識體系

第1篇 系統移植基礎篇(第1、2章)

本篇介紹了系統移植的基礎。首先對Linux核心進行了簡單介紹,然後介紹了系統移植環境的搭建。通過對本篇內容的學習,讀者可以對Linux系統有初步認識,能掌握嵌入式Linux開發工具的使用,能正確搭建開發平台,能夠製作編譯好的嵌入式系統。

.第2篇 系統移植技術篇(第3~5章)

本篇介紹了一個最基本的嵌入式系統的組成部分、Bootloader、核心和檔案系統的移植。學習完本篇內容後,讀者能夠動手獨立編譯和移植一個基本的嵌入式系統。

第3篇 系統移植驅動篇(第6~12章)

本篇介紹了各種驅動的移植,包括LCD、觸控螢幕、USB、網卡、音頻、SD卡、NandFlash等流行的設備驅動的移植過程。通過對本篇內容的學習,讀者對嵌入式Linux驅動移植將會有一定的認識,可以基本掌握驅動的移植步驟,能完成簡單的驅動移植。

第4篇 系統移植高級篇(第13~20章)

本篇從嵌入式產品的角度出發,介紹了系統移植中各種類型的高層軟體移植,包括GUI、資料庫、Web伺服器、虛擬機的移植,最後還介紹了目前流行的VoIP技術,並結合源碼介紹了VoIP相關協定和編譯方法。通過學習本篇內容,讀者可以掌握很多移植技巧,能夠將這些實例套用到自己的項目中。

本書讀者對象

嵌入式移植人員;

嵌入式專業的學生;

嵌入式實驗指導老師;

嵌入式培訓學員和老師;

系統分析師;

項目研發人員。

本書作者及編委會成員

本書由劉剛和趙劍川主筆編寫,其他參與編寫的人員有畢夢飛、蔡成立、陳濤、陳曉莉、陳燕、崔棟棟、馮國良、高岱明、黃成、黃會、紀奎秀、江瑩、靳華、李凌、李勝君、李雅娟、劉大林、劉惠萍、劉水珍、馬月桂、閔智和、秦蘭、汪文君、文龍。在此一併表示感謝。

本書編委會成員有歐振旭、陳杰、陳冠軍、頊宇峰、張帆、陳剛、程彩紅、毛紅娟、聶慶亮、王志娟、武文娟、顏盟盟、姚志娟、尹繼平、張昆、張薛。

本書技術支持

您在閱讀本書的過程中若碰到什麼問題,請通過以下方式聯繫我們,我們會及時地答覆您。

相關詞條

相關搜尋

熱門詞條

聯絡我們