首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

急ARM11 wince6 128M内存升级到256M有关问题

2013-10-30 
急!急!ARM11wince6 128M内存升级到256M问题大家好:最近调pxa320,wince6 内存升级问题,修改了一些地方,还是

急!急!ARM11 wince6 128M内存升级到256M问题
大家好:
  最近调pxa320,wince6 内存升级问题,修改了一些地方,还是有问题,执行完OEMGetExtensionDRAM函数后系统就卡死了,我修改了以下地方,还请大家指正错误所在:
1.修改oemaddrtab_cfg.inc文件中
;DCD0x80000000, 0x80000000, 128 ; ZYLONITE DDR SDRAM (128 MB).
改为
DCD0x80000000, 0x80000000, 256 ; ZYLONITE DDR SDRAM (128 MB)
2.xlli_zylonite_defs.inc文件中
xlli_MDCNFG_value_32    EQU     0x80000729      ; SDRAM Config Reg - 32 bit bus
改为
xlli_MDCNFG_value_32    EQU     0x80000749      ; SDRAM Config Reg - 32 bit bus
变成了14行,10列
3在init.c文件中添加
BOOL OEMGetExtensionDRAM(LPDWORD pMemoryStart, LPDWORD pMemoryLength)
{
*pMemoryStart = 0x88000000;
*pMemoryLength = 0x08000000; //128M
return TRUE;
}
改完之后,boot可以正常启动,写NK后就卡在OEMGetExtensionDRAM这个函数执行完,请大家指点一下,谢谢
此外我修改了config.bib.image_cfg.h,zylonite.h文件中,有关内存的大小,相应的内存大小都变成原来的2倍,也没什么变化,还是卡死在这
[解决办法]
楼主,你确定你的DRAMC的bank寻址能力是128MB吗?如果原来一片128MB能正常跑,那两片根本不需要修改行和列参数就都能寻址访问到。请仔细看datasheet或找硬件工程师确认。
打个浅显的比方:假设bank寻址能力是256MB,现在每个bank上有128MB内存,那:
第一个bank寻址范围:0x80000000~0x8fffffff
0x80000000~0x87ffffff 内存有效访问
0x88000000~0x8fffffff NC无效访问
第二个bank寻址范围:0x90000000~0x9fffffff
0x90000000~0x97ffffff 内存有效访问
0x98000000~0x9fffffff NC无效访问
从你的问题描述“从0x88000000处开始读写,不能正常读写”来看,十有八九bank寻址范围要大于128MB。执行OEMGetExtensionDRAM后卡死的原因是因为内核要遍历内存然后建立分页内存表等相关内容,你映射表包括了NC的范围,访问自然卡死。
上面的比方是基于以前的一些平台经验。如果确认bank的寻址能力是128MB,那最好让硬件工程师协助一下了。

热点排行