本篇博文涵蓋了有關(guān)使用 PetaLinux 命令行來(lái)對(duì) Versal? ACAP 的 PetaLinux BSP 運(yùn)行 QEMU 的信息,并演示了 QEMU 支持的部分網(wǎng)絡(luò)選項(xiàng)。
QEMU (Quick EMUlator) 是一種開源跨平臺(tái)系統(tǒng)仿真器。它是一個(gè)可執(zhí)行程序,可在 x86 Linux 或 Windows 操作系統(tǒng)上運(yùn)行。
QEMU 可對(duì)整個(gè)系統(tǒng)進(jìn)行仿真(通常它被稱為訪客),如賽靈思 ZCU102 或 VCK190 開發(fā)板。
仿真包括處理器、外設(shè)以及開發(fā)板上的其它硬件,支持您在虛擬化硬件上啟動(dòng)操作系統(tǒng)或其它應(yīng)用。
要在虛擬化硬件中開發(fā)此類應(yīng)用,只需使用物理硬件上所用的相同工具鏈即可。
QEMU 也可通過(guò)諸如 CAN、以太網(wǎng)和 USB 等接口來(lái)與主機(jī)進(jìn)行交互,支持在訪客機(jī)器中實(shí)時(shí)使用來(lái)自主機(jī)的現(xiàn)實(shí)世界數(shù)據(jù)。
賽靈思 QEMU 隨 PetaLinux 和 Yocto 工具鏈一起分發(fā),并與 SDK/Vitis 集成。
使用 PetaLinux 啟動(dòng) QEMU
請(qǐng)確保根據(jù) PetaLinux 用戶指南 (UG1144) 中所述,安裝在 Linux 主機(jī)上構(gòu)建 PetaLinux 工程所需的所有 Linux 程序包。請(qǐng)參閱此文檔的“Installation Steps”(安裝步驟)部分,其中提供了所有必需的程序包,因此尤為重要。
此處所示的演示使用的是預(yù)構(gòu)建的鏡像,無(wú)須再構(gòu)建 PetaLinux 工程。
基于 VCK190 BSP 創(chuàng)建工程的步驟
$source/settings.sh
注:對(duì)于基于 bash 的 shell,請(qǐng)選擇settings.sh,對(duì)于基于 C 語(yǔ)言的 shell,請(qǐng)選擇 settings.csh。
$petalinux-create-tproject-sxilinx-vck190-v2020.2-final.bsp-nxilinx-qemu-first-run $cdxilinx-qemu-first-run $petalinux-build(如使用預(yù)構(gòu)建鏡像,則此步驟為可選)
下列步驟詳述了如何使用 PetaLinux BSP 工程隨附的 QEMU 預(yù)構(gòu)建二進(jìn)制文件來(lái)啟動(dòng) VCK190 平臺(tái)。
我們將使用下列命令隨 U-Boot 和 Linux 內(nèi)核一并啟動(dòng) QEMU。
使用 QEMU 啟動(dòng) U-boot:
$petalinux-boot--qemu--prebuilt2
使用 QEMU 啟動(dòng)內(nèi)核:
$petalinux-boot--qemu--prebuilt3
如果要在運(yùn)行 petalinux-build 后啟動(dòng)構(gòu)建的鏡像,則所用 QEMU 命令行與此處所示不同,應(yīng)遵循下述步驟進(jìn)行操作:
構(gòu)建 PetaLinux BSP 工程后,下一步是使用命令行生成 BOOT.BIN 二進(jìn)制文件:
$petalinux-package--boot--plm--psmfw--uboot--dtb--force
QEMU 啟動(dòng)直至完成 U-Boot 啟動(dòng)為止:
$petalinux-boot--qemu--uboot
QEMU 啟動(dòng)直至完成 Linux 內(nèi)核啟動(dòng)為止:
$petalinux-boot--qemu--kernel
要退出仿真,請(qǐng)按 Ctrl+A,然后按 X。
下一節(jié)將側(cè)重于講解賽靈思 QEMU 所提供的基本網(wǎng)絡(luò)功能及其測(cè)試方式。
QEMU 網(wǎng)絡(luò)選項(xiàng)
QEMU 可對(duì)小型子網(wǎng)(或 LAN)進(jìn)行仿真,包括 DHCP 服務(wù)器、網(wǎng)關(guān)和 DNS 服務(wù)器;即訪問(wèn)互聯(lián)網(wǎng)所需的所有一切均可仿真。
啟動(dòng) QEMU 并登錄系統(tǒng)。使用 ifconfig 實(shí)用工具來(lái)將網(wǎng)絡(luò)設(shè)置檢出。
結(jié)果如下:
root@xilinx-vck190-2020_2:~#ifconfig eth0Linkencap:EthernetHWaddr00:0A:35:00:22:01 inetaddr:10.0.2.15Bcast:10.0.2.255Mask:255.255.255.0 inet6addr:fe80::20a:35ff:fe00:2201/64Scope:Link UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1 RXpackets:2errors:0dropped:0overruns:0frame:0 TXpackets:25errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:1000 RXbytes:1152(1.1KiB)TXbytes:4732(4.6KiB) Interrupt:30 loLinkencap:LocalLoopback inetaddr:127.0.0.1Mask:255.0.0.0 inet6addr:::1/128Scope:Host UPLOOPBACKRUNNINGMTU:65536Metric:1 RXpackets:0errors:0dropped:0overruns:0frame:0 TXpackets:0errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:1000 RXbytes:0(0.0B)TXbytes:0(0.0B)
此處 eth0 是 PS GEM 以太網(wǎng)的接口。通過(guò) RX 和 TX 字節(jié)計(jì)數(shù)可見(jiàn),部分網(wǎng)絡(luò)流量已累計(jì)。這可能是由于啟動(dòng)期間發(fā)生的 DHCP 采集所導(dǎo)致的。
以下列出了部分 QEMU 網(wǎng)絡(luò)功能,并簡(jiǎn)要解釋了其測(cè)試功能。
1. 測(cè)試網(wǎng)絡(luò):
我們可以正常使用此網(wǎng)絡(luò)連接,與連接到主機(jī)網(wǎng)絡(luò)時(shí)幾乎相同。
例如,您可以從賽靈思 Github 倉(cāng)庫(kù)下載文件。
在 QEMU 上已啟動(dòng)的 Linux 內(nèi),輸入以下命令:
root@xilinx-vck190-2020_2:~#wgethttps://github.com/Xilinx/qemu-devicetrees/archive/master.zip
輸出應(yīng)如下所示:
Connectingtocodeload.github.com(192.30.255.120:443) master.zip100%|**********************************************************|133k0:00:00ETA
這是從賽靈思公共 Github 倉(cāng)庫(kù)檢索得到的 DTS 工程的源代碼 tarball。您可使用 unzip 命令解壓此文件。
注:從 QEMU 去 ping 主機(jī)是無(wú)效的。
2. QEMU 中的網(wǎng)絡(luò)文件系統(tǒng) (NFS) 裝載
NFS 支持將任一設(shè)備上的某個(gè)目錄與網(wǎng)絡(luò)中其它設(shè)備共享。
預(yù)構(gòu)建的 PetaLinux BSP 具有 rootfs 和 Linux 內(nèi)核,可通過(guò) NFS 選項(xiàng)加載。因此,NFS 無(wú)需進(jìn)行重新構(gòu)建或重新配置。以下是在 Linux 主機(jī)上使用 QEMU 設(shè)置 NFS 的簡(jiǎn)單步驟:
檢查在主機(jī)上是否已安裝 NFS 服務(wù)器
dpkg-l|grepnfs-kernel-server
如未安裝,請(qǐng)使用以下命令進(jìn)行安裝:
sudoapt-getinstallnfs-kernel-server
NFS 服務(wù)器安裝完成后,請(qǐng)?zhí)砑右蚕淼谋镜啬夸洝?/p>
以下示例顯示了如何在 /etc/exports 文件的導(dǎo)出設(shè)置中添加 /home/test_nfs 目錄:
對(duì)于此示例,我們將在 NFS 條目中添加“insecure”選項(xiàng)。
/home/test_nfs*(rw,sync,no_root_squash,insecure)
我們還可以為 NFS 服務(wù)器主機(jī)分配 IP 地址,替代以上命令中的 *。
$sudoexportfs-ra
使用 petalinux-boot 啟動(dòng) QEMU,如下所示:
$petalinux-boot--qemu--prebuilt3
QEMU 啟動(dòng)完成后,登錄訪客機(jī)。使用以下命令將主機(jī) NFS 文件系統(tǒng)裝載到 QEMU 下的 /tmp 目錄中。
$mount-oport=2049,nolock,proto=tcp:/home/test_nfs//tmp
要查找 host_ip,請(qǐng)使用 ifconfig 或類似的 IP 實(shí)用工具。
現(xiàn)在,我們可以在訪客機(jī)的 /tmp 目錄下看到共享的文件。
3. 使用 TFTP 進(jìn)行文件傳輸
QEMU 具有內(nèi)置 TFTP 功能,支持在訪客機(jī)與主機(jī)之間輕松進(jìn)行往來(lái)文件傳輸。
如果原先已運(yùn)行 QEMU,請(qǐng)退出,在主機(jī)終端上,創(chuàng)建一個(gè)新目錄,并在其中包含一個(gè)文件:
$mkdir-p/home/${USER}/qemu-training-tftp$echo"helloQEMUworld">>/home/${USER}/qemu-training-tftp/file.txt
此新目錄中的 file.txt 將包含我們的“hello QEMU world”文本行。
QEMU 需要額外參數(shù)以建立到該目錄的 TFTP 訪問(wèn):-tftp /home/${USER}/qemu-training-tftp
如果使用的是 PetaLinux,請(qǐng)使用修改后的命令重新啟動(dòng) QEMU:
$petalinux-boot--qemu--prebuilt3--qemu-args"-tftp/home/${USER}/qemu-training-tftp"
這將覆蓋新目錄的默認(rèn) TFTP 目錄設(shè)置。
從訪客機(jī)發(fā)起的任何 TFTP 請(qǐng)求都將指向剛創(chuàng)建的此目錄。
內(nèi)置 TFTP 服務(wù)器 IP 為 10.0.2.2
root@xilinx-vck190-2020_2:~#tftp-g-rfile.txt10.0.2.2
對(duì)此文件執(zhí)行 cat 命令,查看內(nèi)容是否正確:
root@xilinx-vck190-2020_2:~#catfile.txt
4. 使用 SCP 進(jìn)行文件傳輸
在主機(jī)與訪客機(jī)之間可使用 scp 命令通過(guò) SSH 來(lái)傳輸文件。
scp 語(yǔ)法如下:
$ scp
遠(yuǎn)程路徑采用如下語(yǔ)法:
user@host:/path/to/file
例如,如果將文件從主機(jī)復(fù)制到訪客機(jī),則命令輸出如下所示:
root@xilinx-vck190-2020_2:~#scp<主機(jī)用戶名>@<主機(jī)?IP>:/scratch/doc-example/myapp.elf. Host'<主機(jī)?IP>'isnotinthetrustedhostsfile. (ecdsa-sha2-nistp256fingerprintsha1!!18:7e:92:d0:33:ed:97:e7:cb:b2:f7:b1:5d:52:5f:a6:34:9a:97:f9) Doyouwanttocontinueconnecting?(y/n)y komlodi@'spassword: myapp.elf100%18KB17.7KB/s00:00
5. 通過(guò) SSH 進(jìn)入 QEMU
要通過(guò) SSH 進(jìn)入 QEMU,需要向 QEMU 傳遞其它實(shí)參。
例如,如果在 Versal ACAP 工程上使用 PetaLinux:
$petalinux-boot--qemu--prebuilt3--qemu-args"-netnic,netdev=eth0-netdevuser,id=eth0,hostfwd=tcp::1114-:22-netnic"
登錄 QEMU 機(jī)器。
在主機(jī)終端內(nèi),運(yùn)行以下所示命令以通過(guò) SSH 訪問(wèn) QEMU。
$ssh-p1114root@localhost
審核編輯:湯梓紅
-
仿真器
+關(guān)注
關(guān)注
14文章
1014瀏覽量
83591 -
開源
+關(guān)注
關(guān)注
3文章
3218瀏覽量
42329 -
qemu
+關(guān)注
關(guān)注
0文章
57瀏覽量
5320 -
Versal
+關(guān)注
關(guān)注
1文章
151瀏覽量
7624
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論