我试图弄清楚在尝试调试U-boot端口时发生了什么。我已经在我的主板上安装了U-boot,并通过BDI2000设置进行调试。当我逐步开始。我一直遇到这个错误:
(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
这是我的第一个董事会,所以你可能会有任何指示非常有帮助。
谢谢!
答案 0 :(得分:1)
由于某种原因,GDB只读取正在运行的模块的asm。通过使用BDI进入其他区域,我可以从GDB继续执行而无需“无法访问内存”问题。
如果您有任何问题,请随时给我发消息。
THX
答案 1 :(得分:0)
这似乎是PowerPC代码。我的经验表明你的内存地址尚未映射。默认情况下启动代码将访问非易失性存储器(NVM)代码(例如:ROM,EEPROM,Flash ...),并且负责设置或定义RAM所在的位置。通常,此信息从NVM中提取,并写入内存管理设备或PowerPC芯片内,以使处理器识别RAM。如果没有看到整个代码,就很难评估它是否设置正确。另一种可能性是BDI的配置文件没有描述地址0x300000
的内容