0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样在Linux环境中使用Vivado 2014.1 Webpack

454398 来源:网络整理 作者:网络整理 2019-11-14 11:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:下载基本系统

怎样在Linux环境中使用Vivado 2014.1 Webpack

从网站上下载Zybo基本系统设计并将其解压缩到我们的工作目录中(在本教程中,我们的工作目录称为教程)。有关硬件设计的更多信息,请参阅doc文件夹下的Project Guide。

步骤2:打开基本系统设计

获取Vivado 2014.1设置并使用Vivado Design Suite(vivado)打开设计。您将看到Vivado窗口弹出。

注意:Vivado工具集中有四个可用的设置文件:settings64.sh,可用于具有bash的64位计算机; settings32.sh,可在带有bash的32位计算机上使用; settings32.csh,用于在具有C Shell的32位计算机上使用;和设置64.csh,可在具有C Shell的64位计算机上使用。

步骤3:删除现有的LED内核

我们将首先从PS中的GPIO内核分离LED。因此,我们需要单击IP集成器并打开此步骤中第一张图所示的框图。然后,我们需要删除第二个图像中所示的当前LED IP。我们将在后续步骤中处理外部引脚位置配置(xdc文件)的修改。

注意:在图4中,有一个黄色栏表示需要升级。要升级热门节目的显示IP状态,请确保所有内容均已选中,然后点击“升级所选内容”。

步骤4:命名供应商

在开始实施myLed IP内核之前,我们需要命名将自动应用于IP打包程序中的供应商。在Vivado 2014.1中,不会自动为您完成此操作。为此,请首先转到窗口左侧项目管理器下的项目设置(图1),然后将弹出项目设置窗口。在“项目设置”窗口中,选择IP(图像2)。请注意,将供应商选择为(无),这将导致Vivado内部异常。您可以随意命名供应商(图3)。

步骤5:创建MyLed IP

《现在,我们可以开始实施myLed IP内核了。从菜单中单击工具-》创建和打包IP…(图像1)。将弹出“创建并打包新IP”窗口(图2),单击“下一步”。在下一个窗口中为新IP命名,然后再次单击下一步(图像3)。

步骤6:添加接口

下一个窗口将是“添加接口”窗口。这将为myLed外设创建AX14接口。确保接口类型为Lite,模式为Slave,数据宽度为32位,寄存器数量为4。将名称更改为S_AXI而不是S00_AXI。我们只需要1个寄存器,但是我们可以选择的最小值是4。然后单击下一步。

步骤7:编辑IP

下一个窗口将提示您完成创建IP的后续步骤。更改单选按钮以选择“编辑IP,然后单击完成”。我们需要向IP添加用户逻辑,以便我们的从设备连接到LED输出。

步骤8:

选择完成后,“创建和打包IP”窗口将消失,您将看到的下一个窗口是edit_myLed窗口。这是我们将添加用户逻辑的地方。

步骤9:MyLed_v1_0_S_AXI

在项目中管理员,点击myLed_v1_0旁边的圆圈,然后突出显示myLed_v1_0_S_AXI(图1)。这包含myLed IP内部的用户逻辑。我们需要添加两行代码来完成该模块的用户逻辑。首先,我们需要创建一个名为led的用户端口(图2)。接下来,我们需要将内部从设备连接到该用户端口。我们将连接slv_reg0 [3:0],因为我们有四个LED(图像3)。

步骤10:MyLed_v_0

接下来,我们需要将用户逻辑连接到myLed。在项目管理器中,选择文件myLed_v_0。要完成IP,我们需要在此文件中添加两行代码。在“用户在此处添加端口”的注释下,为LED添加一个端口(图1)。将前一个包含用户逻辑的文件的led输出连接到myLed(图像2)。

步骤11:程序包IP

现在,我们已经创建了IP,并定义了用户逻辑,我们需要打包IP。在窗口左侧的“项目管理器”下,选择“包IP”。将打开一个新的选项卡,称为“程序包IP”。在此水龙头的左侧有一系列标签。我们需要完成没有绿色复选标记的内容。

首先选择IP自定义参数。在该窗口的顶部,选择“从IP自定义参数向导中合并更改”的选项。

步骤12:端口和接口

