как это ни странно, в верхних двух десятках тем не нашёл подходящей ;-)Странная ошибка в avr-gcc при занесении переменных в program memory
в режиме компиляции C++Сборки WinAVR-20081205 (4.3.2) и kgp-20081223/1227 (4.4.0) помещают переменные prog_uint8_t в .data
Код
#include <avr/pgmspace.h>
extern const prog_uint8_t runa1 = 0x04;
prog_uint8_t runa2 = 0x0A;
Код
85 .global runa1
86 .section .rodata.runa1,"a",@progbits
89 runa1:
90 0000 04 .byte 4
98 .global runa2
99 .section .data.runa2,"aw",@progbits
101 runa2:
102 0000 0A .byte 10
В режиме компиляции С - всё нормально.
В режиме С++ никакие extern "C" не помогают.
Если же объявить так
Код
const uint8_t runa1 PROGMEM = 0x04;
const uint8_t runa2 PROGMEM = 0x0A;
то и в режиме С++ всё нормально.
В WinAVR-20071221 (4.2.2) этой ошибки нет