ZYNQ开发入门

上传人:无*** 文档编号:187251621 上传时间:2023-02-12 格式:PDF 页数:16 大小:1.25MB
收藏 版权申诉 举报 下载
ZYNQ开发入门_第1页
第1页 / 共16页
ZYNQ开发入门_第2页
第2页 / 共16页
ZYNQ开发入门_第3页
第3页 / 共16页
资源描述:

《ZYNQ开发入门》由会员分享,可在线阅读,更多相关《ZYNQ开发入门(16页珍藏版)》请在装配图网上搜索。

1、第 9 章 ZedBoard 入门 前面大家已经对 ZYNQ 架构以及相应的开发工具有一定的认识,接下来我们将带领大家来一起体验 ZYNQ,体验软硬件协同设计的魅力。由于时间的关系,下面的一些实验(本章及后续章节的实验)可能有不完善的地方,欢迎读者向我们反馈。跑马灯 本实验将指导大家使用 Vivado 集成设计环境创建本书的第一个 Zynq 设计。这里,我们使用跑马灯这个入门实验来向大家介绍 Vivado IDE 的 IP Integrator 环境,并在 Zedboard 上实现这个简单的 Zynq 嵌入式系统。之后,我们将会使用 SDK 创建一个简单的软件应用程序,并下载到 Zynq 的

2、ARM 处理器中,对在 PL 端实现的硬件进行控制。本实验分为三个小节来向大家进行介绍:第一节我们将使用 Vivado IDE 创建一个工程。在第一节的基础上,第二节我们将继续构建一个 Zynq 嵌入式处理系统,并将完成后的硬件导入到 SDK 中进行软件设计。最后一节我们将使用 SDK 编写 ARM 测试应用程序,并下载到 ZedBoard 上进行调试。实验环境:Windows 7 x64 操作系统,SDK Vivado 工程创建 1)双击桌面 Vivado 快捷方式,或者浏览 Start All Programes Xilinx Design Tools Vivado Vivado 来启动

3、Vivado.2)当 Vivado 启动后,可以看到图 9-1 的 Getting Started 页面。图 9-1 Vivado 开始界面 3)选择 Create New Project 选项,图 9-2 所示的 New Project 向导将会打开,点击 Next。图 9-2 New Project 对话框 4)在 Project Name 对话框中,输入 first_zynq_design 作为 Project name,选择 C:/XUP/Zed 作为Project location,确保 Create project subdirectory 被勾选上,如图 9-3,点击 Next。

4、图 9-3 Project Name 对话框 5)在 Project Type 对话框中,选择 RTL Project,确保 Do not specify sources at this time 选项没有被勾选,如图 9-4,点击 Next。图 9-4 Project Type 对话框 6)在 Add Source 对话框中,选择 Verilog 作为目标语言,如果你对 VHDL 熟悉的话,你也可以选择 VHDL,如果这里你忘记了选择,在工程创建完成后,也可以在工程设置中选择你熟悉的HDL 语言。如果你已经有了源文件,在这里就可以选择 Add file 或者 Add directory 进行

5、添加,由于我们没有任何的源文件,所以这里我们直接点击 Next 即可,如图 9-5。图 9-5 添加源文件 7)在 Add Existing IP 对话框中,点击 Next。8)在 Add Constraints 对话框中,点击 Next。9)在 Default Part 对话框中,在 Specify 框中选择 Boards 选项,在下面的 Board 列表中选择ZedBoard Zynq Evaluation and Development Kit,点击 Next,如图 9-6。图 9-6 芯片选择 10)在 New Project Summary 对话框中,点解 Finish 完成工程创建

6、,至此,我们已经使用 Vivado创建了一个 Zynq 设计的工程框架,图 9-7 为 Vivado 的工程界面,在第四章我们已经对该界面进行过介绍,如果还不熟悉的读者再回到前面复习一下。下面我将使用 Flow Navigator 的 IP Integrator 功能完成第二节的嵌入式系统设计。图 9-7 Vivado 工程界面 在 Vivado 中创建 Zynq 嵌入式系统 这一节我们将创建一个简单的 Zynq 嵌入式系统,该系统使用 Zynq PL 部分实现一个通用 I/O 控制器(GPIO),控制器同 ZedBoard 上的 8 个 LED 相连接,并且通过 AXI 总线连接到 PS 端

