天嵌 ARM开发社区

 找回密码
 注册
查看: 2514|回复: 4

求教--在裸奔点灯的程序中全局变量和局部变量的区别

[复制链接]
kira545699636 发表于 2011-3-23 10:51:17 | 显示全部楼层 |阅读模式
本帖最后由 kira545699636 于 2011-3-23 10:53 编辑

我最近自己写了个点灯的程序,很简单,下载到NAND FLASH里执行,第一次成功了。。我也没在意。直到有一天有个人问我初始化的汇编如何写,我又写了代码,并自己测试却发现如何也不能在NAND FLASH里实现我要的跑马灯效果了,但是却能在SDRAM里运行。我一直是认为是我初始化.s文件写的有问题才导致不能在NAND FLASH里运行,我仔细检查了程序,并对照以前的程序核查,发现初始化文件并没有错。这个问题我就一下纠结了好几天,因为能在SDRAM里执行,我就确定我的main.c文件肯定没问题,我就一直在检查2440.s文件,知道今天忽然的修改了main.c文件里一个全局变量为局部变量就能在NAND.C里运行了。程序如下:
#include <stdio.h>
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
void delay()
{
        int i;       
                 for(i=90000;i>=0;i--);       
}

int main()
{
        GPBCON=0x15400;
       
        while(1)
        {
                GPBDAT=0x61f;
                delay();
                GPBDAT=0x7ff;
                delay();
                GPBDAT=0x73f;
                delay();
                GPBDAT=0x76f;
                delay();
        }
       
        return 0;
}
大家注意我红字部分,就是改成这个局部变量就能运行了,原来我对i的定义是在void delay()外面,也就是定义的全局变量,在这里请教高手,到底是为什么导致这个问题。。。
 楼主| kira545699636 发表于 2011-3-23 10:56:08 | 显示全部楼层
补充下,我还发现,在NAND FLASH里和在SDRAM里运行速度不一样,请问到底是什么问题导致,运行速度不一样会不会也是其中问题之一?求高手指教。
回复

使用道具 举报

 楼主| kira545699636 发表于 2011-3-24 09:45:34 | 显示全部楼层
没人会吗?知道的人请您不要吝啬您的时间,大概说下吧,实在没时间给份资料也行啊~
回复

使用道具 举报

天嵌_support1 发表于 2011-3-24 10:48:06 | 显示全部楼层
这个帖子好像我见了两次,版主我也弄不出其中究竟。
网友最好不要重复发同样的帖子哟。
这样也不方便你讨论,你可以通过重新编辑来顶
回复

使用道具 举报

hpxzw520 发表于 2011-3-24 19:52:29 | 显示全部楼层
看起来是挺纠结的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-5-2 05:09 , Processed in 2.048126 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表