Hi all,
We have the need to update one erase block in our FLASH RAM to record
some data permanently. We are running Windows CE.NET V4.2 on a PXA255
processor with IPSM V3.6 managing the Flash File system.
The documentation from Intel refers to "PSM Flash Control Semaphore"
to communicate to the IPSM software that you want to access the flash.
I originally planned to implement this write function in the
OEMIoControl() function but was stopped because I could not access the
Win32 Mutex() functions from the HAL. So, I moved the function into a
device driver and initiate the write by opening the device and calling
the DeviceIoControl() function.
Having implemented, I tested it on a target device using the Platform
Builder and it seemed to function correctly. I then moved it to a
release build and calling this function causes the Windows CE
operating system to completely lock up.
I suspect that the debug build works because the OS is executing out
of RAM.
The OS build is XIP from the FLASH RAM. But I thought that the design
of the Intel chips allowed me to run code from one block while erasing
and then writing to another.
I tried reconfiguring the driver MODULE in the BIB file to be SHC so
that it would be decompressed and so run out of RAM. But that
configuration also fails.
Would I have to disable interrupts while I do the erase and write?
The block that I am trying to overwrite has only configuration data in
it.
Any suggestions as to how to get this to work would be greatly
received.
Thanks in Advance
Brian Price
brianprice_AT_appliedcs_DOT_com_DOT_au