搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
Xilinx Zynq系列SoC嵌入式系统应用与人工智能实现:基于Arm多核处理器和Vivado
0.00     定价 ¥ 198.00
浙江图书馆
  • ISBN:
    9787121480010
  • 作      者:
    何宾
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2024-06-01
收藏
畅销推荐
作者简介
何宾,知名的嵌入式和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商密切合作。已经出版电子信息方面的著作共40余部,内容涵盖电路仿真、电路设计、FPGA、数字信号处理、单片机、嵌入式系统等。典型的代表作有《模拟电子系统设计指南(基础篇):从半导体、分立元件到TI集成电路的分析与实现》、《模拟电子系统设计指南(实践篇):从半导体、分立元件到TI集成电路的分析与实现》、《Xilinx Zynq-7000嵌入式系统设计与实现-基于ARM Cortex-A9双核处理器和Vivado的设计方法》、《Altium Designer17一体化设计标准教程-从仿真原理和PCB设计到单片机系统》、《STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用》等。
展开
内容介绍
本书是对《Xilinx Zynq-7000嵌入式系统设计与实现:基于Arm Cortex-A9双核处理器和Vivado的设计方法(第二版)》一书的一次重要修订,全书共包含30章,主要内容包括Xilinx Zynq系列SoC设计导论、AMBA规范、Zynq-7000系统公共资源和特性、Zynq-7000调试和测试子系统、Cortex-A9处理器指令集、Cortex-A9片上存储器系统结构和功能、Zynq-7000 SoC的Vivado基本设计流程、Zynq-7000 GPIO原理和控制、Cortex-A0异常与中断原理和实现、Cortex-A9定时器原理及实现、Cortex-A9 DMA控制器原理和实现、Cortex-A9安全性扩展、Cortex-A9 NEON原理和实现、Zynq-7000的可编程逻辑资源、Zynq-7000的互联结构、Zynq-7000 SoC内定制简单AXI-Lite IP、Zynq-7000 SoC内定制复杂AXI Lite IP、Zynq-7000 AXI HP数据传输原理和实现、Zynq-7000 ACP数据传输原理和实现、Zynq-7000软件与硬件协同调试原理和实现、Zynq-7000 SoC启动与配置原理和实现、Linux开发环境的构建、Zynq-7000 SoC内Ubuntu硬件运行环境的构建、Zynq-7000 SoC内Ubuntu软件运行环境的构建、Linux环境下简单字符设备驱动程序的开发、Linux环境下包含中断机制驱动程序的开发、Linux环境下图像处理系统的构建、Zynq-7000 SoC上构建和实现Python应用、手写体识别模型训练与推理一体化设计和实现,以及基于KR260平台的人体姿态识别的实现。
展开
目录
目录
第1章 Xilinx Zynq系列SoC设计导论 1
1.1 全可编程SoC基础知识 1
1.1.1 全可编程SoC的演进 1
1.1.2 SoC与MCU和CPU的比较 3
1.1.3 全可编程SoC诞生的背景 4
1.1.4 全可编程SoC的技术特点 4
1.1.5 全可编程SoC中的处理器类型 5
1.2 Arm架构及分类 6
1.2.1 M-Profile 7
1.2.2 R-Profile 8
1.2.3 A-Profile 9
1.3 Zynq-7000 SoC的功能和结构 11
1.3.1 Zynq-7000 SoC产品的分类及资源 11
1.3.2 Zynq-7000 SoC的功能 12
1.3.3 Zynq-7000 SoC内的PS的构成 13
1.3.4 Zynq-7000 SoC内的PL的构成 18
1.3.5 Zynq-7000 SoC内的互联结构 19
1.3.6 Zynq-7000 SoC的供电引脚 20
1.3.7 Zynq-7000 SoC内MIO到EMIO的连接 22
1.3.8 Zynq-7000 SoC内为PL分配的信号 26
1.4 Zynq UltraScale+MPSoC的功能和结构 28
1.4.1 Zynq UltraScale+MPSoC产品的分类及资源 28
1.4.2 Zynq UltraScale+MPSoC的结构 31
1.4.3 Zynq UltraScale+MPSoC的供电区域 35
1.4.4 Zynq UltraScale+MPSoC PS-PL AXI接口 36
第2章 AMBA规范 38
2.1 AMBA规范的发展 38
2.1.1 AMBA 1 39
2.1.2 AMBA 2 39
2.1.3 AMBA 3 39
2.1.4 AMBA 4 40
2.1.5 AMBA 5 41
2.2 AMBA APB规范 43
2.2.1 AMBA APB写传输 43
2.2.2 AMBA APB读传输 45
2.2.3 AMBA APB错误响应 45
2.2.4 操作状态 46
2.2.5 AMBA 3 APB信号 47
2.3 AMBA AHB规范 48
2.3.1 AMBA AHB的结构 48
2.3.2 AMBA AHB操作 49
2.3.3 AMBA AHB的传输类型 51
2.3.4 AMBA AHB的猝发操作 52
2.3.5 AMBA AHB的传输控制信号 55
2.3.6 AMBA AHB地址译码 56
2.3.7 AMBA AHB从设备传输响应 57
2.3.8 AMBA AHB数据总线 59
2.3.9 AMBA AHB传输仲裁 61
2.3.10 AMBA AHB分割传输 65
2.3.11 AMBA AHB复位 68
2.3.12 关于AHB数据总线的位宽 68
2.3.13 AMBA AHB接口设备 69
2.4 AMBA AXI4规范 71
2.4.1 AMBA AXI4概述 71
2.4.2 AMBA AXI4的功能 71
2.4.3 AMBA AXI4的互联结构 79
2.4.4 AXI4-Lite的功能 80
2.4.5 AXI4-Stream的功能 81
第3章 Zynq-7000系统的公共资源和特性 84
3.1 时钟子系统 84
3.1.1 时钟子系统的架构 84
3.1.2 CPU时钟域 86
3.1.3 时钟编程实例 87
3.1.4 时钟子系统内的生成电路结构 88
3.2 复位子系统 92
3.2.1 复位子系统的结构 92
3.2.2 复位流程 93
3.2.3 复位结果 94
第4章 Zynq-7000 SoC调试和测试子系统 96
4.1 JTAG和DAP子系统 96
4.1.1 JTAG和DAP子系统的功能 98
4.1.2 JTAG和DAP子系统I/O信号 100
4.1.3 编程模型 100
4.1.4 Arm DAP控制器 101
4.1.5 TPIU 102
4.1.6 Xilinx TAP控制器 103
4.2 CoreSight系统的结构及功能 103
4.2.1 CoreSight系统的结构 103
4.2.2 CoreSight系统的功能 104
第5章 Cortex-A9处理器及其指令集 108
5.1 应用处理单元概述 108
5.1.1 基本功能 108
5.1.2 系统级视图 109
5.2 Cortex-A9处理器的结构 111
5.2.1 处理器模式 112
5.2.2 寄存器 113
5.2.3 流水线 118
5.2.4 分支预测 119
5.2.5 指令和数据对齐 119
5.2.6 跟踪和调试 121
5.3 Cortex-A9处理器的指令集 122
5.3.1 指令集基础 122
5.3.2 数据处理操作 125
5.3.3 存储器指令 129
5.3.4 分支 131
5.3.5 饱和算术 132
5.3.6 杂项指令 133
第6章 Cortex-A9片上存储器系统的结构和功能 137
6.1 L1高速缓存 137
6.1.1 高速缓存的背景 137
6.1.2 高速缓存的优势和问题 138
6.1.3 存储器的层次 139
6.1.4 高速缓存的结构 139
6.1.5 缓存策略 143
6.1.6 写和取缓冲区 145
6.1.7 缓存性能和命中速度 145
6.1.8 无效和清除缓存 146
6.1.9 一致性点和统一性点 147
6.1.10 Zynq-7000 SoC中的Cortex-A9 L1高速缓存的特性 149
6.2 存储器访问顺序 150
6.2.1 普通、设备和强顺序存储器模型 151
6.2.2 存储器属性 152
6.2.3 存储器屏障 153
6.3 存储器管理单元 156
6.3.1 MMU功能描述 156
6.3.2 虚拟存储器 157
6.3.3 转换表 158
6.3.4 页表入口域的描述 161
6.3.5 TLB的构成 163
6.3.6 存储器访问顺序 165
6.4 侦听控制单元 166
6.4.1 地址过滤 166
6.4.2 SCU主设备端口 166
6.5 L2高速缓存 167
6.5.1 互斥L2-L1高速缓存配置 169
6.5.2 高速缓存替换策略 170
6.5.3 高速缓存锁定 170
6.5.4 使能/禁止L2高速缓存控制器 171
6.5.5 RAM访问延迟控制 171
6.5.6 保存缓冲区操作 172
6.5.7 Cortex-A9处理器和L2高速缓存控制器之间的优化 172
6.5.8 预取操作 173
6.5.9 编程模型 174
6.6 片上存储器 175
6.6.1 片上存储器概述 175
6.6.2 片上存储器的功能 176
6.7 系统地址空间分配 181
6.7.1 地址映射 181
6.7.2 系统总线主设备 182
6.7.3 I/O外设 182
6.7.4 SMC存储器 183
6.7.5 SLCR 183
6.7.6 PS系统寄存器 183
6.7.7 CPU私有寄存器 183
第7章 Zynq-7000 SoC的Vivado基本设计流程 185
7.1 创建新的工程 185
7.2 使用IP集成器创建处理器系统 187
7.3 生成顶层HDL并导出设计到SDK 192
7.4 创建应用测试程序 195
7.5 设计验证 198
7.5.1 验证前的硬件平台准备 198
7.5.2 设计验证的具体实现 199
7.6 SDK调试工具的使用 200
7.6.1 打开前面的设计工程 200
7.6.2 导入工程到SDK 200
7.6.3 建立新的存储器测试工程 201
7.6.4 运行存储器测试工程 201
7.6.5 调试存储器测试工程 203
7.7 SDK性能分析工具 205
第8章 Zynq-7000 SoC GPIO原理和控制实现 209
8.1 GPIO模块的原理 209
8.1.1 GPIO接口及其功能 210
8.1.2 GPIO编程流程 212
8.1.3 I/O接口 214
8.1.4 部分寄存器说明 214
8.1.5 底层读/写函数说明 215
8.1.6 GPIO的API函数说明 216
8.2 Vivado集成开发环境下MIO读/写控制的实现 216
8.2.1 调用底层读/写函数编写GPIO应用程序 217
8.2.2 调用API函数编写GPIO应用程序 219
8.3 Vivado集成开发环境下EMIO读/写控制的实现 222
8.3.1 调用底层读/写函数编写GPIO应用程序 222
8.3.2 调用API函数编写GPIO应用程序 227
第9章 Cortex-A9异常与中断原理和实现 230
9.1 异常原理 230
9.1.1 异常类型 230
9.1.2 异常处理 234
9.1.3 其他异常句柄 235
9.1.4 Linux异常程序流 236
9.2 中断原理 237
9.2.1 外部中断请求 237
9.2.2 Zynq-7000 SoC内的中断环境 240
9.2.3 中断控制器的功能 241
9.3 Vivado集成开发环境下中断系统的实现 244
9.3.1 Cortex-A9处理器中断及异常的初始化流程 245
9.3.2 Cortex-A9处理器的GPIO控制器的初始化流程 245
9.3.3 导出硬件设计到SDK 246
9.3.4 创建新的应用工程 246
9.3.5 运行应用工程 248
第10章 Cortex-A9定时器原理和控制实现 250
10.1 定时器的系统结构 250
10.1.1 CPU私有定时器和看门狗定时器 251
10.1.2 全局定时器/计数器 251
10.1.3 系统级看门狗定时器 252
10.1.4 3重定时器/计数器 253
10.1.5 I/O信号 256
10.2 Vivado集成开发环境下定时器的控制实现 257
10.2.1 打开前面的设计工程 257
10.2.2 创建SDK软件工程 257
10.2.3 运行软件应用工程 259
第11章 Cortex-A9 DMA控制器原理和实现 261
11.1 DMA控制器的结构 261
11.2 DMA控制器的功能 264
11.2.1 考虑AXI交易的因素 265
11.2.2 DMA管理器 265
11.2.3 多通道数据FIFO(MFIFO) 266
11.2.4 存储器―存储器交易 266
11.2.5 PL外设AXI交易 266
11.2.6 PL外设请求接口 267
11.2.7 PL外设长度管理 268
11.2.8 DMAC的长度管理 269
11.2.9 事件和中断 270
11.2.10 异常终止 270
11.2.11 安全性 272
11.2.12 IP配置选项 273
11.3 DMA控制器编程指南 273
11.3.1 启动控制器 274
11.3.2 执行DMA传输 274
11.3.3 中断服务例程 274
11.3.4 寄存器描述 274
11.4 DMA引擎编程指南 275
11.4.1 写微代码编程用于AXI交易的CCRx 275
11.4.2 存储器到存储器的传输 276
11.4.3 PL外设DMA传输长度管理 279
11.4.4 使用一个事件重新启动DMA通道 280
11.4.5 中断一个处理器 281
11.4.6 指令集参考 281
11.5 编程限制 282
11.6 系统功能之控制器复位配置 284
11.7 I/O接口 284
11.7.1 AXI主接口 285
11.7.2 外设请求接口 285
11.8 Vivado集成开发环境下DMA传输的实现 286
11.8.1 DMA控制器初始化流程 286
11.8.2 中断控制器初始化流程 287
11.8.3 中断服务句柄处理流程 287
11.8.4 导出硬件设计到SDK 287
11.8.5 创建新的应用工程 288
11.8.6 运行软件应用工程 294
第12章 Cortex-A9安全性扩展 295
12.1 TrustZone硬件架构 295
12.1.1 多核系统的安全性扩展 297
12.1.2 非安全世界和安全世界的交互 297
12.2 Zynq-7000 SoC APU内的TrustZone 298
12.2.1 CPU安全过渡 299
12.2.2 CP15寄存器访问控制 299
12.2.3 MMU安全性 300
12.2.4 L1高速缓存安全性 301
12.2.5 安全异常控制 301
12.2.6 CPU调试TrustZone访问控制 301
12.2.7 SCU寄存器访问控制 301
12.2.8 L2高速缓存中的TrustZone支持 301
第13章 Cortex-A9 NEON原理和实现 303
13.1 SIMD 303
13.2 NEON架构 305
13.2.1 与VFP的共性 305
13.2.2 数据类型 305
13.2.3 NEON寄存器 306
13.2.4 NEON指令集 307
13.3 NEON C编译器和汇编器 308
13.3.1 向量化 308
13.3.2 检测NEON 308
13.4 NEON优化库 309
13.5 SDK工具提供的优化选项 310
13.6 NEON内联函数 313
13.6.1 NEON数据类型 313
13.6.2 NEON内联函数的用法 314
13.7 优化NEON汇编器代码 315
13.8 提高存储器访问效率 317
13.9 自动向量化实现 318
13.9.1 导出硬件设计到SDK 318
13.9.2 创建新的应用工程 318
13.9.3 运行软件应用工程 319
13.10 NEON汇编代码实现 319
13.10.1 导出硬件设计到SDK 319
13.10.2 创建新的应用工程 320
13.10.3 运行软件应用工程 321
第14章 Zynq-7000 SoC的PL资源 322
14.1 PL资源概述 322
14.2 PL资源的功能 323
14.2.1 CLB、切片和LUT 323
14.2.2 时钟管理 323
14.2.3 块RAM 324
14.2.4 数字信号处理-DSP切片 325
14.2.5 I/O 326
14.2.6 低功耗串行收发器 327
14.2.7 PCI-E模块 328
14.2.8 XADC 328
14.2.9 配置 329
第15章 Zynq-7000 SoC的互联结构 330
15.1 系统互联架构 330
15.1.1 互联模块及其功能 330
15.1.2 数据路径 332
15.1.3 时钟域 333
15.1.4 连接性 334
15.1.5 AXI ID 335
15.1.6 GPV寄存器概述 335
15.2 服务质量 336
15.2.1 基本仲裁 336
15.2.2 高级QoS 336
15.2.3 DDR端口仲裁 336
15.3 AXI_HP接口 337
15.3.1 AXI_HP接口的结构及特点 337
15.3.2 接口数据宽度 340
15.3.3 交易类型 341
15.3.4 命令交替和重新排序 342
15.3.5 性能优化总结 342
15.4 AXI_ACP接口 343
15.5 AXI_GP接口 344
15.6 AXI信号总结 344
15.7 PL接口选择 348
15.7.1 使用通用主设备端口的Cortex-A9处理器 348
15.7.2 使用通用主设备的PS DMA控制器 348
15.7.3 使用高性能接口的PL DMA 351
15.7.4 使用AXI ACP的PL DMA 351
15.7.5 使用通用AXI从(GP)的PL DMA 351
第16章 在Zynq-7000 SoC内定制简单AXI-Lite IP 354
16.1 设计原理 354
16.2 定制AXI-Lite IP 354
16.2.1 创建定制IP模板 354
16.2.2 修改定制IP模板 357
16.2.3 使用IP封装器封装外设 360
16.3 打开并添加IP到设计中 363
16.3.1 打开工程和修改设置 363
16.3.2 添加定制IP到设计 364
16.3.3 添加XDC约束文件 367
16.4 导出硬件到SDK 368
16.5 建立和验证软件应用工程 369
16.5.1 建立应用工程 369
16.5.2 下载硬件比特流文件到FPGA 371
16.5.3 运行应用工程 371
第17章 在Zynq-7000 SoC内定制复杂AXI-Lite IP 372
17.1 设计原理 372
17.1.1 VGA IP核的设计原理 372
17.1.2 移位寄存器IP核的设计原理 374
17.2 定制VGA IP核 375
17.2.1 创建定制VGA IP模板 375
17.2.2 修改定制VGA IP模板 376
17.2.3 使用IP封装器封装VGA IP 379
17.3 定制移位寄存器IP核 381
17.3.1 创建定制SHIFTER IP模板 381
17.3.2 修改定制SHIFTER IP模板 382
17.3.3 使用IP封装器封装SHIFTER IP 383
17.4 打开并添加IP到设计 384
17.4.1 打开工程和修改设置 384
17.4.2 添加定制IP到设计 385
17.4.3 添加XDC约束文件 389
17.5 导出硬件到SDK 391
17.6 建立和验证软件工程 391
17.6.1 建立应用工程 391
17.6.2 下载硬件比特流文件到FPGA 394
17.6.3 运行应用工程 395
第18章 Zynq-7000 AXI HP数据传输原理和实现 396
18.1 设计原理 396
18.2 构建硬件系统 397
18.2.1 打开工程和修改设置 397
18.2.2 添加并连接AXI DMA IP核 397
18.2.3 添加并连接FIFO IP核 400
18.2.4 连接DMA中断到PS 402
18.2.5 验证和建立设计 406
18.3 建立和验证软件工程 406
18.3.1 导出硬件到SDK 406
18.3.2 创建软件应用工程 406
18.3.3 下载硬件比特流文件到FPGA 415
18.3.4 运行应用工程 415
第19章 Zynq-7000 ACP数据传输原理和实现 416
19.1 设计原理 416
19.2 打开前面的设计工程 416
19.3 配置PS端口 416
19.4 添加并连接IP到设计 418
19.4.1 添加IP到设计 418
19.4.2 系统连接 419
19.4.3 分配地址空间 421
19.5 使用SDK设计和实现应用工程 422
19.5.1 创建新的软件应用工程 422
19.5.2 导入应用程序 422
19.5.3 下载硬件比特流文件到FPGA 425
19.5.4 运行应用工程 425
第20章 Zynq-7000 SoC软件与硬件协同调试原理和实现 427
20.1 设计目标 427
20.2 ILA核的原理 428
20.2.1 ILA触发器输入逻辑 428
20.2.2 多触发器端口的使用 428
20.2.3 使用触发器和存储限制条件 428
20.2.4 ILA触发器输出逻辑 429
20.2.5 ILA数据捕获逻辑 430
20.2.6 ILA控制与状态逻辑 430
20.3 VIO核的原理 431
20.4 构建协同调试硬件系统 432
20.4.1 创建新的设计工程 432
20.4.2 添加定制IP 432
20.4.3 添加ILA和VIO核 433
20.4.4 标记和分配调试网络 434
20.5 生成软件工程 436
20.6 S/H协同调试 437
第21章 Zynq-7000 SoC启动与配置原理和实现 443
21.1 Zynq-7000 SoC的启动过程 443
21.2 Zynq-7000 SoC的启动要求 444
21.2.1 供电要求 444
21.2.2 时钟要求 444
21.2.3 复位要求 444
21.2.4 模式引脚 445
21.3 Zynq-7000 SoC内的BootROM 446
21.3.1 BootROM的特性 446
21.3.2 BootROM的头部 449
21.3.3 启动设备 451
21.3.4 BootROM多启动和启动分区查找机制 453
21.3.5 调试状态 455
21.3.6 BootROM后状态 456
21.4 Zynq-7000 SoC设备配置接口 458
21.4.1 描述功能 459
21.4.2 器件的配置流程 461
21.4.3 配置PL 464
21.4.4 寄存器概述 465
21.5 生成SD卡镜像文件并启动 466
21.5.1 SD卡与XC7Z020接口设计 466
21.5.2 打开前面的设计工程 466
21.5.3 创建第一级启动引导 468
21.5.4 创建SD卡启动镜像 468
21.5.5 从SD卡启动引导系统 470
21.6 生成QSPI Flash镜像并启动 471
21.6.1 QSPI Flash接口 471
21.6.2 创建QSPI Flash镜像 471
21.6.3 从QSPI Flash启动引导系统 472
21.7 Cortex-A9双核系统的配置和运行 473
21.7.1 构建双核硬件系统工程 473
21.7.2 添加IP核 474
21.7.3 导出硬件设计到SDK 475
21.7.4 建立FSBL应用工程 476
21.7.5 建立CPU0应用工程 476
21.7.6 建立CPU1应用工程 478
21.7.7 修改工程设置 480
21.7.8 创建SD卡镜像文件 481
21.7.9 双核硬件系统的运行和测试 482
第22章 Linux开发环境的构建 484
22.1 构建虚拟机环境 484
22.2 安装和启动Ubuntu 16.04客户机操作系统 489
22.2.1 下载Ubuntu操作系统镜像 489
22.2.2 安装Ubuntu操作系统 490
22.2.3 设置共享文件夹 493
22.2.4 更换镜像下载源 495
22.3 安装FTP和配置FileZilla 496
22.3.1 在Linux操作系统中安装FTP 497
22.3.2 在Windows操作系统中配置FileZilla 497
22.4 安装和启动SSH和GIT组件 499
22.4.1 安装和启动SSH组件 499
22.4.2 安装和启动GIT组件 500
22.5 安装交叉编译环境 500
22.5.1 安装32位支持工具包 501
22.5.2 安装Vivado设计套件 501
22.6 安装和配置Qt集成开发工具 506
22.6.1 Qt集成开发工具的功能 506
22.6.2 构建计算机平台Qt集成开发环境 507
22.6.3 构建Arm平台Qt集成开发环境 516
第23章 Zynq-7000 SoC内Ubuntu硬件运行环境的构建 526
23.1 建立新的设计工程 526
23.2 添加自定义IP核路径 527
23.3 构建完整的硬件系统 527
23.3.1 创建块设计 527
23.3.2 添加和配置ZYNQ7 IP核 528
23.3.3 添加和配置VDMA IP核 530
23.3.4 添加和配置Video Timing Controller IP核 531
23.3.5 添加和配置AXI4-Stream to Video Out IP核 533
23.3.6 添加和配置HDMI IP核 534
23.3.7 添加和配置Dynamic Clock Generator IP核 534
23.3.8 添加和配置RGB2BGR IP核 534
23.3.9 添加和配置DVI_Transmitter IP核 534
23.3.10 添加和配置Concat IP核 535
23.3.11 连接IP核 535
23.4 设计有效性检查 541
23.5 添加设计约束文件 541
23.6 导出硬件设计到SDK 542
第24章 Zynq-7000 SoC内Ubuntu软件运行环境的构建 544
24.1 u-boot的原理和实现 544
24.1.1 下载u-boot源码 544
24.1.2 u-boot文件结构 545
24.1.3 u-boot的工作模式 546
24.1.4 修改u-boot启动配置和编译u-boot 546
24.1.5 SDK生成BOOT.bin文件及设备树 548
24.2 内核的结构和编译过程 554
24.2.1 内核的结构 554
24.2.2 下载Linux内核源码 555
24.2.3 内核版本 556
24.2.4 内核系统配置 556
24.2.5 Bootloader的启动过程 557
24.2.6 Linux内核的启动过程 558
24.2.7 添加驱动源码文件 560
24.2.8 修改内核配置文件 562
24.2.9 编译内核 563
24.3 设备树的原理和实现 564
24.3.1 设备树概述 564
24.3.2 设备树的数据格式 564
24.3.3 设备树的修改 565
24.3.4 设备树的编译 568
24.4 创建新的SD卡分区 568
24.5 复制boot分区的文件 573
24.6 文件系统的下载和验证 573
24.6.1 文件系统的下载 573
24.6.2 文件系统的验证 577
24.7 MATE桌面的安装 579
第25章 Linux环境下简单字符设备驱动程序的开发 581
25.1 驱动程序的必要性 581
25.2 Linux操作系统下的设备文件类型 582
25.3 Linux驱动程序的开发流程 583
25.4 Linux驱动程序的结构框架 583
25.4.1 加载和卸载函数模块 583
25.4.2 字符设备中重要的数据结构和函数 585
25.5 编写Makefile文件 590
25.6 编译驱动程序 590
25.7 编写测试程序 591
25.8 运行驱动程序 593
第26章 Linux环境下包含中断机制驱动程序的开发 595
26.1 设计原理 595
26.2 编写包含处理中断的驱动程序 595
26.2.1 驱动程序头文件 595
26.2.2 驱动的加载和卸载函数 596
26.2.3 初始化file_operations结构体 598
26.2.4 设备树的改写 598
26.3 编写Makefile文件 599
26.4 编译驱动程序 600
26.5 编写测试程序 601
26.6 测试驱动程序 602
第27章 Linux环境下图像处理系统的构建 604
27.1 系统的整体架构和功能 604
27.2 OV5640摄像头的性能 605
27.2.1 摄像头捕获模块的硬件 606
27.2.2 SCCB接口规范 606
27.2.3 写OV5640摄像头传感器模组寄存器操作 607
27.2.4 读OV5640摄像头传感器模组寄存器操作 607
27.2.5 OV5640摄像头传感器模组初始化流程 609
27.3 Vivado HLS工具实现拉普拉斯算子滤波算法设计 611
27.3.1 Vivado HLS工具的性能和优势 611
27.3.2 拉普拉斯算法与HDL之间的映射 612
27.4 图像处理系统的整体构建 615
27.5 图像处理系统软件设计 617
27.5.1 Ubuntu桌面系统的构建 617
27.5.2 Qt图像处理程序的开发 617
27.6 嵌入式图像处理系统测试 619
第28章 在Zynq-7000 SoC上构建和实现Python应用 621
28.1 设计所需的硬件和软件环境 621
28.2 构建PetaLinux开发环境 621
28.2.1 PetaLinux开发环境概述 621
28.2.2 安装32位库 623
28.2.3 安装并测试TFTP服务器 623
28.2.4 下载并安装PetaLinux 624
28.3 构建嵌入式硬件系统 625
28.3.1 下载并安装Vivado IDE 625
28.3.2 添加板级支持包文件 626
28.3.3 建立新的Vivado工程 626
28.3.4 构建硬件系统 626
28.4 构建嵌入式Python开发环境 629
28.5 构建PC端Python开发环境 631
28.6 服务器和客户端Python的开发 632
28.6.1 服务器Python的开发 632
28.6.2 客户端Python的开发 634
28.7 设计验证 635
28.7.1 启动服务器程序 635
28.7.2 启动客户端程序 637
第29章 手写体识别模型训练与推理一体化设计和实现 639
29.1 卷积神经网络训练和推理过程概述 639
29.2 卷积神经网络前向推理与反向传播的原理 640
29.2.1 卷积层的前向推理与反向传播的原理 640
29.2.2 池化层的前向推理与反向传播的原理 643
29.2.3 全连接层的前向推理与反向传播的原理 644
29.2.4 激活函数层的前向推理与反向传播原理 646
29.3 卷积神经网络参数更新原理 647
29.3.1 损失函数 647
29.3.2 学习率与网络参数更新 647
29.4 卷积神经网络训练与推理加速器IP核的设计方法 648
29.4.1 IP核子模块的设计 648
29.4.2 IP核数据流与映射的实现 652
29.5 卷积神经网络训练与推理加速器IP核的实现 654
29.5.1 创建新的HLS工程 654
29.5.2 添加C语言设计代码 655
29.5.3 执行高级综合 662
29.6 构建完整的硬件系统 663
29.6.1 创建新的Vivado设计工程 664
29.6.2 建立新的处理器系统设计 664
29.6.3 生成顶层HDL并导出设计到SDK 667
29.7 创建Jupyter工程并测试 669
第30章 基于KR260开发平台的人体姿态识别的软件实现 673
30.1 Ubuntu操作系统镜像制作 673
30.2 Ubuntu操作系统的运行 675
30.3 PYNQ框架的安装 677
30.4 Jupyter Notebook的登录 677
30.5 姿态识别代码的执行 679
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录