Попробовал пару способов - не пошло. Хотелось бы поменять порядок следования переменных в EEPROM. Для этого требуется что-то типа прототипа переменной объявить. Как - не знаю. Размещать вручную все переменные - нехочу.
Описываю задачу.
Имеется несколько переменных в EEPROM, один большой массив и переменная указывающая длину этого масива. По типу:
.......
uint8_t __eeprom Rollint[] = { 0xDA, 0x54, 0x00, 0x00, 0x01, 0x08, 0x07, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x23, 0x33, 0x20, // 0xCF, 0xF0, 0xE8, 0xE2, 0xE5, 0xF2, 0x20, 0xEC, 0xE8, 0xF0, 0x20, 0xEF, 0xE0, 0xED, 0xED, 0xEE, // 0x21, 0x21, 0x21, 0x00, 0xDA, 0x45, 0x07, 0x07 // };
uint32_t __eeprom eAdrProgEnd = sizeof(Rollint);
Так как объявлено сейчас - работает, но дело в том что этот массив может переписываться в процессе работы. По этому его надо разместить в конце EEPROM, а переменную eAdrProgEnd разместить где-нибудь перед ним. Если я механически переношу её вверх - выскакивает ошибка (оно и понятно - необъявлен Rollint). Пытался адрес закрепить типа @1, тоже ошибка, но уже линковщика.
Подскажите как это сделать правильно.
|