main.s
.equiv PCONG, 0x1d20040 .equiv PDATG, 0x1d20044 .equiv PUPG, 0x1d20048 .equiv WTCON, 0x1d30000 .text .global _start _start: b reset _undef: b . _swi: b . _pabort: b . _dabort: b . _reserved: b . _irq: b . _fiq: b . reset: ldr r0, =WTCON ldr r1, =0 str r1, [r0] ldr r0, =PCONG ldr r1, =(1 << 10) str r1, [r0] ldr r0, =PDATG loop: eor r1, #(1 << 5) str r1, [r0] ldr r2, =50000 1: subs r2, #1 bne 1b b loop .end
main.ld
MEMORY { flash : ORIGIN = 0, LENGTH = 2M } SECTIONS { text : { *(.text) } > flash }
編譯
$ arm-none-eabi-as -ggdb -mcpu=arm7 -o main.o main.s $ arm-none-eabi-ld -T main.ld -o main.elf main.o $ arm-none-eabi-objcopy -O binary main.elf main.bin
開啟J-Flash並且載入main.bin(位址0x0000)
F4(Erase Chip)
F5(Program)
開啟J-Link GDB Server(Init registers記得勾選)
選擇S3C44B0X
Listening on TCP/IP port 2331
IDA Pro載入main.bin
按下F9並且選擇Remote GDB debugger
按下F9並且輸入Listening Port 2331
接著就可以開始使用IDA Pro除錯程式