7、,这样我们就可以通过将要在第三小节中实现的 ARM 应用程序来对 LED 进行控制。系统结构图如图 9-8 所示。图 9-8 系统结构图 1)创建一个 Block Design。在 Flow Navigator 窗口中展开 IP Intergrator,选择 Create Block Design,如图 9-9。图 9-9 创建 Block Design 2)在 Block Design 对话框中输入 zynq_system_1 作为 Design name,如图 9-10,点击 OK 继续。这时,在 workplace 区域将会打开 IP Integrator 的图表画布,我们将在这个空白区

8、域中像画画一样的构建自己的系统。这里操作的最小单位是 IP 核,Xilinx 官方还有一些第三方机构给我们提供了很多的免费 IP 核,你可以直接在这里添加使用,当然,用户也可以自定义自己的 IP 核,然后添加到工程中使用,或者提供给其他用户使用,在 13 章第一节我们将会向大家介绍如何制作自己的 IP 核。图 9-10 输入设计名称 3)在空白画布中,右键空白区域,并选择 Add IP 选项,或者点击画布最上方的绿色提示信息中的Add IP 链接,如图 9-11。4)这时一个 IP 核列表将会弹出,在 Search 一栏输入 Zynq,在搜索结果列表中双击 ZYNQ7 Processing S

9、ystem 添加 PS 端的 IP 核到画布中,如图 9-12 所示。由于我们使用的是 ZedBoard,这一步完成后 Vivado 会对 Zynq 处理器进行相应的配置。同时在 IDE 的下面,选择 TCL Console你将看到如下的信息,其实我们在 Vivado 图形化界面所做的所有操作都将转化为 TCL 命令来执行。create_bd_cell-type ip-vlnv:ip:processing_system7:processing_system7_0 图 9-11 添加 IP 图 9-12 添加 PS IP 核 在空白画布中,可以看到 ZYNQ7 Processing System

10、 被以图形化的方式添加进来,当前的 IP 模块是一个初始化界面,如果要使这个模块能在 ZedBoard 工作起来,首先对其进行相应的配置。5)双击 ZYNQ7 Processing System 模块,打开其配置界面,如图 9-13 所示,首先先来熟悉一下这个界面。Documentation:提供该 IP 模块相关的文档帮助。Page Navigator:这里提供了该 IP 模块的详细配置列表。Zynq Block Design 页面显示了 ZYNQ7 Processing System 的总体概貌,我们可以通过点击绿色部分对相应的模块进行查看或者配置;PS-PL Configuration

11、页面提供了 PS 到 PL 的相关接口配置信息以及 PS 部分一些配置信息;Peripheral I/O Pins 页面主要是对一些通过外设接口的配置;MIO Configuration 页面主要是对 MIO 以及 EMIO 的分配控制。Clock Configuration 页面主要是对 PS 端时钟资源的配置及管理。DDR Configuration 页面主要是对 DDR 控制器一些参数的配置。Interrupts 页面主要是对中断进行配置管理。Presets:这里主要提供了一些开发板的预定义配置功能,Vivado 将会按照已经设置好的配置信息来对该 IP 核进行配置,而不需要我手动的来配

12、。点击该按钮,我们可以看到 Vivado 现在已经支持的开发板有 Microzed、ZC702、ZC706、ZedBoard 以及一个 Default 配置选项。Import XPS Settings:这个功能主要是将 XPS 中的 ZYNQ7 Processing System 的配置信息导入进来,其实就是导入一个 xml 文件。由于我们使用的是 ZedBoard 开发板,且只用到 Vivado提供的默认配置,所以这里选择 Presets Zedboard,点击 OK 来完成对 ZYNQ7 Processing System 的配置。下一步我们将要连接 PS 端的 DDR 与 FIXED_I

