您的位置:首页 > 其它

S3C6410裸板纯汇编流水灯的实现

2013-12-01 15:03 471 查看
(1) Makefile

CC := arm-linux-gcc
AS := arm-linux-as
LD := arm-linux-ld
OBJCOPY := arm-linux-objcopy

BIN := arm.bin
ELF := arm
OBJS := ledflow.o

all:$(ELF)
$(OBJCOPY) $< -O binary /var/lib/tftpboot/$(BIN)
$(ELF):$(OBJS)
$(LD) $^ -o $@ -Ttext 0
%.o:%.c
$(CC) $< -c -o $@
%.o:%.s
$(AS) $< -o $@

.PHONY:clean
clean:
rm -f $(OBJS) $(ELF)

(2)ledflow.s

.align 2
.global _start
.text
_start:
@从0x70000000 偏移256M的地址来操作外设
@Pheripheral is accessed via PERI bus,
@and its address range is from 0x7000_0000 to 0x7FFF_FFFF. All SFRs
@can be accessed in this address range.
@Also, if data isneeded to transfer from NFCON or CFCON, those data
@should be transferred via PERI bus.
mov r0,#0x70000000 @S3C6410X.pdf p114 MemoryMap
orr r0,#0x13 @ARM1176jzfs.pdf p343 0x13 -> 256M
mcr p15,0,r0,c15,c2,4 @ARM1176jzfs.pdf p344

@关闭看门狗
ldr r0,=0x7E004000
mov r1,#0
str r1,[r0]
@精确操作寄存器来关闭
@ ldr r0,=0x7E004000
@ bic r1,#(1 << 5)
@ str r1,[r0]
@ mov sp,#0x2000

@我们写的是裸板从0x0这里开始只有8k(0x2000)的地址可以用
@栈放大地址(c语言的栈为满递减栈,为了保证空间大小,将栈放在高地址)
mov sp,#0x2000

bl main

main:
stmfd sp!,{r0-r12,lr}

bl led_init

m_loop1:
mov r0,#0
m_loop2:
mov r1,r0
bl led_on
mov r0,#10
bl delay
mov r0,r1
bl led_off
mov r0,#10
bl delay
mov r0,r1

add r0,#1
cmp r0,#4
bllt m_loop2

bl m_loop1
ldmfd sp!,{r0-r12,pc}

delay:
stmfd sp!,{r0-r12,lr}
mov r1,#0

d_loop1:
mov r2,#0
d_loop2:
add r2,#1
cmp r2,#0x2700
blt d_loop2
add r1,#1
cmp r1,r0
blt d_loop1

ldmfd sp!,{r0-r12,pc}

led_init:
stmfd sp!,{r0-r12,lr}

ldr r1,=0x7F008820
ldr r0,[r1]
bic r0,#0xff
bic r0,#0xff00
orr r0,#0x11
orr r0,#0x1100
str r0,[r1]
ldr r1,=0x7F008824
ldr r0,[r1]
orr r0,#0xf
str r0,[r1]
ldr r1,=0x7F008828
ldr r0,[r1]
bic r0,#0xff
str r0,[r1]
ldmfd sp!,{r0-r12,pc}

led_on:
stmfd sp!,{r0-r12,lr}
ldr r1,=0x7F008824
ldr r4,[r1]
mov r2,#1

lsl r0,r2,r0

bic r4,r0
str r4,[r1]
ldmfd sp!,{r0-r12,pc}

led_off:
stmfd sp!,{r0-r12,lr}
ldr r1,=0x7F008824
ldr r4,[r1]
mov r2,#1

lsl r0,r2,r0

orr r4,r0
str r4,[r1]
ldmfd sp!,{r0-r12,pc}









                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 arm 裸板 流水灯