
qemu学习
cangcun
不断地总结和提高
展开
-
QEMU安装运行fedora笔记
1.制作镜像文件[cx@localhost ppc-softmmu]$ qemu-img create -f qcow2 disk.img 8G2.安装操作系统export MPATH=/home/cx/cxworkspace/mirror./qemu-system-ppc -M mac99 \ -m 512 \ ...原创 2020-04-22 00:30:20 · 951 阅读 · 0 评论 -
解析QEMU操作码
1.target/ppc/translate.c2.指令类型定义/* PowerPC Instructions types definitions */enum { PPC_NONE = 0x0000000000000000ULL, /* PowerPC base instr...原创 2020-04-20 22:07:49 · 384 阅读 · 0 评论 -
制作根系统文件
1.下载busybox工具下载地址:https://busybox.net/downloads/busybox-1.28.1.tar.bz22.解压busybox解压源码: tar -xvfbusybox-1.28.1.tar.bz23.配置并编译busybox/*配置*/make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-...原创 2020-04-11 00:09:22 · 565 阅读 · 0 评论 -
搭建powerpc交叉编译工具链
安装环境:fedora-311.下载安装包1.1 GCC软件包:http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 解压安装包:tar -jxvfhttp://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 1.2 binutils...原创 2020-04-10 13:26:39 · 2013 阅读 · 0 评论 -
安装powerpc交叉编译GDB
1.下载工具1.1 下载GDB:http://ftp.gnu.org/gnu/gdb/gdb-8.2.1.tar.gz1.2 下载termcap:http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz2.解压工具3.安装termcap3.1 配置/*配置,prefix为要安装的目录,host为依赖的编译环境*/$ ./co...原创 2020-04-03 09:53:05 · 931 阅读 · 0 评论 -
QEMU加载linux内核
1.编译linux内核[cx@localhost linux-5.3.11]$ cp arch/powerpc/configs/85xx/mpc85xx_cds_defconfig ./.config/*配置*/[cx@localhost linux-5.3.11]$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- menuconf...原创 2020-04-04 01:53:32 · 496 阅读 · 0 评论 -
qemu中的powerpc架构运行u-boot
附:powerpc交叉编译工具下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=gcc-powerpc64-linux-gnu,因为虚拟机操作系统的版本是fedora31因此最终下载了http://rpmfind.net/linux/fedora/linux/releases/31/Everything/x86_64/os/Pa...原创 2020-03-09 00:58:36 · 1517 阅读 · 0 评论 -
QEMU中CLOCK的初始化
1. QEMUTimerList的结构体struct QEMUTimerList { QEMUClock *clock; //timer的链表会对应一个qemuclock QemuMutex active_timers_lock; QEMUTimer *active_timers; QLIST_ENTRY(QEMUTimerList) l...原创 2020-02-24 17:55:05 · 646 阅读 · 0 评论 -
qemu_clock_get_ns函数分析
1.函数总体int64_t qemu_clock_get_ns(QEMUClockType type){ int64_t now, last; QEMUClock *clock = qemu_clock_ptr(type); switch (type) { case QEMU_CLOCK_REALTIME: return get_cloc...原创 2020-02-24 14:45:12 · 615 阅读 · 0 评论 -
gettimeofday函数
因为在学习qemu中timer定时器,创建timer时用到了该函数所以学习一下1.函数原型 int gettimeofday(structtimeval*tv, struct timezone *tz); 结构体timeval返回的是精确的时间,timezone结构体返回的是时区信息。 timeval的结构体原型如下:struct timeval{...原创 2020-02-24 14:29:01 · 540 阅读 · 0 评论 -
QEMU中的事件处理机制-------timer(以openpic中的定时器为例)
1.新建timer 在创建openpic的模型中创建定时器,定时器创建流程如下图所示生成如下结构关系2.启动Timercase 0x10: /* TBCR */ /* Did the enable status change? */ if ((opp->timers[idx].tbcr & TBCR_CI) != ...原创 2020-02-25 16:10:41 · 979 阅读 · 0 评论 -
address_space_init源码分析(GPA的生成)
参考博客https://www.cnblogs.com/ccxikka/p/9477530.html最终生成的结构体间关系如下图所示具体实现步骤分析://exec.c中memory_map_init函数static void memory_map_init(void){ system_memory = g_malloc(sizeof(*system_memory)...原创 2020-02-14 15:44:53 · 467 阅读 · 0 评论 -
hva的创建过程
其创建流程如下图所示:ppc架构的处理器的在mac_newworld.c文件中ppc_core99_init函数中调用memory_region_allocate_system_memory函数创建ram,ram属于实体MemoryRegion,有自己的内存(从QEMU进程的中分配内存空间)。源代码分析如下:memory_region_allocate_system_memory...原创 2020-02-14 15:46:26 · 548 阅读 · 0 评论 -
QEMU中的sysbus_mmio_map函数
以mac_newworld.c文件中的函数使用为例,其连接关系如下图所示具体实现过程如下1.代码实现(在ppc_core99_init中)s = SYS_BUS_DEVICE(dev); //生成sysbusdevice设备/* PCI hole */memory_region_add_subregion(get_system_memory(), 0x80000000...原创 2020-02-12 15:47:38 · 1117 阅读 · 0 评论 -
OPENPIC中的内存分配
内存创建过程图:其具体实施过程如下:1.openpic外部设备内存初始化 使用memory_region_init函数完成该设备内存的创建,其名称为openpic,大小为ox40000static void openpic_init(Object *obj){ OpenPICState *opp = OPENPIC(obj); memory_regio...原创 2020-02-11 18:36:39 · 546 阅读 · 0 评论 -
QEMU内存
RAM 通过memory_region_init_ram()函数初始化MMIO 由主机回掉函数实现的目标机内存,通过memory_region_init_io()函数初始化ROM 通过memory_region_init_rom()函数初始化,只读ROM device读像RAM,写像MMIO(有回掉函数)。通过memory_region_init_rom_device().初始化...原创 2020-02-11 18:44:20 · 811 阅读 · 0 评论 -
安装S2E时安装multiprocessing包出错
报错信息如下:ERROR: Complete output from command python setup.py egg_info: ERROR: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-instal...原创 2020-01-03 11:26:05 · 505 阅读 · 0 评论 -
fedora安装S2E时报错,提示You must install the Python development headers!
报错信息如下ERROR: Complete output from command python setup.py egg_info: ERROR: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-instal...原创 2020-01-03 11:11:25 · 605 阅读 · 0 评论 -
使用QEMU中的tarce实现对函数的跟踪
1. 配置时使能trace功能[cx@localhost qemu-4.2.0-rc1]$ ./configure --target-list=ppc-softmmu --enable-sdl --enable-trace-backend=simple2. 使用make命令进行编译3. 新建一个文件并向其中写入要追踪的函数,(参考qemu-3.1.0-rc0\docs\devel\...原创 2019-12-05 14:50:55 · 1360 阅读 · 1 评论 -
QEMU中log日志文件的使用
在启动时加 -d命令,参考如下:./qemu-system-ppc -hdc ../../mirror/debian_squeeze_powerpc_desktop.qcow2\ -M mac99\ -monitor stdio\ -d out_asm\若要打印多个选项可...原创 2019-12-03 16:51:45 · 9020 阅读 · 0 评论 -
QEMU中taget code翻译为TCG 中间码的过程
目录1.TCG中间码的宏定义2. 代码翻译过程(gen_intermediate_code函数的解析,这里以PPC体系架构为例)1.TCG中间码的宏定义 该头文件位于tcg/tcg-opc.h文件下,部分定义如下所示:DEF(mov_i32, 1, 1, 0, TCG_OPF_NOT_PRESENT)DEF(movi_i32, 1, 0, 1, TCG_OPF_NOT_P...原创 2019-11-29 10:10:02 · 1401 阅读 · 0 评论 -
QEMU中TCG翻译流程
声明:本文使用的qemu源码版本为qemu-3.1.0-rc0前言:qemu中采用事件驱动架构和并行架构相结合的方式来工作的。qemu中的线程主要有Vcpu线程,main_loop线程、I/O线程和workthread线程,其中main_loop属于主线程。1. 翻译流程总体框架2. 具体流程 1>在vl.c的main函数中创建单板machinecurren...原创 2019-11-28 20:44:33 · 2652 阅读 · 0 评论 -
fedora-31中qemu搭建powerpc架构虚拟机
目录1.下载qemu源码2. 启动单板2.1 方案1(最终未能成功) 1. 创建磁盘 2. 将镜像拷到磁盘中(这里下载了ubuntu操作系统)2.2 方案2(下载现成的powerpc镜像文件)1. 下载镜像2. 启动单板,命令如下1.下载qemu源码wget https://download.qemu.org/qemu-4.2.0-rc2...原创 2019-11-20 21:35:20 · 979 阅读 · 1 评论 -
QEMU建模之设备创建总体流程
(这里的设备创建以中断控制器即openpic为例)1.main函数之前执行type_init1> 在vl.c文件的main函数执行前会先执行module_init的函数。因为该函数使用GNC中attribute属性constructor即构造函数属性,该属性的设置使得该函数在main函数之前被执行。函数原型如下:其路径为G:\qemu-3.1.0-rc0\hw\intc\openp...原创 2019-09-04 13:29:26 · 1731 阅读 · 0 评论