ZYNQ之路--初级开发流程介绍

这篇具有很好参考价值的文章主要介绍了ZYNQ之路--初级开发流程介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        很多有玩过FPGA的老兄入手了ZYNQ,也明白什么PS+PL的开发方式,但是不知道开发ZYNQ究竟要怎么样做。本篇博客是本人阅读正点原子等开发资料的一些感悟,希望能让大家对ZYNQ的开发流程有一个更清楚的认识。

        ZYNQ开发流程

        ZYNQ类似于一个 单片机 + FPGA的结构,其实我觉得如果大家接触过一些 Soc就会更好地理解ZYNQ的作用,就例如全志A33这块Soc,它是一块ASIC,不可以通过编程来对芯片的硬件进行重设计的。

ZYNQ之路--初级开发流程介绍

         我们可以看到,灰色部分的外设都是固定的,像什么摄像头接口,什么视频接口都是设计好的,定制化的好处就使得总体比较高效,制造成本也低;但是如果我要运用到其它场景下,比如说我需要多个摄像头,那这块芯片就不再适合了(硬件控制的上限就是前后两颗摄像头)

        而ZYNQ的意义相当于只给你定制的蓝色部分,也就是处理器内核,灰色的部分都可以通过FPGA实现,这让电子工程师们可以快速开发出各种各样有针对性的Soc;当然了,看过我第一篇博客的同学都知道,其实固定的硬核不止只有处理器内核,其实还有串口和内存控制器之类的外设,这其实是追寻一种固定和变化之间的平衡。

        咱们把话说回ZYNQ的开发上来。

ZYNQ之路--初级开发流程介绍

         ZYNQ的开发流程分为硬件和软件两部分,在SDK之前的属于硬件开发,也就是我们常说的PL部分的开发,而SDK后就属于软件部分的开发了,类似单片机,属于PS部分。当然现在最新的Vitis IDE已经取代了SDK,所以后半部分一般在SDK中进行。

        PL部分的开发包括对 嵌入式最小系统的构建,以及FPGA外设的设计两个方面。我觉得要转变的一个思维是,我们现在不是在开发一个什么SDRAM控制器,什么IIC协议控制器,我们在开发的是一个小型的微机系统!因此嵌入式最小系统的设计是我们的核心。

        首先,在IP INTEGRATOR中我们要创建BLOCK DESIGN。

ZYNQ之路--初级开发流程介绍

        初学的我们总是会有疑惑,啊?IP 听说过,那个IP Catalog 也用过,这个 IP Integrator 是用来干嘛的呢?答案是用来进行  Embedded System Design ,也就是咱们常说的嵌入式系统设计。也就是咱们上面说的嵌入式最小系统的设计。

ZYNQ之路--初级开发流程介绍

         大家可以看到,一个最小的系统其实不需要PL参与的,PL可以作为PS的一个外设使用,或者是自己做自己的事情,仅仅作为一个PL工作。既然是外设,当然是可用可不用的,毕竟咱们有好多的外设可以在Block Design 中直接配置使用,即下图绿色部分。

       ZYNQ之路--初级开发流程介绍

        配置好嵌入式系统后,咱们根据需要进行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 端进行软件的开发。

ZYNQ之路--初级开发流程介绍

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

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

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

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

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

        谢谢各位的收看,万分感谢!文章来源地址https://www.toymoban.com/news/detail-452372.html

