デバッグ
https://github.com/petersieg/avrcpm を参考にさせて頂いてます。
config.incでデバックの指定が出来ます。
===config.inc===
;Debugging aids
.equ BOOTWAIT = 1
.equ MEMTEST = 1
.equ MEMFILL = 1 /* Fill DRAM */
.equ SRAM_FILL = 1 /* Fill unused SRAM */
.equ MMC_DEBUG = 0 /* Increase for more debugging */
.equ MMC_DEBUG_RDW = 0
.equ DSKSEL_DEBUG = 0
.equ DISK_DEBUG = 0 /* 1 = BOOT/HOME debug, 2 = +R/W debug */
.equ HOSTRW_DEBUG = 0
.equ FAT16_DEBUG = 0
.equ FAT16_DBG_FAT = 0
.equ HEAP_DEBUG = 0
.equ PORT_DEBUG = 0
.equ INS_DEBUG = 0
.equ STACK_DBG = 0
.equ PRINT_PC = 0
.equ TIMER_DEBUG = 0
.equ I2C_STATE_DEBUG = 0
.equ MEMDUMP_DEBUG = 1
しかしDISK_DEBUGを1にすると、アセンブル時にエラーが発生します。(dsk_fsys.asm(1017): error: Relative branch out of reach
)
相対ブランチが届かないのだとは分かりますが、どこなのかわからない。調べてみると以下の部分で発生していました。
これでデバッグが出来ます。
dskdbg1:
ldd temp,y+o_seekdsk
subi temp,-('A')
- rcall uartputc
+ lcall uartputc
printstring ": trk "
ldd temp2,y+o_seektrk+1
ldd temp,y+o_seektrk
https://github.com/petersieg/avrcpm を参考にさせて頂いてます。
config.incでデバックの指定が出来ます。
===config.inc===
;Debugging aids
.equ BOOTWAIT = 1
.equ MEMTEST = 1
.equ MEMFILL = 1 /* Fill DRAM */
.equ SRAM_FILL = 1 /* Fill unused SRAM */
.equ MMC_DEBUG = 0 /* Increase for more debugging */
.equ MMC_DEBUG_RDW = 0
.equ DSKSEL_DEBUG = 0
.equ DISK_DEBUG = 0 /* 1 = BOOT/HOME debug, 2 = +R/W debug */
.equ HOSTRW_DEBUG = 0
.equ FAT16_DEBUG = 0
.equ FAT16_DBG_FAT = 0
.equ HEAP_DEBUG = 0
.equ PORT_DEBUG = 0
.equ INS_DEBUG = 0
.equ STACK_DBG = 0
.equ PRINT_PC = 0
.equ TIMER_DEBUG = 0
.equ I2C_STATE_DEBUG = 0
.equ MEMDUMP_DEBUG = 1
しかしDISK_DEBUGを1にすると、アセンブル時にエラーが発生します。(dsk_fsys.asm(1017): error: Relative branch out of reach
)
相対ブランチが届かないのだとは分かりますが、どこなのかわからない。調べてみると以下の部分で発生していました。
これでデバッグが出来ます。
dskdbg1:
ldd temp,y+o_seekdsk
subi temp,-('A')
- rcall uartputc
+ lcall uartputc
printstring ": trk "
ldd temp2,y+o_seektrk+1
ldd temp,y+o_seektrk
※コメント投稿者のブログIDはブログ作成者のみに通知されます