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
    +关注

    关注

    87

    文章

    11004

    浏览量

    206878
  • 软件
    +关注

    关注

    68

    文章

    4363

    浏览量

    85883
收藏 人收藏

    评论

    相关推荐

    FX3无法Windows中使用Gstreamer怎么解决?

    我正在开发 FX3,我可以 Linux 和 Windows 中使用 y8 格式的 ffmpeg 流式传输相机, Linux
    发表于 02-23 07:38

    Linux环境下能使用PSoC Creator 4.3吗?

    最近碰到一个Linux系统下编译的要求,PSoC Creator能够Linux环境下使用吗?
    发表于 02-18 07:22

    KEIL中使用C对M0编程时怎样对函数指定地址呢?

    KEIL中使用C对M0编程时怎样对函数指定地址呢?对变量和常数的定位没问题,就是函数总搞不好。谢谢。
    发表于 01-18 07:14

    Linux环境变量配置方法

    想必大家平时工作中也会配置Linux环境变量,但是可能也仅仅是为解决某些工具的运行环境,对于Linux环境变量本身的配置学问还没深入了解。
    的头像 发表于 01-04 09:51 276次阅读

    如何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令。
    的头像 发表于 12-04 14:45 595次阅读
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>中使</b>用htop命令

    使用JTAG仿真器在vivado环境下抓信号时报错咋办?

    在使用JTAG仿真器在vivado环境下抓信号时,报如下错误:
    的头像 发表于 11-14 10:37 1519次阅读

    linux开发环境搭建

    ESP32教程-linux开发环境搭建
    发表于 10-09 06:53

    SE5如何在Python中使用SAIL?

    SE5已经预装在/system/lib下,只需要设置好环境变量,然后就可以python中使用SAIL了: # SE5设置环境变量export PATH=$PATH:/system
    发表于 09-18 06:22

    为什么说Vivado是基于IP的设计?

    Vivado是Xilinx公司2012年推出的新一代集成开发环境,它强调系统级的设计思想及以IP为核心的设计理念,突出IP核在数字系统设计中的作用。
    的头像 发表于 09-17 15:37 1190次阅读
    为什么说<b class='flag-5'>Vivado</b>是基于IP的设计?

    Vivado设计套件用户:使用Vivado IDE的指南

    电子发烧友网站提供《Vivado设计套件用户:使用Vivado IDE的指南.pdf》资料免费下载
    发表于 09-13 15:25 6次下载
    <b class='flag-5'>Vivado</b>设计套件用户:使用<b class='flag-5'>Vivado</b> IDE的指南

    迅为RK3588在 Linux 系统中使用 NPU

    迅为RK3588在 Linux 系统中使用 NPU
    的头像 发表于 09-08 14:14 1037次阅读
    迅为RK3588在 <b class='flag-5'>Linux</b> 系统<b class='flag-5'>中使</b>用 NPU

    Vivado中BRAM IP的配置方式和使用技巧

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章中已经详细介绍了Vivado FIFO IP,今天我们来聊一聊BRAM IP。
    的头像 发表于 08-29 16:41 3208次阅读
    <b class='flag-5'>Vivado</b>中BRAM IP的配置方式和使用技巧

    【KV260视觉入门套件试用体验】+02.开发环境安装Vitis/Vivado(zmj)

    【KV260视觉入门套件试用体验】+02.开发环境安装Vitis/Vivado(zmj) 本篇主要介绍CentOS-7.9安装Vitis2022.2(包括Vivado2022.2)的
    发表于 08-27 21:22

    Linux系统开发环境搭建

    今天给大家讲一讲Linux系统开发环境搭建。
    发表于 07-12 14:51 729次阅读
    <b class='flag-5'>Linux</b>系统开发<b class='flag-5'>环境</b>搭建

    Linux环境下不会做TCP测试?

    今天浩道跟大家分享一个linux环境下TCP测试工具!让大家可以在Linux环境下快速进行TCP测试,这样遇事就不会干着急了!
    的头像 发表于 07-08 14:20 714次阅读