[問題] Keil debugger 對 code banking 的支援

看板ASM (組合語言)作者 (Metal Chao)時間15年前 (2010/06/28 19:05), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
是這樣的, 最近公司在做的一個專案使用了 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
Keil uVision 4 想不到已經出到4了~
06/28 22:51, 1F

06/28 22:56, , 2F
4是ARM吃掉KEILC後出的 (應該) 不過原PO的問題我不知道-_-
06/28 22:56, 2F

07/07 15:05, , 3F
建議用它內建的MON51,你這個問題就能解了。
07/07 15:05, 3F

07/07 15:05, , 4F
如果一定要用ICE的話,就我的認知是無解的。
07/07 15:05, 4F
文章代碼(AID): #1CA87cHC (ASM)
文章代碼(AID): #1CA87cHC (ASM)