下一步选择IP端口和接口。请注意,您的新LED IP在那里。

步骤13:IP GUI自定义

下一步选择IP GUI自定义。我们的IP GUI很好,因此我们在这里不会进行任何更改。

现在,我们可以查看和打包myLed IP。选择查看并打包IP,然后按重新打包IP按钮。我们的IP现在已完成并打包。

步骤14:添加MyLed IP

将我们的IP添加到我们的设计中。右键单击模块设计上的任意位置,然后单击添加IP(图1)。选择正确的IP myLed_v1.0,然后按Enter键(图像2)。

步骤15:运行连接自动化

myLed IP Core的AXI4-Lite总线需要连接到处理系统。在窗口顶部,单击显示运行连接自动化的蓝色文本。这将连接myLed IP内核的输入。您应该看到S_AXI现在已连接到AXI互连的第一个输出。

步骤16:创建LED端口

接下来,我们需要将myLed IP连接到外部端口。我们实现的myLed IP内核不会连接到现有的LEDs_4Bits端口,因此我们需要创建一个名为led的新外部端口。单击现有的LED端口,然后按Delete键。要创建新端口,请右键单击并选择创建端口。命名端口,选择输出,选择向量[3:0],然后按Enter。

步骤17:连接LED端口

下一步,通过单击端口并将led连接拖到myLed上,将led端口连接到myLed IP。

步骤18:修改XDC

最后一步是指定myled_0_LED_pin的引脚号,以将我们定制的IP内核物理连接到板载LED。在项目管理器中,展开“约束”部分,然后选择base.xdc文件(图1)。在该文件中,更改外部LED引脚的名称,以使其与我们的外部LED端口的名称匹配(图像2)。

步骤19:生成比特流

通过单击窗口左侧“程序和调试”下的“生成比特流”,为硬件设计重新生成比特流。

步骤20:U-Boot源代码

**注:使用主分支-下一分支直到另行通知

获取Digilent git存储库中U-Boot的源代码。有两种方法可以检索源代码:

使用git命令:

如果您的发行版中安装了git,则可以通过命令git clone https将存储库克隆到计算机上。 ://github.com/Digilent/u-boot-Digilent-Dev.g 。..整个Git存储库约为55MB,如图1所示。如果您想获得一个单独的分支,例如下一个分支图2.下一个包含尚未发布的u-boot。上面引用的克隆URL可以在Digilent git-hub页面上找到,如图3所示。

下载压缩包:

如果只想使用一次u-boot如果不想跟踪更新,也可以从github.com下载压缩包:https://github.com/Digilent/u-boot-digilent。转到显示分支的下拉框,然后选择标签。最新标签是zynq-beta-v2.2。 (图4)。

如果下载了tar.gz,则可以使用命令

tar zxvf u-boot-digilent-2012.04-digilent-13.01.tar.gz解压缩

如果下载了zip文件,则可以使用命令

unzip u-boot-digilent-2012.04-digilent-13.01.zip

步骤21:编译U-Boot

要编译U-Boot,我们需要Vivado 2014.1提供的交叉编译工具。这些工具在GCC工具链的标准名称前有一个前缀arm-xilinx-linux-gnueabi-。前缀引用所使用的平台。 Zybo板有两个臂芯,因此我们参考了臂。为了使用跨平台编译器,请确保已获取Vivado 2014.1设置。如果没有,请参考步骤2。要为Zybo配置和构建U-Boot,请遵循此步骤附带的映像。

步骤22:U-boot.elf

编译后,

生成的ELF(可执行和可链接文件)被称为u-boot。我们需要在文件名中添加.elf扩展名,以便Xilinx SDK可以读取文件布局并生成BOOT.BIN。在本教程中,我们将把u-boot.elf移到sd_image文件夹,并替换Zybo基本系统设计包随附的u-boot.elf。

步骤23:导出SDK的硬件

通过单击文件-》导出-》导出,将硬件设计(步骤I-16之后)导出到Xilinx SDK。 SDK的硬件…,如第一幅图所示。

将工作区保留为。确保已选中Launch SDK,然后单击“确定”,如第二幅图像所示。

注意:您可能必须导出两次。

步骤24:新建项目

