打印
[ZLG-ARM]

关于LPC2478的几个疑问

[复制链接]
3279|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suifeg|  楼主 | 2008-12-2 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我买回LPC2478开发板进行了一个星期的学习和摸索,对LPC2478有几个疑问,希望能给指点一下

1、我调试的时候同样一个程序在片内FLASH、片内RAM还有在SDRAM中运行的时间都一样的,以下是我的程序
int main (void)
{
    PINSEL7=0x00000000;                                                       /* 设定P3口的连接方式          */
    FIO3DIR=LED9;                                                              /* 配置LED9为输出            */
    while(1) 
    {        
         FIO3SET=LED9;                                                          /* LED9输出1                */
        sysDelayNS(1000);                                                      /* 延时                        */
        FIO3CLR=LED9;                                                          /* LED9输出0                */
        sysDelayNS(1000);      
    }   
    return 0;                                   
}
这个程序是开发板光盘上带的GPIO的程序,我分别用DebugINChipFlash,DebugInChipRAM,DebugInExDRAM三种模式运行
结果我用示波器量出来,运行sysDelayNS(1000)所需要的时间大约都为620ms,三种模式之间相差不大,这怎么解释呢?

2、是关于SDRAM的问题,我是初次用SDRAM。在DebugInExDRAM中,程序是不是先下载到FLASH然后再搬移到SDRAM中,那么断电后重起
后程序是不是就从FLASH中读出来搬到SDRAM中开始运行了?还是自己要专门写程序进行搬移?
另外我在DebugInExDRAM下运行程序,发现程序从0X400001B4开始运行,SDRAM的地址不是0XA0000000?

3、关于LPC2478LCD显示。在程序中LCD_BUFFER0是一个240*320的unsigned short数组。
我用以下程序进行测试,发现往这个数组里添满数竟然大约要40ms,这个速度也太慢了吧,
用配套的TF118屏是大约9ms就把点打满一屏,我CPU什么也不干,一直往里添数据都满足不了人家显示的要求,这个问题是怎么解决呢?
如果我程序在SDRAM里运行,并且LCD_BUFFER0这个LCD缓冲区也在SDRAM里,那运行的时间是不是更慢了呢?因为LCD用DMA方式也要占用系统总线,读写SDRAM也要用系统总线。
while(1)
{
    FIO3CLR=LED9;                                    //为低电平
    for(i = 0;i<240;i++)
        for(j =0;j<320;j++)
            LCD_BUFFER0[j] =0xf800;             //全部为红颜色                                         
        
    FIO3SET=LED9;                                    //为高电平
        for(i = 0;i<240;i++)
            for(j =0;j<320;j++)
                LCD_BUFFER0[j] =0x07e0;   //全部为绿颜色
}        

以上就是我的三个疑问,我初学ARM,有说的不清楚的地方还望大虾们谅解。        

相关帖子

沙发
ZLG_Dengz| | 2008-12-3 12:34 | 只看该作者

RE:

   如果你不用调试模式,而是脱机跑,看看是否还是一样的时间
   在DebugInExDRAM中, 代码是按照分散加载文件,直接存放到相关存储空间里的。 当然你也可以自己写段代码来实现程序加载。
  

使用特权

评论回复
板凳
suifeg|  楼主 | 2008-12-3 18:04 | 只看该作者

谢谢ZLG_Dengz的回答!!!

能不能说一下我的第二个问题:

我在DebugInExDRAM下运行程序,发现程序从0X400001B4开始运行,SDRAM的地址不是0XA0000000?是不是就没有下到SDRAM中呀?

现在我还有个疑问,就是把程序烧到外部FLASH中,启动的时候怎样才能从外部FLASH中启动?我看书里也没有讲到这点.
我想把程序烧到外部FLASH,然后启动的时候并把代码拷到SDRAM来运行应该怎么做呀?
另外把LPC2478的主频改为72M,那SDRAM的SDCLK就自动变为72M还是需要设置呀?
这几天我一直在学习,问题可能比较多,希望大家不要介意,给指点一下,在此先感谢各位!

使用特权

评论回复
地板
ZLG_Dengz| | 2008-12-4 23:40 | 只看该作者

RE:

    你好,使用DebugInExDRAM模板时,你看到的从0x400001b4开始运行,你可以看看分散加载文件,可能有代码、变量或则堆栈被定义在了内部RAM里。
    学习从外部FLASH启动,可以参看我们DebugInExFlash模板。
    

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

76

帖子

0

粉丝