13、O 接口到顶层接口。6)左建选择 ZYNQ7 Processing System 模块上的 DDR 接口,当光标变成笔装的时候右键并选择Make External,如图 9-14,对于 FIXED_IO 使用同样的方法。图 9-13 ZYNQ7 Processing System 界面 注:5、6 两步更加简单的方法是点击 Diagram 顶端的 Run Block Automation 设计协助链接来完成对ZYNQ7 Processing System IP 核的配置并将 DDR 与 FIXED_IO Make External,如图 9-15 所示。当选择/processing_syste

14、m7_0 的时候,相应的 IP 核图形界面会变成高亮显示,表示其已被选中,并将会被自动配置。在弹出的 Run Block Automation 对话框中确保 Apply Board Preset 被勾选,否则其只会将 DDR与 FIXED_IO 连接到顶层端口,而不会对 ZYNQ7 进行默认配置。如果你在手动完成了 ZYNQ7 的配置又要使用 Run Block Automation 这个功能,那么一定要确保 Apply Board Preset 选项没有被选中,否则它将会使用默认配置来覆盖你原来的配置。图 9-14 Make External Interface 操作 图 9-15 Run

15、Block Automation-ZYNQ 当完成了 ZYNQ7 Processing System IP 核的添加并对其进行配置后,你的 Block Design 应该如图9-16 所示。下面将添加 AXI GPIO IPcore 到系统中,该 IP 核被放在 PL 端,通过 AXI 总线同 ARM相连接,并通过 GPIO 接口控制 ZedBoard 上的 8 个 LED 小灯。我们将使用 IP Integrator 的设计协助工具来将 AXI GPIO 连接到 PS 端。图 9-16 ZYNQ7 Processing System 外部连接 7)右键 Diagram 窗口的空白区域,在弹出

16、的菜单列表中选择 Add IP 选项,在搜索栏中输入 GPIO,并在搜索结果列表中双击 AXI GPIO 将该 IP 添加到系统中。8)在 Diagram 窗口顶部点击 Run Connection Automation 链接,并选择/axi_gpio_0/S_AXI 选项,这时可以看到 GPIO IPcore 的 S_AXI 接口被高亮显示,如图 9-17,点击 OK 完成。图 9-17 Run Connection Automation-GPIO 这时可以看到有两个新的 IP 模块自动被添加了进来:Processor System Reset:这个 IP 提供一个定制化的 Reset 功能

17、,包括所有外设,互联以及处理器生。AXI Interconnect:提供 AXI 总线互联控制,它将 PL 端外设同 PS 端连接起来。9)同样点击 Run Connection Automation 链接,并选择/axi_gpio_0/GPIO,Run Connection Automation 对话框将被打开,在 Select Board Interface 的下拉菜单中选择 leds_8bit 选项,点击OK,如图 9-18 所示。图 9-18 Run Connection Automation-GPIO 注:当使用如上的方式来对 GPIO Make External 时,Vivado

18、会自动在系统中添加约束文件,将 GPIO 连接到 ZedBoard 的 LED 引脚上。10)当完成上面一步,在 Diagram 中应该看到如图 9-19 所示的画面。图 9-19 Module Connect System 11)IP Integrator 将会自动为挂在 AXI 总线上的逻辑设备分配地址空间,这样 ARM 才可以寻址到 PL端的逻辑设备。选择 Address Editor 图 9-20 地址编辑器 12)保存工程:Ctrl+S 13)在 Diagram 窗口的左面工具栏中选择 Validate Design 按钮检测设计的有效性。这个操作将会调用一次 DRC 检测,如果检测

19、正确,Validation successful 对话框将会弹出,否则根据错误信息进行改正。点击 OK 完成设计有效性检测。至此,一个简单的 IP 子系统已经设计完成,下面我们将设计完成 Block Design 生成可以综合的 HDL 设计文件。14)在 Source 窗口中,选择 Sources 选项,右键 Block 设计 zynq_system_1,选择 Generate Output Products,如图 9-21。图 9-21 生成 HDL 文件 15)在弹出的对话框中直接点击 Generate。这一步将会生成 Diagram Block Design 的 HDL 源文件以及相应

