免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1685 | 回复: 0

[BootLoader] 一个简单linux-arm-gcc的程序高手看看吧,求助哦 [复制链接]

论坛徽章:
0
发表于 2012-08-03 20:15 |显示全部楼层
      
      本人在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

期待高手指教哦!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP