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

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

3天内不再提示

Vitis里如何创建嵌入式软件工程

454398 来源:赛灵思中文社区论坛 作者:赛灵思中文社区论 2020-11-04 12:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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 = 00:00:16 ; elapsed = 00:00:17 . 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

15:53:30 **** 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	    hex	filename
  19064	   1144	  22568	  42776	   a718	mzed_cpu0_hello.elf
Finished building: mzed_cpu0_hello.elf.size

15:53:43 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:/tools/iperf-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:/tools/iperf-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
编辑:hfy

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

    关注

    4

    文章

    252

    浏览量

    28165
  • MicroZed
    +关注

    关注

    0

    文章

    9

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是BSP工程

    一、嵌入式系统 要明白什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)说起。维基百科上对嵌入式
    发表于 01-13 06:54

    系统嵌入式的学习路线

    ,供各位嵌入式初学者参考,希望对大家有所帮助。嵌入式工程师需要掌握的内容非常广泛,主要包括嵌入式软件
    发表于 12-16 07:49

    ARM嵌入式这样学

    , UCOS 等等,一个操作系统移植到里面去,跑起来,然后就自己利用操作系统的接口写一些应用软件,就可以直接控制其强大的外设了。当然了,这中间还有另外一种工程师在工作,就是嵌入式驱动工程
    发表于 12-04 07:48

    做医疗嵌入式软件研发以后好跳槽吗?

    做医疗嵌入式软件研发,以后想跳槽一点儿也不难。别看医疗行业门槛高、规矩多,你手里攒下的那套本事,到哪儿都吃得开。嵌入式这东西,甭管在哪个行当折腾,说到底六个基本部分跑不掉:
    的头像 发表于 12-03 11:04 944次阅读
    做医疗<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>研发以后好跳槽吗?

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

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

    为什么嵌入式驱动开发工程师可以拿高薪

    嵌入式驱动开发工程师能拿到高薪,核心在于这个岗位刚好踩中了行业刚需、技术壁垒高、人才缺口大这三个关键节点,而且这种需求还在随着智能硬件的普及持续扩大。首先得明确,嵌入式驱动是硬件和软件
    的头像 发表于 10-30 16:37 997次阅读
    为什么<b class='flag-5'>嵌入式</b>驱动开发<b class='flag-5'>工程</b>师可以拿高薪

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

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

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

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

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

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

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。 2025.1 版嵌入式软件
    的头像 发表于 08-20 09:15 4219次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1438次阅读

    河北软件职业技术学院走访飞凌嵌入式,共同探讨产教融合新模式

    河北软件职业技术学院软件工程系主任陈辉率队走访保定飞凌嵌入式技术有限公司,并与旗下教育品牌ElfBoard就产教融合、构建协同育人机制进行了深入探讨。
    的头像 发表于 07-09 09:00 1329次阅读
    河北<b class='flag-5'>软件</b>职业技术学院走访飞凌<b class='flag-5'>嵌入式</b>,共同探讨产教融合新模式

    河北软件职业技术学院走访飞凌嵌入式,共同探讨产教融合新模式

    6月12日,河北软件职业技术学院软件工程系主任陈辉率队走访保定飞凌嵌入式技术有限公司,并与旗下教育品牌ElfBoard就产教融合、构建协同育人机制进行了深入探讨。双方旨在通过深化校企合作,共同探索
    的头像 发表于 06-16 11:00 1194次阅读
    河北<b class='flag-5'>软件</b>职业技术学院走访飞凌<b class='flag-5'>嵌入式</b>,共同探讨产教融合新模式

    如何使用AMD Vitis HLS创建HLS IP

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

    嵌入式软件行业增长驱动因素

    嵌入式软件在物联网应用中至关重要,因为它管理设备操作、控制传感器、支持连接并确保数据安全。例如,在智能家居中,恒温器、安全摄像头和灯光等设备使用嵌入式系统独立运行,并通过云平台或本地网络与其他智能
    的头像 发表于 05-09 11:26 937次阅读