我在富士通 16 位微控制器的 EEPROM 中存储数据时遇到问题。向 EEPROM 写入字节不是问题,我可以毫无问题地按字节写入和读取数据。
我们使用dword
s 的枚举在 EEPROM 中存储不同的变量,它们都是 4 个字节长。对于每个变量,我们最多要存储 4 个字节的空间。这非常不好,因为当我只想存储一个标志(一位)或一个只有一个字节长的变量时,它仍然会占用四个字节。
我们使用这种四字节技术的原因是我们知道我想要访问的变量存储在哪个地址上。这工作正常,但它有很多缺点。
一个是浪费的空间,另一个是我使用结构时出现的问题。
例如,我有一个类似的结构
typedef struct {
attenuator_whichone_t attenuator;
char* attenuatorname;
servo_whichone_t associated_servo;
ad_ad7683_whichone_t associated_adconverter;
word item_control;
word item_mode;
word item_position;
} attenuator_info_t;
并像这样初始化它:
static attenuator_info_t constinfo[_NUM_ATTENUATOR_WHICHONE_] = {...}
使用我们现在使用的代码,我们需要单独保存每个值。因此打破了结构。我真的很想按原样存储该结构。(以及我们在代码中的更多内容)。
据我了解,我需要一个文件系统。谷歌搜索给了我一些例子,比如microFAT 等等。在我看来,这是矫枉过正。
使用 sizeof 存储结构并遍历所有字节就可以了,但是,我该如何处理知道结构在 EEPROM 中的位置的问题呢?所以可能需要某种文件系统。没有更小的东西吗?还是什么诡计?无论如何,变量都是固定长度的。所以这就是为什么我想知道是否有一些好的和简单的方法来存储这些结构。
我希望我能详细说明我的问题。