Re: xip changes between 2.6.11 and 20050530?

Todd Poynor
2005-07-29T20:02:21Z

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