qemu的详细资料大全(入门必看!!!)
qemu介紹
qemu是一個(gè)虛擬機(jī),或者說(shuō)是模擬器,類(lèi)似VMware。主要對(duì)單片機(jī)或者嵌入式常用的一些處理器模擬,嵌入式開(kāi)發(fā)中使用廣泛,比如arm,sparc,riscv等架構(gòu)處理器。
對(duì)于每種架構(gòu)處理器的模擬,qemu都是一個(gè)單獨(dú)的exe,比如
arm的:qemu-system-arm.exe(它里面會(huì)細(xì)分為具體的arm處理器,比如cortex-m內(nèi)核,cortex-a內(nèi)核)
riscv的:?qemu-system-riscv.exe
官網(wǎng):QEMU
官網(wǎng)包含了 詳細(xì)使用文檔下載,源碼下載(喜歡折騰的自己編譯唄,自己編譯好像還得依賴(lài)很多庫(kù),而且都是Linux上的編譯教程,windows上的沒(méi)發(fā)現(xiàn)有人搞),或者編譯好的安裝包下載。支持Linux,windows系統(tǒng),但是Linux系統(tǒng)中用得最多。這里我要做windows里的IDE,所以只研究qemu在Windows上的使用。
qemu使用
qemu的使用方式:
QEMU的基本使用方法(MIPS)_子曰小玖的博客-CSDN博客_qemu使用教程
QEMU入門(mén)指南_Font Tian的博客-CSDN博客_qemu
一文讀懂QEMU虛擬機(jī)_Font Tian的博客-CSDN博客_qemu虛擬機(jī)是什么
qemu教程_QEMU實(shí)例教程_cunjiu9486的博客-CSDN博客
也就是給這些后臺(tái)運(yùn)行的qemu-system-xx.exe發(fā)命令來(lái)使用,類(lèi)似gcc,gdb,clang這些的使用方式。
一般使用形式(例如arm):
qemu-system-arm -M xilinx-zynq-a9 -cpu cortex-a9 -nographic -kernel $BUILD_DIR/mm.elf -m 512M -s -S
- 使用機(jī)器?xilinx-zynq-a9
- 處理器?cortex-a9
- 因?yàn)檫@是裸機(jī),所以可執(zhí)行文件是一個(gè)自包含的ELF文件
- -m 512M?表示平臺(tái)具有512 MiB的RAM
- -s?是的快捷方式?-gdb tcp::1234 (也就是說(shuō)qemu自帶了gdbserver,可以讓gdb連它)
- -S?表示在啟動(dòng)時(shí)凍結(jié)CPU
除了可以直接命令行操控qemu外,還能用一些通用IDE去可視化操作它,比如eclipse(用QEMU模擬調(diào)試裸機(jī)ARM64匯編,支持gdb單步調(diào)試_科學(xué)邊界的博客-CSDN博客_qemu單步調(diào)試),vscode(https://hkt999.medium.com/nuttx-%E7%9A%84%E7%92%B0%E5%A2%83%E6%9E%B6%E8%A8%AD-qemu-vscode-%E9%96%8B%E7%99%BC-posix-%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%B5%B1-42a342fbb81b)等
如果想知道qemu關(guān)于arm cortex-a9架構(gòu)處理器的運(yùn)行方式,qemu模擬A9,如何一步步寫(xiě)裸機(jī)(網(wǎng)上其它的大部分博客都是直接啟動(dòng)uboot和Linux的,參考價(jià)值不大),可以看下面這些文章:
- Alice OS 0-Preparation | SilentMing's Gensokyo?(這個(gè)人寫(xiě)的比較詳細(xì),一步步怎么做,但是寫(xiě)到mmu時(shí)候,就沒(méi)有再寫(xiě)了,有點(diǎn)可惜,但是也可以作為不錯(cuò)的參考)
- https://descent-incoming.blogspot.com/2017/05/for-qemu-armvexpress-a9-0-hello-world.html?(支持a9,但是寫(xiě)了一個(gè)好像不是很完善的啟動(dòng)代碼)
- GitHub - umanovskis/baremetal-arm: An ebook about bare-metal programming for ARM?(支持a9,寫(xiě)得比較全,里面還給了個(gè)對(duì)應(yīng)的pdf,太貼心了,必看!!!)
- Embedded Programming with the GNU Toolchain?(這個(gè)也是詳細(xì)教程,但是不確定是qemu模擬哪款處理器)
- Qemu Xilinx Zynq A9 baremetal(Xilinx Zynq A9是一款雙核a9,最近幾年非常火爆,可以看xilinx它官方對(duì)qemu的支持情況,裸機(jī)編寫(xiě)都有)
(對(duì)了順便說(shuō)一下,這個(gè)官方的qume雖然支持幾個(gè)stm32板子,但是串口stm32程序輸出不到控制臺(tái)的。想輸出到控制臺(tái),可以看我別的qemu文章,你一定會(huì)有收獲的)
qemu的stm32擴(kuò)展
如果覺(jué)得官方qemu支持的板子不夠多,qemu因?yàn)槭情_(kāi)源的,所以可以自己修改源碼,添加一些驅(qū)動(dòng)代碼啥的,重新編譯成可執(zhí)行文件,定制自己要模擬的板子。
主要是對(duì)支持arm的stm32做了定制,其實(shí)最新的官方qemu已經(jīng)支持很多的cortex-m內(nèi)核的stm32了,自己用,其實(shí)就用官方的就行。
1. 專(zhuān)門(mén)對(duì)stm32各種板子(Olimex STM32 p103這板子),做了全面的模擬,較大的增強(qiáng)了qemu:(對(duì)了順便說(shuō)一下,這個(gè)的qume的串口輸出不到控制臺(tái),原作者自己也說(shuō)了不知道為什么,而且多個(gè)博客也看到有人說(shuō)printf無(wú)效的。想輸出到控制臺(tái),可以看我別的qemu文章,你一定會(huì)有收獲的)
- qemu的STM32虛擬化環(huán)境_南波兒萬(wàn)的博客-CSDN博客_qemu模擬stm32?(使用教程)
- https://github.com/beckus/qemu_stm32?(魔改的qemu源碼)
- GitHub - beckus/stm32_p103_demos: A suite of demo applications for the Olimex STM32 P103 Development Kit(一些demo程序)
2. 專(zhuān)門(mén)針對(duì)stm32,但是便于與eclipse做了集成的一個(gè)版本的魔改 qemu-system-gnuarmeclipse.exe (即GNU MCU Eclipse QEMU,完全支持半主機(jī)模式,看官方使用教程)(同樣支持了 Olimex STM32 p103這個(gè)板子),這個(gè)提供了編譯好的exe下載
https://github.com/xpack-dev-tools/qemu-arm-xpack/
這兒講了這個(gè)emu-system-gnuarmeclipse.exe命令行選項(xiàng)的詳細(xì)使用?(是qemu官方版選項(xiàng)的子集,針對(duì)stm32有些特定的選項(xiàng)了)
The GNU MCU Eclipse QEMU command line options | The xPack Build Framework
3. rtthread的qemu,增加了幾個(gè)stm32f4的板子的支持(主要是stm32程序的串口在控制臺(tái)輸出了),做得不錯(cuò),看我這個(gè)博客?關(guān)于windows上使用qemu分別仿真stm32和a9以及串口輸出_標(biāo)biao的博客-CSDN博客
RT-Thread-Studio-Mirror/sdk-debugger-qemu?
針對(duì)stm32的qemu的博客:如何對(duì)基于STM32 Soc的STM32-P103進(jìn)行QEMU仿真 - STM32 - 電子技術(shù)論壇 - 廣受歡迎的專(zhuān)業(yè)電子論壇!
?
總結(jié):利用編譯好的exe即可,免得自己折騰。用?emu-system-gnuarmeclipse.exe,板子選擇?Olimex STM32 p103,demo也選擇上面的Olimex STM32 p103(一些demo程序)
其它的一些參考博客:
- qemu最簡(jiǎn)單的跑stm32程序:qemu上跑stm32 模擬stm32開(kāi)發(fā)板 - 連任 - 博客園
- 教我們?nèi)绾尉幾g:https://www.jianshu.com/p/9df79a090663
- 如果沒(méi)有在exe中找到自己鐘意的板子,那么這樣啟動(dòng)qemu吧:qemu-system-arm -cpu cortex-m3 -nographic -monitor null -serial null -semihosting -kernel main.elf,ST Community
- 詳細(xì)的介紹qemu運(yùn)行stm32,使用 QEMU 仿真 STM32 CubeMX 生成的Makefile項(xiàng)目 - - 21ic電子技術(shù)開(kāi)發(fā)論壇
注意:qemu中如果想輸出程序打印信息,需要使用半主機(jī)模式:半主機(jī)是用于?ARM?目標(biāo)的一種機(jī)制,可將來(lái)自應(yīng)用程序代碼的輸入/輸出請(qǐng)求傳送至運(yùn)行調(diào)試器的主機(jī)。 例如,使用此機(jī)制可以啟用 C 庫(kù)中的函數(shù),如 printf() 和 scanf(),來(lái)使用主機(jī)的屏幕和鍵盤(pán),而不是在目標(biāo)系統(tǒng)上配備屏幕和鍵盤(pán)。?
總結(jié)
以上是生活随笔為你收集整理的qemu的详细资料大全(入门必看!!!)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20190503(cmake安装,利用l
- 下一篇: 单片机16个灯四种花样c语言,基于Pro