Этот вопрос уже пережёвывался, но еще раз спрошу: как читать/писать в EEPROM в stm8L101k3. Снимать защиту записи я научился, кажется (во всяком случае бит DUL устанавливается). Теперь как указать, что переменная находится именно в EEPROM? если объявляю
- всё компилируется, но не линкуется. Здесь был какой-то рецепт для космика (что-то про "в опциях проекта на вкладке linker в ячейку Objects прописать либу libl0.sm8"), но не могу такого найти в IAR. Можно было бы просто написать char leadingzero @0x9fff; Но как знать, что компилятор туда что-нибудь не засунет?
p.s. Конструкция __no_init __eeprom char leadingzero @ 0x9FFC; - компилируется. И переменная даже читается. Но не пишется. Стоит только в код добавить присвоение, как линкер выдаёт:
Код: Выделить всё
Error[Li005]: no definition for "__eeprom_program_byte" [referenced from eeprom_util.o(dlstm8smn.a)]
Error[Li005]: no definition for "__eeprom_wait_for_last_operation" [referenced from eeprom_util.o(dlstm8smn.a)]
Не понятно, что оно от меня хочет, чтобы я присоединил что-то или написал ему эти функции?
p.p.s. Гугл нашел такую фразу:
User guide corrections
IAR C/C++ Development Guide, DSTM-2
• EEPROM, page 27
Additional information:
To make the automatic writes to eeprom variables work, the user must implement the three functions declared at the top of the file stm8/src/lib/eeprom_util.c.
Так значит, я должен?