ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
501238 Топик полностью
fk0, легенда (28.03.2014 11:51 - 11:55, просмотров: 142) ответил Молодой коллега на Побайтовая запись есть, нет побайтовой перезаписи, вот собственно это основная задача которую должна решать библиотека. Ну и плюс защита от сбоев. Увеличение ресурса перезаписи мало заботит.
Побайтовая перезапись (перезапись одного байта) никаких практических задач (вроде хранения типа unsigned int) не решает. Это бред выдуманный 8-битными ассемблеристами. Нужна блочно-транзакционная форма записи. Или записано, или нет (остаётся валидна предыдущая версия записи). И никакие из "библиотек эмуляции ЕЕПРОМ", как и сам EEPROM, эту задачу не решают. Как сделать я написал. Могу добавить, что удобно просто иметь структуру в ОЗУ (ещё удобней, когда flash не на SPI, а memory mapped...) которая записывается и читается целиком. В этой структуре нужные поля данных, плюс поле серийного номера, поле magic (меняется при изменении структуры), поле контрольного кода. Код или CRC (следует выбирать CRC16 если пишется более ~16-32 байт), или различные варианты контрольных сумм. Например сумма Флетчера или Адлера. По моему мнению для flash (который имеет тенденции массового объединичивания при сбоях) сумма подходит лучше, чем CRC (который запросто не обнаруживает ошибки в таких ситуациях). До ~256 байт подходит 16-битная сумма, далее 32-битная. Практически на маломощных МК удобнее сумма Флетчера (считается быстрей). В Wikipedia есть ускоренный алгоритм для Fletcher32.
[ZX]