一个简单的驱动开发例程——GPIO流水灯(vivado工程)

前言

本例程基于Xilinx公司的zynq系列zedboard开发板。(其他芯片类似,只需简单修改)
使用Vivado、XSDK与Petalinux工具。
最终效果是:在串口终端运行自己写的app,实现开发板上的流水灯控制。

【一个简单的驱动开发例程——GPIO流水灯(Petalinux部分)】(本例程分为两部分)
https://blog.csdn.net/u013029731/article/details/85042431

使用Vivado建立工程

一、创建工程

创建工程时,简单起见器件直接选择zedboard开发板(非强制,也可选对应芯片)。

二、Create Block Design

点击Create Block Design,打开Diagram界面。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第1张图片

三、本工程比较简单,只使用了Zynq7 Processing System与AXI GPIO两个IP核

一、Zynq7 Processing System

1、点击+号添加IP,在搜索框内输入zynq,双击添加IP核。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第2张图片
2、由于器件选择了开发板,所以可以直接点击Run Block Automation自动配置。如果选择芯片,可能没有Run Block Automation这一项,可以双击IP核,点击Presets,选择ZedBoard导入配置。如果是其他系列芯片,需要按照相关文档配置,其中串口Uart与GPIO是必须配置的,还有相关时钟。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第3张图片

二、AXI GPIO

1、按照相同方式添加GPIO核。在搜索框输入GPIO
2、双击GPIO IP核,配置如下,对应4个LED灯:
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第4张图片
3、然后右键GPIO IP核右侧的GPIO 端口,选择Make External。这个端口连接的即是4个GPIO灯。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第5张图片
4、接下来点击Run Connection Automation,只有一个可选项,选择默认,OK。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第6张图片
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第7张图片

四、生成硬件描述文件(.hdf)

1、保存Block Design然后Validate(F6),再次保存工程。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第8张图片
2、右键sources界面下的.bd工程(本例程中是design_1.bd),选择Generate Output Products,然后选择Create HDL Wrapper
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第9张图片
3、右键constrs_1,点击Add Sources,添加管脚约束文件,绑定4个LED灯管脚到4个GPIO上。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第10张图片
6、点击Generate Bitstream生成bit流文件。
7、点击File–>Export–>Export Hardware,并勾选Include Bitstream。然后打开vivado工程目录,找到.sdk后缀文件夹打开;里面会找到一个文件,后缀为.hdf,这个文件就是我们需要的硬件描述文件。
8、打开SDK,在system.hdf中找到AXI_GPIO的Base addr(AXI_GPIO的那一行后有S_AXI),记录下来。第二列是Base addr,之后要用。
同时也可以在SDK生成FSBL文件。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第11张图片

附A:使用SDK生成FSBL文件

0、在vivado工程下打开SDK。
1、点击黑色倒三角符号,如图,并点击第一项Applicatiojn Project
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第12张图片
2、输入Project name,然后点击Next,其余项默认。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第13张图片
3、如图,选择最后一项FSBL,直接点击右下角Finish。
一个简单的驱动开发例程——GPIO流水灯(vivado工程)_第14张图片
4、然后打开vivado工程目录,找到.sdk后缀文件夹打开;里面会找到一个文件夹,名称与刚刚新建工程输入的文件名相同,在本例中是fsbl。打开文件夹,再打开Debug文件夹,在里面就能找到fsbl.elf文件,这个就是我们需要的FSBL文件。

你可能感兴趣的:(Linux驱动,Xilinx)