到了这里,关于ZYNQ之路--初级开发流程介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZYNQ之路--程序固化教程

             我们刚开始使用ZYNQ时,习惯使用JTAG在线将ZYNQ的PS和PL部分的配置文件烧录进ZYNQ,这样方便我们进行调试,但是却带来了掉电配置文件丢失的问题,因此,在我们学习ZYNQ的路上,必须要学会如何把配置文件保存进非易失的存储器件当中去。         ZYNQ的配置信

    2024年02月02日
    浏览(41)
  • Zynq(2):MIO,EMIO点灯之路

    由于个人原因,最近一直在对基础知识的复习,所以ZYNQ的后续学习记录,一直没有更新。 FLAG:新年新气象,争取2022年春节之前将所有关于ZYNQ中ARM裸机部分内容更新完毕,主要是ARM外设。 ZYNQ 分为 PS 和 PL 两部分,那么器件的引脚(Pin)资源同样也分成了两部分。ZYNQ PS 中的

    2024年02月13日
    浏览(41)
  • 一篇文章带你解1+X Web 前端开发考核考纲(详细介绍)(涵盖初级、中级、高级)

    📚文章目录一览 📄前言 Web 前端开发职业技能概况 名称: 🎯职业技能定义: 🎯职业技能等级: 职业技能特征: Web 前端开发(初级) 培训学时: 衔接中职专业: 衔接高职专业: 接续本科专业: 培养目标: 就业方向: 🎯主要职业能力: 🎯核心课程与实习实训: 🎯能

    2024年02月04日
    浏览(47)
  • ZYNQ之路--Xilinx AXI-Full-Master实例代码翻译

    目录 前言 代码解析         在我学习过程中遇到了第一个认知上的门槛:AXI协议。试想一个场景:我PL端的IP要通过AXI-Full协议给PS端传输数据,我该怎么做?         首先肯定是创建一个带有AXI-Full-Matser的接口          下一步,Xilinx官方会给我们一个接口的实例文件:

    2024年02月11日
    浏览(56)
  • 【C++起飞之路】初级——缺省参数、函数重载、引用

    缺省参数是 声明 或 定义 函数时为 函数的参数指定一个缺省值 。 在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。 缺省参数使用主要规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后

    2024年02月04日
    浏览(44)
  • 【C++起飞之路】初级——命名空间、输入输出流

    为了解决合作开发时的命名冲突问题,C++ 引入了命名空间(Namespace) 当我们编写代码时,可能会产生一些命名冲突,为了解决这一冲突引出了命名空间的概念 命名冲突的产生主要包括两个方面原因: 1、与库函数名冲突 2、工程中的冲突(比如多人共同完成一个项目时,写了

    2024年02月03日
    浏览(46)
  • 【leetcode刷题之路】初级算法(2)——链表+树+排序和搜索+动态规划

    3.1 【链表】删除链表中的节点 https://leetcode.cn/problems/delete-node-in-a-linked-list/ 给出的就是要删除的那个节点,直接前后移动就行了。 3.2 【双指针】删除链表的倒数第 N 个结点 https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 利用双指针left和right,首先让right遍历n个节点,再让两

    2024年02月10日
    浏览(50)
  • 2023年软件测试工程师,初级到高级进阶路线指南,测试之路...

    提到软件测试工程师时,很多人依然会联想到那些“点点点”并企图在“点点点”中找到缺陷的人,也就是大家常说的依照测试规范和测试案例来对软件进行测试,检查软件是不是有缺陷,判断软件是不是稳定。但这其实是一个很不好的观点。 近年来,随着各大互联网企业的

    2024年02月09日
    浏览(62)
  • ZYNQ连载01-ZYNQ介绍

    参考文档:《ug585-zynq-7000-trm.pdf》 ZYNQ分为PS和PL两大部分,PS即ARM,PL即FPGA,PL作为PS的外设。 ZYNQ7020为双核A9架构,多核处理器常用的运行模式为AMP(非对称多处理)和SMP(对称多处理),这里选用AMP方案,CPU0和CPU1使用OpenAMP通信,FPGA使用IP核。 CPU 系统 CPU0 Linux CPU1 FreeRTOS 参考文档

    2024年02月07日
    浏览(37)
  • 大数据之入门开发流程介绍

    1.1 数据收集 大数据处理的第一步是数据的收集。现在的中大型项目通常采用微服务架构进行分布式部署,所以数据的采集需要在多台服务器上进行,且采集过程不能影响正常业务的开展。基于这种需求,就衍生了多种日志收集工具,如 Flume 、Logstash、Kibana 等,它们都能通过

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包