Chinaunix

标题: 一个简单linux-arm-gcc的程序高手看看吧,求助哦 [打印本页]

作者: lee_guolong    时间: 2012-08-03 20:15
标题: 一个简单linux-arm-gcc的程序高手看看吧,求助哦
      
      本人在linux下编写了一个驱动led的函数,head.s上操作I/O口控制LED灯没问题,在init.c上使用C语言来控制I/O口的LED灯也没问题,为什么使用两个文件同时控制I/O就出现问题了(不能正常控制LED了)

代码如下

init.c下面所示

#define GPBCON                (*(volatile unsigned long *)0x56000010)
#define GPBDAT                (*(volatile unsigned long *)0x56000014)

int init()
{
        GPBCON |= (1<<10)|(1<<12)|(1<<14)|(1<<16);
        GPBDAT |= (1<<5)|(1<<6);
        return 0;
}

head.s文件下面所示

.text
.global _start
_start:
    ldr sp, =1024*4
                     
    ldr r0,=0x53000000
    mov r1,#0x0
    str r1,[r0]

    ldr r0,=0x56000010
    mov r1,#0x00015400
    str r1,[r0]

    ldr r0,=0x56000014
    mov r1,#00000000
    str r1,[r0]

    bl init

stop:
    b stop

Makefile文件如下

mmu.bin : head.S  init.c
        arm-linux-gcc -g -c -o head.o head.S
        arm-linux-gcc -g -c -o init.o init.c
        arm-linux-ld -Ttext 0x0000000 -g  head.o init.o -o mmu_elf
        arm-linux-objcopy -O binary -S mmu_elf mmu.bin
        arm-linux-objdump -D -m arm  mmu_elf > mmu.dis
clean:
        rm -f mmu.dis mmu.bin mmu_elf *.o

期待高手指教哦!!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2