0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于QEMU系統(tǒng)模擬器Xilinx/QEMU的運(yùn)行與調(diào)試

Hx ? 作者:工程師陳翠 ? 2018-07-04 07:50 ? 次閱讀

Xilinx基于QEMU系統(tǒng)模擬器Xilinx/QEMU可用于模擬運(yùn)行Zynq Linux的運(yùn)行與調(diào)試。其使用可以是:

(1)利用GitHub上的Xilinx/QEMU源代碼進(jìn)行編譯得到QEMU軟件模擬器

(2)利用Xilinx提供的PetaLinux工具包,PetaLinux工具包已經(jīng)包括了QEMU emulator.

一、下載Xilinx/QEMU源碼并編譯

1. 建立GitHub賬戶并連接

(a)注冊(cè)github.com賬戶

(b)安裝git,在REHL-6下使用

yum install git

(c)使用ssh-keygen生成迷匙

ssh-keygen -t rsa -C”email@address.com” -f ~。/ssh/Huatong-github

參數(shù)意義如下:

-t 指定密匙算法類(lèi)型,默認(rèn)即為rsa

-C 設(shè)置注釋文字

-f 指定密匙文件存儲(chǔ)文件名,上例會(huì)生成/home/hhdong/.ssh/huatong-github和/home/hhdong/.ssh/huatong-github.pub兩個(gè)密匙文件

(d)將SSH公匙添加到github

在瀏覽器輸入https://github.com/settings/ssh點(diǎn)擊添加Add ssh key,然后將huatong-github.pub這個(gè)文件內(nèi)容拷貝添加。

(e)新建/home/hhdong/.ssh/config文件,其內(nèi)容如下:

Host huatong-github

User git

Hostname github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/huatong-github

注意:其中的用戶名為git,而不是github.com網(wǎng)站上的用戶名。

(f)連接github.com網(wǎng)站

使用 ssh -T git@github.com或者 ssh -vT git@github.com

其最后會(huì)顯示:You‘ve successfully authenticated, but GitHub does not provide shell access.這就表示連接成功了。

如果出現(xiàn)連接錯(cuò)誤,可以嘗試如下解決方法:

(1)是不是正確的拷貝公鑰到github.com,注意不要拷貝錯(cuò)誤,包含了不必要的字符,空格,回車(chē)等

(2)修改.ssh目錄屬性和其下的文件讀寫(xiě)屬性。

chmod 700 ~/.ssh

