我将 ARM GCC 用于 STM32F105RC 处理器。
在我的应用程序中,我现在有类似的东西:
typedef struct
{
uint16_t coinValue;
uint8_t minimumCoins;
} MIN_COIN_RENDERING;
typedef struct
{
uint16_t coinValue;
uint8_t hopperType;
uint8_t motorDelay;
} CONFIG_HOPPER;
typedef struct
{
MIN_COIN_RENDERING minCoinRendering[10];
CONFIG_HOPPER hopper[5];
uint8_t reservedFFU[X];
//
uint16_t crc;
} APPLICATION_CONFIG; // MUST have 128 bytes!
第一个问题是如何正确确定 FFU 保留的字节数(上面用 X 标记)。
如果你说:X = 128 - (10 x 3 + 5 x 4 + 2) = 76,这不是真的!
X 的正确值是 66,因为编译器会对齐结构中的字段(至少与编译器的默认设置一致)。
整个结构必须有 128 个字节,因为它将被存储到/从 EEPROM 中恢复。该结构用作我们在 EEPROM 中的影子副本...
我的问题:每次我在 APPLICATION_CONFIG 结构中添加新字段(或更改某些内容)时,有没有办法(更好、更灵活)拥有卷影副本(用于 EEPROM)而不必弄乱 reservedFFU 大小?