Rocket core risc-v,在内存地址加载和存储不通过

时间:2016-07-19 06:02:04

标签: riscv

我正在使用risc-v,火箭核心。 我想在给定的地址做一些基本的READ / WRITE操作。 跑完所有testuite中提供的测试用例。所有测试用例都通过(包括ld和store)。 现在编写一个简单的c测试用例来加载特定的地址,编译并运行testcase。测试用例没有通过。

int main ()
{
      *((volatile unsigned int*)0x8000F000)  = 0x600D600D;
}

生成相同的asm代码并将代码粘贴到testsuite中提供的testcase中。测试用例还没有通过。 命令c2object     riscv64-unknown-elf-gcc -DENTROPY = 18590 -static -mcmodel = medany -fvisibility = hidden -nostdlib -nostartfiles -I./../env/p -I./macros/scalar -T./../env /p/link.ld mem_wr_tc.c -o mem_wr_tc.o

装配对象     riscv64-unknown-elf-objdump --disassemble-all --disassemble-zeroes --section = .text --section = .text.startup --section = .text.init --section = .data mem_wr_tc.o> mem_wr_tc.asm

是否有人尝试过基本商店\加载(读取/写入)到特定地址。

请建议,可能出现的问题。

1 个答案:

答案 0 :(得分:0)

以下是您应该做的几件事:

1)查看反汇编以验证程序是否符合预期。您似乎正在尝试构建裸机程序,因此您的反汇编将需要在适当的物理地址处使用正确的启动代码。

2)在spike(单步)中尝试你的程序,并验证你的程序是否正常工作。

3)查看火箭的标准输出,它会告诉你每个循环的作用。

4)分析火箭芯片内存映射,确保你写的是正确的物理地址。

5)分析VCD波形,看看火箭在尝试在该特定地址执行记忆操作时正在做什么。