Open YorigamiChitose opened 5 months ago
NEMU貌似没有为riscv32e单独配置一个完整的环境
configs/riscv32e-am_defconfig
riscv32-nemu-interpreter
am-kernels/kernels/nemu
riscv32-nemu-interpreter-riscv32e-nemu
Can not open '/***/ysyx-workbench/nemu/build/riscv32e-nemu-interpreter-riscv32e-nemu.bin'
CONFIG_RVE=y CONFIG_TARGET_AM=y # CONFIG_TRACE is not set CONFIG_MSIZE=0x2000000 CONFIG_DEVICE=y
am-kernels/kernels/nemu/Makefile
ifeq ($(ISA), riscv32e) ISA_NEMU = riscv32 else ISA_NEMU = $(ISA) endif
并修改16行IMG=$(NEMU_HOME)/build/$(ISA)-nemu-interpreter-$(ARCH).bin为IMG=$(NEMU_HOME)/build/$(ISA_NEMU)-nemu-interpreter-$(ARCH).bin
IMG=$(NEMU_HOME)/build/$(ISA)-nemu-interpreter-$(ARCH).bin
IMG=$(NEMU_HOME)/build/$(ISA_NEMU)-nemu-interpreter-$(ARCH).bin
nemu中有可能会使用64位数的位移运算,编译成rv32版本时会出现找不到__lshrdi3与__ashldi3的错误。感觉可以把这两个函数实现放到klib里,防止有人跟我一样踩这个坑。要是本来就是个坑当我没说(doge)
__lshrdi3
__ashldi3
我有时间再修复这个问题, 先让issue保留打开状态
NEMU貌似没有为riscv32e单独配置一个完整的环境
configs/riscv32e-am_defconfig
riscv32-nemu-interpreter
,在riscv32e情况下会使am-kernels/kernels/nemu
编译出riscv32-nemu-interpreter-riscv32e-nemu
然后出现如下报错临时解决方法
configs/riscv32e-am_defconfig
am-kernels/kernels/nemu/Makefile
中添加并修改16行
IMG=$(NEMU_HOME)/build/$(ISA)-nemu-interpreter-$(ARCH).bin
为IMG=$(NEMU_HOME)/build/$(ISA_NEMU)-nemu-interpreter-$(ARCH).bin
另一个小问题/建议
nemu中有可能会使用64位数的位移运算,编译成rv32版本时会出现找不到
__lshrdi3
与__ashldi3
的错误。感觉可以把这两个函数实现放到klib里,防止有人跟我一样踩这个坑。要是本来就是个坑当我没说(doge)