前言
緒論篇
第1章嵌入式係統架構與移植環境搭建2
1.1 嵌入式係統硬件架構2
1.1.1 微處理器3
1.1.2 總綫4
1.1.3 存儲器5
1.2 嵌入式係統軟件架構6
1.3 嵌入式Linux移植環境搭建7
1.3.1 Ubuntu開發平颱7
1.3.2 搭建交叉編譯環境8
1.3.3 獲取內核9
1.3.4 獲取啓動加載器9
1.3.5 配置必要服務9
1.3.6 PuTTY的安裝和配置12
1.4 本章小結12
u-boot移植篇
第2章u-boot工程與編譯係統14
2.1 u-boot介紹14
2.1.1 u-boot工程簡介15
2.1.2 u-boot源碼結構15
2.1.3 u-boot的配置編譯16
2.2 u-boot常用命令與測試18
2.2.1 獲取幫助18
2.2.2 環境變量相關命令19
2.2.3 網絡命令20
2.2.4 Nand Flash操作命令21
2.2.5 內存/寄存器相關命令22
2.2.6 係統引導命令24
2.3 u-boot編譯過程分析25
2.3.1 主機構建環境配置過程25
2.3.2 目標機相關配置過程27
2.3.3 make命令執行過程31
2.4 本章小結40
第3章u-boot啓動流程分析41
3.1 u-boot啓動第一階段流程41
3.1.1 設置異常嚮量42
3.1.2 CPU進入SVC模式43
3.1.3 設置控製寄存器地址43
3.1.4 關閉看門狗43
3.1.5 屏蔽中斷43
3.1.6 設置MPLLCON、UPLLCON和CLKDIVN44
3.1.7 關閉MMU和cache45
3.1.8 初始化存儲控製器46
3.1.9 復製u-boot第二階段代碼到RAM47
3.1.10 設置棧48
3.1.11 清除BSS段48
3.1.12 跳轉到第二階段代碼入口48
3.2 u-boot啓動第二階段代碼分析49
3.2.1 gd_t結構體49
3.2.2 bd_t結構體50
3.2.3 init_sequence數組50
3.2.4 start_armboot()順序分析51
3.2.5 main_loop函數分析52
3.3 本章小結56
第4章ARM9/S3C2440 u-boot移植實戰57
4.1 移植準備工作57
4.1.1 開發環境介紹57
4.1.2 刪減u-boot文件58
4.1.3 建立My2440配置59
4.1.4 配置和編譯u-boot60
4.2 u-boot芯片級移植61
4.2.1 啓動代碼結構優化61
4.2.2 係統時鍾移植65
4.2.3 存儲器控製器設置68
4.2.4 在u-boot工程中全麵支持CONFIG_S3C2440宏配置69
4.3 u-boot調試方法探索70
4.3.1 通過LED指示運行狀態70
4.3.2 在第一階段的代碼中添加打印調試方法72
4.3.3 在內存中加載和運行u-boot78
4.4 Nor Flash驅動移植78
4.4.1 Nor Flash的工作模式78
4.4.2 Nor Flash的存儲結構79
4.4.3 Nor Flash的硬件連接79
4.4.4 Nor Flash的操作方法80
4.4.5 Nor Flash驅動分析83
4.4.6 Nor Flash驅動移植86
4.4.7 Nor Flash命令測試87
4.4.8 完善u-boot的命令行功能88
4.5 DM9000驅動移植89
4.5.1 DM9000網卡端口訪問90
4.5.2 DM9000網卡時序分析90
4.5.3 DM9000網卡驅動分析93
4.5.4 DM9000網卡驅動移植100
4.5.5 網卡驅動測試103
4.5.6 通過TFTP下載程序到內存運行103
4.6 u-boot啓動內核105
4.6.1 ARM架構的Linux內核啓動105
4.6.2 內核標記列錶106
4.6.3 u-boot啓動命令分析1—go命令109
4.6.4 u-boot啓動命令分析2—bootm命令110
4.6.5 u-boot啓動命令的配置與移植115
4.7 Nand Flash與驅動移植118
4.7.1 Nand Flash啓動原理118
4.7.2 Nand Flash硬件特性119
4.7.3 Linux MTD子係統121
4.7.4 Nand Flash初始化流程分析123
4.7.5 Nand Flash命令實現分析125
4.7.6 頁讀取操作詳解127
4.7.7 Nor Flash和Nand Flash啓動自動判斷132
4.7.8 Nand Flash拷貝代碼實現132
4.7.9 Nand Flash闆級驅動移植136
4.7.10 Nand Flash命令測試140
4.8 YAFFS文件係統移植142
4.8.1 YAFFS文件係統142
4.8.2 YAFFS在Nand Flash上的存儲結構142
4.8.3 YAFFS在內存中的組織結構143
4.8.4 在u-boot中添加對燒寫YAFFS鏡像的支持144
4.8.5 YAFFS文件係統鏡像製作150
4.8.6 YAFFS的燒寫與測試152
4.9 UBIFS文件係統移植153
4.9.1 UBI層153
4.9.2 UBIFS介紹155
4.9.3 在u-boot中添加對UBIFS的支持156
4.9.4 製作UBIFS文件係統鏡像157
4.9.5 UBIFS的燒寫與測試158
4.10 SD卡驅動移植162
4.10.1 MMC/SD/SDIO介紹162
4.10.2 SD/MMC協議162
4.10.3 S3C2440 SDI控製器操作166
4.10.4 SD卡驅動分析168
4.10.5 SD卡驅動移植173
4.11 USB驅動移植176
4.11.1 USB概述176
4.11.2 USB係統架構177
4.11.3 USB的通信方法180
4.11.4 USB的描述符184
4.11.5 USB設備請求188
4.11.6 USB設備枚舉191
4.11.7 S3C2440 USB設備控製器195
4.11.8 u-boot USB設備控製器驅動分析196
4.11.9 USB設備驅動移植206
4.11.10 USB驅動移植210
4.11.11 USB功能測試214
4.12 u-boot一鍵式菜單實現215
4.12.1 一鍵式菜單需求分析215
4.12.2 一鍵式菜單測試步驟216
4.12.3 一鍵式菜單源碼分析220
4.13 本章小結224
第5章ARM11/S3C6410 u-boot移植實戰225
5.1 移植準備工作225
5.1.1 開發環境225
5.1.2 刪減u-boot文件226
5.1.3 建立My6410配置227
5.1.4 配置和編譯u-boot228
5.2 u-boot芯片級移植229
5.2.1 修改第一階段啓動代碼start.S229
5.2.2 闆級底層初始化文件lowlevel_init.S移植233
5.2.3 時鍾初始化函數移植239
5.2.4 內存初始化函數實現243
5.2.5 Nand Flash復製代碼實現246
5.2.6 SD卡復製代碼實現250
5.2.7 底層調試方法探索254
5.2.8 完善My6410的闆級配置258
5.2.9 燒寫與測試265
5.3 DM9000驅動移植267
5.3.1 DM9000網卡端口訪問267
5.3.2 DM9000網卡時序分析268
5.3.3 DM9000網卡驅動移植270
5.3.4 網卡驅動測試274
5.4 u-boot啓動內核274
5.4.1 u-boot啓動命令的配置與移植275
5.4.2 修改go命令以支持zImage格式鏡像的啓動277
5.5 Nand Flash驅動移植278
5.5.1 將u-boot下載到內存中運行278
5.5.2 Nand Flash驅動移植279
5.5.3 Nand Flash命令測試289
5.6 YAFFS文件係統移植291
5.6.1 在u-boot中添加對燒寫YAFFS鏡像的支持291
5.6.2 YAFFS文件係統鏡像製作298
5.6.3 YAFFS的燒寫與測試299
5.7 UBIFS文件係統移植300
5.7.1 在u-boot中添加對UBIFS的支持300
5.7.2 UBIFS文件係統鏡像製作302
5.7.3 UBIFS的燒寫與測試303
5.8 SD卡驅動移植307
5.8.1 S3C6410 主機控製器操作307
5.8.2 S3C6410 主機控製器操作序列308
5.8.3 SD卡驅動分析310
5.8.4 SD卡驅動移植317
5.8.5 通過SD卡更新係統319
5.9 USB驅動移植321
5.9.1 S3C6410 USB2.0高速OTG321
5.9.2 u-boot USB設備控製器驅動分析323
5.9.3 USB設備驅動移植332
5.9.4 USB功能測試335
5.10 本章小結336
Linux內核移植篇
第6章Linux內核工程與編譯係統338
6.1Linux內核架構338
6.1.1內核體係結構338
6.1.2內核組件339
6.1.3內核目錄結構340
6.2 Linux內核的配置與編譯341
6.2.1 配置內核341
6.2.2編譯內核344
6.3Linux內核構建係統345
6.3.1內核配置過程345
6.3.2擴展內核代碼347
6.3.3內核中的Makefile348
6.3.4內核中的Kconfig349
6.4內核調試技術352
6.4.1調試準備352
6.4.2內核調試配置選項352
6.4.3源碼級彆的調試接口353
6.4.4使用printk()打印調試信息355
6.4.5使用strace跟蹤係統調用357
6.4.6使用OOPS調試係統故障358
6.5本章小結360
第7章Linux內核啓動流程分析361
7.1內核鏡像生成361
7.2內核啓動流程1——匯編部分362
7.2.1內核啓動代碼入口362
7.2.2深入源碼分析363
7.2.3匯編啓動代碼分析總結378
7.3內核啓動流程2—C語言部分378
7.3.1start_kernel()函數379
7.3.2rest_init()函數388
7.3.3 kernel_init()函數390
7.3.4init_post()函數391
7.4內核啓動流程3—Busybox的init進程393
7.4.1init進程啓動流程393
7.4.2添加初始化活動394
7.4.3執行初始化活動395
7.5本章小結396
第8章Linux移植準備及最小係統構建397
8.1移植準備工作397
8.1.1 開發環境397
8.1.2刪減Linux文件398
8.1.3建立My2440配置400
8.1.4 建立My6410配置403
8.1.5編譯測試406
8.2 最小係統搭建409
8.2.1 嵌入式根文件係統製作409
8.2.2安裝initramfs根文件係統412
8.3本章小結414
第9章Linux網卡驅動移植415
9.1Linux網絡子係統415
9.2 核心數據結構416
9.2.1 net_device結構416
9.2.2 sk_buff結構419
9.3 DM9000網卡驅動分析421
9.3.1 board_info結構422
9.3.2 dm9000_probe()函數423
9.3.3 dm9000_open()函數427
9.3.4 dm9000_start_xmit()函數427
9.3.5 數據包接收函數428
9.3.6 數據包發送函數429
9.3.7 中斷處理函數431
9.4My2440網卡驅動移植432
9.4.1 添加DM9000的平颱設備432
9.4.2 在內核配置添加對DM9000的支持434
9.5 My6410網卡驅動移植434
9.5.1 添加DM9000的平颱設備434
9.5.2 在內核配置中添加對網絡子係統的支持435
9.5.3 在內核配置添加對DM9000的支持436
9.6安裝NFS根文件係統436
9.6.1在內核配置添加對NFS的支持436
9.6.2掛載NFS根文件係統437
9.7 製作基於共享庫的根文件係統437
9.8本章小結439
第10章Linux混雜設備驅動440
10.1 My2440 RTC驅動移植440
10.2My6410 RTC驅動移植441
10.2.1修改RTC驅動rtc-s3c.c441
10.2.2完善對6410 RTC驅動的平颱支持445
10.2.3 在機器配置文件中添加RTC設備448
10.2.4 在內核中配置RTC448
10.3 RTC驅動測試449
10.4為My2440添加ADC和按鍵驅動451
10.4.1按鍵驅動分析451
10.4.2 在內核中添加ADC和按鍵驅動454
10.5 為My6410添加ADC驅動457
10.6 本章小結458
第11章Linux I2C驅動移植459
11.1 I2C協議概述459
11.1.1 I2C總綫物理拓撲結構459
11.1.2 I2C通信協議460
11.2Linux I2C子係統框架461
11.3 I2C驅動中的數據結構及操作462
11.3.1 i2c_adapter結構462
11.3.2 i2c_algorithm結構464
11.3.3 i2c_msg結構464
11.3.4i2c_driver結構465
11.3.5 i2c_client結構467
11.4I2C適配器的設備接口468
11.4.1 i2cdev_open()函數471
11.4.2 i2cdev_ read()函數471
11.4.3 i2cdev_ioctl()函數472
11.5 S3C2440(6410) I2C適配器驅動的實現473
11.5.1 S3C2440 I2C platform總綫匹配474
11.5.2 S3C2440 I2C總綫驅動描述結構474
11.5.3 probe方法的實現476
11.5.4 S3C2440 I2C總綫通信方法477
11.6 S3C2440(6410) I2C適配器驅動移植480
11.6.1 添加 I2C平颱設備480
11.6.2 在內核配置中支持I2C驅動481
11.6.3編寫I2C總綫驅動測試程序482
11.7S3C2440(6410) I2C設備驅動的實現484
11.7.1 At24係列I2C EEPROM設備驅動的實現484
11.7.2傳統隻讀EEPROM設備驅動的實現486
11.8 I2C EEPROM設備驅動移植489
11.9本章小結490
第12章Linux SPI驅動移植491
12.1SPI協議概述491
12.1.1 SPI總綫物理拓撲結構491
12.1.2 時鍾極性和時鍾相位492
12.1.3 SPI的優缺點493
12.2 Linux SPI子係統493
12.3 SPI驅動中的數據結構及操作494
12.3.1 spi_master結構494
12.3.2 spi_driver結構495
12.3.3 spi_device結構496
12.3.4 spi_message結構497
12.3.5spi_bitbang結構498
12.4SPI控製器的設備接口500
12.5 S3C2440 SPI控製器驅動的實現503
12.5.1 S3C2440 SPI platform總綫匹配503
12.5.2 S3C2440 SPI控製器驅動描述結構504
12.5.3 probe方法的實現504
12.5.4 S3C2440 SPI總綫通信方法505
12.6S3C6410 SPI控製器驅動的實現507
12.6.1 S3C6410 SPI控製器驅動描述結構507
12.6.2 probe方法的實現507
12.6.3 S3C6410 SPI總綫通信方法509
12.7S3C2440 SPI 控製器驅動移植510
12.7.1在機器配置文件中添加對SPI的支持510
12.7.2 擴展Kconfig512
12.7.3在內核配置中支持SPI驅動513
12.7.4SPI驅動測試513
12.8S3C6410 SPI 控製器驅動移植513
12.8.1 添加6410的SPI驅動514
12.8.2 添加SPI平颱設備514
12.8.3添加6410 DMA平颱代碼516
12.8.4 添加SPI、DMA相關的時鍾資源518
12.8.5在機器配置文件中添加對SPI的支持519
12.8.6 SPI驅動測試521
12.9 S3C2440(S3C6410) SPI協議驅動移植521
12.9.1 AT25係列SPI EEPROM協議驅動的實現521
12.9.2SPI EEPROM設備驅動移植523
12.10 本章小結524
第13章Nand Flash驅動移植525
13.1 Linux MTD子係統525
13.2 MTD子係統中的數據結構及操作526
13.2.1 mtd_info結構526
13.2.2mtd_notifier結構528
13.2.3 mtd_part/mtd_partitions結構528
13.3 MTD塊設備實現分析530
13.4 Nand Flash驅動的實現534
13.4.1 Nand Flash platform總綫匹配534
13.4.2 S3C2440 Nand Flash控製器驅動描述結構534
13.4.3 probe方法的實現536
13.4.4 S3C2440 Nand Flash讀寫方法分析537
13.5S3C2440 Nand Flash控製器驅動移植538
13.5.1 在機器配置文件中添加對Nand Flash的支持538
13.5.2 完善S3C2440的Nand Flash驅動540
13.5.3 在內核配置中支持 Nand Flash驅動541
13.6S3C6410 Nand Flash控製器驅動移植541
13.6.1添加6410 Nand Flash驅動541
13.6.2添加Nand Flash平颱設備542
13.6.3在機器配置文件中添加對Nand Flash的支持544
13.6.4 其他修改545
13.7 YAFFS2文件係統移植547
13.7.1將YAFFS2文件係統移植到Linux內核548
13.7.2 利用mtd-utils燒寫YAFFS2文件係統鏡像548
13.8 在內核中配置對UBIFS的支持550
13.9 本章小結550
第14章SD/MMC卡驅動移植551
14.1Linux MMC子係統551
14.2 MMC子係統中的數據結構及操作552
14.2.1 mmc_host結構552
14.2.2 mmc_card結構554
14.2.3mmc_driver結構555
14.2.4 mmc_request結構556
14.3卡探測過程分析558
14.4 S3C2440 SD/MMC主控製器驅動的實現561
14.4.1 SD/MMC主控製器驅動platform總綫匹配561
14.4.2 S3C2440 SD/MMC主控製器驅動描述結構561
14.4.3 probe方法的實現563
14.4.4 S3C2440 SD/MMC主控製器請求處理分析565
14.5S3C6410 高速MMC控製器驅動的實現568
14.5.1 SDHCI驅動框架569
14.5.2SDHCI主機卡探測過程569
14.5.3S3C6410 HSMMC控製器驅動570
14.5.4 S3C6410 HSMMC控製器請求處理572
14.6S3C2440 SD/MMC主機控製器驅動移植572
14.6.1 在機器配置文件中添加對SD/MMC主控製器的支持572
14.6.2 在內核配置中添加對SD/MMC主控製器驅動的支持573
14.6.3在內核配置中添加對中文字符集和FAT文件係統的支持574
14.6.4在文件係統中添加對熱插拔事件處理的支持574
14.6.5SD/MMC主控製器驅動測試575
14.7 S3C6410 HSMMC控製器驅動移植576
14.7.1 添加6410 Nand Flash驅動576
14.7.2在機器配置文件中添加對HSMMC的支持577
14.7.3 修改內核SDHCI驅動578
14.8本章小結579
第15章LCD驅動移植580
15.1LCD硬件原理580
15.1.1 LCD的硬件構成580
15.1.2TFT屏顯示時序581
15.2 Linux幀緩衝子係統582
15.3 幀緩衝子係統中的數據結構及操作583
15.3.1 fb_info結構583
15.3.2fb_var_screeninfo結構和fb_fix_screeninfo結構587
15.3.3fb_cmap結構589
15.4 幀緩衝字符設備接口590
15.5Linux顯示啓動Logo594
15.6S3C2440幀緩衝驅動的實現596
15.6.1S3C2440 LCD控製器硬件描述596
15.6.2 驅動platform總綫匹配597
15.6.3 S3C2440 幀緩衝驅動描述結構598
15.6.4 probe方法實現599
15.7S3C6410 幀緩衝驅動的實現601
15.8 S3C2440 幀緩衝驅動移植601
15.8.1 在闆級初始化文件中添加對幀緩衝的支持601
15.8.2修改Makefile和Kconfig605
15.8.3 在內核配置中添加對幀緩衝驅動的支持607
15.8.4 幀緩衝驅動測試608
15.9 S3C6410 幀緩衝驅動移植608
15.9.1 添加6410 幀緩衝驅動608
15.9.2 在機器配置文件中添加對幀 緩衝的支持609
15.9.3 幀緩衝驅動測試611
15.10 本章小結611
第16章觸摸屏驅動移植612
16.1 Linux輸入子係統612
16.2 輸入子係統中的數據結構及操作613
16.2.1 input_dev結構613
16.2.2 input_handler結構616
16.2.3 input_handle結構617
16.3 輸入子係統核心層的實現618
16.4 通用事件處理驅動622
16.5 輸入事件報告流程626
16.6 S3C2440(6410)觸摸屏驅動的分析629
16.6.1 模塊初始化函數的實現629
16.6.2 中斷處理與事件上報630
16.7 S3C2440觸摸屏驅動移植與測試632
16.7.1 S3C2440觸屏驅動移植632
16.7.2 S3C2440觸屏驅動測試633
16.8 S3C6410觸摸屏驅動移植與測試634
16.8.1 添加6410的觸摸屏驅動634
16.8.2添加觸屏平颱設備635
16.8.3 在機器配置文件中添加對觸屏的支持636
16.9 本章小結637
第17章聲卡驅動移植638
17.1 ALSA體係架構638
17.1.1 ALSA設備文件639
17.1.2 驅動代碼的文件結構640
17.2 聲卡描述結構snd_card640
17.3 PCM功能子層644
17.3.1 PCM的概念644
17.3.2 PCM設備描述結構snd_pcm645
17.3.3 PCM流與PCM子流646
17.3.4 PCM功能子層邏輯關係小結651
17.3.5 PCM設備文件的建立652
17.3.6 PCM設備文件的訪問654
17.4 聲卡控製項655
17.4.1 控製項創建655
17.4.2 控製項迴調函數657
17.4.3 Control設備建立658
17.5 ASoC聲卡驅動架構659
17.6 ASoC架構中的Machine驅動662
17.6.1 創建ASoC聲卡平颱設備662
17.6.2 ASoC聲卡的平颱驅動665
17.7ASoC架構中的Codec驅動666
17.7.1 Codec的DAI和PCM的配置666
17.7.2 Codec的控製IO669
17.7.3 混音器和其他音頻控製項671
17.7.4 Codec設備與ASoC聲卡注冊673
17.8 ASoC架構中的Platform驅動676
17.8.1CPU DAI驅動676
17.8.2 音頻DMA驅動677
17.8.3 創建音頻DMA緩衝區678
17.8.4 音頻DMA的PCM操作681
17.9 S3C2440+UDA1341聲卡驅動配置與測試683
17.9.1 在機器配置文件中添加對聲卡的支持683
17.9.2 在內核配置中支持聲卡驅動684
17.9.3 應用層alsa-lib移植685
17.9.4 編寫ALSA應用程序686
17.9.5 播放和錄音測試690
17.10S3C6410+WM9714聲卡驅動移植691
17.10.1添加6410聲卡驅動691
17.10.2在內核配置中支持聲卡驅動692
17.10.3 alsa-utils工具集移植692
17.11 本章小結693
第18章USB驅動移植694
18.1USB子係統架構694
18.2USB驅動中的描述符結構695
18.3USB主機驅動695
18.3.1主機控製器驅動695
18.3.2OHCI主機控製器驅動698
18.4S3C2440/S3C6410 USB主機驅動的實現700
18.5USB設備驅動701
18.5.1USB設備驅動描述結構702
18.5.2USB請求塊URB703
18.5.3URB的處理流程705
18.5.4 usb_bulk_msg()和usb_control_msg()708
18.5.5探測和斷開函數709
18.6USB骨架程序710
18.7USB設備驅動實例718
18.7.1DNW驅動的實現718
18.7.2USB鍵盤驅動的實現720
18.8本章小結728
應用程序移植篇
第19章嵌入式Qt移植730
19.1Qt開發環境搭建與使用 730
19.1.1Qt SDK的下載與安裝730
19.1.2第一個Qt程序732
19.1.3利用Qt Creator建立一個工程733
19.2Qt的功能模塊與裁剪735
19.2.1Qt模塊的構成735
19.2.2圖形用戶界麵736
19.2.3信號與槽 736
19.2.4布局管理737
19.2.5主視窗737
19.3嵌入式Qt移植與測試737
19.3.1觸屏庫tslib移植737
19.3.2Qt庫移植739
19.3.3嵌入式Qt程序測試741
19.3.4嵌入式Qt工程配置與測試743
19.4本章小結751
第20章嵌入式多媒體程序移植752
20.1音頻播放程序madplay的移植752
20.1.1在Ubuntu中安裝madplay752
20.1.2 在Ubuntu中測試madplay753
20.1.3將madplay移植到開發闆753
20.1.4在開發闆中測試madplay755
20.2視頻播放程序MPlayer的移植755
20.2.1在Ubuntu中安裝MPlayer755
20.2.2在Ubuntu中測試MPlayer756
20.2.3將MPlayer移植到開發闆756
20.2.4在開發闆中測試MPlayer758
20.3利用Qt開發視頻播放器758
20.3.1MPlayer的SLAVE模式759
20.3.2示例播放器MyPlayer的實現759
20.4本章小結760
第21章嵌入式數據庫移植761
21.1SQLite數據庫的使用761
21.1.1使用命令行操作SQLite761
21.1.2使用C語言操作SQLite763
21.1.3在Qt中操作SQLite765
21.1.4在QTableView中顯示數據庫內容767
21.2SQLite數據庫的移植770
21.2.1將SQLite移植到開發闆770
21.2.2在開發闆中測試SQLite771
21.3本章小結773
第22章嵌入式Web服務器移植774
22.1Boa的使用與HTML頁麵測試774
22.2CGI程序測試779
22.2.1CGI的概念和原理779
22.2.2編寫CGI腳本測試779
22.2.3CGIC庫的基本使用780
22.3通過網頁控製設備782
22.4通過網頁監控設備785
22.5網頁視頻監控788
22.6將Web服務器移植到開發闆791
22.6.1將Boa移植到開發闆791
22.6.2將CGIC移植到開發闆792
22.6.3將mjpg-streamer移植到開發闆792
22.6.4在開發闆上搭建Web服務站點793
22.7本章小結793
第23章嵌入式JVM移植794
23.1phoneME虛擬機移植794
23.1.1獲取源代碼795
23.1.2編譯和安裝795
23.1.3測試步驟796
23.2JamVM虛擬機移植798
23.2.1GNU Classpath移植798
23.2.2JamVM移植799
23.2.3JamVM測試799
23.3在JamVM上運行Jetty服務器800
23.3.1Jetty服務器啓動800
23.3.2在Jetty服務器中部署Web應用801
23.3.3Servlet和JSP頁麵測試803
23.4本章小結805
· · · · · · (
收起)