qemu 中的仿真板 RISC-V VirtIO board

我之前根据 这篇文章 编译了 qemu,下面针对要用的
“virt RISC-V VirtIO board”
进行分析

// 之前编译的 是 qemu-system-riscv32 和 qemu-system-riscv64 , 这是两个架构, 架构中 分为有 1块板子
// 分别是 
// qemu-system-riscv32 的 "virt                 RISC-V VirtIO board"
// qemu-system-riscv64 的 "virt                 RISC-V VirtIO board"

qemu-6.1.0/build$ find . -name "*.o" |grep hw |grep virt |grep riscv_
./libqemu-riscv32-softmmu.fa.p/hw_riscv_virt.c.o // [1269/2342] Compiling C object libqemu-riscv32-softmmu.fa.p/hw_riscv_virt.c.o
./libqemu-riscv64-softmmu.fa.p/hw_riscv_virt.c.o // [1384/2342] Compiling C object libqemu-riscv64-softmmu.fa.p/hw_riscv_virt.c.o
也就是说 针对  hw/riscv/virt.c 编译出了 两个.o ,分别用于 rv32 和 rv64
  • rv32 的编译过程
// build
[1271/2342] cc
 -Ilibqemu-riscv32-softmmu.fa.p
 -I.
 -I..
 -Itarget/riscv
 -I../target/riscv
 -I../dtc/libfdt
 -I../capstone/include/capstone
 -Iqapi
 -Itrace
 -Iui
 -Iui/shader
 -I/usr/include/pixman-1
 -I/usr/include/glib-2.0
 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
 -fdiagnostics-color=auto
 -pipe
 -Wall
 -Winvalid-pch
 -std=gnu11
 -O2
 -g
 -isystem /home/suweishuai/work/qemu/qemu-6.1.0/linux-headers
 -isystem linux-headers
 -iquote .
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/include
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/disas/libvixl
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/tcg/i386
 -pthread
 -U_FORTIFY_SOURCE
 -D_FORTIFY_SOURCE=2
 -m64
 -mcx16
 -D_GNU_SOURCE
 -D_FILE_OFFSET_BITS=64
 -D_LARGEFILE_SOURCE
 -Wstrict-prototypes
 -Wredundant-decls
 -Wundef
 -Wwrite-strings
 -Wmissing-prototypes
 -fno-strict-aliasing
 -fno-common
 -fwrapv
 -Wold-style-declaration
 -Wold-style-definition
 -Wtype-limits
 -Wformat-security
 -Wformat-y2k
 -Winit-self
 -Wignored-qualifiers
 -Wempty-body
 -Wnested-externs
 -Wendif-labels
 -Wexpansion-to-defined
 -Wimplicit-fallthrough=2
 -Wno-missing-include-dirs
 -Wno-shift-negative-value
 -Wno-psabi
 -fstack-protector-strong
 -fPIC
 -isystem../linux-headers
 -isystemlinux-headers
 -DNEED_CPU_H '-DCONFIG_TARGET="riscv32-softmmu-config-target.h"' '-DCONFIG_DEVICES="riscv32-softmmu-config-devices.h"'
 -MD
 -MQ libqemu-riscv32-softmmu.fa.p/hw_riscv_virt.c.o
 -MF libqemu-riscv32-softmmu.fa.p/hw_riscv_virt.c.o.d
 -o libqemu-riscv32-softmmu.fa.p/hw_riscv_virt.c.o
 -c ../hw/riscv/virt.c

// link

  • rv64 的编译过程
[1386/2342] cc
 -Ilibqemu-riscv64-softmmu.fa.p
 -I.
 -I..
 -Itarget/riscv
 -I../target/riscv
 -I../dtc/libfdt
 -I../capstone/include/capstone
 -Iqapi
 -Itrace
 -Iui
 -Iui/shader
 -I/usr/include/pixman-1
 -I/usr/include/glib-2.0
 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
 -fdiagnostics-color=auto
 -pipe
 -Wall
 -Winvalid-pch
 -std=gnu11
 -O2
 -g
 -isystem /home/suweishuai/work/qemu/qemu-6.1.0/linux-headers
 -isystem linux-headers
 -iquote .
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/include
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/disas/libvixl
 -iquote /home/suweishuai/work/qemu/qemu-6.1.0/tcg/i386
 -pthread
 -U_FORTIFY_SOURCE
 -D_FORTIFY_SOURCE=2
 -m64
 -mcx16
 -D_GNU_SOURCE
 -D_FILE_OFFSET_BITS=64
 -D_LARGEFILE_SOURCE
 -Wstrict-prototypes
 -Wredundant-decls
 -Wundef
 -Wwrite-strings
 -Wmissing-prototypes
 -fno-strict-aliasing
 -fno-common
 -fwrapv
 -Wold-style-declaration
 -Wold-style-definition
 -Wtype-limits
 -Wformat-security
 -Wformat-y2k
 -Winit-self
 -Wignored-qualifiers
 -Wempty-body
 -Wnested-externs
 -Wendif-labels
 -Wexpansion-to-defined
 -Wimplicit-fallthrough=2
 -Wno-missing-include-dirs
 -Wno-shift-negative-value
 -Wno-psabi
 -fstack-protector-strong
 -fPIC
 -isystem../linux-headers
 -isystemlinux-headers
 -DNEED_CPU_H '-DCONFIG_TARGET="riscv64-softmmu-config-target.h"' '-DCONFIG_DEVICES="riscv64-softmmu-config-devices.h"'
 -MD
 -MQ libqemu-riscv64-softmmu.fa.p/hw_riscv_virt.c.o
 -MF libqemu-riscv64-softmmu.fa.p/hw_riscv_virt.c.o.d
 -o libqemu-riscv64-softmmu.fa.p/hw_riscv_virt.c.o
 -c ../hw/riscv/virt.c


RISC-V VirtIO board 的解析

用了同一套代码,不同的编译参数 编出了 "rv32的RISC-V VirtIO board""rv64的RISC-V VirtIO board"

不同点如下
  • build 不同点
    qemu 中的仿真板 RISC-V VirtIO board_第1张图片
  • link 不同点( (xlen) 表示 32 和 64)

qemu 中的仿真板 RISC-V VirtIO board_第2张图片

你可能感兴趣的:(riscv,risc-v)