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

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

3天内不再提示

Vitis里如何创建嵌入式软件工程,并且编译和调试,直到启动

YCqV_FPGA_EETre 来源:FPGA开发圈 2020-04-30 15:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 介绍

Vitis是Xilinx新推出的统一软件平台,可实现在 Xilinx 所有芯片(包括 FPGA、SoC 和 Versal ACAP)上开发嵌入式软件和加速应用。Xilinx主要宣传Vitis可以为异构平台的应用实现加速。其实,Vitis也能完美的支持嵌入式软件开发。下面以MicroZed单板为例,介绍在Vitis里如何创建嵌入式软件工程,并且编译和调试,直到启动。

2. 测试环境

1). Windows 10
2). Vitis 2019.2
3). MicroZed

3. Vivado工程导出XSA文件

在MicroZed 2019.1 BSP下载MicroZed的Petalinux BSP。解压后,使用Vivado 2019.2 打开其中的硬件工程,升级所有IP,然后编译工程。为了测试,也可以在BD设计中,添加AXI timer,AXI BRAM等IP。成功编译工程后,导出硬件设计文件mz_petalinux_wrapper.xsa。在2019.2使用了新的硬件设计文件格式,也就是XSA文件。

3.1. BD设计

也可以不添加AXI timer,AXI BRAM等IP。

3.2. 导出硬件的菜单

3.3. 导出硬件的界面

请指定XSA文件的路径和名字。

3.4. Vivado在TCL Console里关于导出硬件的打印。

write_hw_platform -fixed -force -include_bit -file C:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/mz_petalinux_wrapper.xsa INFO: [Vivado 12-4895] Creating Hardware Platform: C:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/mz_petalinux_wrapper.xsa ... INFO: [Vivado 12-4896] Successfully created Hardware Platform: C:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/mz_petalinux_wrapper.xsa write_hw_platform: Time (s): cpu = 0016 ; elapsed = 0017 . Memory (MB): peak = 1570.996 ; gain = 0.000

4. 创建工程

4.1. 指定workspace目录。

启动Vitis,指定它的workspace目录。

4.2. VitisFile菜单

在Vitis的File菜单里,选择"New --> Application Project"。

4.3. 指定Application工程名

指定Application的工程名,可以使用默认的system工程名。

4.4. Platform页面

点击Next,进入Platform页面。

4.5. 指定XSA文件

在Platform页面,选择右边的“Creae a new platform from hardware(XSA)”, 在点击“+”,指定平台的XSA文件,然后Vitis自动创建platform。

4.6. 创建Domain

点击Next,创建Domain。这时候可以选择处理器、OS、Language。

4.7. 创建工程后的目录结构。

4.8. 执行编译。

创建工程后,执行编译。会先编译FSBL工程,BSP工程,再编译应用程序工程。

Project --> Build Project

1530 **** Build of configuration Debug for project mzed_cpu0_hello **** make all C:/Xilinx/Vitis/2019.2/gnuwin/bin/make --no-print-directory pre-build a9-linaro-pre-build-step C:/Xilinx/Vitis/2019.2/gnuwin/bin/make --no-print-directory main-build Building file: ../src/helloworld.c Invoking: ARM v7 gcc compiler arm-none-eabi-gcc -Wall -O0 -g3 -c -fmessage-length=0 -MT"src/helloworld.o" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -IC:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/microzed_petalinux_wrapper/export/microzed_petalinux_wrapper/sw/microzed_petalinux_wrapper/standalone_domain/bspinclude/include -MMD -MP -MF"src/helloworld.d" -MT"src/helloworld.o" -o "src/helloworld.o" "../src/helloworld.c" Finished building: ../src/helloworld.c Building file: ../src/platform.c Invoking: ARM v7 gcc compiler arm-none-eabi-gcc -Wall -O0 -g3 -c -fmessage-length=0 -MT"src/platform.o" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -IC:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/microzed_petalinux_wrapper/export/microzed_petalinux_wrapper/sw/microzed_petalinux_wrapper/standalone_domain/bspinclude/include -MMD -MP -MF"src/platform.d" -MT"src/platform.o" -o "src/platform.o" "../src/platform.c" Finished building: ../src/platform.c Building target: mzed_cpu0_hello.elf Invoking: ARM v7 gcc linker arm-none-eabi-gcc -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec -Wl,-T -Wl,../src/lscript.ld -LC:/prj/zynq7000/microzed/v192/MZ7010_FMCCC_2019_1/mz_vitis_sw/microzed_petalinux_wrapper/export/microzed_petalinux_wrapper/sw/microzed_petalinux_wrapper/standalone_domain/bsplib/lib -o "mzed_cpu0_hello.elf" ./src/helloworld.o ./src/platform.o -Wl,--start-group,-lxil,-lgcc,-lc,--end-group Finished building target: mzed_cpu0_hello.elf Invoking: ARM v7 Print Size arm-none-eabi-size mzed_cpu0_hello.elf |tee "mzed_cpu0_hello.elf.size" text data bss dec hexfilename 19064 1144 22568 42776 a718mzed_cpu0_hello.elf Finished building: mzed_cpu0_hello.elf.size 1543 Build Finished (took 12s.869ms)

