ZYNQ-AX7020学习笔记

news/2025/2/1 7:58:15/

 

 

一.基础概念

AX7020 包含两大部分ps(集成两个ARM cortex-a9处理器),和pL(FPGA)

PS:主频 1GHZ,256KB片内RAM,8Gbit SDRAM(以太网, 串口, usb, spi flash,SD,IO,LED,KEY)

PL:可编程逻辑块,可编程IO块等(eeprom RTC HDMI LED KEY ADC)

互联:

PS内和PS到PL高宽带连接

基于ARM AMBA AXI总线

传输质量控制和带宽控制

 

上图很明确的标出了硬件接口,不同的部分需要通过不同开发手段开发。

 

1.环境搭建

(1)Xilinux FPGA开发环境 Vivado

(2)linux环境搭建 (工具链和linux版本需要注意)

 

FPGA编程

verilog行为描述语言是什么??(fpga开发专用语言??)

 

芯片上电后,先运行的是ARM系统,然后通过ARM系统软件部分加载FPGA的比特流文件.bit至FPGA,启动FPGA逻辑功能。

vivado可用于FPGA逻辑编写和ARM裸机的编写(集成SDK)

 

二.开始学习

 

在之前接触的芯片中,要不只需要linux开发的ARM,或者是FPGA芯片。像这种集成两部分的芯片还是第一次遇到,所以在学习的过程中,一会linux编程,一会fpga编程,他们之前怎么配合

也是整的迷迷糊糊。

 

其实这个芯片和我们平时的应用也是很相似的,3500方案既包括arm linux部分也包括单片机部分,他们自己通过不同的软件和方法编写自己的,然后通过通讯接口进行数据交互,这个芯片

道理也是一样的,在这款芯片的学习中,设计到许多之前没接触过的名词和工具,接下来快速引入。

 

开发工具

说明

Xilinx Vivado

Vivado设计套件实现FPGA部分的设计和开发,管脚和时序的约束,编译和仿真,实现RTL到比特流的设计流程

Xilinx SDK(Software Development Kit)

SDK是Xilinx软件开发套件(SDK),在Vivado硬件系统的基础上,系统会自动配置一些重要参数,其中包括工具和库路径、编译器选顷、JTAG和闪存设置,调试器连接已经裸机板支持包(BSP)

交叉编译工具(linux虚拟机 工具链)

要在x86的体系的主机上编译出可以在ARM体系结构中运行的可执行文件,必项要用交叉编译工具链来完成

 

1.ZYNQ芯片开发流程

 

 

 

PS和PL连接,加入IP核后,系统自动使用AXI接口将我们的IP核与处理器连接起来。

AXI接口

一种接口协议,主要描述主设备和从设备之间的数据传输方式

 

 

 

 

 

 

位于PS端的ARM直接有硬件支持AXI接口,而PL则需要使用逻辑实现相应的AXI协议。Xlinx在Vivado开发环境里提供现成的IP

如 AXI-DMA AXI_GPIO 等,使用的时候直接从IP列表中添加即可。

 

上电有要求?为什么,怎么做到上电顺序。。。

 

开启一个电源然后用这个当做使能脚,来使能下一路电源。上电顺序有要求应该和板卡部分器件特性有关。

AX7020 开发板支持三种启动模式

1.JTAG 调试模式

2.QSPI flash

3.sd 卡启动模式

 

PS时钟源:33.333MHZ(有源)

PL时钟源:50MHZ(有源)

 

举例应该是最快理解流程的最好方式:

 

PS端控制 PL端的灯

 

添加AXI GPIO的IP 用于与PS通讯

PL部分需要加约束文件来告诉连在哪个管脚上

生成FPGA的比特流文件,导出SDK

在SDK里面建立工程

 

在我们的stm32芯片中,一个管脚也支持很多个功能,普通IO功能或者spi等其他功能,通过配置然后调用不同的

文件来实现功能,这里的形式应该是一样的通过调用不同的API函数来调用文件,IP核 sdK等相当于自己配置硬件环境然后

生成出一个SDK,通过API来调用内容。加上linux和加上一个rtos系统调用方式应该是一样的。VIVado生成SDK的过程就相当于

硬件配置的过程并没有什么神秘的。

 

