ZYNQ开发进化史——概述

本文介绍了ZYNQ从裸机到Linux,再到PYNQ的开发过程,涵盖了AXI总线、C语言内存管理、Linux移植、设备驱动等关键知识点。文章详细阐述了如何在不同阶段解决地址问题,以及如何利用PYNQ框架提升开发效率。
摘要由CSDN通过智能技术生成

这个系列包含了我一步一步让ZYNQ从裸跑到自己的小操作系统,到Linux C,Linux Driver在到PYNQ的过程。其中涵盖了许多碎知识,包括AXI 总线、C语言内存管理、linux的移植等等,在此也对其做一个整理。

首先, ZYNQ是一个把FPGA作为ARM外设的结构(注意,ARM是主,FPGA是从,启动的时候也是先启动ARM)。其最大特点是方便了控制以及加速部分计算。众所周知,FPGA用于控制时最常用的就是有限状态机,它很高效但是对于复杂的情况开发维护都相对复杂。而软件也就是ARM重写个c就是分分钟的事情,这也是为何早起有了MicroBlaze。这时候,分工(异构) 的思想就绽放出来了,让FPGA做重复、并行的运算加速并处理一些高速接口,让ARM负责调度FPGA,进行随机性强的运算甚至重配置FPGA。由此,Xilinx把一切IP都AXI化了,其最大优势就是对于ARM总线的兼容性。可以说,不用AXI就无法发挥ZYNQ的优势,也不算真的使用ZYNQ。

当一切IP都AXI化,接入系统总线时,每个IP(设备)也就有了自己的地址,这时候关于C语言内存管理的知识就派上用场了。裸跑ZYNQ时如果你去阅读它的底层代码,你会发现他们都是结构体。那些初始化函数最大的作用就是将这些结构体指针指到具体的内存上去,这些地址都是通过从Vivado中导出的tcl文件获取并自动写入到xparameters.h文件中去的(之后你会发现这和设备树与驱动的概念非常类似)。这种结构体对应设备的方式极大地优化了代码执行效率,并提升了代码可读性。穿插在这之

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值