內容簡介
本書以目前工業嵌入式領域表現出色的ARM9處理器S3C2440和源碼開放的Linux作業系統為基礎,系統地介紹了嵌入式系統S3C2440的開發過程及S3C2440各個接口的套用編程實例。所有代碼均由作者在軟體平台調試通過,大部分應用程式代碼為作者在產品開發過程中所實際套用之成熟代碼。本書對從事該領域產品開發的工程技術人員有較高的參考價值。
本書可作為高等院校電子、通信、自動化、計算機等專業的嵌入式系統課程的教材,也可作為從事嵌入式套用開發的工程技術人員的參考資料。
目錄
第1章 嵌入式系統開發基礎 1
1.1 嵌入式Linux系統開發模式 1
1.1.1 嵌入式系統設計的特點 3
1.1.2 嵌入式系統的設計流程 4
1.1.3 嵌入式系統的軟硬體劃分 7
1.1.4 嵌入式系統的產品硬體詳細設計 7
1.2 嵌入式系統的軟體設計 8
1.2.1 嵌入式軟體平台的選擇 9
1.2.2 嵌入式軟體性能的設計 10
1.2.3 嵌入式軟體開發流程 11
1.3 嵌入式開發電路基礎 12
1.3.1 電路原理圖設計 12
1.3.2 電路PCB設計基礎 13
1.3.3 電子電路抗干擾技術 19
1.3.4 PCB設計中常用定義、符號和縮略語 22
1.3.5 PCB工藝設計考慮的基本問題 23
1.3.6 印製板常用基板設計要求 24
1.3.7 PCB製造一般技術要求 25
1.3.8 PCB設計基本工藝要求 25
1.3.9 拼板設計 29
1.3.10 元件的選用原則 32
1.3.11 組裝方式 32
1.3.12 元件布局 33
1.3.13 布線要求 37
1.3.14 焊盤與線路的連線 37
1.3.15 大面積電源區和接地區的設計 38
1.3.16 通孔插裝元件焊盤設計 39
1.3.17 導通孔的設計 41
1.3.18 阻焊層設計 42
1.3.19 字元圖 43
1.3.20 元器件的表示方法 44
第2章 嵌入式微處理器及S3C2440處理器 48
2.1 嵌入式微處理器的結構和類型 48
2.1.1 嵌入式微處理器的分類 48
2.1.2 典型32位ARM微處理器的結構和特點 50
2.2 ARM9微處理器簡介 58
2.2.1 ARM9與ARM7處理器的比較 58
2.2.2 三星S3C2440X ARM9處理器基礎 59
第3章 Linux Flash驅動及套用實例 62
3.1 Flash簡介 62
3.2 S3C2440 Nand Flash接口硬體及暫存器介紹 65
3.2.1 S3C2440 Nand Flash電路介紹 65
3.2.2 Nand Flash暫存器介紹 65
3.3 S3C2440 Flash控制器驅動程式分析 72
3.3.1 暫存器地址和功能定義 72
3.3.2 數據結構和變數描述 73
3.3.3 主要函式描述 77
第4章 S3C2440 SD/MMC Linux驅動及套用案例 90
4.1 SD/MMC概述 90
4.1.1 SD卡匯流排協定及工作原理 90
4.1.2 SD卡引腳及接口電路 91
4.2 S3C2440 SD/MMC接口暫存器介紹 93
4.3 Linux SD/MMC驅動程式分析 98
4.3.1 暫存器地址和功能定義 98
4.3.2 數據結構和變數描述 101
4.3.3 主要函式描述 104
第5章 S3C2440 I/O接口Linux驅動及套用實例 124
5.1 GPIO接口基礎 124
5.2 S3C2440 GPIO接口硬體及暫存器 125
5.2.1 S3C2440 GPIO接口硬體 125
5.2.2 GPIO暫存器 125
5.3 S3C2440 GPIO驅動及LED應用程式分析 134
5.3.1 暫存器地址和功能定義 134
5.3.2 GPIO驅動LED程式主要函式描述 151
5.4 S3C2440 LED應用程式設計例程 153
第6章 Linux下S3C2440串口驅動及套用實例 155
6.1 串口的基本類型 155
6.1.1 RS-232串列接口標準 155
6.1.2 RS-422與RS-485串列接口標準 155
6.2 Linux串口驅動程式與分析 156
6.2.1 串列連線埠終端(/dev/ttySn) 156
6.2.2 偽終端(/dev/pty/) 157
6.2.3 控制終端(/dev/tty) 157
6.2.4 控制台終端(/dev/ttyn,/dev/console) 157
6.3 基於Linux串口設備驅動程式分析 158
6.3.1 UART驅動結構圖 158
6.3.2 UART驅動中重要的數據結構及其關聯 158
6.4 S3C2440 UART驅動實例分析 160
6.4.1 串口硬體 160
6.4.2 UART的暫存器 161
6.4.3 S3C2440串口驅動數據結構分析 166
6.4.4 結構體及相關變數定義 167
6.4.5 S3C2440串口驅動主要函式 169
6.5 串口GPS數據的採集例程 182
6.5.1 GPS簡介 182
6.5.2 GPS原理 182
6.5.3 GPS協定分析 183
6.5.4 GPS套用的編程實例 184
6.6 小結 189
第7章 S3C2440 SPI接口驅動及CAN協定實現 190
7.1 S3C2440 SPI接口及CAN匯流排基礎 190
7.1.1 SPI接口基礎 190
7.1.2 CAN匯流排基礎 193
7.1.3 SPI接口CAN協定實現硬體電路 195
7.2 SPI暫存器 196
7.2.1 SPI暫存器基礎(SPCONn) 196
7.2.2 SPI暫存器地址和相關功能 199
7.3 SPI接口CAN協定驅動函式分析 200
7.3.1 SPI接口CAN協定驅動數據結構與相關變數 200
7.3.2 驅動程式結構與主要函式 201
第8章 LCD設備驅動與套用案例 214
8.1 LCD的基本知識 214
8.2 幀緩衝 214
8.2.1 幀緩衝的概念 214
8.2.2 Linux緩衝的相關數據結構 215
8.2.3 幀緩衝的設備驅動程式結構 215
8.2.4 幀設備緩衝的驅動模組主要函式 216
8.3 S3C2440 LCD設備驅動實例 216
8.3.1 S3C2440 LCD設備硬體 216
8.3.2 硬體暫存器定義描述 230
8.3.3 S3C2440 LCD數據結構分析 230
8.3.4 主要函式描述 234
8.4 控制台圖像顯示實例 243
8.4.1 程式原理 243
8.4.2 主要函式描述 244
第9章 S3C2440 USB接口Linux驅動及套用實例 248
9.1 USB接口介紹 248
9.2 Linux USB驅動結構 249
9.3 S3C2440 USB接口硬體及暫存器 250
9.3.1 S3C2440 USB硬體接口 250
9.3.2 S3C2440 USB硬體接口暫存器 250
9.4 S3C2440 USB主機驅動程式分析 251
9.4.1 暫存器地址和功能定義 252
9.4.2 結構體及相關變數定義 252
9.4.3 主要函式描述 254
9.5 ZC301 USB攝像頭驅動實例 257
9.5.1 主要的數據結構與相關變數定義 257
9.5.2 主要函式分析 258
9.6 USB網路攝像頭套用實例 270
9.6.1 V4L介紹 270
9.6.2 主要的數據結構 271
9.6.3 主要函式描述 272
9.6.4 參考代碼 280
第10章 S3C2440 A/D接口和觸控螢幕Linux驅動及套用實例 288
10.1 S3C2440 A/D接口驅動分析 288
10.1.1 S3C2440 A/D接口 288
10.1.2 S3C2440 A/D暫存器介紹 291
10.1.3 S3C2440 A/D驅動程式分析 293
10.1.4 S3C2440 A/D套用設計例程 298
10.2 觸控螢幕設備驅動 300
10.2.1 觸控螢幕的硬體原理 300
10.2.2 觸控螢幕設備驅動分析 302
第11章 Linux下網卡驅動及套用實例 311
11.1 Linux網路設備的驅動基礎 311
11.2 基於Linux的網路設備驅動程式分析 311
11.2.1 數據結構struct net_device 312
11.2.2 數據結構struct sk_buff 318
11.2.3 主要函式描述 322
11.3 基於CS8900網路設備驅動設計實例 328
11.3.1 CS8900網卡硬體描述 328
11.3.2 CS8900網卡驅動設計分析 330
11.4 網路套用 351
11.4.1 ICMP協定(Internet控制報文協定) 356
11.4.2 ICMP報文 356
11.5 Web伺服器Boa移植實例 363
11.5.1 移植步驟 364
11.5.2 Boa的配置 364
11.5.3 Boa運行 364
參考文獻 365