Address
| Symbol | Description |
|---|---|
| ID | 0xc001f800 ~ 0xc001f80f |
| CHIPNAME | 0xc001f810 ~ 0xc001f83f |
| GUID | 0xc001f844 ~ 0xc001f854 |
| ECID | 0xc001f854 ~ 0xc001f858 |
main.s
.global _start
.equiv GPIOC_OUT, 0xc000a080
.equiv GPIOC_OUTENB, 0xc000a084
.equiv GPIOC_PAD, 0xc000a098
.equiv GPIOA_ALTFN0, 0xc000a020
.equiv UART_LCON0, 0xc0016000
.equiv UART_UCON0, 0xc0016002
.equiv UART_FCON0, 0xc0016004
.equiv UART_MCON0, 0xc0016006
.equiv UART_TRSTATUS0, 0xc0016008
.equiv UART_THB0, 0xc0016010
.equiv UART_BRD0, 0xc0016014
.equiv UART_CLKENB0, 0xc0016040
.equiv UART_CLKGEN0, 0xc0016044
.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, =GPIOA_ALTFN0
ldr r1, =(1 << 16)
str r1, [r0]
ldr r0, =UART_CLKENB0
ldr r1, [r0]
bic r1, #4
str r1, [r0]
ldr r0, =UART_LCON0
ldr r1, =0x83
strh r1, [r0]
ldr r0, =UART_UCON0
ldr r1, =5
strh r1, [r0]
ldr r0, =UART_FCON0
ldr r1, =6
strh r1, [r0]
ldr r0, =UART_MCON0
ldr r1, =0xc0
str r1, [r0]
ldr r0, =UART_BRD0
ldr r1, =1
strh r1, [r0]
ldr r0, =UART_CLKGEN0
ldr r1, =0x272
strh r1, [r0]
ldr r0, =UART_FCON0
ldr r1, =1
strh r1, [r0]
ldr r0, =UART_CLKENB0
ldr r1, [r0]
orr r1, #4
str r1, [r0]
ldr r0, =GPIOC_OUT
ldr r1, =(1 << 16)
str r1, [r0]
ldr r0, =GPIOC_PAD
0:
ldr r1, [r0]
tst r1, #(1 << 5)
bne 0b
ldr r0, =GPIOC_OUT
ldr r1, =~(1 << 16)
str r1, [r0]
ldr r4, =0xc001f810
ldr r5, =0xc001f83f
0:
ldr r6, [r4]
mov r0, r6
bl uart_byte
mov r0, r6
lsr r0, #8
bl uart_byte
mov r0, r6
lsr r0, #16
bl uart_byte
mov r0, r6
lsr r0, #24
bl uart_byte
add r4, #4
cmp r4, r5
ble 0b
b .
uart_byte:
ldr r2, =UART_THB0
ldr r3, =UART_TRSTATUS0
0:
ldr r1, [r3]
tst r1, #(1 << 1)
beq 0b
strb r0, [r2]
mov pc, lr
.end
完成
