3dwoo大學簡體電腦書店
Xilinx Zynq-7000嵌入式系統設計與實現:基于Arm Cortex-A9雙核處理器和Vivado的設計方法(第二版)
( 簡體 字)
作者:何賓類別:1. -> 電子工程 -> FPGA
出版社:電子工業出版社Xilinx Zynq-7000嵌入式系統設計與實現:基于Arm Cortex-A9雙核處理器和Vivado的設計方法(第二版) 3dWoo書號: 51976
詢問書籍請說出此書號!
缺書
NT售價: 895
出版日:11/1/2019
頁數:760
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121374715 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第 章 Zynq - 7000 SoC設計導論 1
1.1 全可編程片上系統基礎知識 1
1.1.1 全可編程片上系統的演進 1
1.1.2 SoC與MCU和CPU的比較 3
1.1.3 全可編程SoC誕生的背景 4
1.1.4 可編程SoC系統技術特點 5
1.1.5 全可編程片上系統中的處理器類型 5
1.2 Arm架構及分類 6
1.2.1 M - Profile 7
1.2.2 R - Profile 9
1.2.3 A - Profile 10
1.3 Zynq - 7000 SoC功能和結構 11
1.3.1 Zynq - 7000 SoC產品分類及資源 12
1.3.2 Zynq - 7000 SoC的功能 12
1.3.3 Zynq - 7000 SoC處理系統PS的構成 14
1.3.4 Zynq - 7000 SoC可編程邏輯PL的構成 19
1.3.5 Zynq - 7000 SoC內的互聯結構 20
1.3.6 Zynq - 7000 SoC的供電引腳 22
1.3.7 Zynq - 7000 SoC內MIO到EMIO的連接 23
1.3.8 Zynq - 7000 SoC內為PL分配的信號 28
1.4 Zynq - 7000 SoC在嵌入式系統中的優勢 30
1.4.1 使用PL實現軟件算法 30
1.4.2 降低功耗 32
1.4.3 實時減負 33
1.4.4 可重配置計算 34
第 章 AMBA規范 35
2.1 AMBA規范及發展 35
2.1.1 AMBA 1 36
2.1.2 AMBA 2 36
2.1.3 AMBA 3 36
2.1.4 AMBA 4 37
2.1.5 AMBA 5 38
2.2 AMBA APB規范 40
2.2.1 AMBA APB寫傳輸 40
2.2.2 AMBA APB讀傳輸 42
2.2.3 AMBA APB錯誤響應 43
2.2.4 操作狀態 44
2.2.5 AMBA 3 APB信號 44
2.3 AMBA AHB規范 45
2.3.1 AMBA AHB結構 45
2.3.2 AMBA AHB操作 46
2.3.3 AMBA AHB傳輸類型 48
2.3.4 AMBA AHB猝發操作 50
2.3.5 AMBA AHB傳輸控制信號 53
2.3.6 AMBA AHB地址譯碼 54
2.3.7 AMBA AHB從設備傳輸響應 55
2.3.8 AMBA AHB數據總線 58
2.3.9 AMBA AHB傳輸仲裁 59
2.3.10 AMBA AHB分割傳輸 64
2.3.11 AMBA AHB復位 67
2.3.12 關于AHB數據總線的位寬 67
2.3.13 AMBA AHB接口設備 68
2.4 AMBA AXI4規范 69
2.4.1 AMBA AXI4概述 69
2.4.2 AMBA AXI4功能 70
2.4.3 AMBA AXI4互聯結構 78
2.4.4 AXI4 - Lite功能 79
2.4.5 AXI4 - Stream功能 80
第 章 Zynq - 7000系統公共資源及特性 83
3.1 時鐘子系統 83
3.1.1 時鐘子系統架構 83
3.1.2 CPU時鐘域 84
3.1.3 時鐘編程實例 86
3.1.4 時鐘子系統內的生成電路結構 87
3.2 復位子系統 91
3.2.1 復位子系統結構和層次 92
3.2.2 復位流程 93
3.2.3 復位的結果 94
第 章 Zynq調試和測試子系統 95
4.1 JTAG和DAP子系統 95
4.1.1 JTAG和DAP子系統功能 97
4.1.2 JTAG和DAP子系統I/O信號 99
4.1.3 編程模型 99
4.1.4 Arm DAP控制器 101
4.1.5 跟蹤端口接口單元(TPIU) 102
4.1.6 Xilinx TAP控制器 102
4.2 CoreSight系統結構及功能 103
4.2.1 CoreSight結構概述 103
4.2.2 CoreSight系統功能 104
第 章 Cortex - A9處理器及指令集 107
5.1 應用處理單元概述 107
5.1.1 基本功能 107
5.1.2 系統級視圖 108
5.2 Cortex - A9處理器結構 110
5.2.1 處理器模式 111
5.2.2 寄存器 113
5.2.3 流水線 118
5.2.4 分支預測 118
5.2.5 指令和數據對齊 119
5.2.6 跟蹤和調試 121
5.3 Cortex - A9處理器指令集 122
5.3.1 指令集基礎 122
5.3.2 數據處理操作 125
5.3.3 存儲器指令 130
5.3.4 分支 131
5.3.5 飽和算術 133
5.3.6 雜項指令 134
第 章 Cortex - A9片上存儲器系統結構和功能 138
6.1 L1高速緩存 138
6.1.1 高速緩存背景 138
6.1.2 高速緩存的優勢和問題 139
6.1.3 存儲器層次 140
6.1.4 高速緩存結構 140
6.1.5 緩存策略 145
6.1.6 寫和取緩沖區 147
6.1.7 緩存性能和命中速度 147
6.1.8 無效和清除緩存 147
6.1.9 一致性點和統一性點 149
6.1.10 Zynq - 7000中Cortex - A9 L1高速緩存的特性 151
6.2 存儲器順序 153
6.2.1 普通、設備和強順序存儲器模型 154
6.2.2 存儲器屬性 155
6.2.3 存儲器屏障 155
6.3 存儲器管理單元 159
6.3.1 MMU功能描述 160
6.3.2 虛擬存儲器 161
6.3.3 轉換表 162
6.3.4 頁表入口域的描述 165
6.3.5 TLB構成 167
6.3.6 存儲器訪問順序 169
6.4 偵聽控制單元 170
6.4.1 地址過濾 171
6.4.2 SCU主設備端口 171
6.5 L2高速緩存 171
6.5.1 互斥L2 - L1高速緩存配置 173
6.5.2 高速緩存替換策略 174
6.5.3 高速緩存鎖定 174
6.5.4 使能/禁止L2高速緩存控制器 176
6.5.5 RAM訪問延遲控制 176
6.5.6 保存緩沖區操作 176
6.5.7 在Cortex - A9和L2控制器之間的優化 177
6.5.8 預取操作 178
6.5.9 編程模型 179
6.6 片上存儲器 180
6.6.1 片上存儲器概述 180
6.6.2 片上存儲器功能 181
6.7 系統地址分配 186
6.7.1 地址映射 186
6.7.2 系統總線主設備 188
6.7.3 I/O外設 188
6.7.4 SMC存儲器 188
6.7.5 SLCR寄存器 188
6.7.6 雜項PS寄存器 189
6.7.7 CPU私有寄存器 189
第 章 Zynq - 7000 SoC的Vivado基本設計流程 190
7.1 創建新的工程 190
7.2 使用IP集成器創建處理器系統 192
7.3 生成頂層HDL并導出設計到SDK 197
7.4 創建應用測試程序 199
7.5 設計驗證 202
7.5.1 驗證前的硬件平臺準備 202
7.5.2 設計驗證的具體實現 203
7.6 SDK調試工具的使用 205
7.6.1 打開前面的設計工程 205
7.6.2 導入工程到SDK 205
7.6.3 建立新的存儲器測試工程 205
7.6.4 運行存儲器測試工程 206
7.6.5 調試存儲器測試工程 207
7.7 SDK性能分析工具 209
第 章 Arm GPIO的原理和控制實現 213
8.1 GPIO模塊原理 213
8.1.1 GPIO接口及功能 214
8.1.2 GPIO編程流程 217
8.1.3 I/O接口 218
8.1.4 部分寄存器說明 218
8.1.5 底層讀/寫函數說明 220
8.1.6 GPIO的API函數說明 220
8.2 Vivado環境下MIO讀/寫控制的實現 221
8.2.1 調用底層讀/寫函數編寫GPIO應用程序 221
8.2.2 調用API函數編寫控制GPIO應用程序 224
8.3 Vivado環境下EMIO讀/寫控制的實現 226
8.3.1 調用底層讀/寫函數編寫GPIO應用程序 227
8.3.2 調用API函數編寫控制GPIO應用程序 232
第 章 Cortex - A9異常與中斷原理及實現 236
9.1 異常原理 236
9.1.1 異常類型 237
9.1.2 異常處理 241
9.1.3 其他異常句柄 242
9.1.4 Linux異常程序流 243
9.2 中斷原理 244
9.2.1 外部中斷請求 244
9.2.2 Zynq - 7000 SoC內的中斷環境 247
9.2.3 中斷控制器的功能 248
9.3 Vivado環境下中斷系統的實現 252
9.3.1 Cortex - A9處理器中斷及異常初始化流程 252
9.3.2 Cortex - A9 GPIO控制器初始化流程 252
9.3.3 導出硬件設計到SDK 253
9.3.4 創建新的應用工程 253
9.3.5 運行應用工程 256
第 章 Cortex - A9定時器原理及實現 257
10.1 定時器系統架構 257
10.1.1 CPU私有定時器和看門狗定時器 257
10.1.2 全局定時器/計數器 258
10.1.3 系統級看門狗定時器 259
10.1.4 3重定時器/計數器 261
10.1.5 I/O信號 264
10.2 Vivado環境下定時器的控制實現 264
10.2.1 打開前面的設計工程 265
10.2.2 創建SDK軟件工程 265
10.2.3 運行軟件應用工程 267
第 章 Cortex - A9 DMA控制器原理及實現 268
11.1 DMA控制器架構 268
11.2 DMA控制器功能 271
11.2.1 考慮AXI交易的因素 272
11.2.2 DMA管理器 273
11.2.3 多通道數據FIFO(MFIFO) 274
11.2.4 存儲器—存儲器交易 274
11.2.5 PL外設AXI交易 274
11.2.6 PL外設請求接口 275
11.2.7 PL外設長度管理 276
11.2.8 DMAC長度管理 277
11.2.9 事件和中斷 278
11.2.10 異常終止 278
11.2.11 安全性 280
11.2.12 IP配置選項 282
11.3 DMA控制器編程指南 282
11.3.1 啟動控制器 282
11.3.2 執行DMA傳輸 282
11.3.3 中斷服務例程 282
11.3.4 寄存器描述 283
11.4 DMA引擎編程指南 284
11.4.1 寫微代碼編程用于AXI交易的CCRx 284
11.4.2 存儲器到存儲器傳輸 284
11.4.3 PL外設DMA傳輸長度管理 287
11.4.4 使用一個事件重新啟動DMA通道 289
11.4.5 中斷一個處理器 289
11.4.6 指令集參考 290
11.5 編程限制 291
11.6 系統功能之控制器復位配置 292
11.7 I/O接口 293
11.7.1 AXI主接口 293
11.7.2 外設請求接口 293
11.8 Vivado環境下DMA傳輸的實現 294
11.8.1 DMA控制器初始化流程 295
11.8.2 中斷控制器初始化流程 295
11.8.3 中斷服務句柄處理流程 296
11.8.4 導出硬件設計到SDK 296
11.8.5 創建新的應用工程 297
11.8.6 運行軟件應用工程 303
第 章 Cortex - A9安全性擴展 305
12.1 TrustZone硬件架構 305
12.1.1 多核系統的安全性擴展 307
12.1.2 普通世界和安全世界的交互 307
12.2 Zynq - 7000 APU內的TrustZone 308
12.2.1 CPU安全過渡 309
12.2.2 CP15寄存器訪問控制 310
12.2.3 MMU安全性 310
12.2.4 L1緩存安全性 311
12.2.5 安全異常控制 311
12.2.6 CPU調試TrustZone訪問控制 311
12.2.7 SCU寄存器訪問控制 312
12.2.8 L2緩存中的TrustZone支持 312
第 章 Cortex - A9 NEON原理及實現 313
13.1 SIMD 313
13.2 NEON架構 315
13.2.1 與VFP的共性 315
13.2.2 數據類型 316
13.2.3 NEON寄存器 316
13.2.4 NEON指令集 318
13.3 NEON C編譯器和匯編器 319
13.3.1 向量化 319
13.3.2 檢測NEON 319
13.4 NEON優化庫 320
13.5 SDK工具提供的優化選項 321
13.6 使用NEON內聯函數 324
13.6.1 NEON數據類型 325
13.6.2 NEON內聯函數 325
13.7 優化NEON匯編器代碼 327
13.8 提高存儲器訪問效率 328
13.9 自動向量化實現 329
13.9.1 導出硬件設計到SDK 329
13.9.2 創建新的應用工程 330
13.9.3 運行軟件應用工程 331
13.10 NEON匯編代碼實現 331
13.10.1 導出硬件設計到SDK 331
13.10.2 創建新的應用工程 332
13.10.3 運行軟件應用工程 333
第 章 Cortex - A9外設模塊結構及功能 334
14.1 DDR存儲器控制器 334
14.1.1 DDR存儲器控制器接口及功能 335
14.1.2 AXI存儲器接口 337
14.1.3 DDR核和交易調度器 338
14.1.4 DDRC仲裁 338
14.1.5 DDR存儲器控制器PHY 340
14.1.6 DDR初始化和標定 340
14.1.7 糾錯碼 341
14.2 靜態存儲器控制器 342
14.2.1 靜態存儲器控制器接口及功能 343
14.2.2 靜態存儲器控制器和存儲器的信號連接 344
14.3 四 - SPI Flash控制器 345
14.3.1 四 - SPI Flash控制器功能 347
14.3.2 四 - SPI Flash控制器反饋時鐘 349
14.3.3 四 - SPI Flash控制器接口 349
14.4 SD/SDIO外設控制器 351
14.4.1 SD/SDIO控制器功能 352
14.4.2 SD/SDIO控制器傳輸協議 353
14.4.3 SD/SDIO控制器端口信號連接 356
14.5 USB主機、設備和OTG控制器 356
14.5.1 USB控制器接口及功能 358
14.5.2 USB主機操作模式 361
14.5.3 USB設備操作模式 363
14.5.4 USB OTG操作模式 365
14.6 吉比特以太網控制器 365
14.6.1 吉比特以太網控制器接口及功能 367
14.6.2 吉比特以太網控制器接口編程向導 368
14.6.3 吉比特以太網控制器接口信號連接 372
14.7 SPI控制器 373
14.7.1 SPI控制器的接口及功能 374
14.7.2 SPI控制器時鐘設置規則 376
14.8 CAN控制器 376
14.8.1 CAN控制器接口及功能 377
14.8.2 CAN控制器操作模式 379
14.8.3 CAN控制器消息保存 380
14.8.4 CAN控制器接收過濾器 381
14.8.5 CAN控制器編程模型 382
14.9 UART控制器 383
14.10 I2C控制器 387
14.10.1 I2C速度控制邏輯 388
14.10.2 I2C控制器的功能和工作模式 388
14.11 XADC轉換器接口 390
14.11.1 XADC轉換器接口及功能 391
14.11.2 XADC命令格式 392
14.11.3 供電傳感器報警 392
14.12 PCI - E接口 393
第 章 Zynq - 7000內的可編程邏輯資源 395
15.1 可編程邏輯資源概述 395
15.2 可編程邏輯資源功能 396
15.2.1 CLB、Slice和LUT 396
15.2.2 時鐘管理 396
15.2.3 塊RAM 398
15.2.4 數字信號處理 - DSP Slice 398
15.2.5 輸入/輸出 399
15.2.6 低功耗串行收發器 400
15.2.7 PCI - E模塊 401
15.2.8 XADC(模擬 - 數字轉換器) 402
15.2.9 配置 402
第 章 Zynq - 7000內的互聯結構 404
16.1 系統互聯架構 404
16.1.1 互聯模塊及功能 404
16.1.2 數據路徑 406
16.1.3 時鐘域 407
16.1.4 連接性 408
16.1.5 AXI ID 409
16.1.6 寄存器概述 409
16.2 服務質量 410
16.2.1 基本仲裁 410
16.2.2 高級QoS 410
16.2.3 DDR端口仲裁 411
16.3 AXI_HP接口 411
16.3.1 AXI_HP接口結構及特點 411
16.3.2 接口數據寬度 415
16.3.3 交易類型 416
16.3.4 命令交替和重新排序 416
16.3.5 性能優化總結 416
16.4 AXI_ACP接口 417
16.5 AXI_GP接口 418
16.6 AXI信號總結 418
16.7 PL接口選擇 422
16.7.1 使用通用主設備端口的Cortex - A9 423
16.7.2 通過通用主設備的PS DMA控制器(DMAC) 423
16.7.3 通過高性能接口的PL DMA 426
16.7.4 通過AXI ACP的PL DMA 426
16.7.5 通過通用AXI從(GP)的PL DMA 426
第 章 Zynq - 7000 SoC內定制簡單AXI - Lite IP 429
17.1 設計原理 429
17.2 定制AXI - Lite IP 429
17.2.1 創建定制IP模板 429
17.2.2 修改定制IP設計模板 432
17.2.3 使用IP封裝器封裝外設 436
17.3 打開并添加IP到設計中 440
17.3.1 打開工程和修改設置 440
17.3.2 添加定制IP到設計 442
17.3.3 添加XDC約束文件 445
17.4 導出硬件到SDK 446
17.5 建立和驗證軟件應用工程 446
17.5.1 建立應用工程 447
17.5.2 下載硬件比特流文件到FPGA 449
17.5.3 運行應用工程 450
第 章 Zynq - 7000 SoC內定制復雜AXI Lite IP 451
18.1 設計原理 451
18.1.1 VGA IP核的設計原理 451
18.1.2 移位寄存器IP核的設計原理 453
18.2 定制VGA IP核 454
18.2.1 創建定制VGA IP模板 454
18.2.2 修改定制VGA IP模板 455
18.2.3 使用IP封裝器封裝VGA IP 459
18.3 定制移位寄存器IP核 460
18.3.1 創建定制SHIFTER IP模板 460
18.3.2 修改定制SHIFTER IP模板 462
18.3.3 使用IP封裝器封裝SHIFTER IP 463
18.4 打開并添加IP到設計中 464
18.4.1 打開工程和修改設置 464
18.4.2 添加定制IP到設計 466
18.4.3 添加XDC約束文件 470
18.5 導出硬件到SDK 471
18.6 建立和驗證軟件工程 472
18.6.1 建立應用工程 472
18.6.2 下載硬件比特流文件到FPGA 476
18.6.3 運行應用工程 477
第 章 Zynq - 7000 AXI HP數據傳輸原理及實現 478
19.1 設計原理 478
19.2 構建硬件系統 479
19.2.1 打開工程和修改設置 479
19.2.2 添加并連接AXI DMA IP核 480
19.2.3 添加并連接FIFO IP核 482
19.2.4 連接DMA中斷到PS 485
19.2.5 驗證和建立設計 487
19.3 建立和驗證軟件工程 487
19.3.1 導出硬件到SDK 488
19.3.2 創建軟件應用工程 488
19.3.3 下載硬件比特流文件到FPGA 497
19.3.4 運行應用工程 497
第 章 Zynq - 7000 ACP數據傳輸原理及實現 499
20.1 設計原理 499
20.2 打開前面的設計工程 499
20.3 配置PS端口 499
20.4 添加并連接IP到設計 500
20.4.1 添加IP到設計 501
20.4.2 系統連接 501
20.4.3 分配地址空間 502
20.5 使用SDK設計和實現應用工程 504
20.5.1 創建新的軟件應用工程 504
20.5.2 導入應用程序 504
20.5.3 下載硬件比特流文件到FPGA 507
20.5.4 運行應用工程 508
第 章 Zynq - 7000軟件和硬件協同調試原理及實現 509
21.1 設計目標 509
21.2 ILA核原理 510
21.2.1 ILA觸發器輸入邏輯 510
21.2.2 多觸發器端口的使用 510
21.2.3 使用觸發器和存儲限制條件 510
21.2.4 ILA觸發器輸出邏輯 512
21.2.5 ILA數據捕獲邏輯 512
21.2.6 ILA控制與狀態邏輯 513
21.3 VIO核原理 513
21.4 構建協同調試硬件系統 514
21.4.1 打開前面的設計工程 514
21.4.2 添加定制IP 514
21.4.3 添加ILA和VIO核 515
21.4.4 標記和分配調試網絡 516
21.5 生成軟件工程 518
21.6 S/H協同調試 520
第 章 Zynq - 7000 SoC啟動和配置原理及實現 527
22.1 Zynq - 7000 SoC啟動過程 527
22.2 Zynq - 7000 SoC啟動要求 527
22.2.1 供電要求 528
22.2.2 時鐘要求 528
22.2.3 復位要求 528
22.2.4 模式引腳 528
22.3 Zynq - 7000 SoC內的BootROM 530
22.3.1 BootROM特性 530
22.3.2 BootROM頭部 531
22.3.3 啟動設備 535
22.3.4 BootROM多啟動和啟動分區查找 538
22.3.5 調試狀態 539
22.3.6 BootROM后狀態 540
22.4 Zynq - 7000 SoC器件配置接口 543
22.4.1 描述功能 544
22.4.2 器件配置流程 545
22.4.3 配置PL 549
22.4.4 寄存器概述 550
22.5 生成SD卡鏡像文件并啟動 551
22.5.1 SD卡與XC7Z020接口設計 551
22.5.2 打開前面的設計工程 552
22.5.3 創建第一級啟動引導 553
22.5.4 創建SD卡啟動鏡像 553
22.5.5 從SD卡啟動引導系統 555
22.6 生成QSPI Flash鏡像并啟動 556
22.6.1 QSPI Flash接口 556
22.6.2 創建QSPI Flash鏡像 557
22.6.3 從QSPI Flash啟動引導系統 558
22.7 Cortex - A9雙核系統的配置和運行 558
22.7.1 構建雙核硬件系統工程 558
22.7.2 添加并互聯IP核 559
22.7.3 導出硬件設計到SDK中 561
22.7.4 設置板級包支持路徑 561
22.7.5 建立FSBL應用工程 562
22.7.6 建立CPU0應用工程 562
22.7.7 建立CPU1板級支持包 566
22.7.8 建立CPU1應用工程 566
22.7.9 創建SD卡鏡像文件 570
22.7.10 雙核系統運行和測試 571
22.7.11 雙核系統的調試 571
第 章 Zynq - 7000 SoC內XADC原理及實現 574
23.1 ADC轉換器接口結構 574
23.2 ADC轉換器功能 575
23.2.1 XADC的命令格式 576
23.2.3 供電傳感器報警 576
23.3 XADC IP核結構及信號 577
23.4 開發平臺上的XADC接口 578
23.5 在Zynq - 7000 SoC內構建數模混合系統 579
23.5.1 打開前面的設計工程 579
23.5.2 配置PS端口 579
23.5.3 添加并連接XADC IP到設計 580
23.5.4 查看地址空間 582
23.5.5 添加用戶約束文件 583
23.5.6 設計處理 583
23.6 使用SDK設計和實現應用工程 584
23.6.1 生成新的應用工程 584
23.6.2 導入應用程序 585
23.6.3 下載硬件比特流文件到FPGA 591
23.6.4 運行應用工程 591
第 章 Linux開發環境的構建 592
24.1 構建虛擬機環境 592
24.2 安裝和啟動Ubuntu 14.04客戶機操作系統 595
24.2.1 新添加兩個磁盤 595
24.2.2 設置CD/DVD(SATA) 596
24.2.3 安裝Ubuntu 14.04 597
24.2.4 更改Ubuntu 14.04操作系統啟動設備 600
24.2.5 啟動Ubuntu 14.04操作系統 600
24.2.6 添加搜索鏈接資源 600
24.3 安裝FTP工具 601
24.3.1 Windows操作系統下LeapFTP安裝 601
24.3.2 Ubuntu操作系統環境下FTP安裝 602
24.4 安裝和啟動SSH和GIT組件 603
24.4.1 安裝和啟動SSH組件 603
24.4.2 安裝和啟動GIT組件 604
24.5 安裝交叉編譯器環境 604
24.5.1 安裝32位支持工具包 604
24.5.2 安裝和設置SDK 2015.4工具 605
24.6 安裝和配置Qt集成開發工具 606
24.6.1 Qt集成開發工具功能 606
24.6.2 構建PC平臺Qt環境 607
24.6.3 構建Arm平臺Qt環境 613
第 章 構建Zynq - 7000 SoC內Ubuntu硬件運行環境 622
25.1 建立新的設計工程 622
25.2 添加IP核路徑 623
25.3 構建硬件系統 623
25.3.1 添加和配置ZYNQ7 IP 624
25.3.2 添加和配置VDMA IP核 625
25.3.3 添加和配置AXI Display Controller IP核 626
25.3.4 添加和配置HDMI Transmitter IP核 627
25.3.5 添加和配置VGA IP核 627
25.3.6 連接用戶自定義IP核 627
25.3.7 添加和配置Processor System Reset IP核 630
25.3.8 連接系統剩余部分 630
25.4 添加設計約束文件 632
25.5 導出硬件文件 633
第 章 構建Zynq - 7000 SoC內Ubuntu軟件運行環境 635
26.1 u - boot原理及實現 635
26.1.1 下載u - boot源碼 635
26.1.2 u - boot文件結構 636
26.1.3 u - boot工作模式 637
26.1.4 u - boot啟動過程 637
26.1.5 編譯u - boot 650
26.1.6 鏈接腳本文件結構 652
26.2 內核結構及編譯 654
26.2.1 內核結構 654
26.2.2 下載Linux內核源碼 655
26.2.3 內核版本 655
26.2.4 內核系統配置 655
26.2.5 Bootloader 啟動過程 658
26.2.6 Linux內核啟動過程 660
26.2.7 編譯內核 662
26.3 設備樹原理及實現 662
26.3.1 設備樹概述 662
26.3.2 設備樹數據格式 663
26.3.3 設備樹的編譯 664
26.4 文件系統原理及下載 664
26.5 生成Ubuntu啟動鏡像 665
26.5.1 生成FSBL文件 666
26.5.2 生成BOOT.bin啟動文件 666
26.5.3 制作SD卡 668
26.5.4 復制BOOT. bin文件 670
26.5.5 復制編譯后的內核文件 670
26.5.6 復制編譯后的設備樹文件 671
26.5.7 復制文件系統 671
26.6 啟動Ubuntu操作系統 672
第 章 Linux環境下簡單字符設備驅動程序的開發 674
27.1 驅動程序的必要性 674
27.2 Linux操作系統下的設備文件類型 675
27.3 Linux驅動的開發流程 676
27.4 驅動程序的結構框架 676
27.4.1 加載和卸載函數模塊 676
27.4.2 字符設備中重要的數據結構和函數 677
27.5 編寫makefile文件 683
27.6 編譯驅動程序 684
27.7 編寫測試程序 685
27.8 運行測試程序 686
第 章 Linux環境下包含中斷機制驅動程序的開發 688
28.1 設計原理 688
28.2 編寫包含中斷處理的驅動代碼 688
28.2.1 驅動程序頭文件 688
28.2.2 驅動的加載和卸載函數 689
28.2.3 file_operations初始化 691
28.3 編寫makefile文件 691
28.4 編譯驅動程序 692
28.5 測試驅動程序 693
第 章 Linux環境下圖像處理系統的構建 694
29.1 系統整體架構和功能 694
29.2 OV5640攝像頭性能 695
29.2.1 攝像頭捕獲模塊的硬件 696
29.2.2 SCCB接口規范 696
29.2.3 寫攝像頭模組寄存器操作 697
29.2.4 讀攝像頭模組寄存器操作 698
29.2.5 攝像頭初始化流程 700
29.3 Vivado HLS實現拉普拉斯算子濾波算法的設計 701
29.3.1 Vivado HLS工具的性能和優勢 701
29.3.2 拉普拉斯算法與HDL之間的映射 703
29.4 圖像處理系統的整體構建 706
29.5 圖像處理系統軟件的設計 708
29.5.1 Ubuntu桌面系統的構建 708
29.5.2 Qt圖像處理程序的開發 708
29.6 嵌入式圖像處理系統測試 710
第 章 Zynq-7000 SoC上構建和實現Python應用 712
30.1 設計所需的硬件環境 712
30.2 構建PetaLinux開發環境 712
30.2.1 PetaLinx開發環境概述 712
30.2.2 安裝32位庫 714
30.2.3 安裝并測試tftp服務器 714
30.2.4 下載并安裝PetaLinux 715
30.3 構建嵌入式系統硬件 717
30.3.1 下載并安裝Vivado 2018.2集成開發環境 717
30.3.2 添加板級支持包文件 717
30.3.3 建立新的Vivado工程 717
30.3.4 構建硬件系統 718
30.4 構建嵌入式Python開發環境 721
30.5 構建PC端Python開發環境 723
30.6 服務器和客戶端Python的開發 724
30.6.1 服務器端Python的開發 725
30.6.2 客戶端Python的開發 726
30.7 設計驗證 728
30.7.1 啟動服務器程序 728
30.7.2 啟動客戶端程序 729
本書是作者在已經出版的 《Xilinx Zynq-7000嵌入式系統設計與實現:基于ARM Cortex-A9雙核處理器和Vivado的設計方法》 一書的基礎上進行修訂而成的。 本書新修訂后內容增加到30章。修訂后,本書的一大特色就是加入了Arm架構及分類、使用PetaLinux工具在Zynq-7000 SoC上搭建Ubuntu操作系統,以及在Ubuntu操作系統環境下搭建Python語言開發環境,并使用Python語言開發應用程序的內容。本書修訂后。進一步降低了讀者學習Arm Cortex-A9嵌入式系統的門檻,并引入了在Zynq-7000 SoC上搭建Ubuntu操作系統的新方法。此外,將流行的Python語言引入到Arm嵌入式系統中,進一步拓寬了在Arm嵌入式系統上開發應用程序的方法。
本書是在作者已經出版的《Xilinx Zynq-7000嵌入式系統設計與實現:基于ARM Cortex-A9雙核處理器和Vivado的設計方法》一書基礎上修訂而成。主要修訂內容包括:
(1)刪除原書第一章Zynq-7000 SoC的Vivado設計流程一節的內容,增加了Arm架構與分類一節的內容,系統介紹了Arm架構與不同處理器IP之間的關系,使得讀者能更加系統了解并掌握Arm架構與Cortex-M、Cortex-R和Cotex-A框架下不同處理器IP之間的對應關系。
(2)本書增加了第30章,該章主要介紹了PetaLinx 2018.2工具,以及通過該工具在Xilinx SoC器件上構建Ubuntu操作系統環境的方法。需要指出,與本書前面使用傳統的方法搭建Ubuntu操作系統環境相比,通過Xilinx公司自己的PetaLinx工具,使得在Xilinx Zynq-7000 SoC以及在UltraScale MPSoC上搭建Ubuntu操作系統環境更加便捷高效,顯著降低了構建操作系統運行環境的難度,更加有利于初學者的入門學習。
(3)作為本書的亮點之一,在使用PetaLinx工具構建嵌入式操作系統運行環境的基礎上,構建了嵌入式Python語言開發環境,并在所構建的環境下使用Python語言開發了應用程序。為了比較Python語言在arm Cortex-A9嵌入式處理器上的運行性能,同時在PC/筆記本電腦上也構建了Python語言開發環境,并使用Python語言開發了應用程序。因此,實現了Zynq-7000 SoC作為服務器,以及PC/筆記本電腦作為客戶端的網絡交互和數據傳輸功能。
(4)修改并更正了書中的一些錯誤。
考慮到Vivdo集成開發環境的主要功能和開發界面沒有明顯的不同,因此,書中所有案例仍然保留原來的開發版本。但是,增加的一章內容使用了較新的PetaLinux 2018.2環境。
總體來說,通過本書這一次的修訂,使得介紹嵌入式系統設計的內容更加條理化,讀者更加容易系統學習基于Arm Cortex-A9處理器的嵌入式系統硬件和軟件設計方法,進一步降低了學習Arm嵌入式系統和Xilinx Zynq-7000 SoC的難度。
由于作者水平有限,書中難免有不足之處,懇請讀者批評指正,以幫助讀者今后進一步提高圖書的編寫質量。同時,也要感謝電子工業出版社的張迪編輯為本書的出版所做出的辛勤工作,也要感謝作者曾經帶過并且已經畢業的研究生張艷輝,協助作者修訂了本書,使得作者可以將更加精彩的內容奉獻給國內廣大的讀者。

作者
2019.09于北京
pagetop