使用外部SDRAM出现的问题
最近在试着用RT-Thread,用的LPC2478,扩展个2MB的SDRAM,有成功挂上的没?请教下要修改哪些地方,我只修改了options和启动文件里EMC接口,还有其他地方要修改的吗?想不出还有什么地方需要修改,请指教。http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_704162VDZQB1.jpg
(原文件名:options.jpg)
点击此处打开 ourdev_704163IDEFO5.jpg(文件大小:1.04M,只有400K以内的图片才能直接显示) (原文件名:start_rvds.jpg)
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_704165DPJXJ1.jpg
(原文件名:EMC.jpg) EMCDyanmicRASCAS0那里你怎么配置的?
SDRAM的模式寄存器你是怎么配置的?
有没有禁用镜像映射?
找一些SDRAM配置的例程看看,不要太依赖Keil的这个wizard啦 调试SDRAM有个心得:先不使用外部RAM空间,但要写SDRAM驱动时序,完全调试好了,在启动代码里
IMPORT__main
IMPORTSDRAMInit ;
BL SDRAMInit ;进入main之前就初始化SDRAM
LDR R0, =__main
BX R0
省得为汇编代码闹心。 支持 我也是这样弄的.另外如果要 MDKz知道你挂接了SDRAM,需要自己修改sct,把这部分内存加入连接脚本。这样当你设定大于64K内存的数组时也不会有问题的。 我也是这样弄的.另外如果要 MDKz知道你挂接了SDRAM,需要自己修改sct,把这部分内存加入连接脚本。这样当你设定大于64K内存的数组时也不会有问题的。 你的连接脚本不要用MDK自带的。因为那样MDK会默认把SDRAM放在IRAM前面,而由于这个原因,系统根本启动不了。更别说运行到SDRAM的初始化程序了。。
我用的配置如下:
LR_IROM1 0x00000000 0x00080000{ ; load region size_region
ER_IROM1 0x00000000 0x00080000{; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x10000000 0x00010000{; RW data
startup_LPC177x_8x.o (STACK)
startup_LPC177x_8x.o (HEAP)
.ANY (+RW +ZI)
}
RW_IRAM2 0x20000000 0x00008000{
.ANY (+RW +ZI)
}
RW_ESDRAM 0xA0000000 0x0200000{
.ANY (+RW +ZI)
}
}
要注意自己写脚本的时候需要在flash区域加上 startup_LPC177x_8x.o (STACK)
startup_LPC177x_8x.o (HEAP)
这部分是表示要把这些放在前面。
用MDK自动生成的会自动加入这个,但是受动编的可没这么智能 ,此外,这个是LPC1788,2478因为架构原因,可能放的不是这两个,而是别的。
页:
[1]