I try to get a version of Rocket Chip on a Nexys4 DDR board up and running. So far I managed to generate the verilog, synthesize the design and attach a jtag probe (segger jlink). It is possible to access registers and memory via openocd and gdb. After loading a small snippet of asm the core starts executing but jumps after the first executed instruction directly to 0x0000000. I assume it traps and since the trap vector is not initialized the core ends up at 0. Does anybody know how to fix this?
The simulation of the core works both with verilator and vcs. In both cases the core executes the three asm instructions without complains.
The tested asm code is:
.section .text
.global _start
_start:
add x0,x0,x0
add x0,x0,x0
j _start
linked with the this script:
SECTIONS
{
. = 0x80000000;
.text : { *(.text) }
}
Object dump:
Disassembly of section .text:
0000000080000000 <_start>:
80000000: 00000033 add zero,zero,zero
80000004: 00000033 add zero,zero,zero
80000008: ff9ff06f j 80000000 <_start>