ARV писал(а):ничуть.
это если нет механизма автоматического контроля за местом размещения данных, тогда надо следить за адресами.
как известно, одно из прогрессивных достижений языков высокого уровня заключается как раз в том, что пользователь оперирует не абсолютными адресами ячеек памяти, а абстрактными именами переменных. зачем же отказываться от этого?!
Попробую пояснить, что я имею в виду.
Скажем, банальнейший проект - электронные часы, которые делает почти каждый, кто начинает работать с МК. Между включениями нужно сохранять яркость, режим 12/24, параметры будильника и т.п. Для всего этого надо несколько байтов в EEPROM.
Да, вполне можно использовать автоматическое размещение их в EEPROM. И, по идее, можно даже быть уверенным, что каждый раз при включении эти параметры будут инициализироваться всегда из одних и тех же ячеек, то есть, "своими" данными, а не перепутаются с чем-то ещё.
Но такой вариант подразумевает, что в случае обновления прошивки (FLASH) станет обязательна и перепрошивка EEPROM, т.к. в новой версии могут появиться и другие переменные, причём не просто "далее по EEPROM", а вклинившись между предыдущими. Старый EEPROM будет несовместим с предыдущим. И старые настройки вводить придётся заново.
Поэтому ручной контроль адресов в EEPROM вполне имеет право на жизнь. Как с точки зрения большей совместимости между версиями прошивки, так и с точки зрения возможности редактирования бинарника eeprom сторонним приложением.
Скажем в своих нескольких проектах я всю подобную конфигурацию описываю в одном файле eeprom.h наподобие
Код: Выделить всё
#define EEPROM_BR_STBY 0x32
#define EEPROM_BR_WORK 0x33
В программе переменные привязываются к этим адресам, и этот же хидер является "якорем" для десктопного приложения для редактирования этого же бинарника.