编译后应用程序和Domain目录结构

编译后FSBL目录结构

5. 调试工程

5.1. 调试配置界面

先点击想调试的工程,再点击工具条调试图标旁边的三角形,选择"Debug Configurations",

得到调试配置界面。

5.2. 自动创建调试配置

双击System Project,Vitis自动创建了调试配置。

5.3. 检查调试配置的Target Setup。

5.4. 开始调试

点击Debug后,会开始调试。由于有FPGA设计,先下载FPGA。

5.5. main函数入口

调试器下载所有代码后,在main函数入口处停下,等待程序员调试。

6. 调试工程

6.1. FreeRTOS

之前只是简单的Hello world工程。下面创建更复杂的FreeRTOS LWIP TCP iPerf server. 在Domain界面,为OS选择FreeRTOS。

6.2. LWIP TCP iPerf server

在Templates界面,为Template选择FreeRTOS LWIP TCP Perf server。

6.3. 调试LWIP TCP iPerf server

同样的启动调试,也在main函数入口处停下,直接选择连续运行。

6.4. 连续运行

连续运行后,单板串口打印。

-----lwIP Socket Mode TCP Server Application------ Start PHY autonegotiation Waiting for PHY to complete autonegotiation. autonegotiation complete link speed for phy address 0: 100 ERROR: DHCP request timed out Configuring default IP 192.168.1.10 Board IP: 192.168.1.10 Netmask : 255.255.255.0 Gateway : 192.168.1.1 TCP server listening on port 5001 On Host: Run $iperf -c 192.168.1.10 -i 5 -t 300 -w 2M

6.5. 电脑Ping测试

设置电脑IP地址,再做Ping测试,检查单板网络是否正常。

C: oolsiperf-2.0.5-2-win32>ping 192.168.1.10 Pinging 192.168.1.10 with 32 bytes of data: Reply from 192.168.1.10: bytes=32 time=1ms TTL=255 Reply from 192.168.1.10: bytes=32 time

6.6. 电脑iperf测试

在电脑启动iperf测试。

C: oolsiperf-2.0.5-2-win32>iperf -c 192.168.1.10 -i 5 -t 20 -w 2M ------------------------------------------------------------ Client connecting to 192.168.1.10, TCP port 5001 TCP window size: 2.00 MByte ------------------------------------------------------------ [ 3] local 192.168.1.100 port 63484 connected with 192.168.1.10 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 5.0 sec 55.4 MBytes 92.9 Mbits/sec [ 3] 5.0-10.0 sec 53.4 MBytes 89.5 Mbits/sec [ 3] 10.0-15.0 sec 53.5 MBytes 89.8 Mbits/sec [ 3] 15.0-20.0 sec 53.4 MBytes 89.5 Mbits/sec [ 3] 0.0-20.0 sec 216 MBytes 90.4 Mbits/sec

6.7. 单板iperf测试串口打印

在电脑启动启动iperf测试后,单板串口打印。

[ 1] local 192.168.1.10 port 5001 connected with 192.168.1.100 port 5001 [ ID] Interval Transfer Bandwidth [ 1] 0.0- 5.0 sec 53.2 MBytes 89.3 Mbits/sec [ 1] 5.0-10.0 sec 53.4 MBytes 89.6 Mbits/sec [ 1] 10.0-15.0 sec 53.4 MBytes 89.6 Mbits/sec [ 1] 15.0-20.0 sec 53.4 MBytes 89.6 Mbits/sec [ 1] 0.0-20.2 sec 216 MBytes 89.6 Mbits/sec TCP test passed Successfully

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

    关注

    4

    文章

    247

    浏览量

    27822
  • 硬件设计
    +关注

    关注

    18

    文章

    438

    浏览量

    45537
  • MicroZed
    +关注

    关注

    0

    文章

    9

    浏览量

    5390