SDK启动后,硬件平台项目已经出现在SDK主窗口左侧的Project Explorer中,如图1所示。现在,我们需要创建一个第一阶段引导加载程序(FSBL)。单击File-》 New-》 Project…,如图2所示。

步骤25:应用程序项目

在新建项目窗口,选择Xilinx-》应用程序项目,然后单击下一步。

步骤26:将项目命名为FSBL

我们将项目命名为FSBL。为目标硬件选择hw_platform_0,因为它是我们刚刚导出的硬件项目。为OS平台选择独立。单击下一步。

步骤27:创建Zynq FSBL模板

选择Zynq FSBL作为模板,然后单击完成。

步骤28:FSBL挂钩

对于Zybo,我们需要在fsbl挂钩中设置以太网的mac地址。我们希望关闭和打开Zybo板时以太网的mac地址保持不变。您可以将FSBL项目中的fsbl_hooks.c文件与Zybo基本系统设计中source/vivado/SDK/fsbl下的fsbl_hooks.c交换。

将更改保存到fsbl_hooks.c后,

该项目将自动重建自身。如果不重建,请单击Project-》 Clean清理项目文件,然后单击Project-》 Build All重建所有项目。编译的ELF文件位于zybo_base_system/source/vivado/hw/zybo_bsd.sdk/SDK/SDK_Export/FSBL/Debug

步骤29:创建启动映像

现在,我们已经准备好所有文件来创建BOOT.BIN。单击Xilinx工具-》创建Zynq引导映像。

第30步:添加FSBL,System.bit和U-boot.elf

在“创建Zynq引导映像”窗口中,单击“浏览”以设置FSBL elf的路径。单击添加以添加位于/zybo_base_system/source/vivado/hw/zybo_bsd/zybo_bsd.sdk/SDK/SDK_Export/hw_platform_0/的system.bit文件。单击添加以添加位于zybo_base_system/sd_image/的u-boot.elf文件。 。按顺序添加3个文件非常重要,否则FSBL将无法正常工作。将FSBL.elf设置为引导程序,将system.bit和u-boot.elf设置为数据文件也非常重要。在本教程中,sd_image文件夹被设置为BIN文件的输出文件夹。单击创建映像。

步骤31:Linux内核源代码

**注意:使用母版-Next分支直到另行通知

从Digilent git存储库获取Linux内核源代码。有两种方法可以检索源代码:

使用git命令:如果您的发行版中安装了git,则可以通过命令git clone https://github.com/将存储库克隆到计算机上。 DigilentInc/Linux-Digilent-Dev 。..整个Git存储库约为850MB,如图1所示。

下载压缩包:如果您只想使用一次u-boot,并且不想要跟踪更新,您还可以从github.com下载压缩包:https://github.com/DigilentInc/Linux-Digilent-Dev。单击页面右上角的标签。最新标签是zynq-dt-for-3.14(图2)。

如果下载了tar.gz,则可以使用命令

tar zxvf linux-digilent-v3.6-digilent-13.01.tar.gz

如果下载了zip文件,则可以使用命令将其解压缩

解压缩linux-digilent-v3.6-digilent-13.01.zip

第32步:配置内核

我们将开始使用Zybo的默认配置来配置内核。该配置位于arch/arm/configs/xylinx_zynq_defconfig。要使用默认配置,请遵循此步骤所附的图像。

步骤33:编译Linux内核

按照示例进行操作

步骤34:制作Uimage

编译后,内核映像位于arch/arm/开机/的zImage。但是,在这种情况下,内核映像必须是uimage(解压缩)而不是zimage。要使uimage跟随此步骤中的图像。

步骤35:可选的路径更改

注意:取决于您的分布在Linux上,您可能会得到有关mkimage路径的错误。如果是这种情况,您可以在此步骤中更改图像后的路径。

步骤36:制作Uramdisk

到在Zybo上启动Linux操作系统,您需要BOOT.BIN,Linux内核映像(uImage),设备树blob(DTB文件)和文件系统。在第三节中创建了BOOT.BIN,在第四节中编译了uImage。现在,我们将编译DTB文件。默认设备树源文件位于Linux内核源文件中的arch/arm/boot/dts/zynq-zybo.dts。

