Организация данных в EEPROM

У меня есть EEPROM объемом 64 КБ, организованная в виде 128-байтовых страниц, на моей плате, которая взаимодействует с AT Mega 1281. Плата также имеет слот для SD-карты и может копировать некоторые файлы конфигурации в EEPROM (которая действует как внутренняя память). Память). Из-за особенностей платы необходимы только два типа файлов — один известен как данные цепи, а другой — данные о местоположении — оба являются двоичными файлами.

До сих пор я просто разделял EEPROM на две половины по 32 КБ и записывал данные схемы в верхнюю половину, а данные о местоположении — в нижнюю половину. Оба файла также имеют 25-байтовый заголовок. Я копирую заголовок на последних страницах соответствующей половины файлов, т.е. страница, начинающаяся с адреса 0x7F80, имеет заголовок файла данных цепи, а адрес, начинающийся с 0xFF80, имеет другой заголовок. Данные всегда будут иметь фиксированную ширину, что упрощает произвольный доступ.

Мой вопрос: есть ли лучший и более простой способ организации данных в EEPROM? На данный момент я даже не сохраняю длину данных, так как это на самом деле не нужно. Но я думаю, что это может добавить еще один шаг к безопасности, если я включу это в заголовок.


person saad    schedule 28.05.2012    source источник


Ответы (2)


Лучше? Это зависит. Проще? Точно нет. Это зависит от того, насколько сильно ваше «всегда». Насколько вы сами верите, что файлы всегда будут фиксированной длины? Тот факт, что вы задаете этот вопрос, вероятно, означает некоторые сомнения. Помните об принципе KISS. Разработка микроконтроллеров по-прежнему остается областью, где ненужные функции представляют собой прямую угрозу стабильности решения. Наличие длины данных в заголовке было бы полезно, если вы хотите сделать доступ к EEPROM более общим. Но опять же, обобщение для двух файлов — это излишество.

Вторая мысль: вместо того, чтобы вводить длины файлов, которые вам на самом деле не нужны, я хотел бы знать, почему вы храните заголовки файлов на противоположной стороне соответствующего фрагмента памяти. «Заголовок» для меня - это то, что нужно прочитать перед самим файлом. Вы можете сохранить одну передачу адреса чтения в EEPROM.

person Pavel Zdenek    schedule 28.05.2012

Я считаю, что в любом встроенном проекте самое простое решение — лучшее. Ваш способ организации хранения прост и, похоже, отвечает всем вашим требованиям.

Любая попытка «улучшить» или «оптимизировать» это решение приведет к усложнению кода и повысит вероятность появления в нем ошибки. Поэтому делайте все свои инженерные решения максимально простыми. Если появятся новые требования, вы всегда сможете найти для них новое простое решение. Не делайте преждевременных оптимизаций.

person werewindle    schedule 28.05.2012