提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

年关将近,2021年新年再一次受新冠影响无法好好的回家过了。由于工作需要了解一点ARM汇编的知识,于是我决定学习一下。上来第一件事就是希望有一个学习的环境,买一个开发板感觉不值得,于是希望可以用qemu构建一个虚拟化的环境来助力一下自己的学习热情。


一、qemu是什么

qeme是一个虚拟机,自持许多架构的cpu,反正就是一个开源又强大的东西。具体的内容可以参考官网说明,大多数情况下这个东西是用来运行嵌入式linux系统的。我感觉理论上也可以模拟一个stm32的开发板,一般这些东西在github上大概率都会有人搞过,去上面找找呗。没想到还真找到了https://github.com/beckus/qemu_stm32

二、说干就干

1.环境说明和源码构建

在开始之前首先需要一个装有linux的电脑或者linux虚拟机也可以,我的笔记本本身就是ubuntu系统,因为我以前是做嵌入式linux开发的交叉编译器也有,所以环境还是很完善的,所以直接开始。

获取源码:

git clone git://github.com/beckus/qemu_stm32.git

配置:

./configure --enable-debug --disable-werror --target-list="arm-softmmu"

这个步骤需要很多库,缺什么库就装什么库就好了。作者的配置说明中没有–disable-werror这个参数,我编译会报错编译不过去,添加该参赛就可以了。
编译和安装:

make && make install

安装时可能需要root权限,可以选择下面的命令:

sudo make install

2.运行Demo

源码作者提供了Demo,下载下来可以直接编译和运行。

git clone git://github.com/beckus/stm32_p103_demos.git
cd stm32_p103_demos
./configure
make

编译需要交叉编译器,这个做过arm linux开发的同学应该会很熟悉,编译器名称是arm-none-eabi-gcc,如果没有安装可以直接执行命令安装:

sudo apt-get install arm-none-eabi-gcc

编译完成后,在每个demo文件夹下会有一个main.bin文件,我们就可以运行了,然后测试一下我们的学习环境;

cd /stm32_p103_demos/demos/qemu_test
qemu-system-arm -M stm32-p103 -kernel main.bin

在这里插入图片描述

运行成功!!!


总结

到此,环境应该是没有问题了,但是自己如何写一个程序并运行还需要进一步研究,下一步我打算先研究一下demo源码和Makefile来实现自己的程序,然后在进一步研究一下qemu源码的stm32部分的源码,感兴趣的小伙伴欢迎一起研究和讨论。

Logo

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

更多推荐