设为首页 收藏本站
查看: 1092|回复: 0

[经验分享] windows Mobile内存拓展

[复制链接]

尚未签到

发表于 2015-12-16 10:50:59 | 显示全部楼层 |阅读模式
c:\WM653WEHH\PLATFORM\AM33X\SRC\INC\addrtab_cfg.inc
c:\WM653WEHH\PLATFORM\AM33X\SRC\INC\image_cfg.h
c:\WM653WEHH\PLATFORM\AM33X\SRC\KERNEL\OAL\init.c
在这三个文件中做了更改。


首先要说的是这个函数:
DWORDOEMEnumExtensionDRAM(PMEMORY_SECTION pMemSections, DWORD cMemSections)
{
DWORD dwExtMem=0;

pMemSections[dwExtMem].dwFlags=0;
pMemSections[dwExtMem].dwStart=IMAGE_WINCE_DRAM_EXT_PA;
pMemSections[dwExtMem].dwLen=  IMAGE_WINCE_DRAM_EXT_SIZE;

++dwExtMem;
OALMSGS(1, (L"[OAL]OEMEnumExtensionDRAM!\r\n"));
return dwExtMem;

}

下划线的宏定义是在image_cfg.h中定义的,而这个位置是必须保持和在addrtab_cfg.inc文件中所做列举的内存映射一致,并且虚拟内存映射的范围必须在0x80000000~0xA0000000之间,否则也会导致失败。

查看MSDN可以发现:
-----------------------------------------------------PMEMORY_SECTION的定义如下----------------------------------------------------------------------
typedefstruct _MEMORY_SECTION {
  DWORD dwFlags;
  DWORD dwStart;
  DWORD dwLen;
} MEMORY_SECTION, *PMEMORY_SECTION;


dwFlags
Reserved for future use.
Must be set to zero.
dwStart
Start address, statically mapped virtualaddress, of the memory section.//内存分段的起始地址,静态映射的虚拟地址
dwLen
Number of bytes in the memory section.
--------------------------------------------------------------------------END----------------------------------------------------------------------------------------
pMemSections[dwExtMem].dwStart=IMAGE_WINCE_DRAM_EXT_PA;这个是在给定额外扩展内存的虚拟地址的起始位置
pMemSections[dwExtMem].dwLen=  IMAGE_WINCE_DRAM_EXT_SIZE;这个是在给定额外扩展内存的虚拟地址的大小

注意,查看这个PMEMORY_SECTION结构体中地址使用的是虚拟地址,由后面的解释部分可以看出来。
而这个地址的起始位置和大小已在addrtab_cfg.inc文件中列举出来。

============================这个是addrtab_cfg.inc文件中地址的映射设置:===============================

           DCD       0x80000000,0x80000000,  256    ; SDRAM
;         DCD       0x8a000000,0x8a000000,        96        ; SDRAM for ramdisk,不需额外说明,续见image_cfg.h
         
        DCD     0x90000000, 0x48000000,  4      ; L4S
        DCD     0x90400000, 0x4A000000,  4      ; L4F
        DCD     0x90800000, 0x44C00000,  4      ; L4WKUP
        DCD     0x90C00000, 0x47C00000,  4      ; L4FW
        DCD     0x91000000, 0x40300000,  1      ; OCMC RAM
        DCD     0x91100000, 0x08000000,  16     ; NAND Flash SC0   
        DCD     0x92100000, 0x49000000,  1      ; TPCC   
        DCD     0x92200000, 0x49800000,  3      ; TPTC
        DCD     0x92500000, 0x46000000,  8      ; McASP   
        DCD     0x92D00000, 0x47400000,  4      ; USB/CPPI
        DCD     0x93100000, 0x47800000,  1      ; MMCHS2
        
        DCD     0x93200000, 0x53000000,  1      ; SHA
        DCD     0x93300000, 0x53400000,  1      ; AES0
        DCD     0x93400000, 0x54C00000,  4      ; ADC_TSC
        DCD     0x93800000, 0x56000000,  16      ; SGX530
        DCD     0x94800000, 0x40200000,  1      ; SRAM
        DCD     0x94900000, 0x4C000000,  1      ; EMIF0
        DCD     0x94A00000, 0x50000000,  1      ; GPMC
         
        DCD     0x94B00000,0x90000000, 181        ; RAM 181M0x0B500000 SDRAMfor RAMDISK on second bank         
        DCD     0x00000000, 0x00000000,  0      ; end of table
===========================================END======================================================

---------------------------------------------------这个是image_cfg.h文件中关于扩展内存的定义------------------------------------------------
//
//  Define: IMAGE_WINCE_DRAM_EXT
//
//  Following constants define the base addressfor additional DRAM on the EVM.
//
#defineIMAGE_WINCE_DRAM_EXT_PA                0x94B00000//0x96000000
#defineIMAGE_WINCE_DRAM_EXT_SIZE         0x0b500000//181Mbyte

//
//  Define: IMAGE_SHARE_ARGS_xxx
//
//  Following constants define location andmaximal size of arguments shared
//  between loader and kernel. For actualstructure see args.h file.
//
#defineIMAGE_SHARE_ARGS_PA             0x80000000
#defineIMAGE_SHARE_ARGS_CA             0x80000000
#defineIMAGE_SHARE_ARGS_SIZE           0x00001000

---------------------------------------------------------------------------------END----------------------------------------------------------------------------

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151915-1-1.html 上篇帖子: Windows服务程序在C下的实现 下篇帖子: Windows Driver Kit DBG宏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表