5 - ZYNQ SDK学习记录(2)

1 Vivado工程基本设计

Step 1:

  • Vivado版本Vivado 2018.3
  • 器件型号xc7z020clg400-2
  • 创建Vivado工程(名为pl_axi_gpio)
  • 搭建Block Design(名为system)
  • PS核
    • 勾选UART(查看打印信息)
    • 勾选GPIO-MIO(连接PS侧LED)
    • 选择DDR型号(运行应用程序)
    • 使能PL-PS中断 (接收PL侧提交的中断)
  • AXI GPIO核
    • 配置位宽(1-bit,连接PL侧按键)
    • 使能中断(检测按键中断并向PS提交中断)

在这里插入图片描述

Step 2:

  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • 右击BD设计,Create HDL Wrapper
  • Open Elaborated Design,为axi_gpio_key分配引脚
  • 生成bit文件
  • 导出hdf

Step 3:

  • 打开SDK
  • 新建空应用工程pl_axi_gpio,SDK首先会自动生成BSP文件(包括驱动、库函数等)
  • 添加已编写好的源文件(main.c),SDK会自动编译应用工程,生成ELF文件

在这里插入图片描述
Step 4:

  • 开发板上电
  • 打开串口
  • 下载程序
  • Pl侧按键触发中断控制PS侧LED亮灭功能正常
  • 关闭SDK和Vivado

2 Vivado工程位置不变

2.1 修改设计1 - 增加PS侧QSPI外设

Step 1:

  • 打开Vivado
  • 打开pl_axi_gpio工程
  • 打开SDK

Step 2:

  • 切换到Vivado
  • 打开BD设计
  • 双击PS核,打开PS配置界面
  • 在Peripheral I/O Pins选项中勾选Quad SPI Flash
  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • 生成bit文件
  • 导出hdf
  • 弹出如下图所示提示,点击Yes

在这里插入图片描述

Step 3:

  • 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示

在这里插入图片描述

Step 4:

  • 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程,如下图所示,system.hdf和system.mss中多了ps7_qspi_0和ps7_qspi_linear

在这里插入图片描述

在这里插入图片描述

Step 5:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 6:

  • 上板验证
  • 关闭SDK

2.2 修改设计2 - 增加PL侧AXI GPIO外设

Step 1:

  • 切换到Vivado
  • 打开BD设计
  • 复制axi_gpio_0核(自动命名为axi_gpio_1)
  • 双击axi_gpio_1核,去掉中断
  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • Open Elaborated Design,为axi_gpio_led分配引脚
  • 生成bit文件
  • 导出hdf

在这里插入图片描述

Step 2:

  • 打开SDK(SDK在2.1小节的最后已关闭)
  • SDK会自动检测到hw_platform_0使用的hardware specification发生变化,然后会自动
    • 更新hw_platform_0
    • 重新生成BSP文件
    • 重新编译应用工程
  • SDK如果仅更新hw_platform_0,并未重新生成BSP文件和重新编译应用工程,此时有两种方法:
    • 关闭SDK重新打开试试
    • Step 3

Step 3:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 4:

  • 上板验证
  • 关闭Vivado和SDK

2.3 总结

在Vivado工程位置不变的情况下,只要对设计做了修改,然后重新导出了hdf文件,SDK无论在设计修改之前是否打开,SDK都能识别到hdf的变化,然后自动

  • 更新hw_platform_0
  • 重新生成BSP文件
  • 重新编译应用工程

但是,注意有时候SDK也会失灵,仅更新hw_platform_0,不会重新生成BSP文件和重新编译应用工程。稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程。

3 Vivado工程位置变动

  • 将2.2小节的Vivado工程复制到其他文件夹下
  • 打开Vivado
  • 打开pl_axi_gpio工程

3.1 先修改BD后打开SDK

Step 1:

  • 从BD设计中删除axi_gpio_1核及其接口
  • 重新编译Vivado工程
  • 重新导出hdf文件

Step 2:

  • 打开SDK,发现会多出一个hw_platform_1
  • hw_platform_1基于最新的hdf文件
  • hw_platform_0基于旧有的hdf文件
  • pl_axi_gpio和pl_axi_gpio_bsp是和hw_platform_0绑定的

在这里插入图片描述

Step 3:按照正点原子SDK嵌入式开发教程的方法

  • 彻底删除hw_platform_0
  • 将hw_platform_1重命名为hw_platform_0
  • 右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

此时,打开system.hdf和system.mss文件,发现axi_gpio_1还在(在Vivado工程已删除),如下图所示:

在这里插入图片描述

在这里插入图片描述
Step 4:

  • 关闭SDK重新打开

此时,system.hdf文件中axi_gpio_1已消失,system.mss出现异常,如下图所示:

在这里插入图片描述
Step 5:

  • 只能删除Vivado工程目录下的SDK子文件夹,重新搭建SDK工程

