提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、qemu是什么
- 二、说干就干
- 1.环境说明和源码构建
- 2.运行Demo
- 总结
前言
年关将近,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部分的源码,感兴趣的小伙伴欢迎一起研究和讨论。