пытаюсь сделать следующее:
Вне зависимости от размещения, переменная должна располагаться в коде (const uint32_t) с фиксированным смещением относительно от начала LoadRegion
Само начало экспортируется из стартапа в виде __Vectors
Код
AREA RESET, DATA, READONLY
EXPORT __Vectors
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
EXPORT __Vectors
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
Код
#define FW_OFFSET 500
extern const uint32_t __Vectors;
const uint32_t fw_version __attribute__((at(__Vectors+FW_OFFSET))) = FW_VERSION;
extern const uint32_t __Vectors;
const uint32_t fw_version __attribute__((at(__Vectors+FW_OFFSET))) = FW_VERSION;
на что получаю:
Код
App\boot.c(29): error: #28: expression must have a constant value
компилятор не понимает, что оба значения (__Vectors и FW_OFFSET) -- константы?
или я вообще неправильно делаю и нужно как-то по-другому?