и тему посмотрел по диагонали,
(по ссылке в ней открывается другая, где вопрос подключения JTAG эмулятора как я понял был решен)
ps
По мне проще Dragon купить на Ali, т.к. время дорого, а цена у него смешная
Код: Выделить всё
typedef struct{
uint8_t a;
uint8_t b;
uint16_t c;
uint16_t d;
}misk;
А не секрет, для чего понадобилось размещать множество переменных по фиксированным адресам?struct{
uint8_t _var1; #define var1 fixvars._var1
uint8_t _var2; #define var2 fizvars._var2
}fixvars;
Код: Выделить всё
volatile typedef struct{
uint8_t a;
uint8_t b;
uint16_t c;
uint16_t d;
}misk;
misk var __attribute__((section(".my_data"))) = {1,2,3,4};
Код: Выделить всё
LDFLAGS += -Wl,-section-start=.my_data=0x800300
Добавлено after 29 minutes 1 second:.my_data 0x00800300 0x6
.my_data 0x00800300 0x6 Variables.o
0x00800300 var
Код: Выделить всё
volatile misk my_var __attribute__((section(".my_data"))) = {1,2,3,4};
Код: Выделить всё
volatile misk my_var __attribute__((section(".my_data"))) = {.a=1, .b=2, .c=3, .d=4};Код: Выделить всё
my_var.a = 1; my_var.b = 2; my_var.c = 3; my_var.d = 4; Может как-то атрибут мешает_dark писал(а):как правильно инициировать структуру значениями по умолчанию?
код ниже не работает (в части инициализации)...
Код:
volatile misk my_var __attribute__((section(".my_data"))) = {1,2,3,4};
просто ерунда в данныхBuild succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
Код: Выделить всё
volatile __attribute__((section(".my_data"))) misk my_var = {1,2,3,4};
....
// my_var.a = 1;
__eePUT(0x40, my_var.a); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// my_var.b = 2;
__eePUT(0x41, my_var.b); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// my_var.c = 3;
__eePUT(0x42, my_var.c); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// my_var.d = 4;
__eePUT(0x43, my_var.d); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if(my_var.a < my_var.b) my_var.c = my_var.d + 1;
__eePUT(0x44, my_var.c); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Код: Выделить всё
volatile __attribute__((section(".my_data"))) misk my_var = {1,2,3,4};
...
my_var.a = 1;
__eePUT(0x40, my_var.a); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
my_var.b = 2;
__eePUT(0x41, my_var.b); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
my_var.c = 3;
__eePUT(0x42, my_var.c); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
my_var.d = 4;
__eePUT(0x43, my_var.d); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if(my_var.a < my_var.b) my_var.c = my_var.d + 1;
__eePUT(0x44, my_var.c); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Добавлено after 5 minutes:LDFLAGS += -Wl,-section-start=.my_data=0x800200