我的板上有一个64KB的EEPROM,组织为128字节的页面,与AT Mega 1281对话。该板还有一个SD卡插槽,能够将一些配置文件复制到EEPROM上(作为内部记忆)。由于电路板的性质,只需要两种类型的文件 - 一种称为电路数据,另一种是位置数据 - 都是二进制文件。
到目前为止,我刚刚将EEPROM分成两个32K的两半,并将电路数据写在上半部分,位置数据写在下半部分。两个文件都有一个25字节的标题。我将文件的最后几页中的标题复制到相应的一半,即从地址0x7F80开始的页面具有电路数据文件的标题,而从0xFF80开始的地址具有另一个标题。数据总是具有固定的宽度,这使得随机访问非常容易。
我的问题是,有没有更好,更简单的方法来组织EEPROM中的数据?目前,我甚至没有存储数据的长度,因为它并不是真正需要的。但我认为如果我在标题中包含它,可能会增加另一个安全步骤。
答案 0 :(得分:1)
我相信,在任何嵌入式项目中,最简单的解决方案是最好的。您组织存储的方式很简单,看起来它符合您的所有要求。
任何“改进”或“优化”此解决方案的尝试都会导致更复杂的代码,并且会增加在其中制造错误的可能性。因此,尽可能简化所有工程解决方案。如果会出现新的要求,您总能为他们找到新的简单解决方案。不要做任何过早的优化。
答案 1 :(得分:1)
更好?这取决于。更简单?真的不。这取决于你的“永远”有多强。你认为自己文件总是固定长度多少钱?你问这个问题的事实可能意味着一些疑问。请记住KISS principle。微控制器开发仍然是一个不必要的功能直接威胁解决方案稳定性的领域。如果要使EEPROM访问更通用,则在标头中具有数据长度将非常有用。但话说回来,两个文件的泛化是一种矫枉过正。
第二个想法:我想知道为什么你将文件头存储在相应内存块的另一侧,而不是引入你实际上不需要的文件长度。对我来说,“标题”是在文件本身之前需要阅读的内容。您可以将读取地址的一次传输保存到EEPROM。