SDCC Bankswitching (code banking)

Posted by: 邱小新 at 下午5:23 in ,
範例下載, 使用 winbond w77e532, uart output "010hello test".

要做 SDCC code banking 真是有夠麻煩,找不到有人分享成功案例就算了,sdccman.pdf 竟然也只提到一頁而已,完全沒法子去了解如此實做。最後靠著不斷的試驗,總算完成這一件不可能的任務。

  1. 修改 C:\Program Files\SDCC\lib\src\mcs51\crtbank.asm 來達成 bankswitching 的函數。
  2. 重新建立 mcs51.lib,把修改好的 crtbank.asm 置換掉舊的 mcs51.lib。
  3. Project Properties → C/C++ Build → Settings → Tool Settings → SDCC Linker → Command 輸入 sdcc -Wl-r "-Wl-b BANK1=0x18000",千萬不要輸入 sdcc "-Wl-r -Wl-b BANK1=0x18000",為此我花了半天找問題,真是 ooxx。
  4. 建立一個 c source file,開頭輸入 #pragma codeseg BANK1。
  5. 建立一個函數 void test1(void) banked { ... },要記得加上 banked。
  6. 轉換 ihx 成 bin,makebin.exe < test.ihx > test.bin
  7. 產生出來的 bin,裏面有 common/bank0/bank1,但是在 bank1 裏沒有 common 存在,需要手動加進去,而且也要手動分開這個 bin,才方便 winbond isp writer 燒錄。
  8. 大功告成,真是幸苦啊,花了一天才完成。

to be continue.... 後面有空再來補一些說明及範例吧。

SDCC Bankswitching (code banking) part 2

0 意見

張貼留言