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

    文章

    247

    浏览量

    27829
  • MicroZed
    +关注

    关注

    0

    文章

    9

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ARM嵌入式这样学

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    如何成为一名嵌入式软件工程师? 01明确岗位的角色与定位 嵌入式软件工程师主要负责开发运行在特定硬件平台上的软件,这些
    发表于 04-15 14:37

    嵌入式开发:高门槛的系统性工程与 996 的行业困局

    嵌入式开发的门槛,往往被培训机构和表象所掩盖。许多人误以为 “用 C 语言写个跑在 ARM 上的程序” 就是嵌入式,实则连皮毛都未触及。真正的嵌入式开发是硬件与软件深度融合的系统性
    的头像 发表于 04-09 11:06 687次阅读
    <b class='flag-5'>嵌入式</b>开发:高门槛的系统性<b class='flag-5'>工程</b>与 996 的行业困局

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

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

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

    嵌入式软件工程师就业好不好?会不会越老越吃香?今天一起来看看。 首先看下市场需求。 随着物联网、人工智能、5G等前沿技术的快速发展,嵌入式系统的应用领域不断扩大,从智能家居、汽车电子到工业自动化
    发表于 02-20 10:19

    嵌入式机器学习的应用特性与软件开发环境

    设备和智能传感器)上,这些设备通常具有有限的计算能力、存储空间和功耗。本文将您介绍嵌入式机器学习的应用特性,以及常见的机器学习开发软件与开发环境。 嵌入式机器学习的应用特性与优势 由于嵌入式
    的头像 发表于 01-25 17:05 1223次阅读
    <b class='flag-5'>嵌入式</b>机器学习的应用特性与<b class='flag-5'>软件</b>开发环境

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

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

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

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