本书以Zynq-7000的ARM Cortex-A9部分为核心,以Zynq-7000的FPGA部分为可编程外设,由浅入深,从简单的流水灯、Hello World开始,详细介绍了底层硬件接口原理、嵌入式Linux环境搭建、嵌入式Linux操作系统移植以及应用程序设计方法。为了方便教学和自学,本书配套提供所有案例的完整设计文件。这些资源可以在清华大学出版社网站本书页面下载。主要内容:
n Zynq开发流程
n GPIO原理及设计实现
n 中断原理及设计实现
n 定时器原理及设计实现
n UART原理及设计实现
n OLED原理及设计实现
n 双核运行原理及设计实现
n 嵌入式Linux环境搭建
n u-boot移植方法与实现
n Linux内核移植方法与实现
n 网络视频设计及实现
《XilinxZynqSoC与嵌入式Linux设计实战指南:兼容ARMCortex-A9的设计方法》系统介绍了XilinxZynq7000SoC与嵌入式Linux设计方法与实践。全书以ZynqPS(ARMCortexA9)为核心,以ZynqPL(FPGA)为可编程外设,详细介绍了从底层硬件系统到上层操作系统及GUI设计原理和方法,详细讲解了底层外设接口控制程序、嵌入式Linux操作系统移植以及应用程序。全书共分14章,内容包括Zynq初体验、Zynq集成开发环境、Zynq启动流程及镜像制作、GPIO原理及实现、中断原理及实现、定时器原理及实现、通用异步收发器原理及实现、OLED原理及实现、Zynq双核运行原理及实现、嵌入式Linux系统构建、嵌入式Linux系统实现、uboot原理及移植、Linux内核原理及移植和嵌入式网络视频设计及实现。
《XilinxZynqSoC与嵌入式Linux设计实战指南:兼容ARMCortex-A9的设计方法》由浅入深,从简单的流水灯、HelloWorld开始,使读者可以完成裸机控制程序设计、嵌入式Linux环境搭建、嵌入式操作系统移植以及应用程序设计等。
《XilinxZynqSoC与嵌入式Linux设计实战指南:兼容ARMCortex-A9的设计方法》理论与实践相结合,可以作为信息类专业大学本科高年级和研究生的教学参考用书,也可作为从事嵌入式系统设计的工程技术人员参考用书。
第一篇Zynq开发基础
第1章Zynq初体验
1.1PL部分设计实现
1.1.1创建工程
1.1.2设计输入
1.1.3设计综合
1.1.4设计实现
1.1.5下载执行
1.2PS部分设计实现
1.2.1建立Zynq硬件系统
1.2.2在PS中设计Hello World程序
1.2.3下载执行程序
第2章Zynq集成开发环境
2.1Zynq硬件平台
2.1.1Zynq XC7Z020芯片硬件资源
2.1.2ZedBoard硬件资源
2.2Zynq软件平台
2.2.1嵌入式硬件开发工具XPS
2.2.2嵌入式软件开发工具SDK
第3章Zynq启动流程及镜像制作
3.1BootROM
3.2Zynq器件的启动配置
3.3使用BootGen
3.3.1BootGen介绍
3.3.2BIF文件语法
3.3.3BootGen实例
第二篇Zynq底层硬件设计
第4章GPIO原理及设计实现
4.1GPIO原理
4.2Zynq XC7Z020 GPIO寄存器
4.2.1DATA_RO寄存器
4.2.2DATA寄存器
4.2.3MASK_DATA_LSW/ MSW寄存器
4.2.4DIRM寄存器
4.2.5OEN寄存器
4.2.6GPIO slcr寄存器
4.3GPIO设计实现
4.3.1汇编语言实现
4.3.2C语言实现
第5章中断原理及实现
5.1中断原理
5.1.1中断类型
5.1.2中断向量表
5.1.3中断处理过程
5.2Zynq中断体系结构
5.2.1私有中断
5.2.2软件中断
5.2.3共享外设中断
5.2.4中断寄存器
5.3中断程序设计实现
5.3.1中断向量表和解析程序
5.3.2中断源配置
5.3.3ICD寄存器初始化
5.3.4ICC寄存器组初始化
5.3.5ICD寄存器组配置
5.3.6ARM程序状态寄存器(CPSR)配置
5.3.7中断服务程序设计
5.4设计验证
第6章定时器原理及实现
6.1Zynq定时器概述
6.2私有定时器
6.2.1私有定时器寄存器
6.2.2私有定时器设计实现
6.3私有看门狗定时器
6.3.1私有看门狗定时器寄存器
6.3.2私有看门狗定时器设计实现
6.4全局定时器
6.4.1全局定时器寄存器
6.4.2全局定时器设计实现
第7章通用异步收发器原理及实现
7.1UART概述
7.2UART寄存器
7.3UART设计实现
7.3.1UART引脚设置
7.3.2UART初始化
7.3.3UART字符接收和发送函数实现
7.3.4UART主函数实现
7.3.5UART具体实现步骤
第8章OLED原理及实现
8.1OLED概述
8.2建立OLED硬件系统
8.3生成自定义OLED IP模板
8.4修改MY_OLED IP设计模板
8.5OLED驱动程序设计实现
8.5.1OLED初始化
8.5.2写数据相关函数
8.5.3写显存相关函数实现
8.6设计验证
第9章Zynq双核运行原理及实现
9.1双核运行原理
9.2硬件系统设计
9.3软件设计
9.3.1FSBL
9.3.2CPU0应用程序设计
9.3.3CPU1应用程序设计
9.4设计验证
第三篇嵌入式Linux设计
第10章嵌入式Linux系统构建
10.1Ubuntu 13.10设置
10.1.1root登录
10.1.2安装FTP服务器和SSH服务器
10.2PuTTY和FileZilla工具使用
10.2.1PuTTY工具使用
10.2.2FileZilla工具使用
10.3交叉编译器安装
10.3.1Xilinx ARM交叉编译器下载
10.3.2Xilinx ARM交叉编译器安装
10.4嵌入式Qt环境构建
10.4.1主机环境Qt构建
10.4.2目标机Qt环境构建
第11章嵌入式Linux系统实现
11.1硬件平台构建
11.1.1自定义GPIO IP核设计
11.1.2添加my_led IP核端口
11.2my_led IP核逻辑设计
11.2.1设置引脚方向信息
11.2.2my_led IP核端口和连接设计
11.2.3my_led IP核用户逻辑设计
11.2.4my_led IP核引脚约束设计
11.2.5my_led IP核硬件比特流生成
11.3启动文件BOOT.BIN设计
11.3.1第一阶段启动代码设计
11.3.2uboot编译
11.3.3生成BOOT.BIN文件
11.4Linux内核编译
11.4.1内核简介
11.4.2Xilinx Linux内核的获取
11.4.3Xilinx Linux内核编译
11.5系统测试
11.6添加my_led设备
11.6.1my_led驱动程序设计
11.6.2应用程序调用驱动程序测试
第12章uboot原理及移植
12.1uboot版本及源码结构
12.1.1uboot版本
12.1.2uboot源码结构
12.2uboot配置和编译分析
12.2.1uboot配置分析
12.2.2顶层Makefile分析
12.3uboot运行过程分析
12.3.1start.S文件分析
12.3.2lowlevel_init.S分析
12.3.3board_init_f分析
12.3.4board_init_r分析
12.3.5main_loop分析
12.4uboot移植
12.4.1删除无关文件
12.4.2修改因删除无关源码造成的错误
12.4.3添加修改ZedBoard移植代码
12.4.4uboot测试
第13章Linux内核原理及移植
13.1Linux内核版本及源码结构
13.1.1Linux内核版本
13.1.2Linux内核源码结构
13.2Linux内核系统配置
13.2.1Makefile分析
13.2.2Makefile中的变量
13.2.3子目录Makefile
13.2.4内核配置文件
13.3Linux内核启动分析
13.3.1内核启动入口
13.3.2zImage自解压
13.3.3第一阶段启动代码分析
13.3.4第二阶段启动代码分析
13.4Linux内核移植
13.4.1添加配置文件
13.4.2添加和修改ZedBoard相关文件
13.4.3添加驱动文件和头文件
13.4.4Linux内核测试
第14章网络视频设计及实现
14.1总体设计
14.2V4L2关键技术
14.2.1V4L2基本原理
14.2.2相关数据结构和函数
14.2.3V4L2工作流程
14.3TCP及Qt下的网络编程
14.3.1服务器端程序设计
14.3.2客户端程序设计
14.4设计验证
14.4.1主机设计验证
14.4.2目标机设计验证