20、端口的约束文件。16)继续右键 zynq_system_1,选择 Create HDL Wrapper,保持默认选项,点击 OK 关闭 Create HDL Wrapper 对话框。这里,Vivado 会为 IP 子系统生成一个顶层文件,这样我们就可以对该系统进行综合、实现并生成 bit 流了。17)在 Flow Navigator 中,展开 Program and Debug,点击 Generate Bitstream,这时 No Implementation Result Available 对话框被打开,点击 YES,如图 9-22。18)当 bit 流生成完成,Bitstream Ge

21、neration successful completed 对话框被打开,选择 Open Implementation Design 对话框,点击 OK 完成,如图 9-23 所示。当 bit 流生成完成后,在 Vivado 中最后的工作就是要将设计导入到 SDK 中,然后对 ARM 进行编程,控制 ZedBoard 上的 LED 灯,实现我们这次实验的目的。图 9-22 生成 bit 流 图 9-23 打开实现设计 19)在 IP Integrator 下点击 Open Block Design,选择,重新打开前面创建的 Block Design,如图 9-24。图 9-24 打开 Bloc

22、k Design 20)选择 File Export Export Hardware for SDK.,Export Hardware for SDK 对话框将被打开,确保Include bitstream 和 Launch SDK 两个选项被选中,如图 9-25,点击 OK。注意:这里要导入的 Source 是 Block Design,所以必须要先将打开,否则会出现错误;要想将bitstream 导入到 SDK,必须先打开 implementation design,否则这里的 Include Bitstream 将会是disable 的。21)到此,在 Vivado 下的工作就算完成了,

23、如果没有出现错误,说明我们的硬件工程总体上是没有问题的。下面一节我们将在 SDK 中创建一个简单的应用程序,来完成软硬件协同设计中的软件部分。图 9-25 将硬件设计导入到 SDK SDK 应用程序编写 这一节我们将讲解如何使用 SDK 来创建一个简单的软件应用程序,并使用该程序来对 ZedBoard上的 LED 进行控制。从前面可以看到,系统已经为 AXI GPIO 分配了一个地址空间,ARM 处理器通过访问该地址空间中的寄存器来对 GPIO 进行控制寄存器,从而达到控制 ZedBoard 上的 LED。Start All Programs Xilinx Design Tools Vivad

24、o SDK Xilinx SDK 来启动 SDK,并将 Workspace定位到:C:XUPZedfirst_zynq_designSDKSDK_Export 当 SDK 打开后我们就可以创建自己的应用程序了。1)选择 File New Application Project。2)在 Application Project 对话框中输入 Marquee 作为 Project Name,其他的保持默认设置,如图9-26,点击 Next。图 9-26 新建 SDK 工程 3)在 Templates 对话框中,选择 Empty Application,这里我们创建一个空工程,如图 9-27 所示,点

25、击 Finish 完成工程创建。图 9-27 创建一个空白模版 4)当工程编译完成,SDK 会自动打开文件,该文件存在于板级支持包文件夹 Marquee_bsp 下。该文件提供了系统中所有的外设详细信息。Documentation 和 Example 提供了该外设很详细的设计参考,包括一些重要的数据结构以及 API,或一些可用的参考例程,如图 9-28。图 9-28 文件 5)选择 File New Source File,在弹出的对话框中点击 Browse 按钮,选择 Marquee/src 作为 Source Folder,在 Source File 输入框中输入,点击 Finish 完成

26、 Source File 的添加,如图 9-29。图 9-29 新建 Source File 6)下面来编写,具体代码如下所示。#include /*Peripheral parameters */#include /*GPIO data struct and APIs*/#include#include#define GPIO_BITWIDTH 8/*This is the width of the GPIO*/#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID rn);else printf(FAILED.rn);return XST_SUCC

27、ESS;7)保存工程,等待编译结束。该程序以main函数开始,之后进入一个无限循环,不断的调用GpioMarquee函数。Xgpio_Initialize函数在中被定义,它的功能是对XGpio句柄进行初始化,XPAR_AXI_GPIO_0_DEVICE_ID在文件中被定义,该文件是Vivado IDE 自动生成并导入到SDK中的,它包含了所有的系统硬件设备参数。XGpio_SetDataDirection(&Gpio,LED_CHANNEL,0 xFF)函数设置GPIO指定通道的I/O方向。XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,0 x0)函数将

