网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | Xilinx Zynq-7000嵌入式系统设计与实现 |
分类 | 科学技术-自然科学-物理 |
作者 | 何宾编 |
出版社 | 电子工业出版社 |
下载 | |
简介 | 作者简介 目录 章 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 第2章 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 第3章 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 第4章 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 第5章 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 第6章 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 第7章 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 第8章 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 第9章 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 0章 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 1章 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 2章 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 3章 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 4章 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 5章 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 6章 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 7章 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 8章 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 9章 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 第20章 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 第21章 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 第22章 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 第23章 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 第24章 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 第25章 构建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 第26章 构建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 第27章 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 第28章 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 第29章 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 第30章 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 内容推荐 本书是在作者于2016年6月在电子工业出版社已经出版的《Xilinx Zynq—7000嵌入式系统设计与实现:基于ARM Cortex—A9双核处理器和Vivado的设计方法》一书的基础上进行修订而成的。本书新修订后内容增加到30章。修订后,本书的一大特色就是加入了arm架构及分类、使用PetaLinx |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。