RAMDISK:对于zynq,只有虚拟磁盘映像必须包装在u中-boot标头,以便u-boot用它引导。该步骤显示在该图像中。

步骤37:生成DTB文件

按照图像中提供的示例进行操作

步骤38:将文件映像复制到SD卡

RAMDISK)复制BOOT.BIN,将devicetree.dtb,uImage和uramdisk.image.gz移至SD卡的第一个分区,如第一个映像– RamDisk中所示。

注意:SD卡的第一个分区已安装到/media/ZYBO_BOOT

步骤39:从SD卡启动

将SD卡插入Zybo。要从SD卡引导,需要按照Zybo板上所示为USB配置跳线7,并且必须将跳线5连接到SD。使用微型USB电缆将UART端口连接到PC,并将PC上的UART端子设置为115200波特率,8个数据位,1个停止位,无奇偶校验和无流量控制。板上电后,如果使用RamDisk,则应该在UART终端上看到控制台。有关此文件系统的更多信息,请参见《嵌入式Linux ZedBoard入门》。

步骤40:创建驱动程序目录

在Tutorial文件夹中创建一个名为drivers的目录,如本步骤中的图像所示。在drivers目录中,我们将构成myLed控制器的驱动程序。

步骤41:创建Makefile

我们需要一个Makefile,以便我们可以编译驱动程序。 Makefile在图像1中创建。

创建文件后,单击I更改为插入模式,然后在图像2中插入以下文本。请确保在适当的地方使用制表符。

步骤42:创建Myled.c

我们将从一个简单的驱动程序开始,该驱动程序在Linux/proc文件系统下创建一个名为myled的文件。可以通过在文件中写入数字来更改板载LED的状态。驱动程序被编码在最后四个图像中,并被附加

步骤43:编译驱动程序

编译并生成驱动程序模块使用make。不要忘记来源Vivado设置。

步骤44:将Myled添加到设备树

我们需要将myLed设备节点添加到设备树中。

在drivers文件夹中复制默认设备树源,然后根据第二个图像对其进行修改。节点的兼容性字符串与我们在驱动程序源代码中定义的字符串相同(myled.c:第182行)。 reg属性定义节点的物理地址和大小。如上图所示,此处的地址应与Vivado设计的地址编辑器选项卡中的myLed IP内核的地址匹配。

步骤45:重新编译设备树Blob

重新编译设备树blob,如所附映像所示。

步骤46:将驱动程序和修改后的设备树复制到SD卡

将这两个文件复制到SD的第一个分区卡,如该步骤中的图像所示。我们现在就可以在板上测试驱动程序了。

步骤47:从SD卡启动

插入SD卡进入Zybo,我们就可以开始测试驱动程序了。使用insmod命令将驱动程序模块安装到内核中。安装驱动程序后,将在/proc文件系统下创建一个名为myled的条目。将0x0F写入/proc/myled将点亮LED 0〜3。您可以使用rmmod命令删除驱动程序,也可以通过poweroff命令关闭系统电源。在这两种情况下,所有LED都将关闭,如图69和70所示。有关将终端与Zybo一起使用的说明。请参阅嵌入式Linux入门– ZedBoard中的步骤V-4或从SD引导部分。

步骤48:用户应用程序:Led_blink

在本节中,我们将编写一个用户应用程序,该应用程序通过写入/proc/myled来使LED闪烁

。如第一个图像所示,在Tutorial文件夹中创建一个名为user_app的目录。在user_app目录中,我们将组成led_blink.c,如第二和第三张图所示。

步骤49:创建Makefile并编译Led_blink

组成一个Makefile并将led_blink.c编译为led_blink.o,如本步骤中的三个图像所示。

步骤50:

将SD卡插入计算机,然后将二进制文件led_blink复制到SD卡的第一个分区。

步骤51:运行Led_blink