28、数据写入到设置好的通道中。8)将ZedBoard同PC机相连接,插上串口线与Jtag线,如果是第一次连接请等待一段时间,操作系统会自动安装所需的驱动。单击Xilinx Tools Program FPGA将bit流写入FGPA中。右键工 程 目 录 中 的 Marquee 目 录,选 择 Run As Run Configurations,设 置 STDIO Connection为相应的串口,如图9-30。图 9-30 设置串口,运行程序 9)选择Run As Launch on Hardware将程序下载到ZedBoard上运行,稍等片刻我们可以看到Console窗口中不断的打印SUCCES

29、S!此时ZedBoard上的跑马灯已经运行了起来。图 9-31 运行程序,查看结果 10)如果到了这一步,恭喜你,你已经掌握了 ZYNQ 软硬件协同设计的基本流程。这对于一个入门者来说是至关重要的,就像我们刚学 C 语言时候运行出 Hello World 程序一样,是多么的让人振奋。ZYNQ 软硬件协同设计的基本流程如下所示。图 9-32 ZYNQ 设计流程 ZYNQ 嵌入式系统调试方法 在 ZYNQ 的软硬件协同设计中肯定会遇到各种问题,这时需要我们有个很好的方法来对系统进行Debug。在第四章中已经介绍了 Vivado 环境下的一些常用 Debug 核以及 Vivado 自带的逻辑分析器,

30、现在我们将用一个简单的事例来说明如何在 Vivado 下对系统进行调试。接下来,我们将分两个小节来对对这一问题进行概述。第一节讲述如何在 Vivado 下建立硬件调试环境 第二节将会介绍 SDK 使用,并使用 SDK+Vivado 进行系统调试 Vivado 硬件调试 1)这里,继续节所构建的工程,使用插入 Netlist 的方法对系统进行 Debug。将 C:XUPZed下的first_zynq_design 文件夹复制到当前目录下并将其重命名为 zynq_debug。如图 9-33 所示。图 9-33 新建工程 2)进入 zynq_debug 目录,双击 first_zynq_design

31、 Vivado 工程文件。打开 first_zynq_design 工程主界面。3)点击 Open Block Design,选择,打开 Block Design,如图 9-34。图 9-34 打开 Block Design 4)选择 axi_gpio_0_GPIO 接口连接,右键并选择 Make Debug,当综合完成后,系统会自动将被标记的连接线的 Netlist 插入,如图 9-35。5)此时我们可以看到该接口连接被打上了 debug 标志。如图 9-36。6)用同样的方法将 M00_AXI 接口与 S00_AXI 接口之间的连接线也进行 Make Debug,如图 9-37。7)保存工

32、程。8)点击 Run Synthesis 重新对工程进行综合。9)当综合结束后会弹出 Synthesis successfully completed 对话框,选择 Open Synthesized Design 选项查看综合结果,点击 OK,如图 9-38。图 9-35 Make Debug 图 9-36 GPIO Debug 图 9-37 AXI 总线 Debug 图 9-38 Open Synthesized Design 10)如果 Debug 窗口没有打开,点击 IDE 工具栏中的 Layout selector,并在下拉菜单中选择 Debug选项来打开 Debug 窗口,如图 3-

33、39。图 9-39 打开 Debug 窗口 11)在 IDE 下方可以看到打开后的 Debug 窗口,该窗口列出了在第四步到第六步中标记的 Debug Net。在 Netlist 窗口中我们也能看到相应的 Net 也被标记了,这里我们还可以对被标记的 Net取消 Debug,也可以将新的 Net 插入 Debug 窗口,不过这里我们什么都不做,如图 9-40、9-41。图 9-40 取消 Debug 图 9-41 Netlist Make Debug 12)在 Debug 窗口中的 Net 现在的状态仍然是 unassigned,所以现在需要添加一个 Debug IP 核来将这些 Net 连接

