嵌入式系统软硬件协同设计实战指南
《嵌入式系统软硬件协同设计实战指南》是机械工业出版社出版发行陆佳华 / 江舟 / 马岷著作的实体书。
基本信息
- 定价
69.00元
- 出版社
机械工业出版社
- 出版时间
2013-1-26
- 作者
陆佳华、江舟、马岷
- 装帧
平装
- 页数
354
- ISBN
9787111411079
- 副标题
基于Xilinx Zynq
内容介绍
本书由浅入深,由基础知识到实战案例向读者系统阐述了如何利用Zynq平台进行嵌入式系统以及软硬件协同设计的开发。本书分为基础篇与进阶篇两部分,基础篇中介绍了Zynq器件、ZedBoard,并配有简单入门实验,同时针对软件开发人员增设了FPGA硬件加速等内容。在进阶篇中介绍了利用Zynq进行软硬件协同设计,同时对处理器与可编程逻辑接口等技术进行了详细剖析。本书提供了20个详细的设计案例,涵盖了硬件板卡、FPGA逻辑、Linux驱动、Linux操作系统、上层应用、软硬件协同设计等Zynq开发中可能遇到的各个方面的知识,并在最后将前述独立案例整合为4个系统案例。本书重点突出实战,以案例为指导,配合介绍相关参考文档,协助读者尽快掌握在Zynq上进行各项设计的方法。
本书可作为Zynq初学者、软硬件协同设计开发人员的参考用书,亦可作为大专院校嵌入式系统设计、片上系统设计、可编程逻辑器件等相关专业的教师和学生的参考用书。
作者介绍
陆佳华,开源硬件社区Openhw.org资深版主,Xilinx高级应用工程师,现任职于Xilinx全球大学计划部,主要负责Xilinx全球大学相关的参考设计开发,技术推广、支持。陆佳华2006年毕业于西安交通大学并获得硕士学位。2006年加入Xilinx公司后任产品应用工程师,主要负责FPGA上的嵌入式系统设计,以太网设计,内存控制器设计等方向技术支持。陆佳华著有《零存整取-NetFPGA开发指南》一书。
江舟,开源硬件社区Openhw.org的资深版主,浙江大学硕士研究生,现为Xilinx全球大学计划部实习生,主要参与Zynq上的软件开发。江舟是美信DIY大赛的主要技术支持者之一,并担任Xilinx开源硬件大赛的技术支持。
马岷,开源硬件社区Openhw.org的资深版主,浙江大学硕士研究生,现为Xilinx全球大学计划部实习生,主要参与Zynq上的硬件开发。马岷是美信DIY大赛的主要技术支持者之一,并担任Xilinx开源硬件大赛的技术支持。
作品目录
Foreword前言第一部分 基础篇第1章 初试ZedBoard/21.1 GPIO LED动手玩/21.1.1 拷贝SD卡/21.1.2 跳线与外设连接/21.1.3 演示操作/21.2 Linaro Ubuntu动手玩/31.2.1 SD卡分区/31.2.2 文件拷贝(FAT/EXT)/61.2.3 外设连接/61.2.4 可演示的效果/7第2章 Zynq平台介绍/92.1 7系列FPGA简介/92.2 Zynq-7000 AP SoC体系简介/12第3章 ZedBoard开发环境/153.1 ZedBoard的板载外设/153.1.1 LED/153.1.2 按键/163.1.3 开关/163.1.4 OLED/173.1.5 USB接口/183.1.6 音频接口/203.1.7 VGA接口/213.1.8 HDMI接口/223.1.9 10/100/1000兆网口/233.2 ZedBoard的扩展外设/253.2.1 外扩PMod插座/253.2.2 外扩FMC插槽/273.2.3 外扩AMS插座/28第4章 开发工具链/294.1 可编程逻辑开发工具链/294.1.1 PlanAhead/294.1.2 Xilinx Platform Studio/314.2 软件开发工具链/344.2.1 Xilinx Software Development Kit/344.2.2 交叉编译工具链/354.3 软硬件调试工具/364.3.1 ChipScope Pro/364.3.2 GDB与GDBserver/38第5章 Zynq体系结构/405.1 应用处理器单元(APU)/405.1.1 ARM Cortex A9处理器/405.1.2 侦听控制单元(SCU)/435.1.3 L2高速缓存/445.1.4 APU接口/445.2 通用外设/465.2.1 通用IO(GPIO)/465.2.2 SPI接口/495.2.3 UART接口/515.2.4 计时器/545.2.5 USB控制器/575.2.6 DDR控制器/585.3 数字逻辑设计/595.3.1 可编程逻辑“外设”(PL)/595.3.2 XADC/615.3.3 PCIe/625.4 MIO/EMIO/63第6章 系统级信号/666.1 电源管理/666.2 Clock信号/676.2.1 CPU时钟域/686.2.2 DDR时钟域/696.2.3 基本的时钟分支结构/696.2.4 I/O外设(IOP)时钟/706.2.5 PL时钟/726.2.6 其他时钟/726.3 复位系统/736.4 JTAG/756.5 中断处理/76第7章 Zynq启动与配置/787.1 Zynq启动过程简介/787.2 外部启动条件/797.2.1 电源要求/797.2.2 时钟要求/797.2.3 复位要求/797.2.4 启动引脚设置/807.3 BootROM/807.3.1 BootROM的作用/807.3.2 BootROM的特点/817.3.3 BootROM后的状态/827.4 FSBL/827.5 SSBL/847.6 Linux启动过程/847.7 Secure Boot/86第8章 面向软件工程师的逻辑设计/878.1 FPGA硬件加速原理/878.1.1 以空间换时间/878.1.2 以存储器换门电路/898.1.3 以IP集成换生产力/908.2 部分动态可重配置于Zynq/93第9章 ZedBoard入门/959.1 UART和GPIO控制/959.1.1 UART和GPIO接口/959.1.2 硬件设计过程/969.1.3 软件设计过程/1069.2 硬件/软件调试方法/1129.2.1 ChipScope IP Core/1129.2.2 SDK Gdb使用/1159.3 搭建你的单板计算机(Single Board Computer)/1179.3.1 搭建系统环境/1189.3.2 准备工作/118第二部分 进阶篇第10章 基于虚拟平台的Zynq开发/12610.1 QEMU介绍/12610.2 编译QEMU源码/12610.2.1 下载QEMU源码/12610.2.2 配置QEMU/12710.2.3 QEMU所依赖的库文件/12710.2.4 编译QEMU/12710.3 启动QEMU/12710.4 QEMU中的嵌入式Linux/12810.5 商业版虚拟平台/131第11章 PL和PS的接口技术详解/13211.1 PL和PS的接口/13211.1.1 AXI接口简介/13311.1.2 AXI Interconnect/13411.2 Zynq的内部连接/13711.2.1 AXI_HP/13911.2.2 AXI_GP/14011.2.3 AXI_ACP/14011.3 PL和存储器系统性能概述/14211.3.1 接口理论带宽/14211.3.2 DDR控制器的吞吐率及其效率/14311.3.3 内部互连吞吐量瓶颈/14311.3.4 如何选择PL的接口/144第12章 基于Zynq的软硬件协同设计/14912.1 多核处理器架构简介/14912.1.1 什么是多核处理器/14912.1.2 多核处理器发展的动机和优势/15012.1.3 同构、异构多核架构的优点和挑战/15212.2 软硬件协同设计方法论/15212.2.1 什么是软硬件协同设计/15212.2.2 软硬件协同设计发展的动机和优势/15212.2.3 软硬件协同设计的基本流程/15312.2.4 基于Xilinx工具的软硬件协同设计简介/15412.3 高层次综合/15412.3.1 高层次综合综述/15412.3.2 高层次综合发展的动机与优势/15512.3.3 Xilinx AutoESL工具简介/15612.4 基于Xilinx Zynq的软硬件协同设计实例/15712.4.1 功能简介/15712.4.2 设计流程简介/15712.4.3 实验结果与验证/165第13章 Zynq开发实战/16613.1 用户IP设计/16613.1.1 用户IPcore介绍/16613.1.2 用户IPcore设计/16713.2 嵌入式Linux设备驱动开发/18013.2.1 设备驱动开发介绍/18013.2.2 驱动程序的加载与卸载/18113.2.3 sys文件系统简介/18113.2.4 PWM模块驱动程序/18213.2.5 PWM驱动程序编译与测试/18413.3 构建嵌入式Linux系统/18613.3.1 搭建系统环境/18613.3.2 编译u-boot/18613.3.3 编译内核与设备树/18713.3.4 制作根文件系统/18813.3.5 启动嵌入式Linux/19213.4 HDMI设计/19313.4.1 HDMI传输原理/19313.4.2 ADV7511芯片的相关控制信号/19513.4.3 设计过程/19813.5 OpenCV移植/20313.5.1 开发环境准备/20313.5.2 配置cmake/20313.5.3 OpenCV编译与安装/20513.5.4 OpenCV移植与ZedBoard测试/20613.6 基于OpenCV的树叶识别系统/20713.6.1 项目总览/20813.6.2 图像采集/20813.6.3 预处理/20913.6.4 特征提取/21113.6.5 分类决策/21613.6.6 总结/21913.7 基于OpenCV的人脸识别系统/22013.7.1 系统综述/22013.7.2 基于Haar特征和Adaboost算法的人脸检测/22013.7.3 系统设计与实现/22213.7.4 总结/22613.8 嵌入式Web服务器的移植与搭建/22613.8.1 嵌入式Web服务器介绍/22613.8.2 Boa服务器移植与配置/22813.8.3 Boa服务器部署与测试/23013.9 嵌入式网络摄像机的移植与搭建/23313.9.1 嵌入式网络摄像机/23313.9.2 mjpg-streamer的移植与架设/23413.10 FreeRTOS实时操作系统的应用/23813.10.1 FreeRTOS介绍/23813.10.2 FreeRTOS与ucOS-Ⅱ的比较/23913.10.3 FreeRTOS在Zynq上的应用实例与分析/23913.10.4 基于FreeRTOS的Lwip/25013.11 XADC的使用/25013.11.1 建立硬件工程/25213.11.2 软件工程设计/25313.11.3 程序分析/25513.12 基于Zynq的部分可重配置/25613.12.1 可重配置系统介绍/25613.12.2 可重配置的开发流程/25713.12.3 小结/26513.13 在Zynq上搭建Android简介/265第14章 系统级设计案例/26614.1 电机控制系统/26614.1.1 双闭环控制器理论/26614.1.2 双闭环系统/26714.1.3 双闭环控制IP核说明/27214.1.4 硬件实现过程/27514.1.5 软件实现过程/28514.1.6 硬件平台测试/28614.2 智能家庭健康平台/28714.2.1 智能家庭健康平台简介/28714.2.2 EKG AFE模块硬件设计/28714.2.3 Night EKG Controller IP设计/29214.2.4 建立可运行Linux的完整系统/29514.2.5 Night EKG Controller的Linux驱动设计/29714.2.6 基于Qt的图形用户界面设计/29914.2.7 在ZedBoard上运行Qt程序/30814.2.8 实现软件开机自动运行/31014.3 高性能视频处理系统设计/31114.3.1 系统架构/31214.3.2 硬件架构设计/31314.3.3 软件架构设计/31614.3.4 利用Vivado HLS实现Sobel滤波硬件/31814.3.5 使系统在ZedBoard上运行/32014.4 智能小车系统开发/32014.4.1 智能小车系统结构/32014.4.2 运动控制设计/32314.4.3 Linux系统应用程序设计/32614.4.4 智能小车平台的后续拓展/333第15章 如何获取资料和帮助/33415.1 如何获取Xilinx的技术文档/33415.1.1 DocNav介绍/33415.1.2 DocNav使用案例/33415.2 如何找到Zynq开发资料/33615.2.1 如何获取本书的最新例程/33615.2.2 如何获取Zynq开发资料/33715.2.3 如何获取ZedBoard文档与例程/33715.3 Xilinx网站资源导读/33815.3.1 序/33815.3.2 Xilinx软件介绍/33815.3.3 软件版本和软件更新/34015.3.4 软件教程/34115.3.5 硬件资料/34315.3.6 参考资源/34315.3.7 问题解决/344附录A Xilinx开发套件版本14.1到14.3的主要升级变化/346参考资料/353