请教嵌入式的学长一个关于S3C6410的裸板程序
本帖最后由 jj809323 于 2014-5-21 18:21 编辑我主要想实现的是四个LED灯闪烁,用c和汇编混合编程!
这是汇编代码:#启动代码
.globl _start
_start:
#设置CPU,将外设地址告诉CPU
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4
#关看门狗
ldr r0, =0x7E004000
mov r1, #0
str r1,
#设置栈
ldr sp, =0xc002000
#调用c函数
bl main
halt:
b halt
这是c程序代码:
int delay();
int main()
{
volatile unsigned long * gpkcon0 = (volatile unsigned long *)0x7F008800;
volatile unsigned long * gpkdat = (volatile unsigned long *)0x7F008808;
* gpkcon0 = 0x11110000;
while(1)
{
* gpkdat = 0;
delay();
* gpkdat = 0xf0;
}
return 0;
}
int delay()
{
volatile unsigned longi = 0x10000;
while (i--);
return 0;
}
这是makefile:
led.bin: start.o main.o
arm-linux-ld -Ttext 0x50000000 -o led.elf $^
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led_elf.dis
%.o : %.S
arm-linux-gcc -o $@ $< -c
%.o : %.c
arm-linux-gcc -o $@ $< -c
clean:
rm *.o *.elf *.bin *.dis-rf
我的开发板四个LED灯接的是GPK 4,5,6,7,可是实验就过就是4个灯同时亮了就不熄灭了,我宿主机是fedora 14,交叉编译器是arm-linux-gcc 4.5.1
* gpkdat = 0xf0;这句下面在加一句delay();就行了 问孙福康啊,他会帮你的{:10_429:} 流星飒沓 发表于 2014-5-21 19:10
* gpkdat = 0xf0;这句下面在加一句delay();就行了
你是说延时短了? wangzi19933 发表于 2014-5-21 19:30
问孙福康啊,他会帮你的
他不知道啊,他搞硬件的啊
jj809323 发表于 2014-5-21 19:42
你是说延时短了?
嗯,不加延时的话下一条指令就跳到LED打开了,熄灭时间太短根本看不到 jj809323 发表于 2014-5-21 19:42
你是说延时短了?
{:5_143:}解决了,谢谢啊,能加你扣扣啊,一起学习啊!
我的扣扣:1164700447 学弟好大牛~~ 不懂帮顶 瞬间就呵呵了………… 阎魔あい 发表于 2014-5-22 22:06
瞬间就呵呵了…………
啥意思?是我的问题太水了吗?
页:
[1]