chmod 600 ~/.ssh/*

2. 下載Xilinx/QEMU源代碼并編譯

(a) git clone git://github.com/Xilinx/qemu.git

然后將其更新到master trunk.

(b) cd qemu

git checkout Xilinx-master

(c)配置QEMU

。/configure --target-list=”arm-softmmu” --enable-fdt --disable-kvm

(d)編譯make

我在編譯過(guò)程中,出現(xiàn)

ERROR: DTC(libfdt) not present

可以根據(jù)提示下載sub model解決,git submodule update --init dtc

另外一個(gè)問(wèn)題是在編譯過(guò)程中提示:

/home/hhdong/qemu/qemu-img.c:73 : undefined reference to ‘g_sequence_lookup’

collect2: ld return 1 exit status

出現(xiàn)錯(cuò)誤的原因是g_sequence_lookup是在glibc 2.28上才加入的,而使用的Host REHL-Server-6上的glibc版本為2.12. 由于g_sequence_lookup是用于檢查一些情況下,重復(fù)的寫(xiě)入了信息。則workaround可以是:

- if (!g_sequence_lookup(seq, (gpointer)fmt_name, compare_data, NULL)) {

g_sequence_insert_sorted(seq, (gpointer)fmt_name, compare_data, NULL);

- }

即不調(diào)用g_sequence_lookup進(jìn)行判斷。

3. 運(yùn)行QEMU,并加載Xilinux預(yù)編譯好的zImage和system.dtb

/arm-softmmu/qemu-system-arm -M arm-generic-fdt -nographic -smp 2 -machine linux=on -serial mon:stdio -dtb /home/hhdong/Xilinx-ZC706-2014.2/images/linux/system.dtb -kernel /home/hhdong/Xilinx-ZC706-2014.2/pre-built/linux/images/zImage

其會(huì)提示:

qemu: fatal: Trying to execute code outside RAM or ROM at 0xfffffff0

然后就是register dump,如下:

R00=00000000 R01=00000000 R02=00000000 R03=00000000

R04=00000000 R05=00000000 R06=00000000 R07=00000000

R08=00000000 R09=00000000 R10=00000000 R11=00000000

R12=00000000 R13=00000000 R14=00000000 R15=fffffff0

PSR=400001d3 -Z-- A svc32 CPU#:1

s00=00000000 s01=00000000 d00=0000000000000000

到目前為止,還沒(méi)有查出出錯(cuò)的原因。猜想可能是Xilinx/QEMU與預(yù)編譯的system.dtb之間配合的問(wèn)題吧。

二、使用PetaLinux工具包提供的QEMU

使用Xilinx提供的PetaLinux工具包包含的QEMU就非常簡(jiǎn)單了。

從Xilinx網(wǎng)站下載petalinux-v2014.2-final-installer.run和Xilinx-ZC706-v2014.2-final.bsp。查看文檔ug976-petalinux-installation.pdf即可。

使用PetaLinux提供的qemu加載上述的預(yù)編譯zImage和system.dtb則不會(huì)出錯(cuò)。如下:

/opt/pkg/petalinux-v2014.2-final/tools/linux-i386/petalinux/bin/qemu-system-arm -M arm-generic-fdt -nographic -smp 2 -machine linux=on -serial mon:stdio -dtb /home/hhdong/Xilinx-ZC706-2014.2/images/linux/system.dtb -kernel /home/hhdong/Xilinx-ZC706-2014.2/pre-built/linux/images/zImage

則能夠正常運(yùn)行。

此時(shí),可以嘗試不同的qemu參數(shù)了。例如將--serial file:/temp/serial.txt加入到命令中,如

/opt/pkg/petalinux-v2014.2-final/tools/linux-i386/petalinux/bin/qemu-system-arm -M arm-generic-fdt -nographic -smp 2 -machine linux=on -dtb /home/hhdong/Xilinx-ZC706-2014.2/images/linux/system.dtb -kernel /home/hhdong/Xilinx-ZC706-2014.2/pre-built/linux/images/zImage --serial file:/temp/serial.txt

則輸出的信息就不會(huì)出現(xiàn)在console中斷,而是寫(xiě)入到文件/tmp/serial.txt中了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207892
  • 模擬器
    +關(guān)注

    關(guān)注

    2

    文章

    854

    瀏覽量

    42977
  • qemu
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    5298
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【RT-Thread學(xué)習(xí)筆記】如何優(yōu)雅地退出QEMU模擬器?

    【RT-Thread學(xué)習(xí)筆記】如何優(yōu)雅地退出QEMU模擬器?我想重新編譯源碼,再次運(yùn)行新的代碼,怎么辦呢?如何才能退出這個(gè)QEMU命令行控制臺(tái)?
    的頭像 發(fā)表于 07-26 04:06 ?5498次閱讀
    【RT-Thread學(xué)習(xí)筆記】如何優(yōu)雅地退出<b class='flag-5'>QEMU</b><b class='flag-5'>模擬器</b>?

    怎樣通過(guò)QEMU模擬器加載系統(tǒng)文件打包成新的roofts鏡像呢

    怎樣通過(guò)QEMU模擬器加載系統(tǒng)文件打包成新的roofts鏡像呢?有哪些步驟?
    發(fā)表于 03-04 07:23

    使用CH32V103創(chuàng)建工程,用QEMU模擬調(diào)試時(shí)選擇什么模擬器?

    使用CH32V103芯片創(chuàng)建工程,用QEMU模擬調(diào)試時(shí),不知選擇什么模擬器,希望高手賜教。
    發(fā)表于 04-18 09:30

    LS1043A如何使用qemu?

    我正在使用 LS1043A 處理,我想執(zhí)行模擬器。我正在運(yùn)行命令 ./qemu-system-aarch64 它給出了一個(gè)錯(cuò)誤顯示 aarch64-binfmt-P: 無(wú)法打開(kāi) '/
    發(fā)表于 03-30 07:12

    嵌入式編程中為什么使用qemuqemu的實(shí)際應(yīng)用

    文件系統(tǒng),網(wǎng)絡(luò),圖形,算法等等,這些如果能夠利用軟件模擬器進(jìn)行開(kāi)發(fā),可以大大的減少上板調(diào)試的時(shí)間。減少硬件連接的煩惱,在家也能隨時(shí)分析軟件代碼。 在實(shí)際項(xiàng)目的開(kāi)發(fā)過(guò)程中,qemu也非常
    發(fā)表于 08-16 06:44

    如何在MIPS64 Release 6 CPU上運(yùn)行QEMU的Linux SMP

    針對(duì)這一系列的疑問(wèn)進(jìn)行解答。我將以教程的形式展示如何從零開(kāi)始配置及構(gòu)建64位Linux并使之在QEMU模擬器運(yùn)行。此外,我將使用支持VP(虛擬處理)的MIPS64r6處理
    發(fā)表于 02-09 18:57 ?1153次閱讀
     如何在MIPS64 Release 6 CPU上<b class='flag-5'>運(yùn)行</b><b class='flag-5'>QEMU</b>的Linux SMP

    Linux:QEMU調(diào)試內(nèi)核的步驟

    Linux:QEMU調(diào)試內(nèi)核的步驟
    的頭像 發(fā)表于 06-23 09:03 ?3047次閱讀
    Linux:<b class='flag-5'>QEMU</b><b class='flag-5'>調(diào)試</b>內(nèi)核的步驟

    PC上QEMU模擬ARM的步驟

    PC上QEMU模擬ARM的步驟
    的頭像 發(fā)表于 06-23 09:58 ?7108次閱讀
    PC上<b class='flag-5'>QEMU</b><b class='flag-5'>模擬</b>ARM的步驟

    如何在x86平臺(tái)用Qemu模擬ARM系統(tǒng)

    前言 為什么需要ARM模擬系統(tǒng) Qemu是什么? Qemu的兩種模式 Qemu 能做什么?或者說(shuō)適合做什么? 在 Ubuntu16.04
    的頭像 發(fā)表于 05-03 11:22 ?5789次閱讀
    如何在x86平臺(tái)用<b class='flag-5'>Qemu</b><b class='flag-5'>模擬</b>ARM<b class='flag-5'>系統(tǒng)</b>?

    QEMU模擬不同的硬件單板使用教程

    簡(jiǎn)介 QEMU可以模擬內(nèi)核運(yùn)行在不同的單板,解除對(duì)物理開(kāi)發(fā)板的依賴(lài)。 QEMU安裝 1.安裝依賴(lài)(Ubuntu 18+) sudo apt install build-essentia
    發(fā)表于 04-13 11:22 ?6次下載

    QEMU模擬器運(yùn)行

    程序我已經(jīng)打包好放在自己的服務(wù)上,倘若你手上有Ubuntu系統(tǒng)的話,相信不用五分鐘你就可以在你的pc機(jī)或者是qemu模擬器跑起這個(gè)Helloworld程序。
    的頭像 發(fā)表于 07-31 10:40 ?1502次閱讀

    基于OpenHarmony設(shè)計(jì)的Qemu仿真實(shí)驗(yàn)環(huán)境搭建

    本實(shí)驗(yàn)環(huán)境利用Qemu仿真模擬器仿真模擬了RISC-V芯片,擺脫了終端物理設(shè)備的限制,可在仿真模擬器運(yùn)行OpenHarmony
    的頭像 發(fā)表于 01-12 16:17 ?1675次閱讀
    基于OpenHarmony設(shè)計(jì)的<b class='flag-5'>Qemu</b>仿真實(shí)驗(yàn)環(huán)境搭建

    qemu-riscv在scode的gdb調(diào)試步驟

    qemu支持gdb調(diào)試,只需要在命令中添加 -s -S兩個(gè)參數(shù)即可,在bsp/qemu-riscv下已經(jīng)有了qemu-dbg.sh,且加入了該參數(shù)
    的頭像 發(fā)表于 09-28 10:54 ?1274次閱讀
    <b class='flag-5'>qemu</b>-riscv在scode的gdb<b class='flag-5'>調(diào)試</b>步驟

    vscode運(yùn)行qemu-vexpress-a9 qemu仿真環(huán)境F5后報(bào)錯(cuò)處理方法

    修改.vscode下launch.json中qemu debug為qemu simulator,preLaunchTask為調(diào)試前的任務(wù)執(zhí)行,找task.json中l(wèi)abel對(duì)應(yīng)的任務(wù)名稱(chēng),如果在windows環(huán)境下,
    的頭像 發(fā)表于 09-28 11:17 ?1115次閱讀
    vscode<b class='flag-5'>運(yùn)行</b><b class='flag-5'>qemu</b>-vexpress-a9 <b class='flag-5'>qemu</b>仿真環(huán)境F5后報(bào)錯(cuò)處理方法

    【開(kāi)源鴻蒙】使用QEMU運(yùn)行OpenHarmony輕量系統(tǒng)

    本文將會(huì)介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運(yùn)行OpenHarmony輕量系統(tǒng)。通過(guò)本文,你將會(huì)對(duì)QEMU和Open
    的頭像 發(fā)表于 09-14 08:51 ?193次閱讀
    【開(kāi)源鴻蒙】使用<b class='flag-5'>QEMU</b><b class='flag-5'>運(yùn)行</b>OpenHarmony輕量<b class='flag-5'>系統(tǒng)</b>