LED連接到GPIOC-16
GPIO架構
暫存器
main.s
.global _start .equiv GPIOC_OUT, 0xc000a080 .equiv GPIOC_OUTENB, 0xc000a084 .arm .text _start: b reset b . b . b . b . b . b . b . reset: ldr r0, =GPIOC_OUTENB ldr r1, =(1 << 16) str r1, [r0] ldr r0, =GPIOC_OUT 0: eor r1, #(1 << 16) str r1, [r0] ldr r2, =1000000 1: subs r2, #1 bne 1b b 0b .end
main.ld
MEMORY { RAM : ORIGIN = 0, LENGTH = 16K } SECTIONS { text : { *(.text*) FILL(0x00) . = 0x4000; } > RAM }
upload.py
#!/usr/bin/python import os import sys import serial DEF_FILE = 'main.bin' DEF_PORT = '/dev/ttyUSB0' if os.geteuid() != 0: print 'run me as root' sys.exit() if os.path.exists(DEF_FILE) == False: print 'failed to open {}'.format(DEF_FILE) sys.exit() print 'uploading...' ser = serial.Serial(DEF_PORT, 19200) ser.flush() f = open(DEF_FILE, 'rb') ser.write(f.read()) f.close() ser.close() print 'upload complete'
Makefile
all: arm-none-eabi-as -mcpu=arm9 -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 upload: sudo ./upload.py clean: rm -rf main.bin main.elf main.o
上傳步驟如下:
1. 讓Wiz進入UART開機模式
2. 執行如下指令
$ make arm-none-eabi-as -mcpu=arm9 -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 $ make upload sudo ./upload.py uploading... upload complete
完成