[問題] Keil debugger 對 code banking 的支援
是這樣的, 最近公司在做的一個專案使用了 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
→
06/28 22:51, , 1F
06/28 22:51, 1F
推
06/28 22:56, , 2F
06/28 22:56, 2F
→
07/07 15:05, , 3F
07/07 15:05, 3F
→
07/07 15:05, , 4F
07/07 15:05, 4F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
59
133