网站开发用什么服务器,网站建设的基本准则是什么,宁波网站建设 网络服务,个人网站首页设计欣赏1. 环境准备与工具安装#xff1a;迈出第一步 大家好#xff0c;我是老李#xff0c;在FPGA和嵌入式这块摸爬滚打了十几年#xff0c;用过各种版本的开发工具。今天咱们就来聊聊Xilinx最新的Vivado 2023.2和Vitis 2023.2这对黄金搭档。很多刚接触ZYNQ或者MPSoC的朋友#…1. 环境准备与工具安装迈出第一步大家好我是老李在FPGA和嵌入式这块摸爬滚打了十几年用过各种版本的开发工具。今天咱们就来聊聊Xilinx最新的Vivado 2023.2和Vitis 2023.2这对黄金搭档。很多刚接触ZYNQ或者MPSoC的朋友一上来就被Vivado的硬件设计和Vitis的软件开发给整懵了感觉是两个完全不同的世界。其实不然它们俩协同工作起来就像盖房子Vivado负责打地基、砌墙搭建硬件平台Vitis负责搞内部装修、通水电编写软件应用最后生成一个能直接让板子跑起来的“钥匙”——BOOT.BIN文件。这篇文章我就手把手带你走一遍从零开始创建“Hello World”到最终生成启动文件的完整流程保证你跟着做一遍就能摸清门道。首先你得把“家伙事儿”准备好。去Xilinx官网下载Vivado 2023.2安装时记得勾选Vitis选项这样就能一次性把硬件和软件开发环境都装上了。我实测下来这个版本的安装包体积不小建议预留至少100GB的硬盘空间安装过程根据电脑性能可能需要一两个小时泡杯茶耐心等着就行。安装完成后你会在开始菜单看到“Vivado 2023.2”和“Vitis 2023.2”两个独立的图标。这里有个小坑我得提醒你虽然Vivado里有个按钮能直接启动Vitis在菜单栏的Tools - Launch Vitis IDE但在2023.2版本里这个联动有时会卡住或者Vitis启动异常。我个人的习惯是直接通过开始菜单单独打开Vitis这样最稳当避免不必要的麻烦。接下来你需要一块ZYNQ或MPSoC的开发板比如ZedBoard、Zybo或者Ultra96-V2。我手头用的是基于ZYNQ Ultrascale MPSoCXCZU15EG的板子后面的演示都会以这个为例。你操作时一定要根据自己板子的具体型号在Vivado里选择对应的芯片型号这一步千万不能错否则后面全白搭。另外串口调试工具如Putty、MobaXterm和一根Micro USB数据线用于JTAG下载和串口通信也是必备的。硬件连接很简单用USB线连接开发板的JTAG/UART口到电脑给开发板上电准备工作就完成了。2. Vivado 2023.2搭建硬件舞台硬件设计是基础咱们先在Vivado里把“舞台”搭好。打开Vivado 2023.2点击Create Project开始新建工程。工程名我习惯叫hello_world_hw路径你自己选一个方便找的地方。一路点击Next直到出现Default Part选择页面。关键一步来了选择芯片。在搜索框里输入你的芯片型号比如我输入xc7z020对应ZYNQ-7000系列或xczu15eg对应我的MPSoC。一定要核对封装Package和速度等级Speed Grade是否与开发板完全一致。选错了生成的比特流文件.bit就无法在你的板子上运行。确认后点击Finish工程就创建好了。现在我们创建一个最简单的硬件系统——只包含ZYNQ的处理器系统PS。在左侧Flow Navigator栏点击Create Block Design设计名称用默认的design_1就行。在新打开的Diagram窗口中点击画布上的“”号或者按快捷键CtrlI搜索并添加ZYNQ7 Processing System对于ZYNQ-7000或Zynq UltraScale MPSoC对于MPSoC这个IP核。添加IP核后Diagram里会出现一个代表PS的模块。双击它进行配置。这里需要根据你的实际开发板进行设置主要是确保时钟、DDR内存型号、外设接口如UART用于串口打印与实际硬件匹配。对于初学者一个快速的方法是点击Presets看看有没有对应你开发板的预配置比如选择ZedBoard或Zybo有的话直接加载能省去大量手动配置的麻烦。配置完成后点击Run Block AutomationVivado会自动帮你完成PS端口的连接。最后在Sources面板中右键点击design_1选择Create HDL Wrapper让Vivado为我们生成顶层的Verilog/VHDL封装文件直接使用默认的Let Vivado manage wrapper and auto-update选项就行。硬件设计完成后我们需要生成两个关键文件比特流文件.bit和硬件描述文件.xsa。首先在左侧Flow Navigator中点击Generate Bitstream。这个过程会经历综合Synthesis、实现Implementation和生成比特流时间可能比较长取决于设计复杂度和电脑性能可以去处理点别的事情。生成成功后会弹出一个对话框先选择Open Implemented Design看看布局布线结果然后点Cancel关闭。接下来是导出硬件。点击菜单栏File - Export - Export Hardware...。在弹出窗口中勾选Include bitstream这一点非常重要它确保了导出的.xsa文件里包含了我们刚生成的.bit文件。导出路径我习惯在工程目录下新建一个vitis文件夹把.xsa文件放在里面这样软件工程和硬件工程分开比较清晰。点击OK硬件平台的搭建就大功告成了。这个.xsa文件就是Vitis认识我们硬件平台的“身份证”。3. Vitis 2023.2编写软件应用硬件舞台搭好了现在该Vitis登场编写在上面的“演员”——也就是我们的软件程序。单独从开始菜单打开Vitis 2023.2。第一次启动会让你选择工作空间Workspace这个路径建议和Vivado工程路径区分开或者放在其子目录下比如我就选刚才创建的vitis文件夹。进入Vitis后界面和Eclipse很像。我们的第一步是创建“平台项目”Platform Project。你可以把它理解为一个针对特定硬件平台就是刚才导出的.xsa文件的软件开发包BSP它包含了驱动程序、库文件等。点击File - New - Platform Project。项目名可以叫hello_world_platform点击Next。在Hardware Specification页面点击Browse找到并选中我们刚才从Vivado导出的.xsa文件。Vitis会自动解析这个文件并在下方显示识别出的处理器PS信息。确认无误后点击Finish。平台项目创建时Vitis会在后台进行一些处理左下角有进度条稍等片刻即可。平台创建成功后我们就可以创建真正的应用程序了。Vitis 2023.2提供了非常便捷的模板。在左侧Explorer视图中右键点击刚才创建的hello_world_platform平台项目选择New - Application Project...。另一种方法是点击Vitis主界面中间Welcome视图里的Create Application Project。在弹出的创建向导中项目名我们叫hello_world。点击Next在Select a platform from repository页面应该能看到我们刚创建的hello_world_platform选中它。再点击Next就来到了最重要的“选择模板”页面。这里Vitis提供了海量的示例工程从最简单的Hello World、Empty Application到复杂的LwIP Echo Server、FreeRTOS Hello World应有尽有。对于第一次接触我们当然选择Hello World模板。选中它点击Finish。几秒钟后一个完整的“Hello World”工程就创建好了。你会在Explorer里看到hello_world项目展开其下的src目录里面已经有一个写好的helloworld.c文件。内容就是经典的打印 “Hello World” 到串口。你可以直接编译试试看。在Explorer中选中hello_world项目然后点击上方工具栏的锤子图标Build或者右键项目选择Build Project。编译过程会在下方的Console窗口输出信息最后显示Build Finished就说明代码没问题。如果你想自己从头写代码也可以创建Empty Application模板然后手动在src文件夹下新建main.c文件。这里我贴一下Hello World的核心代码其实就两行#include stdio.h #include platform.h #include xil_printf.h int main() { init_platform(); print(Hello World\n\r); cleanup_platform(); return 0; }init_platform()和cleanup_platform()是Vitis平台初始化/清理的函数print函数最终会通过板子的UART串口输出字符。4. 在线调试与验证让代码跑起来代码写好了也编译通过了最激动人心的时刻就是让它在实际的硬件上跑起来。这一步我们通过JTAG进行在线下载和调试非常方便。确保你的开发板已经通过USB-JTAG线连接好电脑并且电源已打开。在Vitis中选中hello_world应用项目然后点击上方工具栏的绿色“运行”按钮Run As - Launch on Hardware (Single Application Debug)。Vitis会自动完成以下动作通过JTAG将硬件比特流.bit文件下载到FPGA、将编译好的应用程序.elf加载到处理器的内存中并开始运行。怎么看到“Hello World”呢我们需要一个串口终端。在Vitis内部就集成了串口终端。点击下方Terminal标签页如果没有可以通过Window - Show View - Terminal打开。在Terminal视图里点击“”号新建一个连接连接类型选择“串口Serial”端口号Port选择你的开发板对应的COM口在Windows设备管理器的“端口”里查看比如COM3波特率Baud Rate通常设置为115200其他参数默认。点击OK建立连接。现在按下开发板上的复位键或者直接在Vitis里重新运行程序你就能在串口终端里看到清晰的“Hello World”打印信息了这一步的成功意味着你的软硬件协同链路已经完全打通从Vivado的硬件设计到Vitis的软件编译、下载整个流程是畅通的。有时候你可能想单独烧写一下FPGA的比特流看看硬件是否正确配置。可以点击运行按钮旁边的小箭头选择Run Configurations...。在弹出的窗口左侧找到你的hello_world项目对应的配置在右侧的Target Setup选项卡下你可以手动指定一个.bit文件路径。不过在大多数情况下使用我们导出时包含bitstream的.xsa文件Vitis会自动处理好这一切。5. 生成BOOT.BIN制作独立启动盘在线调试很方便但我们的目标是要让板子能独立运行比如上电就从SD卡启动。这就需要制作一个启动镜像文件——BOOT.BIN。这个文件是ZYNQ/MPSoC上电后BootROM首先读取并执行的“启动套餐”。一个标准的BOOT.BIN通常包含三个部分按顺序是第一阶段引导加载程序FSBL、硬件比特流.bit和应用程序.elf。在Vitis 2023.2里生成BOOT.BIN变得异常简单。首先确保你的hello_world应用项目已经编译成功。然后在Explorer视图中右键点击hello_world项目选择Create Boot Image。这时会打开一个Create Boot Image的向导窗口。你会看到窗口中间Boot image partitions列表里Vitis已经非常智能地自动添加了两个文件fsbl.elf和hello_world.elf。fsbl.elf是Vitis在创建平台项目时自动为我们生成的第一阶段引导程序它的作用就是初始化PS加载FPGA比特流然后跳转到我们的应用程序。我们只需要手动把第三个“成员”——硬件比特流文件加进去。点击列表下方的“”号Add在弹出的文件浏览器中找到你的Vivado工程目录进入hello_world_hw.runs/impl_1文件夹选择后缀为.bit的比特流文件例如design_1_wrapper.bit并打开。添加后关键的一步是调整顺序。根据ZYNQ的启动要求分区顺序必须是fsbl.elf-.bit-应用.elf。用鼠标选中刚才添加的.bit文件点击列表右侧的向上箭头按钮将它移动到fsbl.elf和hello_world.elf之间。最终顺序应该是fsbl.elf你的硬件比特流文件.bithello_world.elf顺序调整好后在窗口下方的Output path里选择BOOT.BIN文件的生成位置。我一般就放在工程目录下方便查找。最后点击Create Image按钮。稍等片刻Vitis就会在指定路径下生成一个BOOT.BIN文件。把这个BOOT.BIN文件注意文件名必须全大写拷贝到一张格式化为FAT32的SD卡的根目录。将SD卡插入开发板的卡槽把开发板的启动模式跳线设置为从SD卡启动具体设置方式请查阅你的开发板手册。给开发板上电如果一切顺利你应该能看到FPGA的DONE灯亮起表示比特流加载成功同时通过串口终端又能看到熟悉的“Hello World”输出这意味着你的系统已经可以完全脱离JTAG独立启动了。6. 进阶固化程序到Flash让程序从SD卡启动已经很实用了但有时候我们希望程序能更永久地保存在板载的Flash芯片如QSPI Flash里做到真正的上电即运行连SD卡都省了。Vitis也提供了Flash编程的功能。首先你需要知道你的开发板用的是哪种Flash以及它在硬件设计中的连接方式。通常在Vivado配置ZYNQ IP核时在PS-PL Configuration - PS Peripheral - QSPI下可以启用并配置Flash。确保你的硬件设计包含了正确的Flash控制器支持并重新生成比特流和导出.xsa文件。在Vitis中生成BOOT.BIN的步骤和之前完全一样。得到BOOT.BIN后我们将其烧写到Flash。在Explorer中右键点击hello_world平台项目注意是平台项目不是应用项目选择Program Flash。在弹出的Program Flash对话框中需要添加两个文件Boot image (BOOT.BIN)选择我们刚才生成的那个BOOT.BIN文件。FSBL executable (FSBL.ELF)这个文件通常位于你的Vitis工作空间下的hello_world_platform/export/hello_world_platform/sw/hello_world_platform/boot/目录里名字就是fsbl.elf。在Flash Type中选择你的Flash型号例如qspi-x4-single或parallel其他选项可以保持默认。连接好JTAG和开发板电源点击Program按钮。烧写过程会在Console窗口显示进度耗时可能几分钟取决于Flash大小和文件尺寸耐心等待直到出现Flash Operation Completed Successfully的提示。烧写完成后将开发板的启动模式跳线设置为从Flash启动通常是MIO[5:0]001010或类似配置具体看板子手册。断开JTAG给开发板重新上电。此时处理器会直接从Flash中读取BOOT.BIN并启动你同样能在串口看到“Hello World”并且FPGA的DONE灯也会亮起。至此你已经完成了从开发到产品级固化的全流程。7. 常见问题与避坑指南走完整个流程你可能会遇到一些小问题这里我总结几个我踩过的坑和解决办法帮你提前避雷。问题一Vitis导入.xsa文件失败或识别不到PS。这通常是因为Vivado导出的.xsa文件路径包含中文或特殊字符或者Vivado工程本身有错误。确保Vivado工程路径是全英文的并且在导出硬件时勾选了Include bitstream。还有一个常见原因是Vitis的版本必须和生成.xsa文件的Vivado版本严格一致用2023.2的Vitis去开2022.1的.xsa文件很可能出问题。问题二串口终端看不到打印信息。首先检查硬件连接确认USB线插的是板子的UART口而非JTAG口有些板子这两个口是分开的。其次检查串口终端参数波特率是否设置为115200这是ZYNQ FSBL和大多数例程的默认值数据位8停止位1无奇偶校验。最后检查代码里的打印函数在Vitis平台中使用print或xil_printf而不是标准的printf来输出可以避免一些初始化问题并且确保字符串末尾加了\n\r换行和回车。问题三生成BOOT.BIN后SD卡启动失败DONE灯不亮。这是最典型的问题。请严格按照顺序检查1) BOOT.BIN文件是否真的包含了三个分区FSBL, BIT, ELF可以用Vitis的Create Boot Image工具重新打开生成的.bif文件查看。2) 分区顺序是否正确必须是FSBL - BIT - APP。3) SD卡是否格式化为FAT32不是exFAT或NTFS4) 开发板的启动模式跳线是否确确实实拨到了SD卡模式很多新手会忽略这一步。5) 硬件比特流对应的芯片型号是否与开发板100%匹配问题四Flash烧写成功但独立启动失败。除了上述SD卡启动的检查项还需要确认1) 在Vivado中是否正确配置并启用了QSPI Flash控制器2) 烧写时选择的Flash Type是否与板载Flash型号一致3) 启动模式跳线是否从SD卡模式改为了Flash启动模式这个跳线设置是很多人的“遗忘点”。关于版本选择我强烈建议初学者直接使用最新的Vivado/Vitis 2023.2。新版本在界面友好度、工具链集成和BUG修复上都有改进网上能找到的教程和资料也越来越多。老版本如2018.3、2020.1虽然稳定但一些新的芯片支持比如Versal和功能可能没有。跟着主流版本走社区遇到问题也更容易找到解决方案。整个流程走下来你会发现Vivado和Vitis的协同虽然步骤不少但逻辑非常清晰Vivado管硬件输出.xsaVitis以.xsa为基石创建平台再开发应用最后打包成启动镜像。多练习几遍把每个环节的作用都想明白你就能举一反三开发更复杂的应用了。记住嵌入式开发就是这样一个不断“设计-实现-调试”的循环动手去做遇到问题就查这才是最快的学习路径。