RISC-V可以通过读取csrr rd, time指令来获取时间(rd是目标寄存器),但这个计时器的频率取决于开发板的实现。想问一下星光2的设计中计时器频率是多少?我测出的结果好像是3MHz到4MHz,不知道准确值是多少。
mtime的频率按照设备树描述是4mhz;另外上电后cpu默认频率是1.25Ghz好像
1 Like
明白了,谢谢!
请问是在设备树文件的哪一部分读取到的呢?谢谢!
我有一个相关问题想要请教,我在Debian中编写程序想要读出mcycle这个csr寄存器的值,但编译运行后显示Illegal instruction,想问一下你是否用csrr rd, time读取csr成功,以及我的操作是否有什么问题?
unsigned long long val = 0;
__asm__ volatile("csrr %0, mcycle" : "=r"(val));
我找到一些相关问题,似乎在说只有uboot有相关接口,通过linux或opensbi不能访问?
https://forum.rvspace.org/t/csr/578/7
https://forum.rvspace.org/t/visionfive2-hypervisor-extension/2314/5
我在Linux下运行是没问题的。可能是权限问题?或许把mcycle改成cycle试一试
直接使用cycle试试
https://patchwork.kernel.org/project/linux-riscv/cover/20230413161725.195417-1-alexghiti@rivosinc.com/
1 Like
换成cycle后可以正常使用了,谢谢大家
2 Likes