原文标题:【干货分享】以MicroZed单板为例,Vitis嵌入式软件开发极速入门

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下
    发表于 11-28 07:48

    RT-Thread 2025嵌入式软件大赛重磅来袭

    为激发开发者潜能、促进技术交流,RT-Thread 正式启动2025年度嵌入式软件大赛! 本赛道为嵌入式软件大赛,聚焦
    的头像 发表于 09-22 16:40 3251次阅读
    RT-Thread 2025<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>大赛重磅来袭

    RT-Thread 2025嵌入式软件大赛重磅来袭

    为激发开发者潜能、促进技术交流,RT-Thread正式启动2025年度嵌入式软件大赛!本赛道为嵌入式软件大赛,聚焦
    的头像 发表于 09-20 10:06 1290次阅读
    RT-Thread 2025<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>大赛重磅来袭

    飞凌嵌入式2026届校园招聘正式启动

    飞凌嵌入式2026届校园招聘正式启动
    的头像 发表于 09-19 08:03 617次阅读
    飞凌<b class='flag-5'>嵌入式</b>2026届校园招聘正式<b class='flag-5'>启动</b>!

    硬件工程师和嵌入式软件哪个更有前途?

    不少人琢磨硬件工程师和嵌入式软件到底哪个更有前途,其实从实际职场情况和成长路子看,差别还挺清楚的。先说说天花板这事,一般来讲,硬件工程师的职业天花板还真比
    的头像 发表于 09-10 10:43 790次阅读

    嵌入式工程师为什么要学QT?

    、Clang、MSVC等,并提供了跨平台的编译和发布流程。 强大的集成开发环境(IDE) Qt Creator提供了代码编辑、调试、构建和发布功能,极大地提升了开发效率。 因此,Qt是嵌入式
    发表于 08-14 15:15

    嵌入式软件开发常用的软件有哪些?

    编译调试嵌入式系统软件。它提供了一个集成的开发环境(IDE),包括代码编辑器、编译器、调试
    发表于 07-03 17:06

    如何使用AMD Vitis HLS创建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数据写回存储器。接着会在 AMD Vivado Design Suite 设计中使用此 HLS IP,并使用
    的头像 发表于 06-13 09:50 1285次阅读
    如何使用AMD <b class='flag-5'>Vitis</b> HLS<b class='flag-5'>创建</b>HLS IP

    如何成为一名嵌入式软件工程师?

    软件工程师保持持续学习的态度,紧跟技术发展趋势;同时,注重实践经验的积累,积极参与实际项目的开发和调试工作。 此外,还应不断提升自己的沟通能力和团队协作能力,以适应日益复杂的工作环境。 嵌入式
    发表于 04-15 14:37

    想在嵌入式领域高薪就业?先迈过这些人才门槛!

    嵌入式开发的世界,如今正经历着一场变革,同时也暴露出诸多问题。现在,会编写嵌入式程序的人随处可见,树莓派、Arduino 等开发板的出现,让嵌入式编程变得轻而易举,就连软件工程师也能轻
    的头像 发表于 03-20 10:42 770次阅读
    想在<b class='flag-5'>嵌入式</b>领域高薪就业?先迈过这些人才门槛!

    嵌入式软件工程师就业好不好?

    ,市场需求大,所以其薪资待遇普遍较高。一般来说,在北京、上海、深圳等发达地区,嵌入式软件工程师的薪资水平会更高。并且,随着技术水平的提高和经验的积累,薪资待遇还会不断提升。 行业发展潜力巨大 从长远来看
    发表于 02-20 10:19

    如何成为嵌入式开发工程师?

    如何成为嵌入式开发工程师? 成为嵌入式开发工程师通常需要掌握一系列技能和知识,并且在实践中不断积累经验。以下是一些基本步骤和建议: 1. 基
    发表于 02-19 10:39

    如何提高嵌入式代码质量?

    并提升代码质量。 遵循良好的软件工程实践 良好的软件工程实践是提高代码质量的基础,特别是在嵌入式系统中更为重要。以下是几个关键点: 1. 模块化设计:将系统分解为独立的模块,每个模块负责一个特定
    发表于 01-15 10:48

    使用AMD Vitis进行嵌入式设计开发用户指南

    Zynq MPSoC 和 AMD Alveo 数据中心加速器卡)为目标的异构嵌入式应用。 Vitis 工具包括: C++ 编译器、库和本征函数,适用于 AI 引擎和可编程逻辑( PL ) 适用于 Arm
    的头像 发表于 01-08 09:33 2166次阅读
    使用AMD <b class='flag-5'>Vitis</b>进行<b class='flag-5'>嵌入式</b>设计开发用户指南

    嵌入式工程师常用的开发工具有哪些?

    项目管理和调试。IAR Embedded Workbench 也是广受欢迎的 IDE,具有出色的优化能力和调试工具,能够帮助工程师快速开发出高质量的嵌入式
    发表于 12-20 15:29