很多有玩过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之间的数据传输方式有哪些,大家可以参考这篇博客。

  1. 中断
  2. IO方式:MIO EMIO GPIO
  3. BRAM或FIFO或EMIF
  4. AXI DMA:PS通过AXI-lite向AXI DMA发送指令,AXI DMA通过HP通路和DDR交换数据,PL通过AXI-S读写DMA的数据。
  5. 等等。。。

可以看出,其实两个部分的交互方式还是很多的,以后咱们遇到一个说一个。

在Vivado端完成对嵌入式系统的设计后,我们就要进入Vitis IDE 端进行软件的开发。

Vitis IDE的下载和使用大家可以参考这篇博客 ,简单来说流程一般是:新建一个工程,选择Platform ,也就是我们之前在Vivado中生成的 XSA文件,然后添加文件,进行开发。我相信使用过Keil 5的同学们应该心中对文件目录结构应该更胸有成竹,Src文件夹中存放的是源文件。

代码编写完之后是编译,编译完就是下载了。不过这里要注意以下,如果我们使用了PL的资源,那么在下载软件编译生成的 elf 文件之前,需要先下载硬件设计过程中生成的 bitstream 文件,对 PL 部分进行配置。

最后就是验证工作了,上述的流程是普通的ZYNQ开发流程;玩的花一点的同学可能是直接上Linux操作系统,这部分等后面我接触到了再说吧!

其实我觉得ZYNQ入门简单,精通的话需要大量的知识储备,但也不是不可能,开发ZYNQ相比于做单片机开发肯定路子会更广一些,向上可以做IC设计,向下嵌入式、单片机什么的工作也能胜任。

我个人悟到的学习技巧就是多上板实验,多做项目,不要一直纠结代码是不是你写的之类的问题,人类发展不能总是从造轮子开始。等我们熟练了这些技术再去底层,再去创新,这样才是一个正常的路线。

谢谢各位的收看,万分感谢!

ZYNQ之路--初级开发流程介绍相关推荐

  1. (2)FPGA开发流程介绍(第1天)

    (2)FPGA开发流程介绍(第1天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA开发流程介绍(第1天) 5)技术交流 6)参考资料 2 FPGA初级课 ...

  2. ZYNQ学习(1) —— 基础开发流程

    ZYNQ学习(1) -- 基础开发流程 1. 现在PlanAhead中新建一个工程 2. 添加嵌入式内核,进入EDK中配置内核(导入XML模板,添加模块,设置端口等) 3. 回到PlanAhead生成 ...

  3. Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍

    开发第三方登录,我们必须首先要了解OAuth协议(本文所讲述的OAuth协议指的是OAuth2协议),本文首先简单介绍OAuth协议,然后基于Spring Social来阐述开发第三方登录需要做哪些准 ...

  4. sawtooth,井字棋演示和交易族开发流程介绍

    1.实例演示 这里以官网的XO交易族为例演示,该交易族是一个井字棋游戏,在开始之前,我们需要搭建起来一个单节点的sawtooth环境,详情可以查看上一篇博客: Sawtooth,使用docker启动单 ...

  5. 网站的开发流程介绍(转)

    网站的开发流程介绍 从本章开始,我们将学习网站设计和布局技术,其中重点是熟悉网站的开发流程,DIV层和表格布局各自的使用场合,以及网站开发的一些经验.技巧:难点是如何进行网页布局. 创建一个商业网站, ...

  6. typecho和wordpress模板了解、开发流程介绍、前台后台前端后端区分

    网站模板搭建网站: 使用网站模板搭建网站很简单,只需要将相关文件放到你自己的服务器上面,之后在进行相关的配置即可.这里给大家介绍两款网站模板: typecho: 是一个轻量高效,简单操作就能搭建网站的 ...

  7. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍

    文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...

  8. 1.Direct2D 捕鱼游戏开发-流程介绍

    环境: 编辑器:VS2015 系统:win10 专业版 碰撞:aabb obb盒模型(obb采用分离轴进行判断) 渲染:direct2d 文件夹介绍 目录截图: frame:放子弹对象,鱼对象,文件读 ...

  9. 2、【WebGIS实战】WebGIS开发流程介绍

    大家好,我是X北辰北.本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手. 在所有事情开始之前,我们还是花一篇文章的时间来给大家介绍下WebGIS开发相关的东西,主要 ...

最新文章

  1. Intel GPU实现游戏与数据中心
  2. 使用Python和Asyncio编写在线多人游戏(二)
  3. 天然气阶梯是按年还是按月_社保断缴了,还有补缴的机会?新规下,今年起按这5种方式处理...
  4. Python3.0 我的DailyReport 脚本(一) 使用COM操作Excel
  5. mysql最高权限超级用户是_MySQL中,预设的、拥有最高权限超级用户的用户名为( )...
  6. Server.MapPath()目录详解
  7. 数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器
  8. python脚本转换成apk_使用Python-For-Android将Python脚本导出到Android可执行文件(.apk)...
  9. ecshop 前台个人中心修改侧边栏 和 侧边栏显示不全 或 导航现实不全
  10. 10个管理工作时间的小技巧
  11. 权限管理系统设计_多校区的教育培训机构,如何选择培训学校crm管理系统?
  12. 使用临时表的另外一种方式
  13. 解决Mac安装LightGBM报错LightGBM and gcc 8 in MacOS: Library not loaded
  14. 百度地图的一个有价值的应用
  15. 学习使用Visual studio 时碰到的坑
  16. 经典面试智力题200+题和解答
  17. 使用web.py在BAE建立自已的电影网站
  18. 爬虫基础回顾-requests
  19. (2) [保护模式]段描述符
  20. Java基础语法-数据类型与idea配置

热门文章

  1. ecm工作原理 usb_ECM的工作原理.ppt
  2. 英飞凌TC275芯片开发笔记
  3. python无法启动0xc0000022_无法正常启动0xc0000022_0xc0000022一键修复教程 - 系统家园...
  4. 【机试题】2014大疆嵌入式笔试题(附超详细解答,下篇)
  5. 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
  6. 计算机图形学是研究真实,计算机图形学论文真实感制图技术在图形学中的应用...
  7. 计算机底层:CPU结构与组成原理、工作原理
  8. 【因果推断的统计方法】综述与个人理解
  9. 【分享程序员的生活】在国企里面当程序猿是一种怎样的体验!!??
  10. Leetcode 977.有序数组的平方