As a first step, you should determine whether your board has an unusual flash
configuration. In a standard flash configuration, the flash should be located at
a contiguous physical memory address that can be directly mapped, read, and written to by software.
Usually, the chips are allowed to be interleaved for performance/bus-width reasons.
Here are some examples of nonstandard flash configurations:
- Special alignment restrictions
- Some CPUs and/or boards require that
the memory be read or written to at certain sizes and alignments. These
boards cause unpredictable behavior (corruption, SIGBUS or SIGSEGV)
if the default memcpy()-based MTD read function is used.
- Miswired endian
- Some boards have improperly wired flash that
cause bytes to be in the wrong endian. This require
significant custom modifications to many MTD callouts in order to write commands and
read CFI data in the right endian.
- PCMCIA
- Under rare situations, some NOR flash-based PC Card
storage devices are supported. These require special interactions with the PCMCIA driver.
- SDRAM controller based
- Most Micron flash chips use an interface
based on SDRAM bus commands. While they can be made to work,
special code must be written to access the board's memory controller.
- NAND flash
- CompactFlash, SD Card, SmartMedia, Sony MemoryStick, etc.
These devices use NAND flash and are not supported by the devf-* flash
drivers.
NAND flash is totally different from NOR flash, but is often confused with
the NOR flash.
- SRAM
- The devf-ram driver may work with some battery-backed SRAM.
They are to be assessed on a case-by-case basis.
Keep reading if you want to give it a try, but we can't
guarantee the driver's resilience to power failure.
This is because SRAM has a completely different "failure mode"
from that of
NOR flash.
If your board has any such unusual configuration, don't hesitate to
consult your QNX Software Systems representative.