在 Vitis 流程中,編譯的目標(biāo)分為軟件仿真(software emultion),硬件仿真(hardware emulation)以及硬件(hardware)。
軟件仿真是通過用戶創(chuàng)建的自定義主機(jī)代碼測試系統(tǒng)的第一步,主要目標(biāo)是確保主機(jī)程序和內(nèi)核的功能正確性。其中,內(nèi)核代碼始終在本機(jī)編譯和運(yùn)行。應(yīng)用程序代碼根據(jù)平臺的不同,編譯方式為:
? 在 x86 處理器上本地編譯和運(yùn)行(數(shù)據(jù)中心平臺)
? 交叉編譯到 Arm 處理器并在仿真器中運(yùn)行(嵌入式平臺)
軟件仿真通常用于改進(jìn)算法、調(diào)試功能問題,并讓開發(fā)人員快速迭代代碼以進(jìn)行改進(jìn)。軟件仿真是一個抽象模型,不使用任何 petalinux 驅(qū)動程序,如 Zynq OpenCL (ZOCL)、中斷控制器或設(shè)備樹二進(jìn)制文件 (DTB)。 對于嵌入式平臺來說,軟件仿真創(chuàng)建 sd_card.img、在完整 QEMU 機(jī)器上啟動 petalinux 的開銷太重。
為了避免這部分開銷,提高軟件仿真運(yùn)行效率,我們可以使用 x86 GCC(而不是 ARM-GCC)編譯相同的嵌入式應(yīng)用程序,從而實(shí)現(xiàn)在 x86 處理器上跑嵌入式應(yīng)用程序的軟件仿真。對于這種方法,用戶不需要提供諸如 sysroot、rootfs 和 sd_card Image 等字段,從而能啟用更快的軟件仿真。
總的來說,與 QEMU 做軟件仿真相比,編譯過程中涉及到以下改動:
用戶需要在 host 安裝 XRT,不需要 Petalinux/SYSROOT。
關(guān)于 XRT 的安裝指導(dǎo),請參考 UG1393 的相關(guān)章節(jié)內(nèi)容
用 x86 的 GCC 編譯器而不是 ARM GCC 來編譯 host 代碼。
在 2023.1 Vitis 版本中,x86 編譯需要 GCC 8.3 或更高版本。
v++ -package 以及啟動仿真的流程不盡相同。
下表描述了在 QEMU 下和在 x86 上運(yùn)行軟件仿真時,構(gòu)建 PS 應(yīng)用程序和.xclbin 的差異。
對于包含 AIE 的設(shè)計,基于上表的選項(xiàng)有所調(diào)整,請參考以下表格:
以上對比適用于 Vitis 2023.1,不同版本的命令行選項(xiàng)可能會有改動。
比如,2022.1 里的 v++ package 選項(xiàng)--package.ps_on_x86 在新版本替換成了—package.emu_ps x86/qemu。
對于嵌入式應(yīng)用程序運(yùn)行 x86 編譯也有局限性,主要表現(xiàn)為主機(jī)代碼不支持 ARM-only 的數(shù)據(jù)類型或庫。
以下是使用 _fp16數(shù)據(jù)類型的主機(jī)代碼示例,該數(shù)據(jù)類型僅在基于 ARM-GCC 的編譯器中受支持,x86 編譯器在編譯相同的主機(jī)代碼時會出錯。
在這種情況下,建議使用 PS 的 QEMU 模型,并使用基于 ARM-GCC 的編譯器來編譯 PS 應(yīng)用程序。
另外,目前并不支持從 Vitis GUI 啟動 PS on x86 的仿真模式,需要從命令行完成。
GitHub 上有使用此功能運(yùn)行軟件仿真的示例供參考:
https://github.com/Xilinx/Vitis_Accel_Examples/tree/2023.1/emulation/aie_adder_hybrid_swemu
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
20067瀏覽量
242658 -
嵌入式
+關(guān)注
關(guān)注
5174文章
19967瀏覽量
324300 -
Xilinx
+關(guān)注
關(guān)注
73文章
2190瀏覽量
128753 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3339瀏覽量
59697 -
Vitis
+關(guān)注
關(guān)注
0文章
151瀏覽量
8192
原文標(biāo)題:在 X86 處理器上跑嵌入式應(yīng)用程序的 Software Emulation
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
國產(chǎn)X86處理器與國際CPU有多大差距?有人做了個測試
AMD x86核心SoC搶攻嵌入式應(yīng)用市場
arm還是x86?未來在工業(yè)SBC數(shù)字誰可以脫穎而出
適用于x86架構(gòu)的快速啟動步驟是什么?
μCOS-III怎么在Cortex-M3處理器上移植?
基于嵌入式X86的數(shù)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)
英特爾:Core Duo進(jìn)軍x86嵌入式平臺市場
獲Zen架構(gòu)授權(quán),國產(chǎn)X86處理器即將問世
全球首款集成AI協(xié)處理器的x86處理器實(shí)照公布 采用LGA觸點(diǎn)式封裝方式
什么是x86嵌入式工控主板,x86嵌入式主板該如何選擇
x86處理器如何處理MSI-X中斷請求

評論