作者MetalChao (Metal Chao)
看板ASM
标题[问题] Keil debugger 对 code banking 的支援
时间Mon Jun 28 19:05:08 2010
是这样的, 最近公司在做的一个专案使用了 8051 的 code banking;
而这个 code banking 是透过最传统的方式, 也就是使用 P1 的 GPIO 来达成;
因为要跑的程式有一些复杂度, 因此加入了 JTAG 界面, 想利用 ICE 来 debug.
问题在於, 在使用 Keil uVision 4 的 debugger 时, 如果目前执行到的 code 位在
COMMON 区的话, debugger 可以正确地做到 source level debugging;
但如果跑到了 bank area (不管是哪个 bank), 就无法显示 C source code.
後来发现, 在 bank area 的 function, 在 debugger 来说, 它们的位置是
B00:0x8000 (bank 0 的 0x8000 位址)
而 COMMON function 的位置则是 C:0x6000
而 debugger 似乎没有办法知道什麽时候切换 bank 了, 所以 PC 的值永远都是 0x????
而不会变成 B00:0x????, 也因此无法对应到正确的 C function
但如果我用 Simulator 来跑, 那麽当执行到 ?B_SWITCHx 的第一行时,
PC 就会自动变成 Bxx:0x????, 就能对应到正确的 function
使用真正的硬体配上 ICE, 就无法正确显示
想请问有人有使用 ICE 来做 code banking 的 debugging 吗?
如果有的话, 要如何让 debugger 知道目前的 bank number 并对应到其 PC 吗?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.80.67.18
1F:→ fmdjyl:Keil uVision 4 想不到已经出到4了~ 06/28 22:51
2F:推 ruemann:4是ARM吃掉KEILC後出的 (应该) 不过原PO的问题我不知道-_- 06/28 22:56
3F:→ ksirf:建议用它内建的MON51,你这个问题就能解了。 07/07 15:05
4F:→ ksirf:如果一定要用ICE的话,就我的认知是无解的。 07/07 15:05