IPSM w/ P30 Flash Results in Registry Corruption
- From: authorwjf <authorwjf@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 4 May 2006 10:05:02 -0700
We recently upgraded our product to use P30 flash chips. Previously, our
flash memory had no boot blocks. Specifically, our configuration consists of
two banks of flash memory, each consisting of two 128MBit chips (for a total
of 4 chips). The result is we have one application bank and one boot bank of
flash. On the boot bank we keep our bootloader config block, along with the
OS. The upper bank is used to store the windows registry and a user file
volume. I think this is a pretty standard configuration for a WINCE /
XSCALE platform.
Since changing to the P30 chips, I have been unsuccessful in getting the
registry to work. When the registry gets flushed, it becomes corrupted. Our
flash chips have a bottom boot block and I thought all I had to do was add an
offset of 128K * 2 or 0x40000 to the physical and virtual starting addresses
in PLAT_API.C. Apparently this is not enough. Below is my PLAT_API.C. Not
part of this module are the defines for physical and virtual flash. These
are 0x04000000 and 0x0x9D000000 respectively.
#define P30_OFFSET 0x40000
#define P30_LENGTH 0x1FC0000
// note: see eboot/main.c & update EraseRegFromFlash parameters if these are
changed:
UINT8 PLAT_DefineArrayParameters(PSM_OEMInfoPtr oem_info_ptr)
{
static const PSM_OEMInfo oem_info = {
/* PhysicalReadStartAddress */ (VOID_PTR)(APP_FLASH_BASE_PHYSICAL +
P30_OFFSET),
/* PhysicalWriteStartAddress */ (VOID_PTR)(APP_FLASH_BASE_PHYSICAL+
P30_OFFSET),
/* PhysicalBurstReadStartAddress */ (VOID_PTR)(APP_FLASH_BASE_PHYSICAL+
P30_OFFSET),
/* VirtualReadStartAddress */ (VOID_PTR)(APP_FLASH_BASE_C_VIRTUAL+
P30_OFFSET), /* cache address */
/* VirtualWriteStartAddress */ (VOID_PTR)(APP_FLASH_BASE_U_VIRTUAL+
P30_OFFSET), /* flash address */
/* VirtualBurstReadStartAddress */ (VOID_PTR)(APP_FLASH_BASE_C_VIRTUAL+
P30_OFFSET), /* cache address */
/* MaximumArrayLength */ P30_LENGTH,
/* MaximumRegistrySize */ 0x00080000,
/* ManagedAreaStart */ 0, /* boot block on P30 flash accounted for already */
/* ManagedAreaLength */ P30_LENGTH,
/* ReadBusWidth */ 32,
/* WriteBusWidth */ 32,
/* BurstReadBusWidth */ 0
};
The PSM drive seems to format and the user volume is there and works.
However if I do a regflush, on the next reboot the registry is corrupted.
Does anyone know if this could be a problem with using (v)3.5 of PSM or
(v)4.1 of WINCE? With so few parameters at my disposal it doesn't seems
there is a limited number of places I could be at fault.
Thanks in advance to anyone who takes the time to comment :)
.
- Follow-Ups:
- RE: IPSM w/ P30 Flash Results in Registry Corruption
- From: anonymous
- RE: IPSM w/ P30 Flash Results in Registry Corruption
- Prev by Date: Re: Driver won't load
- Next by Date: Re: How Can I to add Printer in Windows CE 5.0
- Previous by thread: Re: How to change template in PB 5.0 ?
- Next by thread: RE: IPSM w/ P30 Flash Results in Registry Corruption
- Index(es):
Relevant Pages
|