Hi Aaron
Generally it should be possible to use the uFileSystem without uParameterSystem or vice-verse so I will try testing the configurations to verify on the last NXP project release. Once I known whether there is a problem I will report back.
The reason why the parameter system (in the NXP project) uses quad-words to store each byte is due to the fact that the FLASH has a check sum for each quad-word in the memory. This doesn't allow a quad-word to be modified once it has been written.
This is due to a the property of the uFParameterSystem which allows the parameter content to be written on a byte bases. Note that this doesn't allow content to be changed on a byte basis if the value is not blank! In order to comply with this basis characteristic (for compatibility between all processors) there was no alternative but to make each single byte occupy the smallest programmable entity (quad-word). For most chips the smallest entity tends to be 16 or 32 bits and so the NXP FLASH memory represents a less suitable solution to meet this requirement; each byte takes up a lot of space...
However, there are various other methods if this is not suitable. One fairly new one to the project is
USE_PARAMETER_AREA and is especially suitable in NXP projects where the swap block is not of interest and optimum memory use is. It is also not yet described (it was added recently in an NXP based project where this operation was the most suitable) so I will make a first description here:
1) When this define is used
USE_PARAMETER_BLOCK and
USE_PAR_SWAP_BLOCK should be disabled. Also
FLASH_FILE_SYSTEM is not needed (I am quite sure of this since I worked recently on this project using the V1.4 release as base).
2) The parameters are essentially compatible.
3) When the parameters are saved they are saved as a single block with each byte occupying a single byte - therefore only complete parameter block writes are performed - no multiple smaller blocks are possible)
4) When a new write is performed, the FLASH sector is not deleted but instead a new block is simply added in FLASH following the original block.
5) When parameters are copied back from FLASH, the routines will automatically search for the last block in the list and use that (old blocks are not deleted but are ignored).
6) At some point further writes are no longer possible since there is no more space and so the complete FLASH sector is deleted and the write is then performed at the start of the sector again. There is a risk that all parameters are lost should power fail during this instance - if that is an issue in a project then the swap block is the way to go...
7)
There is an important point to be considered when working with NXP FLASH. This is that a single FLASH sector should
never be written more that 16 times without a sector delete taking place. If more writes are performed there is a risk of data corruption due to programming stress build up. Therefore the best parameter block size is (
sector size / 16). This will automatically cause a delete once every 16 parameter block updates. Larger sizes are also OK. Smaller sizes are best avoided - so just add extra dummy parameters to keep the minimum.
For extra details about the NXP FLASH see the following
http://www.utasker.com/forum/index.php?topic=136.0 and in particular the Philips application's link!
Regards
Mark