-
- Там разные команды для доступа используются: LD / ST для RAM, и LPM для чтения из программной, он же flash. Наверняка адресное пространство оперативки у вас не сильно велико и может статься, что старший бит можно использовать как указание читать из флеши. То есть указатель приводим к указателю на flash и по нему читаем. Костыль, но как вариант. Dingo(1 знак., 18.01.2023 10:44, ссылка)
- Разовью: написать заглушку, которая работает с RAM и с Flash, и
посмотреть дизассемблер. - Dingo(18.01.2023 07:57)
- Ассемблер можно посмотреть здесь (avr-gcc progmem.h): Nikolay_Po(1 знак., 18.01.2023 11:07, ссылка)
- Спасибо и вам за ссылку. - Dingo(18.01.2023 11:45)
- Всё так. #define PROGMEM __ATTR_PROGMEM__ => #define
__ATTR_PROGMEM__ __attribute__((__progmem__)) => typedef
int8_t PROGMEM prog_int8_t; и подобное. Память не подвела меня. - Dingo(18.01.2023 11:14)
- Спасибо. А вот как относиться к этому примечанию: "This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC."? Получается, что в avr-gcc всё делается вручную, и сам себе злобный буратино, если не указал атрибуты и не использовал подходящие функции. А в общем GCC типы памяти учитываются автоматически, но не все ядра AVR поддерживаются. - Nikolay_Po(18.01.2023 11:33)
- Ассемблер можно посмотреть здесь (avr-gcc progmem.h): Nikolay_Po(1 знак., 18.01.2023 11:07, ссылка)