在riscv-qemu模拟器的实验时,通过-bios选项指定bootrom文件,-kernel选项指定kernel文件。
在尝试使用自定义的bootrom时,通过 -d inasm -D ./qemu.log打印调试信息时发现,cpu最先执行的指令并不是通过-bios选项指定的文件中的指令。
猜测:-bios选项指定的文件被加载到0x80000000,而不是reset_vector (0x1000),所以bootrom中的内容不会被覆盖。
代码:在qemu中查找reset_vec字符串之后,在qemu/hw/riscv/virt.c中找到了cpu启动时最先执行的指令。这些指令是通过静态数组的方式写死的,并不能被-bios选项指定的文件覆盖。
网友评论