34、上去。在 Debug 窗口的工具栏上,选择 Set Up Debug,打开 Set Up Debug 向导,如图 9-42。图 9-42 Set Up Debug 13)在 Set Up Debug 对话框中点击 Next。14)在 Specify Net to Debug 对话框中,选择 Clock Domain undefined 的 3 个选项并右键,选择Select Clock Domain 选项,如图 9-43。图 9-43 关联 Clock 15)在弹出的 Select Clock Domain 对话框中选择 zynq_system_1_i/processing_system7_0

35、_ FCLK_CLK0,如图 9-44。图 9-44 选择 Clock 16)在 Trigger and Capture Modes 对话框中,选择 Enable advanced trigger mode 和 Enable basic Capture mode 选项。点击 Next。图 9-45 选择模式 17)在 Setup Debug Summary 对话框中,确保所有的信息如图 9-46 所示。点击 Finish。18)保存工程,此时在 Source 窗口中的 Constraints 文件夹下会自动生成 Debug 相关的约束文件。19)在 Flow Navigator 窗口中点击 G

36、enerate Bitstream,点击 Yes 当 No Implemetation Results Available 对话框弹出时,等待 Generate Bitstream 完成。20)当 Generate Bitstream completed 对话框弹出时,保持默认选项,点击 OK 打开 Implementation Design,并在之后弹出的对话框中都点击 Yes。21)按节的方法将硬件设计导入到 SDK 中。不要关闭 Vivado,我们将在后面继续使用。图 9-46 Summary 使用 SDK 进行 ZYNQ debug。在 SDK 中对 ZYNQ 进行 Debug,其实是

37、对 ZYNQ 的 ARM 处理器进行 Debug,在 ZYNQ 嵌入式系统中,一般 PL 端的逻辑设备都被看成是 ARM 处理器的外设,两者之间通过 AXI 总线接口进行通信。这样,我们就可以通过软件的方式,来实时对硬件流进行调试。1)将 PC 机同 ZedBoard 连接起来。2)选择 Xilinx Tools Program FPGA 将 bit 文件下载到 ZedBoard。3)在工程管理面板右键 Marquee 工程,依次选择 Debug As Launch On Hardware,点击 Yes 关闭Confirm Perspective Switch 对话框,打开 SDK Debug

38、 管理界面如图 9-46 所示。4)初始化状态,程序指针指向 GpioMarquee 函数,点击工具栏图标或者按进入 F5 键进入到GpioMarquee 函数,现在程序指针指向了 XGpio_Initialize 函数。5)点击图标或者按下 F6 键执行下一条命令。6)选择第一个 delay for 循环,并在这一行前面的蓝色竖条上双击或者按下 Ctrl+Shift+B 设置断点。如图 9-48 所示。7)单击 Resume 按钮或者按下 F8 使程序运行到断点处,此时我们的 ZedBoard 上的第一个小灯应该亮了起来。继续点击 Resume 按钮,可以依次点亮板子上的 8 个小灯。图 9

39、-47 SDK Debug 界面 图 9-48 设置断点 8)在 Varibles 窗口中可以查看当前变量的值。如图 9-49。图 9-49 查看变量 9)在 Registers 窗口中可以查看 ARM 处理器内部寄存器的值。如图 9-50 所示。图 9-50 Register 10)在 Memory 窗口可以查看内存空间的情况。如图 9-51。图 9-51 Memory 现在我们已经知道了如何在 SDK 中进行一般的调试,而且能够得到预期的效果,但是事情往往不是这样的简单,如果在第 7 步的时候我们没有在 ZedBoard 上看到小灯被点亮,那该怎么办呢决解这一问题的最好办法就是查看 AXI

40、 总线是否有数据在流动,所以前面所做的 Vivado Debug 工程就用到了。请不要关闭 SDK,且断点依然设置在相同的位置。11)回到 Vivado IDE 界面。在 Program and Debug 选项下点击 Open Hardware Manager。如图 9-52。图 9-52 Open Hardware Manager 12)如果你的板子以此方式进行连接过,请选择 open recent target 并选择相应的 target 即可,否则点击 open a new hardware target,并一直 Next,最后 Finish 即可,如图 9-53。图 9-53 ope

