ZYNQ之路--初级开发流程介绍
很多有玩过FPGA的老兄入手了ZYNQ,也明白什么PS+PL的开发方式,但是不知道开发ZYNQ究竟要怎么样做。本篇博客是本人阅读正点原子等开发资料的一些感悟,希望能让大家对ZYNQ的开发流程有一个更清楚的认识。
ZYNQ开发流程
ZYNQ类似于一个 单片机 + FPGA的结构,其实我觉得如果大家接触过一些 Soc就会更好地理解ZYNQ的作用,就例如全志A33这块Soc,它是一块ASIC,不可以通过编程来对芯片的硬件进行重设计的。
我们可以看到,灰色部分的外设都是固定的,像什么摄像头接口,什么视频接口都是设计好的,定制化的好处就使得总体比较高效,制造成本也低;但是如果我要运用到其它场景下,比如说我需要多个摄像头,那这块芯片就不再适合了(硬件控制的上限就是前后两颗摄像头)
而ZYNQ的意义相当于只给你定制的蓝色部分,也就是处理器内核,灰色的部分都可以通过FPGA实现,这让电子工程师们可以快速开发出各种各样有针对性的Soc;当然了,看过我第一篇博客的同学都知道,其实固定的硬核不止只有处理器内核,其实还有串口和内存控制器之类的外设,这其实是追寻一种固定和变化之间的平衡。
咱们把话说回ZYNQ的开发上来。
ZYNQ的开发流程分为硬件和软件两部分,在SDK之前的属于硬件开发,也就是我们常说的PL部分的开发,而SDK后就属于软件部分的开发了,类似单片机,属于PS部分。当然现在最新的Vitis IDE已经取代了SDK,所以后半部分一般在SDK中进行。
PL部分的开发包括对 嵌入式最小系统的构建,以及FPGA外设的设计两个方面。我觉得要转变的一个思维是,我们现在不是在开发一个什么SDRAM控制器,什么IIC协议控制器,我们在开发的是一个小型的微机系统!因此嵌入式最小系统的设计是我们的核心。
首先,在IP INTEGRATOR中我们要创建BLOCK DESIGN。
初学的我们总是会有疑惑,啊?IP 听说过,那个IP Catalog 也用过,这个 IP Integrator 是用来干嘛的呢?答案是用来进行 Embedded System Design ,也就是咱们常说的嵌入式系统设计。也就是咱们上面说的嵌入式最小系统的设计。
大家可以看到,一个最小的系统其实不需要PL参与的,PL可以作为PS的一个外设使用,或者是自己做自己的事情,仅仅作为一个PL工作。既然是外设,当然是可用可不用的,毕竟咱们有好多的外设可以在Block Design 中直接配置使用,即下图绿色部分。
配置好嵌入式系统后,咱们根据需要进行PL部分的设计。这里涉及一个问题,那就是PS和PL之间的数据传输方式有哪些,大家可以参考这篇博客。
- 中断
- IO方式:MIO EMIO GPIO
- BRAM或FIFO或EMIF
- AXI DMA:PS通过AXI-lite向AXI DMA发送指令,AXI DMA通过HP通路和DDR交换数据,PL通过AXI-S读写DMA的数据。
- 等等。。。
可以看出,其实两个部分的交互方式还是很多的,以后咱们遇到一个说一个。
在Vivado端完成对嵌入式系统的设计后,我们就要进入Vitis IDE 端进行软件的开发。
Vitis IDE的下载和使用大家可以参考这篇博客 ,简单来说流程一般是:新建一个工程,选择Platform ,也就是我们之前在Vivado中生成的 XSA文件,然后添加文件,进行开发。我相信使用过Keil 5的同学们应该心中对文件目录结构应该更胸有成竹,Src文件夹中存放的是源文件。
代码编写完之后是编译,编译完就是下载了。不过这里要注意以下,如果我们使用了PL的资源,那么在下载软件编译生成的 elf 文件之前,需要先下载硬件设计过程中生成的 bitstream 文件,对 PL 部分进行配置。
最后就是验证工作了,上述的流程是普通的ZYNQ开发流程;玩的花一点的同学可能是直接上Linux操作系统,这部分等后面我接触到了再说吧!
其实我觉得ZYNQ入门简单,精通的话需要大量的知识储备,但也不是不可能,开发ZYNQ相比于做单片机开发肯定路子会更广一些,向上可以做IC设计,向下嵌入式、单片机什么的工作也能胜任。
我个人悟到的学习技巧就是多上板实验,多做项目,不要一直纠结代码是不是你写的之类的问题,人类发展不能总是从造轮子开始。等我们熟练了这些技术再去底层,再去创新,这样才是一个正常的路线。
谢谢各位的收看,万分感谢!
ZYNQ之路--初级开发流程介绍相关推荐
- (2)FPGA开发流程介绍(第1天)
(2)FPGA开发流程介绍(第1天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA开发流程介绍(第1天) 5)技术交流 6)参考资料 2 FPGA初级课 ...
- ZYNQ学习(1) —— 基础开发流程
ZYNQ学习(1) -- 基础开发流程 1. 现在PlanAhead中新建一个工程 2. 添加嵌入式内核,进入EDK中配置内核(导入XML模板,添加模块,设置端口等) 3. 回到PlanAhead生成 ...
- Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍
开发第三方登录,我们必须首先要了解OAuth协议(本文所讲述的OAuth协议指的是OAuth2协议),本文首先简单介绍OAuth协议,然后基于Spring Social来阐述开发第三方登录需要做哪些准 ...
- sawtooth,井字棋演示和交易族开发流程介绍
1.实例演示 这里以官网的XO交易族为例演示,该交易族是一个井字棋游戏,在开始之前,我们需要搭建起来一个单节点的sawtooth环境,详情可以查看上一篇博客: Sawtooth,使用docker启动单 ...
- 网站的开发流程介绍(转)
网站的开发流程介绍 从本章开始,我们将学习网站设计和布局技术,其中重点是熟悉网站的开发流程,DIV层和表格布局各自的使用场合,以及网站开发的一些经验.技巧:难点是如何进行网页布局. 创建一个商业网站, ...
- typecho和wordpress模板了解、开发流程介绍、前台后台前端后端区分
网站模板搭建网站: 使用网站模板搭建网站很简单,只需要将相关文件放到你自己的服务器上面,之后在进行相关的配置即可.这里给大家介绍两款网站模板: typecho: 是一个轻量高效,简单操作就能搭建网站的 ...
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍
文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...
- 1.Direct2D 捕鱼游戏开发-流程介绍
环境: 编辑器:VS2015 系统:win10 专业版 碰撞:aabb obb盒模型(obb采用分离轴进行判断) 渲染:direct2d 文件夹介绍 目录截图: frame:放子弹对象,鱼对象,文件读 ...
- 2、【WebGIS实战】WebGIS开发流程介绍
大家好,我是X北辰北.本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手. 在所有事情开始之前,我们还是花一篇文章的时间来给大家介绍下WebGIS开发相关的东西,主要 ...
最新文章
- Intel GPU实现游戏与数据中心
- 使用Python和Asyncio编写在线多人游戏(二)
- 天然气阶梯是按年还是按月_社保断缴了,还有补缴的机会?新规下,今年起按这5种方式处理...
- Python3.0 我的DailyReport 脚本(一) 使用COM操作Excel
- mysql最高权限超级用户是_MySQL中,预设的、拥有最高权限超级用户的用户名为( )...
- Server.MapPath()目录详解
- 数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器
- python脚本转换成apk_使用Python-For-Android将Python脚本导出到Android可执行文件(.apk)...
- ecshop 前台个人中心修改侧边栏 和 侧边栏显示不全 或 导航现实不全
- 10个管理工作时间的小技巧
- 权限管理系统设计_多校区的教育培训机构,如何选择培训学校crm管理系统?
- 使用临时表的另外一种方式
- 解决Mac安装LightGBM报错LightGBM and gcc 8 in MacOS: Library not loaded
- 百度地图的一个有价值的应用
- 学习使用Visual studio 时碰到的坑
- 经典面试智力题200+题和解答
- 使用web.py在BAE建立自已的电影网站
- 爬虫基础回顾-requests
- (2) [保护模式]段描述符
- Java基础语法-数据类型与idea配置
热门文章
- ecm工作原理 usb_ECM的工作原理.ppt
- 英飞凌TC275芯片开发笔记
- python无法启动0xc0000022_无法正常启动0xc0000022_0xc0000022一键修复教程 - 系统家园...
- 【机试题】2014大疆嵌入式笔试题(附超详细解答,下篇)
- 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
- 计算机图形学是研究真实,计算机图形学论文真实感制图技术在图形学中的应用...
- 计算机底层:CPU结构与组成原理、工作原理
- 【因果推断的统计方法】综述与个人理解
- 【分享程序员的生活】在国企里面当程序猿是一种怎样的体验!!??
- Leetcode 977.有序数组的平方