将SD卡插入ZYBO。使用insmod命令将驱动程序模块安装到内核中。运行led_blink,LED会开始闪烁。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219553
  • 软件
    +关注

    关注

    69

    文章

    5360

    浏览量

    91887
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    i.mx93 Linux 环境下的 H.264 软件解码和编码能力怎么样?

    我知道 i.MX93 没有硬件编码器或解码器。 我想知道 i.mx93 Linux 环境下的 H.264 软件解码和编码能力。 我的目标是 720P60。 有可能吗?
    发表于 04-23 09:30

    linux-arm开发环境的简单配置

    linux-arm开发环境简单配置 关于linux-arm开发环境简单配置是ARM学习的第一步,很多初学者会在这问题上纠结很久都不能配置好开发环境
    发表于 01-13 07:56

    移植蜂鸟需要在Linux环境下吗?

    《手把手教你设计CPU》书上运行Verilog仿真测试那章说为了重现仿真环境,最好在Linux环境下。不知道移植蜂鸟是否需要在Linux环境
    发表于 11-10 07:42

    Windows和Linux环境下分别使用Olimex和蜂鸟调试器下载程序

    的教程使用Olimex ARM-USB-TINY-H调试器Linux环境中下载程序,用vscode+命令行开发,因此这里第二版蜂鸟中使
    发表于 10-31 08:26

    Windows10上运行vivado使用tcl文件创建E203项目路径错误的问题

    软件版本是vivado2020.1,开发板是MCU200T。由于习惯使用了Windows系统所以想在Windows上创建vivado项目进行开发。但是由于Makefile更适合Linux系统,所以
    发表于 10-28 07:19

    win10环境下使用vivado生成.bit与.mcs文件

    hbirdv2参考文档中使用make指令生成system.bit和system.mcs文件,但是虚拟机本身会消耗计算资源,导致运行速度变慢,对于不习惯linux下编辑代码的人,还需
    发表于 10-27 08:25

    如何在vivadoHLS中使用.TLite模型

    本帖欲分享如何在vivadoHLS中使用.TLite模型。Vivado HLS中导入模型后,需要设置其输入和输出接口以与您的设计进行适配。 1.
    发表于 10-22 06:29

    linux中使用env时如何下载软件包?

    windows的env中可以直接使用pkgs —update去下载软件包,Linux环境下这个指令好像不生效,那么Linux环境下的软件
    发表于 10-11 09:23

    聊聊 Webpack 那些安全事儿:打包风险与防护小技巧

    场景,拆解 Webpack 开发与运行中的安全隐患,以及攻防双方的应对策略。     一 Webpack 打包的潜在安全风险   1. 敏感信息泄露:被 "打包" 的秘密 Webpack
    的头像 发表于 09-02 10:22 895次阅读
    聊聊 <b class='flag-5'>Webpack</b> 那些安全事儿:打包风险与防护小技巧

    vivado仿真时GSR信号的影响

    利用vivado进行设计xilinx FPGA时,写完设计代码和仿真代码后,点击run simulation(启动modelsim进行仿真)。
    的头像 发表于 08-30 14:22 1571次阅读
    <b class='flag-5'>vivado</b>仿真时GSR信号的影响

    Vivado无法选中开发板的常见原因及解决方法

    使用 AMD Vivado Design Suite 对开发板(Evaluation Board)进行 FPGA 开发时,我们通常希望创建工程时直接选择开发板,这样 Vivado
    的头像 发表于 07-15 10:19 1951次阅读
    <b class='flag-5'>Vivado</b>无法选中开发板的常见原因及解决方法

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 995次阅读
    <b class='flag-5'>Linux</b>系统<b class='flag-5'>环境</b>监测终极指南

    linux环境下 软件启动失败怎么解决?

    anyway. /usr/lib/x86_64-linux-gnu/libproxy/libpxbackend-1.0.so: undefined symbol
    发表于 06-23 07:37

    FX3为什么无法Windows中使用Gstreamer?

    我正在开发 FX3,我可以 Linux 和 Windows 中使用 y8 格式的 ffmpeg 流式传输相机, Linux
    发表于 05-29 06:59

    不借助Linux系统,Windows下如何搭建ZMC900E交叉编译环境

    不需要依赖笨重的虚拟机,也不需要安装双系统。抛开繁琐的环境准备,Windows上轻松搭建交叉编译环境。本文将介绍如何在Windows上搭建交叉编译环境,不借助
    的头像 发表于 05-21 11:34 1080次阅读
    不借助<b class='flag-5'>Linux</b>系统,<b class='flag-5'>在</b>Windows下如何搭建ZMC900E交叉编译<b class='flag-5'>环境</b>