41、n target 13)由于已经在 SDK 中下载了 FPGA bit 流,所以在 Hardware 面板中一个 ILA debug 核被系统检测到了。如图 9-54。图 9-54 ILA core 检测 注意:虽然可以在 Vivado 中对 FPGA 下载 Bitstream,但请不要这样做,经过我们的多次测试,这样做会发生错误,Xilixn 官方的给出的决解方案是由于使用的 PS 端的时钟来接入 ILA,所以要先在SDK 中将 bit 流进行下载。14)现在可以看到 Integrated Logic Analyzer 的窗口被打开,如图 9-55。15)点击 Run Trigger Imm

42、ediate 按钮 来触发并捕捉 Debug probe 的数据。16)在 Waveform 窗口中我们可以看到捕捉到的数据如图 9-56 所示。这里我们注意到 GPIO 的值为0 x01,说明第一个小灯是被点亮的,同时 AXI 总线的 WDATA 的值同 GPIO 的也是 0 x01,所以可以看出从 ARM 处理器写到 AXI GPIO 的数据被正确接收到了,我们还可以看一下其他信号线的值,做一些分析。17)转到 SDK 界面中,点击 Resume 按钮,继续执行程序,此时我们可以看到 led2 被点亮。图 9-55Vivado 集成逻辑分析器窗口 18)转到 VIvado 界面,点击 Ru

43、n Trigger Immediate 按钮,查看状态改变后 GPIO 的信号值,如图9-57。我们发现 0 x01 变成了 0 x02。19)重复前面两步,查看相应状态改变是否会引起相应的波形的变化,并分析其原因。20)至此,在 Vivado 下对 ZYNQ 嵌入式系统的调试就讲到这里,我们所讲的只是其中一个方法,Vivado 提供多种方法对 ZYNQ 进行调试,在第四章中也进行过简单的介绍,详细的方法请参考UG936 以及 UG908。图 9-56 Waveform 图 9-57 状态改变后的波形图 Booting Linux on ZedBoard 在第一章中我们带领大家体验了运行在 Z

44、edBoard 上的 Linaro Ubuntu,在第 7 章中我们介绍了 FSBL引导程序,并描述了 ZYNQ 下的 linux 启动过程。大家也许会有很多疑问,比如 FSBL 是怎么生成的,如何来制作启动镜像等等,这里将为大家解答这些问题。通过这一节的学习,希望大家能够对 ZYNQ下的 linux 启动过程有更深入的体会。在 ZedBoard 中启动 Linux 有两种方式,一种是将 ZedBoard 作为主设备来引导 Linux,另一种则是将其作为从设备。Master Method:这种方式是将启动镜像存储在非易失性存储器中,如 QSPI、NAND、NOR flash、以及 SD 卡等。

45、ARM 核从这些存储器中将启动镜像加载到 PS 端,并执行 boot 程序引导 linux启动。Slave Method:这种方式是将 PC 机作为主机,通过 Jtag 或者网络将启动镜像加载到内存。下面我们分别对从 SD 卡启动和从 QSPI 启动 linux 进行介绍。首先,得准备以下几个文件,你可以直接从本书网盘地址 上第九章相应章节下载使用。:FSBL 镜像文件,用于创建。:硬件工程文件,用于创建 :linux BootLoader,用于创建,将在 13 章进行介绍 uImage:Linux 内核镜像,通过 U-boot 加载到内存,将在 13 章进行介绍 :linux 系统设备树文件

46、,通过 U-boot 加载到内存,将在 13 章介绍 创建 1)浏览 Start All Programs Xilinx Design Tools Vivado SDK Xilinx SDK 启动 SDK,设置Workspace 为节生成的 SDK_Export 目录,如图 9-58 所示。图 9-58 导入 SDK 工程 2)在 SDK 中,依次选择 File new Application Project,在弹出的 Application Project 对话框中输入 fsbl_zynq 作为 Project Name,其他选项保持默认设置,点击 Next。3)在 Templated 对话

