0

我试图弄清楚在尝试调试 U-boot 端口时发生了什么。我已经在我的板上加载了 U-boot,并通过 BDI2000 设置进行调试。当我逐步执行 start.SI 时,不断遇到此错误:

(gdb) si
314     mtspr   SPRN_SRR0,r0
(gdb) si
315     mtspr   SPRN_SRR1,r0
(gdb) si
316     mtspr   SPRN_CSRR0,r0
(gdb) si
317     mtspr   SPRN_CSRR1,r0
(gdb) si
320     mtspr   SPRN_MCSRR0,r0
(gdb) si
321     mtspr   SPRN_MCSRR1,r0
(gdb) si
322     mfspr   r1,SPRN_MCSR
(gdb) si
323     mtspr   SPRN_MCSR,r1
(gdb) si
333     lis r1,0x0030   /* store gathering & broadcast disable */
(gdb) si
Cannot access memory at address 0x300000
(gdb) si
_start_440 () at start.S:334
334     ori r1,r1,0x6000    /* cache touch */
Cannot access memory at address 0xfffff03c
(gdb) bt
#0  _start_440 () at start.S:334
#1  0xfffff18c in rsttlb () at start.S:480
Backtrace stopped: frame did not save the PC

这是我第一次提出董事会建议,因此您可能拥有的任何指示都会非常有帮助。

谢谢!

4

2 回答 2

1

由于某种原因,GDB 只读取正在运行的模块的 asm。通过使用 BDI 进入其他领域,我可以从 GDB 中逐步退出,而不会出现“无法访问内存”的问题。

如果您有任何问题,请随时给我发消息。

谢谢

于 2013-03-14T20:03:33.847 回答
0

这似乎是 PowerPC 代码。我的经验表明您的内存地址尚未映射。默认情况下,启动代码将访问非易失性存储器 (NVM) 代码(例如:ROM、EEPROM、闪存......),并且有责任设置或定义 RAM 的位置。通常,此信息从 NVM 中提取,并写入内存管理设备或 PowerPC 芯片中,以使处理器了解 RAM。如果没有看到整个代码,很难评估它是否设置正确。另一种可能性是 BDI 的配置文件没有描述地址 0x300000 的内容

于 2015-10-21T23:45:52.873 回答