選擇主流芯片,立足硬件原理,強調理論聯係實踐,引領讀者掌握Cortex-A8的開發。
本書從開發角度齣發,以Smart210開發闆為開發平颱,將Cortex-A8處理器體係結構、開發闆硬件原理、指令係統、開發環境和各功能模塊的原理及應用娓娓道來,不僅讓讀者知其然,更要讓讀者知其所以然,並讓這些知識再反作用於實踐。揭開嵌入式Linux C係統開發背後鮮為人知的秘密,具體說來,全書主要討論瞭包括嵌入式C語言高級編程、嵌入式開發中經典數據結構與算法、嵌入式Linux係統編程、多任務解決機製,網絡編程以及嵌入式數據庫開發等多個方麵的話題。
王恒,女,碩士,講師,畢業於河海大學通信與信息係統專業,現任職於南京航空航天大學金城學院,單人蘇嵌的嵌入式係統培訓講師,具有豐富的教學和科研經驗。
第1章 緒論 1
1.1 嵌入式係統概述 1
1.1.1 什麼是嵌入式係統 1
1.1.2 嵌入式係統的組成 2
1.1.3 嵌入式係統的發展 5
1.1.4 嵌入式係統的應用 7
1.2 嵌入式處理器 9
1.2.1 嵌入式微處理器 9
1.2.2 嵌入式微控製器 10
1.2.3 嵌入式數字信號處理器 10
1.2.4 嵌入式片上係統 11
1.3 嵌入式操作係統 11
1.3.1 嵌入式操作係統概述 11
1.3.2 嵌入式操作係統的特點 12
1.3.3 嵌入式實時操作係統 12
1.3.4 常見的嵌入式操作係統 13
1.4 嵌入式技術知識結構 17
1.5 嵌入式工程師成長之路 18
第2章 ARM體係結構 21
2.1 ARM簡介 21
2.1.1 ARM公司簡介 21
2.1.2 ARM技術特徵 22
2.2 ARM處理器架構 22
2.3 ARM處理器內核 26
2.3.1 Classic處理器 26
2.3.2 Cortex-M係列 29
2.3.3 Cortex-R係列 32
2.3.4 Cortex-A係列 33
2.3.5 SecurCore處理器 38
2.3.6 ARM微處理器的應用選型 39
2.4 Cortex-A8處理器編程模型 39
2.4.1 Cortex-A8內核結構 40
2.4.2 Jazelle擴展體係結構 42
2.4.3 TrustZone安全擴展體係結構 42
2.4.4 高級SIMD體係結構 43
2.4.5 VFPv3體係結構 43
2.4.6 處理器狀態 43
2.4.7 數據類型 44
2.4.8 存儲器格式 44
2.4.9 存儲器係統地址 45
2.4.10 處理器工作模式 46
2.4.11 寄存器組 47
2.4.12 異常 52
2.4.13 安全擴展 57
2.4.14 係統控製協處理器 59
2.5 Cortex-A8存儲管理模型 60
2.5.1 高速緩衝存儲器(Cache) 62
2.5.2 虛擬內存 62
2.5.3 頁錶緩存TLB 65
2.5.4 存儲屬性 67
2.5.5 頁錶的使用 68
2.5.6 存儲順序 69
2.6 Cortex-A8處理器時鍾係統 71
2.7 Cortex-A8處理器復位係統 73
2.9 Cortex-A8處理器功耗控製 75
2.10 流水綫 79
2.10.1 流水綫的概念和原理 79
2.10.2 流水綫的分類 79
2.10.3 影響流水綫性能的因素 81
第3章 硬件平颱詳解 83
3.1 S5PV210處理器概述 83
3.2 S5PV210係列芯片的結構框圖 83
3.3 S5PV210係列芯片的特性 85
3.3.1 微處理器 86
3.3.2 存儲器子係統 87
3.3.3 多媒體 88
3.3.4 音頻子係統 90
3.3.5 安全子係統 90
3.3.6 接口 90
3.3.7 係統外設 92
3.3.8 AMBA總綫 93
3.3.9 S5PV210和S3C6410的比較 95
3.4 S5PV210係列芯片的應用領域 96
3.5 S5PV210芯片的封裝和引腳 96
3.6 開發闆硬件設計說明(核心闆) 102
3.6.1 S5PV210(SYS&Connectivity)/Boot Option 102
3.6.2 S5PV210(DDR2&SROM Memory) 107
3.6.3 S5PV210(Media) 109
3.6.4 S5PV210(Gen Power) 113
3.6.5 DDR2(1 Gbit×4)XM1 118
3.6.6 係統電源 125
3.6.7 復位電路 128
3.6.8 係統時鍾電路 128
3.6.9 JTAG接口電路 129
3.6.10 NANDFlash芯片模塊 130
3.6.11 音頻輸入與輸齣電路 133
3.6.12 網絡驅動芯片模塊 134
3.7 開發闆硬件設計說明(底闆) 137
3.7.1 闆對闆接口 137
3.7.2 電源 137
3.7.3 SDIO-GPIO電路、按鍵電路 137
3.7.4 蜂鳴器電路 141
3.7.5 串口電路 141
3.7.6 G-Sensor 142
3.7.7 EEPROM芯片 143
3.7.8 Ethernet 143
3.7.9 SD卡 144
3.7.10 Audio 144
3.7.11 HDMI接口 145
3.7.12 USB接口 146
2.7.13 LCD接口 146
3.7.14 MIPI-DSI接口 149
3.7.15 攝像頭接口 149
第4章 ARM處理器的指令係統 151
4.1 尋址方式 151
4.2 ARM指令集 154
4.2.1 指令格式 154
4.2.2 跳轉指令 158
4.2.3 數據處理指令 161
4.2.4 程序狀態寄存器傳輸指令 170
4.2.5 Load/Store指令 172
4.2.6 異常中斷産生指令 178
4.2.7 協處理器指令 180
4.2.8 指令速查錶 182
4.3 Thumb指令集 193
4.3.1 Thumb指令集 193
4.3.2 Thumb-2指令集 194
4.3.3 ThumbEE指令集 195
4.4 ARM僞指令 195
4.5 ARM僞操作 198
4.5.1 符號定義僞操作 199
4.5.2 數據定義僞操作 200
4.5.3 符號定義僞操作 203
4.5.4 雜項僞操作 205
4.5.5 GNU ARM匯編僞操作 209
4.6 匯編程序設計 213
4.6.1 匯編語言的語句格式 213
4.6.2 匯編語言的程序結構 219
4.7 C語言與匯編混閤編程 220
4.7.1 ATPCS介紹 220
4.7.2 內嵌匯編 222
4.7.3 ARM中的匯編和C語言相互調用 227
第5章 開發環境詳解 231
5.1 安裝並配置Fedora15 231
5.2 安裝交叉編譯器 231
5.3 使用MiniTools燒寫裸機程序 233
5.3.1 什麼是MiniTools 233
5.3.2 安裝MiniTools工具 233
5.3.3 如何使用MiniTools燒寫裸機程序 234
5.4 跟我一起寫Makefile 236
5.4.1 Makefile的組成結構 236
5.4.2 Makefile詳解 241
5.4.3 書寫規則 243
5.4.4 書寫命令 249
5.4.5 使用變量 252
5.4.6 使用條件判斷 258
5.4.7 使用函數 261
5.4.8 make的運行 267
5.4.9 隱含規則 271
5.4.10 使用make更新函數庫文件 279
5.5 係統引導程序綜述 280
5.5.1 係統引導程序含義 280
5.5.2 係統引導程序的功能 281
5.5.3 BootLoader的操作模式 281
5.5.4 BootLoader的啓動 282
5.5.5 幾個流行的BootLoader 282
5.5.6 U-Boot分析 285
5.5.7 移植U-Boot到開發闆 286
第6章 GPIO端口 289
6.1 GPIO原理分析 289
6.1.1 GPIO類型 290
6.1.2 GPIO特性 290
6.1.3 端口功能定義 291
6.1.4 GPIO寄存器 301
6.1.5 I/O操作步驟 303
6.2 點亮LED 303
6.2.1 原理圖 303
6.2.2 匯編點亮LED 303
6.2.3 C語言點亮LED 308
6.3 控製蜂鳴器 311
6.3.1 原理圖 311
6.3.2 程序相關講解 311
6.3.3 編譯代碼和燒寫運行 313
6.3.4 實驗現象 313
6.4 查詢方式檢測按鍵 313
6.4.1 原理圖 313
6.4.2 程序相關講解 314
6.4.3 編譯代碼和燒寫運行 315
6.4.4 實驗現象 316
第7章 存儲器管理 317
7.1 存儲器概述 317
7.1.1 存儲器組織結構 317
7.1.2 隨機存儲器和隻讀存儲器 317
7.2 S5PV210的存儲係統 320
7.2.1 S5PV210的虛擬內存映射 320
7.2.2 S5PV210微處理器的啓動過程 322
7.3 S5PV210的內存控製器 325
7.3.1 DRAM控製器 325
7.3.2 SROM控製器 327
7.3.3 OneNAND控製器 327
7.3.4 NANDFLASH控製器 328
7.4 控製iCache 329
7.4.1 什麼是Cache 329
7.4.2 程序相關講解 329
7.4.3 編譯代碼和燒寫運行 330
7.4.4 編譯代碼和燒寫運行 330
7.5 重定位代碼到IRAM+0x4000 330
7.5.1 重定位 330
7.5.2 程序相關講解 330
7.5.3 編譯代碼和燒寫運行 333
7.5.4 實驗現象 333
7.6 重定位代碼到DRAM 333
7.6.1 關於DRAM 333
7.6.2 程序相關講解 335
7.6.3 編譯代碼和燒寫運行 343
7.6.4 實驗現象 343
7.7 NANDFlash的讀寫擦除 343
7.7.1 關於NANDFlash 343
7.7.2 程序相關講解 348
7.7.3 編譯代碼和燒寫運行 359
7.7.4 實驗現象 359
第8章 中斷機製 361
8.1 中斷的基本概念 361
8.1.1 中斷的概念 361
8.1.2 中斷源、中斷信號和中斷嚮量 362
8.1.3 中斷優先級 364
8.1.4 中斷操作 366
8.2 S5PV210的中斷係統 366
8.2.1 嚮量中斷控製器 366
8.2.2 S5PV210的中斷源 367
8.2.3 中斷相關寄存器 370
8.3 中斷編程示例 377
8.3.1 程序相關講解 378
8.3.2 編譯代碼和燒寫運行 381
8.3.3 實驗現象 381
第9章 係統時鍾和定時器 383
9.1 係統時鍾 383
9.1.1 時鍾域 383
9.1.2 時鍾聲明 384
9.1.3 時鍾關係 385
9.1.4 時鍾的産生 386
9.1.5 時鍾配置過程 389
9.1.6 係統時鍾相關寄存器 389
9.1.7 係統時鍾示例 395
9.2 PWM定時器 398
9.2.1 PWM定時器概述 398
9.2.2 PWM定時器特點 399
9.2.3 PWM定時器的操作 399
9.2.4 PWM定時器相關寄存器 403
9.2.5 PWM定時器編程示例 406
9.3 看門狗定時器 408
9.3.1 看門狗定時器概述 408
9.3.2 看門狗定時器相關寄存器 409
9.3.3 看門狗定時器編程示例1 410
9.3.4 看門狗定時器編程示例2 412
9.4 RTC實時時鍾 415
9.4.1 RTC實時時鍾概述 415
9.4.2 RTC相關寄存器 416
9.4.3 RTC編程示例 418
第10章 串行通信接口 423
10.1 串行通信概述 423
10.1.1 通信的概念 423
10.1.2 通信的分類 423
10.1.3 串行通信和並行通信 424
10.1.4 同步通信和異步通信 425
10.2 UART接口 425
10.2.1 基本術語 425
10.2.2 異步串行通信協議 426
10.2.3 S5PV210的UART接口 430
10.2.4 S5PV210的UART相關寄存器 434
10.2.5 UART編程示例1 441
10.2.6 UART編程示例2 445
10.3 IIC接口 448
10.3.1 IIC總綫接口概述 448
10.3.2 S5PV210的I2C接口 449
10.3.3 S5PV210的IIC相關寄存器 454
10.4 SPI接口 457
10.4.1 SPI接口概述 457
10.4.2 S5PV210的SPI操作 458
10.4.3 S5PV210的SPI相關寄存器 461
10.4.4 特殊功能寄存器的設置順序 466
第11章 人機接口技術 467
11.1 LCD接口 467
11.1.1 LCD概述 467
11.1.2 S5PV210的LCD控製器 469
11.1.3 S5PV210的LCD相關寄存器 497
11.1.4 LCD示例1 503
11.1.5 LCD示例2 508
11.2 IIS多音頻接口 510
11.2.1 概述 510
11.2.2 S5PV210的IIS相關寄存器 516
11.2.3 示例1 520
11.2.4 示例2 523
11.3 ADC和觸摸屏接口 528
11.3.1 概述 528
11.3.2 S5PV210的ADC和觸摸屏接口 529
11.3.3 S5PV210的ADC相關寄存器 533
11.3.4 示例 537
11.4 鍵盤接口 538
11.4.1 概述 538
11.4.2 S5PV210的鍵盤相關寄存器 542
第12章 嵌入式係統開發流程與設計方法 545
12.1 常用開發模型 545
12.1.1 邊開發邊修改模型 545
12.1.2 瀑布模型 546
12.1.3 快速原型模型 546
12.1.4 增量模型 547
12.1.5 螺鏇模型 548
12.1.6 演化模型 548
12.2 需求分析階段 549
12.2.1 係統分析 550
12.2.2 用戶需求 550
12.2.3 係統需求 552
12.2.4 概要設計 554
12.3 詳細設計階段 556
12.3.1 體係結構設計 556
12.3.2 硬件設計 556
12.3.3 軟件設計 558
12.3.4 設計檢查 558
12.4 科研開發階段 559
12.4.1 建模工具 559
12.4.2 開發平颱 561
12.4.3 軟件開發過程 561
12.5 測試階段 562
12.5.1 測試計劃目標 562
12.5.2 測試類型 563
參考文獻 565
前 言
經過幾十年的發展,嵌入式係統已經在很大程度上改變瞭人們的工作、生活和娛樂方式。嵌入式係統在工業自動化、國防、交通和航天等很多産業中得到瞭廣泛的應用,並逐步改變著這些産業。在日常生活中,幾乎所有帶一點“智能”的傢電,也都擁有自己的嵌入式係統。
對於嵌入式硬件工程師和嵌入式驅動工程師來說,都需要對硬件有一定的理解。而嵌入式係統的硬件部分,其核心元件是嵌入式處理器,相當於嵌入式係統的“大腦”。進行嵌入式硬件和驅動的開發需要掌握嵌入式微處理器的相關知識。
作為ARM的一個關鍵轉型産品,Cortex-A8備受矚目,因其可在Android、Linux和WinCE係統之間切換,所以在手機、平闆、工控三大領域得到瞭大量的應用。Cortex-A8設計用來滿足需要高性能、高功效、Web連接的市場需求,其中包括智能手機、上網本、機頂盒、數字電視、傢庭網絡、存儲網絡(HDD、SSD)、打印機,Cortex-A8處理器還獲得瞭主流EDA和操作係統的支持。緊跟社會需求,本書選擇ARM Cortex-A8微處理器進行深入的講解。
對於一個有誌於從事底層係統開發(如改造BootLoader、鑽研內核、為新硬件編寫驅動程序)的人,特彆是一個想從上層軟件開發轉到底層軟件開發的人,必須能看懂電路原理圖,能夠看懂芯片數據手冊,清楚軟件是如何和硬件發生作用。同樣,對於想從硬件崗位轉到軟件崗位,想從傳統單片機(如51單片機)編程進一步學習“有操作係統的”嵌入式編程的人,需要找到一個學習的切入點,這個切入點就是先掌握各個硬件部分的簡單編程,再將它們組閤起來構成一個相對復雜的軟件係統(如BootLoader),進而編寫基於操作係統的驅動程序,最後深入鑽研操作係統內核。本書會帶領讀者從分析內核開始,詳細地講解開發闆硬件的各模塊,告訴讀者如何利用數據手冊和芯片廠商或第三方資料來設計硬件電路。在講解各個功能模塊時按照由淺入深的順序,分析每個功能模塊時,首先給齣概念、講解原理,然後分析相應的寄存器,最後給齣代碼並對代碼進行詳細的分析,尤其講解清楚和原理及寄存器的關係。本書所有的實例都已經經過友善之臂的Smart210開發闆進行瞭驗證。
本書的編寫更強調解決問題的方法,怎樣利用數據手冊和芯片原廠或第三方資料來設計硬件電路,怎樣分析各個模塊的原理和利用寄存器編寫程序,這些都需要一定的方法,希望通過本書的學習,讀者能夠掌握Cortex-A8微處理器的原理及接口技術。
本書特色:
(1)硬件是基礎。如果不想隻從事純應用(和硬件沒有任何關係)編程,那必須掌握一定的ARM係統與接口等硬件技術,具有分析係統原理和調試解決問題的能力。硬件是基礎,其實硬件並沒有初學者想象中那麼難。ARM處理器原廠或第三方也都會提供完整的硬件參考設計,都是標準化電路及接口,學習者隻要突破一種就可以理解多種ARM處理器,就可以消除硬件上的模糊。本書在編寫時,詳細講解瞭開發闆的硬件原理圖,並從硬件本身去分析各個模塊的功能,深入到時序、引腳功能、電平轉換和物理現象等。
(2)獨特視角。本書是蘇嵌多年從事嵌入式社會培訓教育經驗匯總,從實戰的角度全麵係統地介紹瞭蘇嵌嵌入式裸機開發和驅動開發領域的培訓心得。
(3)強調理論聯係實踐。每個模塊從細節上去分析功能,這樣就可以從最基本的角度去瞭解每個模塊的工作原理。在瞭解原理的基礎上,針對各個模塊又設計瞭相對應的實例,所有實例都使用友善之臂的Smart210開發闆進行驗證,具有很強的實用性。
參與本書編寫的人員有王恒、林新華、桑元俊、苗新蕊、霍躍華、牛雪峰,本書既可作為高等院校相關專業師生的教學參考書,自學參考書,也可供相關領域的工程技術人員查閱之用,對於普通Cortex-A8嵌入式微處理器愛好者,本書也不失為幫助他們掌握Cortex-A8嵌入式微處理器原理與接口技術的深入淺齣的一本讀物。
感謝蘇嵌教育在本書編寫的過程中提供的幫助和支持,感謝友善之臂的開發平颱,特彆感謝電子工業齣版社的編輯在本書齣版過程中給予作者的指導和大力支持。
由於本書涉及的知識麵廣,時間又倉促,限於筆者的水平和經驗,疏漏之處在所難免,懇請專傢和讀者批評指正。
作 者
2016年7月
這本書的封麵設計非常吸引人,簡潔大方,點齣瞭核心“ARM Cortex-A8”字樣,讓人一眼就能辨彆齣其主題。字體選擇也很講究,透著一種專業與嚴謹的學究氣。我是在一個偶然的機會下,在書店的計算機技術區閑逛時瞥見瞭它。當時我的手臂不經意地掃過書架,這本書就靜靜地躺在那裏,仿佛在等待著我。它的厚度適中,拿在手裏有一定的分量,預示著其中蘊含著豐富的知識。封麵的配色是那種沉穩又不失活力的藍綠色調,給人一種寜靜而又充滿探索欲的感覺。我反復翻看,被它厚實的頁數和略顯硬挺的書脊所吸引,感覺這是一本值得深入研讀的佳作。我特彆喜歡它那種不張揚但很有分量的存在感,不像市麵上很多技術書籍那樣花哨,而是實實在在的知識集錦。雖然我當時並沒有立刻購買,但它在我腦海裏留下瞭深刻的印象,之後我特意去搜集瞭它的相關信息,最終決定入手,也確實不負我的期待。
評分這本書的章節結構設計給我留下瞭深刻的印象。它不是那種簡單堆砌知識點的羅列,而是構建瞭一個清晰的學習路徑。從最基礎的ARM架構概述開始,逐步深入到Cortex-A8的具體指令集、流水綫、緩存、中斷等核心模塊。每一個章節都像是一個精心打磨的颱階,讓我能夠穩步嚮上攀登,而不是茫然地跌入知識的海洋。特彆是在介紹某些高級特性時,作者會提前鋪墊相關的背景知識,確保讀者在接觸新概念時不會感到突兀。章節結尾通常會附帶一些思考題或者小練習,雖然我還沒來得及深入做,但這種設計顯然是為瞭鞏固學習效果,鼓勵讀者主動思考。這種由淺入深、循序漸進的學習框架,對於我這樣一個想要係統掌握ARM Cortex-A8的讀者來說,無疑是極大的幫助。
評分這本書的語言風格我個人覺得非常到位。它不像有些技術書籍那樣,動不動就充斥著晦澀難懂的專業術語,讓你感覺像是在啃一本字典。而是用一種比較通俗易懂,但又不失嚴謹的語言來闡述復雜的概念。作者在講解一些核心原理時,會適當地加入一些類比或者實際的例子,幫助讀者建立直觀的理解。比如,在介紹某個處理器架構的時候,作者會用一個生活中的例子來比喻其工作流程,讓人瞬間豁然開朗。同時,它也沒有因為追求通俗而犧牲掉技術上的準確性,對於關鍵的術語和定義,依然給齣瞭精確的解釋。這種張弛有度的語言風格,使得技術知識的傳遞更加高效和有趣。我感覺作者就像是一位經驗豐富的導師,循循善誘地引導著我一步步深入理解ARM Cortex-A8的精髓。
評分整本書給我最直觀的感受就是它的“深度”和“廣度”。作者在對ARM Cortex-A8這個微處理器核心的剖析上,展現齣瞭驚人的細緻和深入。從底層的指令編碼,到上層的係統架構,幾乎涵蓋瞭所有關鍵的技術細節。我感覺作者不僅僅是羅列齣這些知識點,而是真正地去“剖析”,去揭示這些設計背後的邏輯和權衡。無論是對指令流水綫的優化策略,還是對緩存一緻性協議的詳細闡述,都力求讓讀者能夠理解“為什麼是這樣”,而不僅僅是知道“是什麼”。這種對細節的極緻追求,讓我在閱讀過程中,仿佛置身於一個精密運轉的機器內部,親眼見證著每一個齒輪是如何咬閤,每一個信號是如何傳遞的。這本圖書的齣現,無疑填補瞭我在這方麵知識上的一個重要空白,讓我對ARM Cortex-A8有瞭更為全麵和透徹的認識。
評分拿到這本書的時候,我最先關注的是它的排版和印刷質量。不得不說,這方麵做得相當齣色。紙張的觸感很棒,不是那種粗糙的劣質紙,而是略帶光澤,印刷的字跡清晰銳利,即使是復雜的圖錶和代碼片段,也能完美呈現,一點也不含糊。每一頁的邊距都經過精心設計,留有足夠的空間,方便我在閱讀過程中做筆記和標記。章節的劃分也很閤理,邏輯清晰,過渡自然,這對於一本技術類書籍來說至關重要,能夠幫助讀者更好地理解和消化內容。我尤其欣賞它在插圖和圖示上的處理,沒有濫用花哨的圖,而是根據講解內容,精心繪製瞭大量的示意圖、流程圖和架構圖,這些圖不僅直觀易懂,而且信息量巨大,極大地降低瞭理解復雜概念的難度。整體而言,這本圖書的製作工藝體現瞭齣版方的專業和用心,讓人閱讀起來心情愉悅,也更能沉浸在知識的世界裏。
評分嗯
評分嗯
評分嗯
評分嗯
評分嗯
評分嗯
評分嗯
評分嗯
評分嗯
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有