Hi All,
I got a very odd problem on my StrongARM CPU based WinCE 4.1 system.
Originally the platform has 32MB RAM and the physical starting address of
the RAM is 0xC000000 and it works fine. Later we changed the RAM chip to
64MB one, I have modified the config.bib and OEMAddressTable to reflect the
changes, but the image that I build can't startup!
For the 32MB RAM , the physical address region is : 0xC0000000~0xC1FFFFFF;
For the 64MB RAM, the physical address region is : 0xC0000000~0xC3FFFFFF;
In the OEMAddressTable, I do mapped whole 64MB RAM, and in config.bib I
changed RAM setting
from:
RAM 8C140000 01EC0000 RAM
To:
RAM 8C140000 03EC0000 RAM
But it just not works. I can't imagine why that happened.
I can guarantee in the OEMAddressTable, there's no overlapping after I do
the 64MB RAM mapping. And the hardware also don't have a problem. Because
if I only modified OEMAddressTable and not made any change to config.bib ,
the image will still running, just we can only see 32MB RAM available. And
if at this time we are using following code to map additional 32MB RAM to
a virtual address, we can do read/write with the additional 32MB RAM without
a problem.
void* pRAMBase = (void*)VirtualAlloc(0, 0x01000000, MEM_RESERVE,
PAGE_NOACCESS);
VirtualCopy((PVOID)pRAMBase , (LPVOID)(0xC2000000>>8),
0x01000000,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL)
BTW. I've ever do the similar thing on a XScale platform and everything
works fine after I extented the memory setting.
Anyone can tell me which part that I missed regarding this issue?
Thanks a lot!
Xu Jun