由于网上的教程大部分都是基于Linux系统搞的,其实从初学者的易用性来说,这是不方便的,因为我们还得装个虚拟机,还得装个Ubuntu,还得配一些环境,甚至还得命令行编译出来,很繁琐的,中间出错了,估计还得整好久。

关于qemu的入门大全,先看我这篇文章:qemu的详细资料大全(入门必看!!!)_标biao的博客-CSDN博客

windows系统上,这里我们搞了两个板子的仿真:

一个是arm的cortex-a9

  1. 这个去官方下载原版qemu的exe即可,QEMU
  2. 这个exe非常大,因为里面包含了各种体系结构cpu的模拟,需要安装,把qemu这个路径加入环境变量
  3. 去这个教程这儿下载一个裸机程序吧,GitHub - SilentAlice/alice-os at 9d021c0ca4d7a520aa3017108d5906d1661e9bb4

       
  4. 其实打开后,可以发现启动文件写得非常非常简单,咱们初学者嘛,当然越简单越好。确保自己电脑的环境变量已经有 mingw32-make.exe了,然后在这个makefile文件这儿打开powershell命令行窗口,直接  mingw32-make.exe qemu-telnet 命令即可(关于这个命令,自己打开makefile看看就明白了)。这里有一点需要说明,编译可能会报错,把mov指令,改成ldr即可,立即数加一个等号,就能编译完成了(就是把0x250这个立即数加载到寄存器r0),而且还把目标文件加载到qemu去运行了。如下:



    关于qemu这些选项的作用,自己看看这个作者教程 Alice OS 0-Preparation | SilentMing's Gensokyo,或者搜索资料看看吧,很好理解的
  5. 确保自己windows电脑打开了 telent (看我这篇博客:windows安装telnet工具_标biao的博客-CSDN博客),输入命令: 
    telnet localhost 1234
    即可连接上这个qemu,
  6. 然后通过命令:
    info registers
    即可查看当前所有寄存器的值,验证我们的寄存器r0是否是 0x250,从而证明一切OK了

更多的相关教程,请看这个作者的博客: Alice OS 0-Preparation | SilentMing's Gensokyo,如果还不满足,那就看我这个博客推荐的其他教程吧:qemu的详细资料大全(入门必看!!!)_标biao的博客-CSDN博客

令一个是arm的cortex-m3的stm32f103

  1. 去下载支持stm32f103的魔改qemu编译好的exe文件,https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/
  2. 这个不用安装,只需要加入环境变量即可(目的是为了任何地方打开命令行powershell,都能调用到这个 qemu-system-gnuarmeclipse.exe)

  3. 我们随便打开一个powershell命令行窗口,可以发现是支持模拟stm32-p103这个板子的
  4. 去github下载stm32-p103这个板子的各种demo程序,https://github.com/beckus/stm32_p103_demos (对了顺便说一下,这个的qume的串口输出不到控制台,原作者自己也说了不知道为什么,而且多个博客也看到有人说printf无效的。想输出到控制台,可以看我别的qemu文章,你一定会有收获的)

  5. 确保自己电脑的环境变量已经有 mingw32-make.exe了,然后在这个makefile文件这儿打开powershell命令行窗口,直接  mingw32-make.exe 命令即可,等待一下,就全部编译完成了
  6. 在demo文件夹内,每个demo例程中都会生成一个目标文件了,我们就是下载它到板子上

  7. 此时,在这个main.elf这个文件这儿,再打开一个powershell命令行窗口,输入 
    qemu-system-gnuarmeclipse.exe -M STM32-P103 -kernel main.bin
    即可把这个 main.bin 文件加载到qemu中,运行起来了,效果如下:(做得还挺逼真的,哈哈哈)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