Как работает алгоритм Flash ECC (код исправления ошибок Flash), реализованный на STM32L1xx?
Справочная информация. Я хочу выполнить несколько инкрементных записей в одно слово в программной флэш-памяти микроконтроллера STM32L151 без выполнения страницыстереть между.Без ECC можно устанавливать биты постепенно, например, сначала 0x00, затем 0x01, затем 0x03 (STM32L1 стирает биты в 0, а не в 1) и т. Д. Поскольку STM32L1 имеет 8-битный ECC на слово, этот метод не работает.Однако, если бы мы знали алгоритм ECC, мы могли бы легко найти короткую последовательность значений, которая могла бы записываться постепенно, без нарушения ECC.
Мы могли бы просто попробовать различные последовательности значений и посмотреть, какие из них работают (однотакая последовательность 0x0000001, 0x00000101, 0x00030101, 0x03030101), но если мы не знаем алгоритм ECC, мы не можем проверить, нарушает ли последовательность ECC, и в этом случае исправление ошибок не будет работать, если биты будут повреждены.
[Edit] Функциональность должна использоваться для реализации простой файловой системы, использующей внутреннюю программную память STM32L1.Куски данных помечаются заголовком, который содержит состояние.Несколько кусков могут находиться на одной странице.Состояние может меняться со временем (сначала «новый», затем «использованный», затем «удаленный» и т. Д.).Количество состояний невелико, но это значительно упростило бы ситуацию, если бы мы могли перезаписать предыдущее состояние без необходимости сначала удалять всю страницу.