本文主要是介绍学习开发一个RISC-V上的操作系统(汪辰老师) — unrecognized opcode `csrr t0,mhartid‘报错问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
(1)此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。
(2)该课程相关代码gitee链接;
(3)PLCT实验室实习生长期招聘:招聘信息链接
正文
(1)在跟着汪辰老师做OS文件夹的实验时候,我先使用make clean将文件清空,然后再使用make编译出现了如下报错
riscv64-unknown-elf-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -c -o start.o start.Sstart.S: Assembler messages:
start.S:11: 错误:unrecognized opcode `csrr t0,mhartid'
(2)修改方法也很简单
cd ../..
vim common.mk
# -march=rv32ima 修改为 -march=rv32g
(3)个人猜测的原因,因为汪辰老师使用的老版本的RISC-V编译器,而新版本的编译器有所更新。所以会导致出现不兼容的特性。
(3)在老师的第二章课程里面,也说了,g == imafd
。经过测试发现csrr
指令是在f
指令集里面的。
参考文章
(1)在01-helloRVOS中使用make debug报错 unrecognized opcode;
(2)汪辰老师第二章课件;
这篇关于学习开发一个RISC-V上的操作系统(汪辰老师) — unrecognized opcode `csrr t0,mhartid‘报错问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!