47、框中选择 Zynq FSBL 作为模版,点击 Finish 完成工程创建,如图 9-58。SDK 在工程浏览器中创建了 fsbl_zynq 应用工程以及 fsbl_zynq_bsp 板级支持包工程。SDK 将会自动构建工程,并生成文件。图 9-58 选择 fsbl 模版 从 SD 卡启动 linux 1)将需要的 3 个文件拷贝到同一个文件夹中,在上面的链接中我们也给出了这 3 个文件,如图 9-59 所示。图 9-59 准备需要的文件 2)在 SDK 的菜单栏中选择 Tools Create Zynq Boot Image。在弹出来的 Create Zynq Boot Image 对话框中将

48、 Bit file path 设置为第一步 3 个文件所在的文件夹路径,并在 Boot image partition 面板中点击 Add 按钮相继添加这 3 个文件,这里一定要注意,我们添加文件的顺序必须按照 的顺序,否则系统将不能够正常启动,添加的过程中保持默认设置即可,同时 Output path 也保持默认设置即可,点击 Create Image 按钮生成.bin 文件,如图 9-60 所示。图 9-60 建立 SD 卡启动镜像文件 3)这时,我们在该文件夹下可以看到有个文件生成了,将其重命名为。4)提示:这里,不要改变这几个文件的文件名,u-boot 在 SD 卡中搜索这些文件名,进

49、而启动系统。5)6)启动 ZedBoard,观察串口终端的打印信息。当 Zynq提示符在串口终端上显示时,说明 Linux 已经在 ZedBoard 上启动了,如图 9-61。图 9-61 启动 linux 从 QSPI 启动 Linux 1)将所需的文件拷贝到同一个文件夹,为了方便,将 SDK_Export/hw_platform_0/文件也拷贝到同一文件夹,如图 9-62。以下操作,XMD%提示符表示在 XMD 窗口中,zynq-boot提示符表示在串口终端中,bash$表示在 linux 系统中。图 9-62 准备制作文件 1)设置 ZedBoard 的 JP7-11 全部为 0,从 J

50、tag 启动。MIO02-06:000000 2)连接 ZedBoard 与 PC 机,启动 ZedBoard,打开串口终端,设置波特率为 115200。3)选择 Start All Programs Xilinx Design Tools Vivado SDK Xilinx Microprocessor Debugger 启动 XMD 窗口。4)手动编写.bif 文件 XMD%cd C:/XUP/boot/qspi/XMD%notepad 5)在记事本中如下输入。其中,offset 的值要根据实际情况来设定,第一个 offset 的值一定要大于前面 3 个文件的总大小,依次类推。同时,在 u

51、-boot/include/configs/目录下找到相应的配置文件,修改 QSPI 启动项参数,与 offset 的值相匹配。注意,由于工具的原因,这里我们需要将uImage 重命名为。the_ROM_image:bootloader offset=0 x500000 offset=0 x900000 6)保存退出,使用如下命令生成文件。XMD%bootgen image o i 7)连接并初始化 ARM XMD%connect arm hw XMD%source XMD%ps7_init 8)通过 Jtag 加载当前目录的到 Zed 上的 QSPI Flash XMD%dow 9)通过 J

52、tag 将 PC 中拷贝到 Zed DDR 0 x08000000 处,这个过程大概需要 5 分钟左右。XMD%dow -data 0 x08000000 10)执行 U-boot。XMD%con 11)在串口终端中,当 u-boot 在读秒的时按下任意键进入 u-boot 命令行模式。12)在 u-boot 命令行模式中,对 QSPI 进行初始化 Zynq-boot sf probe 0 0 0 Zynq-boot sf erase 0 0 x01000000 13)将 DDR 0 x08000000 处的拷回 QSPI 的 0 x0 处 Zynq-boot sf write 0 x08000000 0 0 xFFFFFF 14)烧写 QSPI 完毕,关闭 ZedBoard 电源。15)设置 JP7-11 跳线从 QSPI 启动。MIO02-06:000010 16)连接串口终端,启动 ZedBoard。17)观察终端打印信息,当出现 Zynq提示符时,说明系统启动完成。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!