衡阳派盒市场营销有限公司

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

    文章

    240

    瀏覽量

    26729
  • MicroZed
    +關注

    關注

    0

    文章

    9

    瀏覽量

    5248
收藏 人收藏

    評論

    相關推薦

    嵌入式機器學習的應用特性與軟件開發環境

    設備和智能傳感器)上,這些設備通常具有有限的計算能力、存儲空間和功耗。本文將您介紹嵌入式機器學習的應用特性,以及常見的機器學習開發軟件與開發環境。 嵌入式機器學習的應用特性與優勢 由于嵌入式
    的頭像 發表于 01-25 17:05 ?173次閱讀
    <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 ?641次閱讀
    使用AMD <b class='flag-5'>Vitis</b>進行<b class='flag-5'>嵌入式</b>設計開發用戶指南

    嵌入式學習建議

    的平衡,要在理解軟件工程基本原理基礎上理解硬件構件與軟件構件等基本概念。 以上建議,僅供初學者參考。當然,以上只是基礎階段的學習建議。要成為良好的嵌入式系統設計師,還需要在實際項目中鍛煉,并不斷學習與積累經驗。
    發表于 10-22 11:41

    名單公布!【書籍評測活動NO.42】 嵌入式Hypervisor:架構、原理與應用

    ,以及PRTOS社區的愿景等內容。 作者簡介 孫陳偉 某大廠資深編譯器團隊編譯器開發工程師,曾任華為技術軟件公司高級軟件工程師,梅特勒-托利多儀器儀表(中國)有限公司嵌入式
    發表于 08-23 15:17

    嵌入式軟件開發與AI整合

    嵌入式軟件開發與AI整合是當前技術發展的重要趨勢之一。隨著人工智能技術的快速發展,嵌入式系統越來越多地集成了AI算法,以實現更復雜的智能功能。以下是關于嵌入式
    的頭像 發表于 07-31 09:25 ?831次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發與AI整合

    嵌入式軟件開發招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 編輯 尋求:嵌入式軟件工程師 要求:3年以上開發經驗,音視頻領域應用層開發 地址:北京市昌平區 郵箱:1017933921@qq.com 歡迎廣大感興趣的朋友約聊。
    發表于 07-26 13:44

    嵌入式開發者的未來

    和測試這些產品的硬件和軟件。汽車行業:現代汽車包含大量的嵌入式系統,例如車載娛樂系統、發動機控制單元、自動駕駛系統等。在這個領域,工程師可以從事嵌入式
    的頭像 發表于 06-23 08:10 ?449次閱讀
    <b class='flag-5'>嵌入式</b>開發者的未來

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰的領域,如何提升自己顯得非常重要,它決定了你未來的發展方向和
    發表于 06-12 11:20

    從事嵌入式方向,一定要軟硬件通吃?

    嵌入式系統開發領域,軟件和硬件的界限常常模糊不清。一個常見的問題是,嵌入式軟件工程師是否需要了解硬件。本文將探討這一問題的重要性,并分析嵌入式
    的頭像 發表于 06-05 08:10 ?1284次閱讀
    從事<b class='flag-5'>嵌入式</b>方向,一定要軟硬件通吃?

    嵌入式軟件工程師和硬件工程師的區別?

    部分,如微處理器、傳感器、執行器等。他們的任務是創建硬件平臺,以滿足軟件工程師的需求,提供必要的硬件功能和性能。 定義和工作職責 嵌入式硬件工程師的主要職責是設計、制造、測試和部署
    發表于 05-16 11:00

    AMD Vitis? Embedded嵌入式軟件開發套件的功能和特性概述

    Vitis Embedded 是一款獨立的嵌入式軟件開發套件,主要用于為 AMD 自適應 SoC 和 FPGA 中的 AMD 嵌入式處理子系統(基于 ARM 的子系統和 AMD Mic
    的頭像 發表于 04-08 10:50 ?1014次閱讀
    AMD <b class='flag-5'>Vitis</b>? Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發套件的功能和特性概述

    Vitis2023.2使用之—— classic Vitis IDE

    Vitis 已經更新到2023.2了,新版本相較于舊版本更新了嵌入式平臺,新版平臺增加了Versal? AI 引擎 DSP 設計的增強功能,全新的獨立 Vitis 嵌入式
    發表于 03-24 16:15

    嵌入式軟件設計的原則分享

    嵌入式軟件開發如果具有更好的閱讀性、擴展性以及維護性,就需要考慮很多因素。今天給大家分享幾個嵌入式軟件設計的原則。
    發表于 02-25 10:54 ?750次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>設計的原則分享

    嵌入式軟件開發應該掌握哪些知識?

    嵌入式軟件開發應該掌握哪些知識? 一、 什么是嵌入式軟件嵌入式軟件通常是指
    發表于 02-19 11:23
    累积式百家乐官网的玩法技巧和规则| 百家乐官网龙虎斗扎金花| 博狗百家乐的玩法技巧和规则| 百家乐官网推筒子| 大发888官| 什么百家乐平注法| 百家乐官网三国| 大玩家娱乐| 十三张百家乐的玩法技巧和规则 | 蓝盾百家乐官网赌城| 赌球心得| 玩百家乐上高尔夫娱乐场| 百家乐官网食杂店| 凯里市| 大发888博彩官方下载| 百家乐棋牌游| 网上百家乐娱乐场| 百家乐官网娱乐备用网址| 嫩江县| 棋牌游戏大全| 威尼斯人娱乐客户端| 宝格丽百家乐娱乐城| 百家乐官网讯特| 百家乐官网视频打牌| 线上龙虎| 百家乐电子| 视频百家乐游戏| 百家乐官网社区| 百家乐官网赌局| 澳门百家乐官网备用网址| 平顶山市| 大发888大发888体育| 利都百家乐国际赌场娱乐网规则 | 香港六合彩官方网| 德州扑克 比赛| 百家乐出牌规| 网上百家乐如何打水| 24山之巽山乾向水法及兼家分针| 百家乐官网玩法最多的娱乐城 | 德州扑克发牌视频| 大发888游戏破解软件|