2440+WINCE5.0 扩充128M SDRAM的问题。
我使用2440+wince5.0的平台,原先使用2片共64M字节的SDRAM,每片256bit,16bit位宽;现在想使用128M SDRAM,所以用了4片和原先一模一样的SDRAM芯片,在硬件连接上4片sdram芯片的BA0都与addr24连接,BA1都与addr25连接,另外其中两片使用CS6作为片选,另外两片使用CS7作为片选。
软件上我主要作了以下几处改动:
1) setpldr程序中对sdram控制器进行配置时将BK76MAP设置为64MB每bank;
2) eboot程序中对sdram控制器进行配置时将BK76MAP设置为64MB每bank;
3) 在oemaddrtab_cfg.inc文件中,对地址的映射关系进行了修改如下:
; modify(mod) 为了支持128M SDRAM
; DCD 0x80000000, 0x30000000, 64
; DCD 0x84000000, 0x10000000, 32
; DCD 0x86000000, 0x18000000, 32
DCD 0x80000000, 0x30000000, 128
4) 在config.bib文件中,做了如下修改:
;;; modify(for 128M SDRAM)
; NK 80200000 01E00000 RAMIMAGE
; RAM 82000000 01E00000 RAM
NK 80200000 01E00000 RAMIMAGE
RAM 82000000 05E00000 RAM
做了上述修改后,我通过eboot下载nk.bin,加载ce时,调试信息输入下面内容后,就不再输出信息,也就是说系统终止在此处了:
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8020114c
+OEMInit
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
InitDisplay clkval_calc 1
-OEMInit
针对上面的问题,我做了如下几项测试:
1) 在stepldr程序中对30000000~37ffffff的地址进行遍历,先写再读,发现都是正常的,也就是说硬件似乎没有问题,内存的物理地址空间也没有问题;
2) 在eboot中对下面的虚拟地址进行读写测试,对83ff0000~83ffffff测试时候,发现都是正常的,对87ff0000~87ffffff测试的时候,发现都不太正常;我把一级页表的内容全部打印出来,也没有发现什么问题,也就是说在一级页表中对虚拟地址84000000~87ffffff范围的地址映射都是正确的。
我现在对eboot中对87ff0000~87ffffff 这段地址的访问不正常非常困惑,可能这个问题解决了,下载nk.bin启动的问题也就解决了。
哪位高手能指点一下,谢谢!