95 Star 262 Fork 91

泰晓科技 / RISCV-Linux

 / 详情

【老师提案】QEMU 系统模拟模式分析

进行中
成员
创建于  
2022-11-16 23:00

项目标题

QEMU 系统模拟模式分析

项目描述

QEMU 系统模拟模式可以在主机上模拟出与主机指令集架构、外设完全不同的的整套目标机系统,并在其上运行 bootloader、操作系统及用户态程序等。

本项目以 RISC-V 为例,分析 qemu-system-riscv64 的执行流程,并按照 QEMU 模块划分分别进行分析:

  • 命令行参数及其解析
  • 事件循环机制
  • VCPU 线程机制
  • 内存模拟
  • MMU / TLB 实现
  • 中断与异常
  • Tiny Code Generator(TCG)前端
  • Tiny Code Generator(TCG)后端
  • 设备模型
  • 机器创建及初始化
  • 串口设备模拟前端、后端
  • 网口设备模拟前端、后端
  • SD 卡模拟前端、后端

项目难度

困难

项目社区导师

Bin Meng <bmeng@tinylab.org>

项目产出要求

  • 连载文档和视频分享

项目技术要求

  • Linux / Windows 基本操作
  • 熟悉 QEMU 模拟器系统级仿真模式
  • 熟悉 RISC-V 架构基础指令集(IMAFDC),特权级规范

相关的开源软件仓库列表

评论 (15)

Bin Meng 创建了任务
Bin Meng 负责人设置为Bin Meng
Bin Meng 修改了描述
展开全部操作日志

有关 QEMU 的课程资料:
从零开始的RISC-V模拟器开发·第一季·2021春季
https://www.bilibili.com/video/BV12Z4y1c74c

因个人时间安排冲突,退出项目

提交考核任务PR,分析了指令解码模块的运行逻辑

提交qemu-system-decode-analyse-v1修订稿PR

falcon 任务状态待办的 修改为进行中

拟定项目计划书初稿:

一、需求分析

  1. 交付要求
    本项目的主要产出要求为连载文档和视频分享。
  2. 技术路径
    (1)基于 QEMU v8.0.0 源码编译得到相应版本的 qemu-system-riscv64 文件
    (2)参考文章《QEMU启动方式分析(1):QEMU及RISC-V启动流程简介》中的思路,在 qemu-system-riscv64 上引导 Linux 内核启动
    (3)使用 IDA 对 qemu-system-riscv64 进行动态调试
    (4)结合源码,按照各模块运行顺序分析执行流程和代码逻辑
  3. 选题规划
    选题总体按照项目描述中各模块1篇文章的计划进行。其中 TCG 模块预计输出3篇文章,分别分析前端、后端以及 TCG 整体的模拟执行机制;串口、网口和SD卡等设备的模拟模块根据实际情况,可能拆分为前端、后端各1篇文章。

二、时间安排

项目计划按照一周的时间粒度推进,每周产出1篇或2篇文章并完成上周提交的 PR 的修订工作,具体安排如下:

  • 7.3-7.9:在 qemu-system-riscv64 上引导 Linux 内核启动,分析 QEMU 的参数解析机制
  • 7.10-7.16:分析 QEMU 事件循环机制
  • 7.17-7.23:分析 QEMU VCPU 线程机制
  • 7.24-7.30:分析 QEMU 内存模拟机制
  • 7.31-8.6:分析 QEMU MMU/TLB 实现机制
  • 8.7-8.13:分析 QEMU 中断与异常机制
  • 8.14-8.27:分析 QEMU TCG 模块
  • 8.28-9.3:分析 QEMU 设备模型
  • 9.4-9.10:分析 QEMU 机器创建及初始化机制
  • 9.11-9.17:分析 QEMU 串口设备模拟机制
  • 9.18-9.24:分析 QEMU 网口设备模拟机制
  • 9.25-9.30:分析 QEMU SD 卡模拟机制

提交qemu-system-parameters-v0初稿PR,分析了 QEMU 参数解析机制

提交qemu-system-parameters-v1修订稿PR

提交 qemu-system-event-loop-part1-v0 初稿 PR,分析了 QEMU 事件循环机制的基础:glib 事件循环机制

推送 qemu-system-event-loop-part1-v0 修订

能否整个特权指令的分析,好奇特权指令是怎么模拟的,还是通过tcg吗?

提交 qemu-system-event-loop-part2-v0 初稿 PR,分析了 QEMU 事件循环机制的基本组成与运行原理

提交 qemu-system-event-loop-part3-v0 初稿 PR,分析了 QEMU 下半部(Bottom Halves,BH)机制

提交 qemu-system-device-model-part1-v0 初稿 PR,从设备生命周期的角度初步分析了 QEMU 设备模型

提交 qemu-system-device-model-part2-v0 初稿 PR,分析了 QEMU 中面向对象的设备管理机制

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(5)
7872178 jjl9807 1685510960 7499118 tangjinyu1994 1660477824
1
https://gitee.com/tinylab/riscv-linux.git
git@gitee.com:tinylab/riscv-linux.git
tinylab
riscv-linux
RISCV-Linux

搜索帮助