jianti 发表于 2015-12-16 10:50:59

windows Mobile内存拓展

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.dwFlags=0;
pMemSections.dwStart=IMAGE_WINCE_DRAM_EXT_PA;
pMemSections.dwLen=IMAGE_WINCE_DRAM_EXT_SIZE;

++dwExtMem;
OALMSGS(1, (L"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.dwStart=IMAGE_WINCE_DRAM_EXT_PA;这个是在给定额外扩展内存的虚拟地址的起始位置,
pMemSections.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 181M(0x0B500000) 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]
查看完整版本: windows Mobile内存拓展