tiny6410的led裸机程序源代码

下面的代码是从CSDN下载的,在我的板子上试了一下,LED1不亮,对汇编不熟悉,暂不知怎么修改。


转帖出来:
基于s3c6410的tiny6410的led裸机程序源代码,

1 对Led灯的操作
.globl _start
_start:


/* 硬件相关的设置 */
    /* Peri port setup */
    ldr r0, =0x70000000
    orr r0, r0, #0x13
    mcr p15,0,r0,c15,c2,4       @ 256M(0x70000000-0x7fffffff)
    
/* 关看门狗 */
/* 往WTCON(0x7E004000)写0 */

ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/* 设置GPMCON让GPM3作为输出引脚 */
ldr r1, =0x7F008800
mov r1, #0x1000
str r1, [r0]


/* 设置GPMDAT让GPM3输出0 */
ldr r1, =0x7F008808
mov r1, #0x0
str r1, [r0]


halt:
b halt




2 循环点亮Led灯的方法


start.S


.globl _start


_start:


// Peripheral Port Setup
 ldr r0,=0x70000000
 orr r0,r0,#0x13
 mcr p15,0,r0,c15,c2,4


// Close Watch Dog
 ldr r0,=0x7e004000
 mov r1,#0
 str r1,[r0]


// Setup GPKCON1
 ldr r0,=0x7f008800
 ldr r1,=0x11110000
 str r1,[r0]


// Setup GPKDAT
 ldr r0,=0x7f008808
 mov r1,#0x00
 str r1,[r0]
// loop
loop: 
 mov r1,#0x00
 mov  r2,#0x10
 mov r3,#4
loop1:
 orr r1,r1,r2
 str r1,[r0]
 bl delay
 mov  r2,r2,lsl#1
 sub r3,r3,#1
 cmp r3,#0
 beq loop
 b loop1 


// delay
delay:
 ldr r4,=0x1000000
DelayLoop:
 sub r4,r4,#1
 cmp r4,#0
 bne DelayLoop
 mov pc,r14


halt:
 b halt




Makefile:


led.bin: start.o
 arm-linux-ld -Ttext 0 -o led.elf start.o
 arm-linux-objcopy -O binary led.elf led.bin
 arm-linux-objdump -D led.elf > led.dis


start.o : start.S
 arm-linux-gcc -o start.o start.S -c


clean:
 rm *.o led.elf led.bin led.dis


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值