【发布时间】:2019-12-14 22:13:34
【问题描述】:
我尝试在 Nexys4 DDR 板上启动并运行 Rocket Chip 版本。到目前为止,我设法生成了verilog,综合了设计并附加了一个jtag探针(segger jlink)。可以通过 openocd 和 gdb 访问寄存器和内存。加载一小段 asm 的 sn-p 后,内核开始执行,但在第一条执行指令之后直接跳转到 0x0000000。我假设它陷入了陷阱,并且由于陷阱向量未初始化,核心最终为 0。有人知道如何解决这个问题吗?
内核的模拟同时适用于 verilator 和 vcs。在这两种情况下,内核都会毫无问题地执行三个 asm 指令。
测试的asm代码为:
.section .text
.global _start
_start:
add x0,x0,x0
add x0,x0,x0
j _start
与此脚本相关联:
SECTIONS
{
. = 0x80000000;
.text : { *(.text) }
}
对象转储:
Disassembly of section .text:
0000000080000000 <_start>:
80000000: 00000033 add zero,zero,zero
80000004: 00000033 add zero,zero,zero
80000008: ff9ff06f j 80000000 <_start>
【问题讨论】:
标签: verilog fpga chisel jtag rocket-chip