技术标签: github cygwin jni ndk 信号处理
非官方板卡应用
非官方板卡也需要在官方提供的历程上进行修改,这样节省时间,而且AD936X的IP也需要参考官方的IP。
下载并编译Xilinx u-boot源码
选用的U-boot的网站为
https://github.com/Xilinx/u-boot-xlnx
直接命令
git clone https://github.com/Xilinx/u-boot-xlnx
这里有个点需要注意一下,xilinx官方的源码分为好多版本:
上图界面点击Tags:
可以看到很多版本,本人没有选择最新的版本,因为最新的版本编译有问题,官方也没有给出解决办法(主要我太菜),选择了V2018.3,利用
git clone https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3
下载源码
安装交叉编译环境
进入
https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabi/
网站:
根据自己系统选择相应版本,本人下载的图示箭头版本,解压、给权限,记住文件夹路径,将交叉编译环境添加到系统内(根据需求,本人还有其他其他环境就没“写死”)。
一、
cd u-boot-xlnx-xilinx-v2018.3
二、指定交叉编译环境
export ARCH=arm
export CROSS_COMPILE=/tools/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-
三、指定编译配置
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(不带后缀)。
六、修改名称
mv u-boot u-boot.elf
这样就完成了官方源码的编译,下面会用到。
1、下载官方源码
首先需要去官方
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.1 Quartus Prime Pro Edition 19.3 Quartus Prime Standard Edition 18.1 |
hdl_2019_r1 |
Vivado 2018.3 Quartus Prime Standard Edition 18.1 |
hdl_2018_r2 |
Vivado 2018.2* Quartus Prime Standard Edition 18.0 |
hdl_2018_r1 |
Vivado 2017.4.1 Quartus 17.1.1 |
hdl_2017_r1 |
Vivado 2016.4* Quartus 16.1 |
hdl_2016_r2 |
Vivado 2016.2 Quartus 16.0 |
hdl_2016_r1 |
Vivado 2015.4.2 Quartus 15.1 |
hdl_2015_r2 |
Vivado 2015.2.1 Quartus 15.1 |
hdl_2015_r1 |
Vivado 2014.4.1 Quartus 15.0 |
hdl_2014_r2 |
Vivado 2014.2 Quartus 14.0 |
hdl_2014_r1 |
Vivado 2013.4 Quartus 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版本选择好分支
mkdir sdr
cd sdr
git clone https://github.com/analogdevicesinc/hdl.git
下载源码后
cd hdl
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,详细的地址:
https://raw.githubusercontent.com/analogdevicesinc/wiki-scripts/master/zynq_boot_bin/build_boot_bin.sh
使用wget即可下载
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
首先还是需要下载源文件,地址:
https://github.com/analogdevicesinc/linux
还是根据自己使用的Vivado版本选择相应的分支。
cd linux-2019_R1
检查环境变量CROSS_COMPILE,若没有则添加上,同u-boot添加方法
make zynq_xcomm_adv7511_defconfig
make -j5 UIMAGE_LOADADDR=0x8000 uImage
下面路径下就生成了uImage
完成内核的编译
7、创建设备树
继续上面的步骤
make zynq-zed-adv7511-xcomm.dtb
下面路径下就有了设备树
8、创建文件系统
文件系统对平台的依赖性不大,所以沿用官方的img内的文件系统。
将u-boot、设备树和uImage拷贝到SD卡的BOOT目录下,就完成了系统的搭建。
- END -
NOW现在行动!
推荐阅读
【Vivado那些事】如何查找官网例程及如何使用官网例程【Vivado使用误区与进阶】总结篇【Vivado那些事】Vivado下头文件使用注意事项【Vivado那些事】Vivado中常用的快捷键(一)F4键【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键
SystemVerilog数字系统设计_夏宇闻 PDFVerilog 里面,always,assign和always@(*)区别
FPGA上如何求32个输入的最大值和次大值:分治图书推荐|ARM Cortex-M0 全可编程SoC原理及实现
简谈:如何学习FPGARISC-V再进阶!世界首款5纳米RISC-V SOC成功流片!
几款开源SDR平台
Xilinx 推出 Kria 自适应系统模块产品组合,在边缘加速创新和 AI应用
RISC-V指令集架构介绍及国内外厂商介绍
Vitis尝鲜(一)
SDR/无线设计中LNA和PA的基本原理
拆解1968年的美国军用电脑,真的怀疑是“穿越”啊!
一文最全科普FPGA技术知识
首个中文CPU指令规范 龙芯推出LoongArch基础架构手册
你见过1-bit CPU吗?高级FPGA设计技巧!多时钟域和异步信号处理解决方案
【Vivado那些事】Vivado中电路结构的网表描述
ZYNQ中裸机开发和Linux开发有什么区别?
现代计算机的雏形-微型计算机MCS-4
世界上第一个微处理器真的是Intel 4004吗?其实这是个很复杂的故事…
【每周一问】如何控制加载FPGA程序时,Xilinx FPGA的IO管脚输出高低电平
【Vivado那些事】vivado生成.bit文件时报错-ERROR: [Drc 23-20]
AD9361 和Zynq及其参考设计说明1202年了,还在使用虚拟机吗?Win10安装Ubuntu子系统及图形化界面详细教程谈谈Xilinx FPGA设计的实现过程
Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目
AD936x+ZYNQ搭建收音机(一)
AD936x+ZYNQ搭建收音机(二)含视频演示
点击上方字体即可跳转阅读
indent:调整C原始代码文件的格式常用的设置:indent -npro -kr -i8 -ts8 -sob -l80 -ss -bl -bli 0参数说明:-npro或–ignore-profile 不要读取indent的配置文件.indent.pro。-kr 指定使用Kernighan&Ritchi..._grep代码优化工具
首先是几个基本概念:1.屏幕尺寸Screen size即显示屏幕的实际大小,按照屏幕的对角线进行测量。为简单起见,Android把所有的屏幕大小分为四种尺寸:小,普通,大,超大(分别对应:small, normal, large, and extra large).应用程序可以为_nodpi apk
前言上一篇博客,我们说到如何在用户请求的时候,拦截用户请求进行操作,这一篇博客我们来聊一下如何使用Shiro标签在网页之中进行用户角色和权限控制.那么,我们就看一下具体的场景,假设页面当中有一个新增用户按钮,我们需要当拥有admin角色的用户登录认证完成之后显示,普通用户不显示,那么这时候我们就需要使用Shiro标签来做处理了.例如这个例子,我们就可以用一下代码来实现.如果含有admin就会显示,反之,则不会显示.<shiro:hashRole name = "admin"> .._authentication_taken_blank
封面简介本书是一本针对所有层次的Python读者而作的Python入门书。全书分两部分:首部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy和Pygal等强大的Python库和工具介绍,以及列表、字典、if语句、类、文件与异常、代码测试等内容;第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D游戏开发,如何利用数据生成交互式的信息图,以及..._python编程:从入门到实践.pdf 图灵出品
Kali Linux 2020.1版本现已发布,该版本进行了大量改进,简要功能摘要内容如下:Kali Single 安装程序镜像主题和 kali-undercover 的改进新工具Non-Root在 Kali(及其前身 BackTrack,WHAX和 Whoppix)的整个历史中,其默认凭据都为root/toor。现在,Kali 2020.1 将默认用户为非 root 用户,通过使用标准的非..._p2020处理器编译选项
http://blog.csdn.net/cybertan/article/details/4697218第一:不要认为停留在心灵的舒适区域内是可以原谅的。 每个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照规定的时限做事,不愿意主动的去关心别人,不愿意去思考别人还有什么没有想到。这在学生时代
前言本人今年25岁,毕业之后进入一家小型的互联网公司工作,在这原公司呆了3年,直至今年才有了跳槽的想法。每个程序员 都拥有大厂梦,我也不例外,在小公司待久了,感觉人会荒废掉,太轻松,没有压迫感。因为有一位前辈的华为内推,所以我直接去了华为面试。以下分享这次面试华为的面试题,由于文章篇幅原因,只是把面试题列了出来,详细的答案我整理成了一份PDF文档,文末有详细的免费领取方式,有需要的朋友可以到文末查看领取方式。面试中面试官的问题,也很可以直观的让你了解到对方公司的技术水平和业务需求,而换工作对我更多考_企业级安卓培训认证
最近笔记本电脑装了双系统,win8+ubuntu,在ubuntu下就必然要涉及到 开热点,将就的我不想一直蹭别人的wifi下面说一下建立热点的过程,不是一帆风顺的。。首先将我连接成功的做法:1.在自带的软件商店下载kde nm connection,然后点击安装2.安装完成后,在终端进入存放目录 cd /var/cache/apt/archives 友情提醒一下,这是软件商店下
上篇文章 PHP - Laravel 路由使用(详细) 。一、简介在之前路由中配置路由参数,但它并不适合带大量的请求数据。Route::get('req/{参数名称}', function ($参数名称) { return 'Get 请求';});通常会在请求链接尾部带上参数,例如:http://www.dzm.com:8088/req?id=10&name=dzm,? 后面附带的参数。Laravel 提供了多种获取数据的方式。二、方式一:Input._laravel获取请求中的参数
代码如下:<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>中国地图</title> <script src="js/echarts.js" type="text/javascript"></script>..._世界地图html代码
定义从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。作用:提供线程内局部变量,不同线程之间互不干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。换一句话就是为每一个使用该变量的线程都提供一个变量值的副本,使每._多线程中的函数局部变量和thread_local变量
今天看到之前自己写的ARM_Linux下光盘刻录方案,有些朋友留言说编译有问题,我把自己一年前做的记录共享一下,以方便更多的朋友参考,欢迎交流。转载请注明。1. 下载并解压cdrtools-2.01;2. 进入cdrtools-2.01, make --> make install;3. 在incs目录下将生成了i686-linux-cc目录,拷贝一个备份 i686-l