是否可以理解为PL部分为硬件桥接转化功能(软件IP核编程+约束配置),达到PS控制pL端外设的目的。

 

 

开发板启动流程

一.第一阶段

1.上电后首先执行片内boot ROM 代码,boot ROM读取boot mode寄存器来决定是哪种启动方式

2.确定好启动方式后,BOOT ROM从相应的启动设备中加载First Bootloader(FSBL)到RAM,并且将

执行权交给FSBL。

二.第二阶段

FSBL开始执行

1.初始化CPU,初始化串口

2.PS一些控制器的初始化(PLL DDR CLK等)

3.禁止L1 DATA Cache

4.注册ARM中断向量

5.通过Boot mode寄存器,判断是哪种启动方式

 

linux下通过工具链编译生成 u-boot(elf)文件

BOOT.bin文件包括:第一级启动代码FSBL(SDK生成),硬件比特流文件(vivado生成)和u-boot(elf)

 

 

IP核类似于封装好的函数,有各种各样的IP核可进行调用。

 

历程中都是裸机程序操作IP核,那内核驱动程序和裸机程序意思是相同的,u-boot阶段其实已经将硬件已经映射好了,

现在做的就是在内核部分添加驱动,驱动可以通过AXI操作相应的外设模块。

 

在裸机中可以看到操作IP核的函数,而内核中没看到操作IP核的函数啊?怎么访问到的,是不是都是通用的总线协议,通过ID号进行操作的?

platform_driver_register 注册函数中看到了platfrom

platfrom是一种虚拟的地址总线。

 


http://www.ppmy.cn/news/154784.html

相关文章

ZYNQ7020双核AMP(linux+裸机)方案

ZYNQ7020双核AMP(linux裸机)方案 1.前言2.开发环境3.程序设计目标4.裸机双核AMP4.1 ZYNQ启动流程4.2 FSBL程序说明4.3 裸机双核AMP程序4.3.1 CPU0程序4.3.2 CPU1程序4.3.3 CPU1程序 5.linux裸机双核AMP5.1 Linux单核运行5.2 FSBL修改5.3 linux裸机双核AM…

集创赛备赛:Robei八角板7020简介

今年集创赛准备参加Robei杯,和队友凑钱买了Robei的zynq7020八角板(好小一块就近2000,学生党落泪~)看了官网的资料,感觉不是很详细,于是准备查阅资料自己列一张,方便比赛的时候查阅。磨刀不误砍柴…

【Python wxPython】零基础也能轻松掌握的学习路线与参考资料

wxPython是一个基于wxWidgets C类库的Python GUI框架,使用它可以轻松创建跨平台的可视化应用程序。此外,wxPython与Python语言天然融合,让Python程序员可以轻松使用Python编写图形界面程序。因此,学习wxPython实际上就是学习如何用…

【C++】初识STL

目录 🌞专栏导读 🌛什么是STL 🌛STL的版本 🌛STL的六大组件 🌛STL的重要性 🌛STL的缺陷 🌞专栏导读 🌟作者简介:日出等日落,在读本科生一枚&#xff0…

解析海康摄像机推送的PS流

https://blog.csdn.net/caixing_java/article/details/79154819

用ps制作鲸鱼

用ps制作鲸鱼首先先用椭圆工具先将大致的模型勾画出来这些圆圈将鲸鱼大致分为4大部分尾巴、鱼鳍、躯干部以及躯干部以下的地方。 如下图 上图就是这张鲸鱼的大致分布有眼睛有尾巴还有鱼鳍等与真正的鲸鱼相比起来的差距不是很大这张图是大部分是用椭圆工具制作而成的只有最长的那…

PS制作笔记本

作者:陈石军,撰写时间:2019年4月4日) 笔记本的绘制步骤 如图一. 先用圆角矩形工具拉一个圆角矩形出来,用吸管工具在拾色器里选取颜色为[40444d],如第一张图片。用同样的方法的拉一个圆角矩形用吸管工具在拾色器里选…

PS制作相机

PS制作相机 (作者:陈石军,撰写时间:2019年2月17日) 相机的绘制步骤 如图一. 先用快捷键[ctrln]新建一个文件夹,然后,选择矩形工具拉个矩形出来,用吸管工具在拾色器里选取颜色为[80848e]当做背…