这个问题涉及两个层面的问题, 1 flash硬件是如何读写数据的. 2. yaffs或者Jffs2是如何操作的.
如果你不使用文件操作来保存数据你就必须了解MTD或者flash是如何读写的. flash的读写时by sector的也就是说即使你只写一个byte 它也会把整个扇区重写. 这需要一定的时间, 所以如果你立刻断电数据不一定写进去了,因为他需要写整整一个扇区的数据.
为了克服这些问题,就有了yaffs和jffs2. 他们的基本原理是利用所谓的日志系统,不断的循环写数个扇区,保证数据的完整和准确性,比如jffs2最小需要8个扇区才能正常工作. 简单的说文件系统的价值就体现在这里了.
所以如果你直接操作MTD你就必须自己考虑备份和掉电的问题, 如果你使用适当的文件系统则不用. 但是必须明白,在硬件上,总线上的数据通讯并没有消失,相反使用文件系统在总线上的通讯反而更多,所以即使使用文件系统也并不等于你可以不受约束的写flash, 谨慎的选择什么时候写仍然是有些系统需要考虑的问题,特别当flash和别的设备共用总线的时候.
如果有兴趣做深入了解可以看看JFFS2等文件系统的文档