3.2 先打开SDK后修改BD

Step 1:

  • 打开SDK,发现会多出一个hw_platform_1(因为此时Vivado工程未做任何修改,所以hw_platform_1和hw_platform_0完全一致)

Step 2:按照正点原子SDK嵌入式开发教程的方法

  • 彻底删除hw_platform_0
  • 将hw_platform_1重命名为hw_platform_0

Step 3:

  • 切换到Vivado,从BD设计中删除axi_gpio_1核及其接口
  • 重新编译Vivado工程
  • 重新导出hdf文件

Step 4:

  • 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示

在这里插入图片描述

Step 5:

  • 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程(一切正常,哈哈)

Step 4:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 5:

  • 上板验证
  • 关闭Vivado和SDK

3.3 总结

在Vivado工程位置变化的情况下,在对设计做出任何修改前,首先打开SDK,然后彻底删除hw_platform_0
并将hw_platform_1重命名为hw_platform_0,最后再对设计进行修改。

### 回答1: zynq-linux移植学习笔记应包含以下内容: 1. 对zynq架构和硬件资源的理解,包括PS和PL部分的特点。 2. 如何使用Xilinx SDK来编译和配置u-boot和Linux内核。 3. 如何在硬件平台上运行和调试Linux系统。 4. 怎样在Linux系统中配置和使用各种硬件资源,如DMA、Ethernet、Flash等。 5. 如何在Linux系统中移植和运行应用程序,并与硬件资源进行交互。 6. 如何进行系统优化和资源管理,以提高系统性能和稳定性。 ### 回答2: Zynq是一款Xilinx公司开发的一种嵌入式系统芯片,其使用了双核Cortex-A9处理器和可编程逻辑器件(FPGA)的组合。移植Linux到Zynq芯片中,可以使其具备无限的扩展能力,极大地拓展了其应用领域,因此掌握Zynq-Linux移植技术是非常重要的。 Zynq-Linux移植分为四个主要步骤: 第一,准备工作 在移植前,需要确认硬件平台是否支持Linux运行,并且需要对硬件进行配置,最好使用Zynq开发板的官方配置; 第二,内核移植 内核移植是整个移植过程中最关键的一步。需要根据硬件平台的特性对内核进行选择和配置。可以从内核源代码库中获取内核代码,然后进行交叉编译。移植内核的过程中需要注意内核配置参数的设置,同时也要确保内核模块和驱动程序的编写。 第三,文件系统移植 在移植Linux的过程中,文件系统也是非常重要的。可以使用开发板官方Linux镜像,也可以自己编译镜像。移植文件系统还涉及到root文件系统的配置、挂载方式、网络配置和各种服务的配置等问题。 第四,驱动移植 驱动程序是连接硬件和软件的关键部分,需编写相应的驱动程序来实现对硬件的控制。移植驱动程序的过程中需要关注各种硬件接口和设备驱动API的使用,确保驱动程序与硬件配合良好。 总结来说,Zynq-Linux移植技术的掌握需要具备较强的Linux基础知识、驱动开发经验和交叉编译工具链的使用能力。同时,还需要有耐心和细心,对每个步骤进行仔细的分析和处理。 在学习中,需要结合实际开发项目,多进行实践操作才能更好地掌握Zynq-Linux移植技术,为后续项目的开发和应用提供更好的支持。 ### 回答3: Zynq-7000系列是一种由Xilinx开发的SoC(系统级芯片),它将双ARM Cortex-A9处理器和可编程逻辑(FPGA)集成在一起。这使得开发人员可以使用硬件加速加速器来加速运行在Linux上的各种应用。然而,实现这个目标需要进行移植。 在开始Zynq Linux移植学习笔记之前,需要一些基本的知识。首先,需要了解Linux内核的基本工作原理和Linux驱动程序的编写技术。然后,需要了解FPGA和SoC体系结构。 在开始移植之前,需要为SoC开发板选择正确的Linux发行版。这通常需要考虑处理器体系结构,内存大小和设备驱动程序的可用性。另外,还需要考虑是否需要自定义内核或驱动程序以满足应用程序的需求。 接下来,需要编写设备树文件(DT)来描述SoC架构。设备树文件是一种描述硬件配置信息的特殊语言。它会告诉内核有哪些设备可用以及如何访问这些设备。 接下来,需要配置Linux内核以支持Zynq-7000处理器。这可能包括启用适当的内核配置选项,编写设备驱动程序以及配置启动过程。 最后,需要启动Zynq板并验证Linux系统稳定运行。这些步骤包括在启动过程中将设备树文件加载到内存中,以及启动用户空间应用程序。 总之,移植Zynq Linux是一项复杂的任务,需要广泛的专业知识和技术。但是,它可以为开发人员提供强大的硬件加速支持,使他们能够加速处理一系列计算密集型应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值