main.c:
Код
#define NAME "Name"
#define VERSION 1
typedef struct{
const u08 name[sizeof(NAME)];
const u08 maxLenRespond;
const u16 version;
const u16 size;
}Version;
static Version version __attribute__((section(".StructVersion"))) = {
NAME,
sizeof(Version),
VERSION,
sizeof(Version)
};
#define VERSION 1
typedef struct{
const u08 name[sizeof(NAME)];
const u08 maxLenRespond;
const u16 version;
const u16 size;
}Version;
static Version version __attribute__((section(".StructVersion"))) = {
NAME,
sizeof(Version),
VERSION,
sizeof(Version)
};
makefile:
Код
STRUCT_ADDRESS = 0x700
LDFLAGS += -Wl,--section-start=.StructVersion=$(STRUCT_ADDRESS)
LDFLAGS += -Wl,--section-start=.StructVersion=$(STRUCT_ADDRESS)
Структуру необходимо расположить в самых последних ячейках флэша.
Конечно же, большого труда не составит вычислить ее положение и вручную прописать, но это придется делать каждый раз при изменении проца или формата структуры.
Возможно, есть некий механизм, вроде этого:
Код
#define STRUCT_ADDRESS (SizeMega128 - Sizeof(struct))
или
#define STRUCT_ADDRESS (SizeMega128 - Sizeof(struct) - MaxSizeBootMega128))
или
#define STRUCT_ADDRESS (SizeMega128 - Sizeof(struct) - MaxSizeBootMega128))