[ARM入门] ok6410 s3c6410 为什么简单的代码没办法成功执行

[复制链接]
1460|3
 楼主| zdl_361 发表于 2016-3-3 17:08 | 显示全部楼层 |阅读模式
#define GPBCON (*(volatile unsigned long * ) 0x7f008820)
#define GPBDAT (*(volatile unsigned long * ) 0x7f008824)
extern void delay(void){
        int i=99;
        for(i=99;i<0xFabcF;i++){}
}
int main(){
        GPBCON=0x1111;
        GPBDAT=0;
        while(1){
                delay();
                GPBDAT= ~GPBDAT;
        }
        return 0;
}
-----------------
crt0.S
.text
.global _start
.global halt_loop
_start:
        ldr sp,=1024*8
        bl main
halt_loop:
        b halt_loop

编译器使用 arm-elf-gcc
-g  -Os   -fno-strict-aliasing  -fno-common -ffixed-r8  -fno-builtin  -nostdinc -march=armv6 -Wall -mtune=arm1176jzf-s  -mfloat-abi=soft -mfpu=vfp
程序的功能就是控制led闪烁,
编译优化选项 -O0程序不成功,-Os 能成功执行。
 楼主| zdl_361 发表于 2016-3-3 17:13 | 显示全部楼层
真想不通,为什么。源代码不变,不优化程序运行不正确,优化后程序才能正确运行。是我开发板的问题么。
 楼主| zdl_361 发表于 2016-3-3 17:15 | 显示全部楼层
6410 官方提供的 uboot 烧录到sd卡里面可以正常运行。
a3376539 发表于 2016-3-3 22:00 | 显示全部楼层
我研究一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部