前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AD936x+ZYNQ搭建收音机(三)-终篇

AD936x+ZYNQ搭建收音机(三)-终篇

作者头像
碎碎思
发布2021-06-09 14:47:48
1.3K0
发布2021-06-09 14:47:48
举报
文章被收录于专栏:OpenFPGAOpenFPGA

非官方板卡应用

非官方板卡也需要在官方提供的历程上进行修改,这样节省时间,而且AD936X的IP也需要参考官方的IP。

下载并编译Xilinx u-boot源码

选用的U-boot的网站为

代码语言:javascript
复制
https://github.com/Xilinx/u-boot-xlnx

直接命令

代码语言:javascript
复制
git clone https://github.com/Xilinx/u-boot-xlnx

这里有个点需要注意一下,xilinx官方的源码分为好多版本:

上图界面点击Tags:

可以看到很多版本,本人没有选择最新的版本,因为最新的版本编译有问题,官方也没有给出解决办法(主要我太菜),选择了V2018.3,利用

代码语言:javascript
复制
git clone https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3

下载源码

安装交叉编译环境

‍‍‍‍‍‍‍‍ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

进入

代码语言:javascript
复制
https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabi/

网站:

根据自己系统选择相应版本,本人下载的图示箭头版本,解压、给权限,记住文件夹路径,将交叉编译环境添加到系统内(根据需求,本人还有其他其他环境就没“写死”)。

一、

代码语言:javascript
复制
cd u-boot-xlnx-xilinx-v2018.3

二、指定交叉编译环境

代码语言:javascript
复制
export ARCH=arm
export CROSS_COMPILE=/tools/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-

三、指定编译配置

代码语言:javascript
复制
make zynq_zed_config

注意:这里会有几个错误:

1、缺少XXXX

根据提示,缺少什么安装什么即可

2、Your GCC is older than 6.0 and is not supported

这个是GCC版本问题,vim arch/arm/config.mk

将64,65,68-73行注释掉,如图所示

四、make

图示位置完成编译

五、修改名称

ls

文件夹下生成了u-boot.bin和u-boot,我们需要的是u-boot(不带后缀)。

六、修改名称

代码语言:javascript
复制
mv u-boot u-boot.elf

这样就完成了官方源码的编译,下面会用到。

1、下载官方源码

首先需要去官方

‍‍

代码语言:javascript
复制
https://github.com/analogdevicesinc/hdl

下载对应的开发包,使用git即可下载。

这里说明一下,这个仓库里有很多分支:

放了这么多分支主要原因就是我们使用的FPGA EDA软件版本和工程紧密相关,尤其Vivado,所以官方针对不同的Vivado和Quartus II做了很多版本,具体对应关系如下,一定要针对自己使用的版本下载对应的分支,否则会有很多意想不到的问题。

分支版本和Vivado版本对比(参考:https://github.com/analogdevicesinc/hdl/releases)

源码版本

Vivado/Quartus II版本

hdl_2019_r2

Xilinx Vivado 2019.1Quartus Prime Pro Edition 19.3Quartus Prime Standard Edition 18.1

hdl_2019_r1

Vivado 2018.3Quartus Prime Standard Edition 18.1

hdl_2018_r2

Vivado 2018.2*Quartus Prime Standard Edition 18.0

hdl_2018_r1

Vivado 2017.4.1Quartus 17.1.1

hdl_2017_r1

Vivado 2016.4*Quartus 16.1

hdl_2016_r2

Vivado 2016.2Quartus 16.0

hdl_2016_r1

Vivado 2015.4.2Quartus 15.1

hdl_2015_r2

Vivado 2015.2.1Quartus 15.1

hdl_2015_r1

Vivado 2014.4.1Quartus 15.0

hdl_2014_r2

Vivado 2014.2Quartus 14.0

hdl_2014_r1

Vivado 2013.4Quartus 14.0

利用git下载相应的源码即可开启下面的步骤了。

2、搭建Linux开发环境

官方的开发环境都是基于Liunx搭建的,Makefile自动化运行。选用WSL+Vivado其实是很好的选择,本人也是基于这个组合。

这里先介绍怎么搭建WSL+Vivado的组合,后续会针对Windows用户Vivado下怎么使用。

WSL+Vivado环境搭建

一、参考《1202年了,还在使用虚拟机吗?Win10安装Ubuntu子系统及图形化界面详细教程》搭建WSL可视化界面(不可视化也可);

二、解压《Xilinx_SDx_2018.3_1207_2324.tar》,解压后进入解压后的文件夹内;

三、输入 sudo ./xsetup;

四、等待一段时间,就会出现图形安装界面,接下来就完全和Windows安装完全一样,就不在赘述;

五、安装完成后,将vivado/2018.3 目录下面的settings64.sh里的代码复制粘贴道bashrc的文件里面

sudo gedit ~/.bashrc

六、粘贴到bashrc文件最后,然后输入下面命令让bashrc文件重置更新下

source ~/.bashrc

七、然后在终端中执行vivado即可进入。

这样就安装完毕了

3、生成bit文件

基于2.1节,打开命令行(Terminal),输入以下命令,下载源码:

//一定要根据使用的vivado版本选择好分支

代码语言:javascript
复制
mkdir sdr
cd sdr
git clone https://github.com/analogdevicesinc/hdl.git

下载源码后

代码语言:javascript
复制
cd hdl
代码语言:javascript
复制
cd projects/adrv9364z7020   //这里根据和官方类似板卡的类型
sudo make

接下来就是漫长的等待,上面make命令会生成vivado工程并生成bin文件。

注意:如果是自己自研的板卡,是不需要等待编译结束的,只需要根据时间等工程创建完即可。

4、生成u-boot

用Vivado打开《ccbob_lvds》下的文件夹下的工程,如下:

整个工程稍复杂一点,主要包括ZYNQ和AD936X两个IP,其他都是相关的互连总线。在此相关的工程下可以根据自己的需求修改工程,这里就不演示了,接下来将生成.bit、hdf等文件,导入到SDK。

一、GenerateBit

二、导入到SDK

三、项目导出后,在 SDK 中创建一个新的 FSBL 项目。为此,请右键单击左侧“项目资源管理器”面板中新导出的硬件平台规范,然后从弹出菜单中选择“新建 > 项目”。在第一个对话框页面上选择“Xilinx - Application Project”。在第二个对话框页面上为项目选择一个名称(例如 zynq_fsbl),在第三个页面上选择“Zynq FSBL”模板。

该项目应该自动构建。如果没有,可以通过右键单击左侧“项目资源管理器”面板中新创建的项目并从弹出菜单中选择“构建项目”来启动手动构建。项目构建完成后,就可以生成启动映像了。这是通过右键单击左侧“项目资源管理器”窗格中的项目并选择“创建引导映像”来完成的。这将打开 bootgen 向导。bootgen 向导需要三个文件:

随便选一个输出路径,然后在底下将三个文件填加进去,注意顺序不能错。分别是fsbl.elf(bootloader) .bit(datafile) u-boot.elf(datafile)。

将这些文件添加到对话框中的分区列表,然后选择一个输出文件夹。

点击Create Image就能生成Boot.bin

5、利用官方脚本生成u-boot

官方提供了一个脚本可以自动构建BOOT.bin,详细的地址:

代码语言:javascript
复制
https://raw.githubusercontent.com/analogdevicesinc/wiki-scripts/master/zynq_boot_bin/build_boot_bin.sh

使用wget即可下载

代码语言:javascript
复制
chmod +x build_boot_bin.sh
usage: build_boot_bin.sh system_top.hdf u-boot.elf [output-archive]

l路径system_top.hdf和u-boot.elf是必需参数。

lname可以将可选的第三个参数提供给 tar.gz 输出目录。( name.tar.gz)

l构建输出位于名为:output_boot_bin 的本地目录中。

l此脚本需要赛灵思 XSDK 和 PATH 中的 bootgen(SDK的路径在环境中)。

编译完成如下图所示:

在路径下就能找到BOOT.bin

这样第一个文件就准备好了,接下来创建设备树和内核。

6、创建内核uImage

首先还是需要下载源文件,地址:

代码语言:javascript
复制
https://github.com/analogdevicesinc/linux

还是根据自己使用的Vivado版本选择相应的分支。

cd linux-2019_R1

检查环境变量CROSS_COMPILE,若没有则添加上,同u-boot添加方法

代码语言:javascript
复制
make zynq_xcomm_adv7511_defconfig
代码语言:javascript
复制
make -j5 UIMAGE_LOADADDR=0x8000 uImage

下面路径下就生成了uImage

完成内核的编译

7、创建设备树

继续上面的步骤

代码语言:javascript
复制
make zynq-zed-adv7511-xcomm.dtb

下面路径下就有了设备树

8、创建文件系统

文件系统对平台的依赖性不大,所以沿用官方的img内的文件系统。

将u-boot、设备树和uImage拷贝到SD卡的BOOT目录下,就完成了系统的搭建。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档