jj809323 发表于 2014-5-21 18:07:30

请教嵌入式的学长一个关于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

流星飒沓 发表于 2014-5-21 19:10:57

* gpkdat = 0xf0;这句下面在加一句delay();就行了

wangzi19933 发表于 2014-5-21 19:30:18

问孙福康啊,他会帮你的{:10_429:}

jj809323 发表于 2014-5-21 19:42:23

流星飒沓 发表于 2014-5-21 19:10
* gpkdat = 0xf0;这句下面在加一句delay();就行了

你是说延时短了?

jj809323 发表于 2014-5-21 19:43:10

wangzi19933 发表于 2014-5-21 19:30
问孙福康啊,他会帮你的

他不知道啊,他搞硬件的啊

流星飒沓 发表于 2014-5-21 19:46:11

jj809323 发表于 2014-5-21 19:42
你是说延时短了?

嗯,不加延时的话下一条指令就跳到LED打开了,熄灭时间太短根本看不到

jj809323 发表于 2014-5-21 19:48:05

jj809323 发表于 2014-5-21 19:42
你是说延时短了?

{:5_143:}解决了,谢谢啊,能加你扣扣啊,一起学习啊!
我的扣扣:1164700447

zj220223 发表于 2014-5-21 20:07:36

学弟好大牛~~

dashuai888 发表于 2014-5-22 10:29:46

不懂帮顶

阎魔あい 发表于 2014-5-22 22:06:08

瞬间就呵呵了…………

jj809323 发表于 2014-5-22 23:12:13

阎魔あい 发表于 2014-5-22 22:06
瞬间就呵呵了…………

啥意思?是我的问题太水了吗?
页: [1]
查看完整版本: 请教嵌入式的学长一个关于S3C6410的裸板程序