码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • windows上运行qemu仿真stm32板子a9板子实例


    由于网上的教程大部分都是基于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

    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中,运行起来了,效果如下:(做得还挺逼真的,哈哈哈)

  • 相关阅读:
    对比度增强方法
    康耐视读码器DataMan软件详细使用步骤
    Hoops API参考: 3D Graphics System的Set_Color()函数
    算法 - 正方形数量
    C语言:用一级指针访问二维数组的max,min,并打印
    static_cast, dynamic_cast与reinterpret_cast的区别
    Java 8 新特性解读及应用实践
    独立站如何从0到1新手独立站卖家必看闭环流程
    kali /mac 成功的反弹shell语句
    超详细的介绍 get 和 post 的区别,面试必备!
  • 原文地址:https://blog.csdn.net/kangkanglhb88008/article/details/126302314
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号