主题 : 请问版主关于mini2440启动延时问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 61222
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
综合积分: 26 分
注册时间: 2011-12-25
最后登录: 2012-07-23
楼主  发表于: 2012-04-25 22:07

 请问版主关于mini2440启动延时问题

           我写了个简单的流水灯裸机程序烧进板子里,但每次都要过好久才能开始运行程序,为什么?还有,我把程序下进0x3000 0000地址里,nand flash启动,为什么每次断电后再上电不能运行程序了?怎么下程序进flash中呢?
    注: 板子的例子代码(含硬件初始化程序)的话就会很快运行应用程序,说明启动代码很快运行完毕的啊,但我的需要的时间很长,足有半分钟还多,这是什么原因?
程序为:
#include "def.h"
#include "option.h"
#include "2440addr.h"    
#include "2440lib.h"
#include "2440slib.h"      
#define LED1_ON    ~(1<<5)
#define LED2_ON    ~(1<<6)
#define LED3_ON    ~(1<<7)
#define LED4_ON    ~(1<<8)
#define LED1_OFF    (1<<5)
#define LED2_OFF    (1<<6)
#define LED3_OFF    (1<<7)
#define LED4_OFF    (1<<8)
void delay(int times)
{
    int i;
    for(;times>0;times--)
      for(i=0;i<400;i++);
}
int Main()
{
        rGPBCON = 0x155555;
     /* 全亮*/
     rGPBDAT = rGPBDAT&(LED1_ON)&(LED2_ON)&(LED3_ON)&(LED4_ON);
     delay(10000);
     /* 全灭*/
    rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
     delay(10000);
  while(1)
    {
      
    rGPBDAT=0x1CE;
    delay(2000);
    
     rGPBDAT=0x1AE;
    delay(2000);
    
     rGPBDAT=0x16E;
    delay(2000);
    
     rGPBDAT=0xEE;
    delay(2000);
    
     rGPBDAT=0x1EE;
    delay(2000);
    
     rGPBDAT=0xE;
    delay(2000);
     }
     return 0;
}
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2012-04-26 06:46
这个要看汇编了
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 71709
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2012-06-09
最后登录: 2012-06-21
2楼  发表于: 2012-06-12 23:17
1.延时程序,你没有关闭看门狗。3s之后,系统会重新复位。
2.你把程序放到0x30000000,这个是sdram,断电之后,程序当然没有啦。肯定不能运行
3.要下载到nandflash的话,程序必须小于4K,不然必须在4K代码执行之前把代码复制到sdram。
级别: 新手上路
UID: 71709
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2012-06-09
最后登录: 2012-06-21
3楼  发表于: 2012-06-12 23:18

 回 1楼(mindee) 的帖子

这个不是看汇编和C语言的问题。