xip changes between 2.6.11 and 20050530?
Todd Poynor
tpoynor at mvista.com
Fri Jul 29 16:02:07 EDT 2005
Konstantin Kletschke wrote:
> To be sure:
> Any xip_* function only calls functions marked __xipram (which are
> located in RAM then hopefully also) and only __xipram marked functions
> call functions located still in flash?
Nico's comments in cfi_cmdset_0001.c describe it better than I did:
* No interrupt what so ever can be serviced while the flash isn't in array
* mode. This is ensured by the xip_disable() and xip_enable() functions
* enclosing any code path where the flash is known not to be in array
mode.
* And within a XIP disabled code path, only functions marked with __xipram
* may be called and nothing else (it's a good thing to inspect generated
* assembly to make sure inline functions were actually inlined and
that gcc
* didn't emit calls to its own support functions). Also configuring
MTD CFI
* support to a single buswidth and a single interleave is also
recommended.
The reason for "single buswidth and a single interleave" is to avoid
division operations to compute various things driven by those two
parameters, which will probably call a library function placed by
default in flash to do the divide; if a single buswidth and interleave
is configured then the derived values are compiled as constants and need
not be computed at runtime.
Yes, it's all a little delicate. ;)
--
Todd
More information about the linux-mtd
mailing list