.global _start
_start:
b reset
ldr pc, _undifined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undifined_instruction: .word undifined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word reset
undifined_instruction:
nop
software_interrupt:
nop
prefetch_abort:
nop
data_abort:
nop
not_used:
nop
irq:
nop
fiq:
nop
reset:
bl set_svc
bl disable_watchdog
bl disable_interrupt
bl disable_mmu
bl light_led
set_svc:
mrs r0, cpsr
bic r0, r0,#0x1f
orr r0, r0,#0xd3
msr cpsr, r0
mov pc, lr
#define pWTCON 0x53000000
disable_watchdog:
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]
mov pc, lr
disable_interrupt:
mvn r1, #0x0
ldr r0, =0x4a000008
str r1, [r0]
mov pc, lr
disable_mmu:
mcr p15,0,r0,c7,c7,0
mrc p15,0,r0,c1,c0,0
bic r0, r0, #0x00000007
mcr p15,0,r0,c1,c0,0
mov pc, lr
#define GPBCON 0x56000010
#define GPBDAT 0x56000014
light_led:
ldr r0, =GPBCON
ldr r1, =0x15400
str r1, [r0]
ldr r0, =GPBDAT
ldr r1, = 0x6BF
str r1, [r0]
mov pc, lr
010101010000000000
11000011111 5678的引脚输出低电平
GPIO(General-Purpose Input /Output Ports):
通用输入/输出端口。在嵌入式系统中, CPU经常
需要控制许多结构简单的外部设备或者电路,这
些设备通常只要求两种状态(开/关),
对这些设备
的控制,使用传统的串口或者USB口就显得复杂,
所以,在嵌入式微处理器上通常提供了一种“通
用可编程I/O端口”,也就是GPIO
一个GPIO端口至少需要两个寄存器,一个是
“控制寄存器”,用于选择该端口作为输入还是
输出。另一个是存放数据的”数据寄存器”。
“控制寄存器”,用于选择该端口作为输入还是
输出。另一个是存放数据的”数据寄存器”。