我买回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,有说的不清楚的地方还望大虾们谅解。 |