因为工作背景,需要学习和了解 QEMU 如何模拟芯片(尤指处理器)工作的。为了督促和激励自己,遂记录一下学习过程中的产出。
我的宿主机环境是 Windows11 + WSL2(arch),代码编辑器采用 VsCode 。为了防止污染 arch 的软件依赖(可以称之为 “电子洁癖” ?哈哈哈 ~ ),QEMU 部署在 Docker 环境下,Docker 基础容器使用的是 Ubuntu ,属于是俄罗斯套娃了~。
QEMU 部署起来相对不难,跟着官方手册一步一步走,就可以很好的部署,网上也有很多教程。我这里获取的是 Git 版本,从清华镜像站克隆的,这样国内下载比较快,也可以在 Gitee 获取。
使用 Git 版本的主要原因是:
- 方便代码管理,我本身也喜欢有代码产出后,可以 git message;
- 通过 git commit 了解更多信息,尤其是代码背后的设计思路和修改原因;
- 方便阅读代码,因为代码的提交是线性的,总能找到第一步是怎么开始的。
在阅读和学习 QEMU 代码的过程,我主要借助 GDB 进行分析,可以直观的了解代码运行的细节。
由于平常工作比较忙,争取每天抽点时间,进行研究。
第一阶段计划:
- 搞清楚 QEMU 的启动(初始化)流程;
- 了解如何模拟外设模型;
- 了解如何模拟处理器模型;
- 理解 TCG 的基本工作原理;
实战计划:
- 模拟一个 RISCV 的微处理器(MCU);
- 可以运行 RTOS;