參考資料:
https://elinux.org/RPi_Software#ARM
https://github.com/dwelch67/raspberrypi
https://github.com/raspberrypi/firmware
https://www.raspberrypi.org/app/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
按鍵連接到GPIO-19

暫存器

Alternate Function

GPIO SET

GPIO CLR

main.s
.global _start
.equiv GPFSEL0, 0x20200000
.equiv GPFSEL1, 0x20200004
.equiv GPSET0, 0x2020001c
.equiv GPCLR0, 0x20200028
.equiv GPLEV0, 0x20200034
.equiv GPPUD, 0x20200094
.equiv GPPUDCLK0, 0x20200098
.arm
.text
_start:
b reset
b .
b .
b .
b .
b .
b .
b .
reset:
ldr r0, =GPFSEL0
ldr r1, =(1 << 15)
str r1, [r0]
ldr r0, =GPFSEL1
ldr r1, =0x00000000
str r1, [r0]
ldr r0, =GPPUD
ldr r1, =0x02
str r1, [r0]
ldr r0, =GPPUDCLK0
ldr r1, =(1 << 19)
str r1, [r0]
0:
ldr r0, =GPLEV0
ldr r1, [r0]
and r1, #(1 << 19)
cmp r1, #0
ldrne r0, =GPCLR0
ldreq r0, =GPSET0
ldr r1, =(1 << 5)
str r1, [r0]
b 0b
.end
完成
