Цитата(Boriska @ Jan 5 2013, 21:08)

Можно ли как нибудь сказать компилятору, что переменные должны располагаться в памяти последовательно?
На уровне компилятора -- поместить их все в одну охватывающую структуру.
Код
struct {
mainServerTypeDef mainServer;
devicesBuiltTypeDef devicesBuilt[DEVICES_BUILT_MAX];
devicesRFTypeDef devicesRF[DEVICES_RF_MAX];
} cfg;
Будут все вместе и в заданном порядке. Неудобство -- придётся обращаться как к полям структуры cfg.
На уровне линкера -- помещать в исходниках все переменные такого рода в специальную секцию, её описать линкеру, он соберёт все в одну кучу.
Как бонус можно располагать переменные в разных файлах, при включении файла в проект его часть подошьётся автоматически.
Но порядок переменных не гарантирован.
Для «одним блоком записть в EEPROM» нужно будет обращаться к определяемым линкером символам начала секции и размера секции.