-
- А я и не нашёл способа, как записать все биты так, чтобы во флеши
они стали нулями. Nikolay_Po(818 знак., 10.04.2026 23:09)
- Зачем? У меня на V303 работает портированный эмулятор EEPROM по
мотивам an2594 от STM и запись в нем происходит стандартным
способом полусловами. Но после Ваших исследований стало понятно,
что запись в страницу 256 байт каждый раз сопровождается стиранием
страницы и убиением ресурса перезаписи, т.е. на 128 записей
полуслова приходится 128 стираний страницы. Поэтому решил
переделать на быструю запись страницами по 256 байт. Но в работе
алгоритма an2594 в начале каждой petrd(812 знак., 11.04.2026 08:29)
- Я пишу подряд записи с уникальными номерами. Маркер ставлю один,
целиком на всю страницу, о том, что её стёр до конца успешно (чтобы
не было страниц, стирание которых не было выполнено до конца из-за
сбоя питания во время). А дальше - просто пронумерованные записи. Nikolay_Po(95 знак., 11.04.2026 08:32)
- в an2594 примерно тоже самое, промежуточный маркер 0xEEEE ставится
в момент когда текущая страница становится полной и нужно последние
свежие данные из нее перенести в новую страницу (тоже защита от
пропадания питания), после переноса данных стираем старую страницу
(маркер в ней автоматом становится 0xE339) и затем в новой заменяем
промежуточный маркер на валидный и уже после этого с данными можно
работать. - petrd(11.04.2026 09:04)
- А зачем данные переносить? Это не увеличивает ли износ? Я оставляю
все страницы с данными не стёртыми. Nikolay_Po(411 знак., 11.04.2026 21:56)
- С конца. Велосипед не мой, мне было проще адаптировать готовое, чем изобретать с нуля. Чем принципиально отличается память CH32V от STM32F1, то что она на "проводках"? А не пофиг ли, работать все равно через контроллер флеши, которые сильно похожие. В моем варианте 2 страницы по 4кб (изначально было ограничено размером страницы стандартного стирания, после перехода на быстрый режим минимально можно перейти и на 2х256 байт, но это опасно, такое себе) стирание происходит petrd(547 знак., 12.04.2026 10:05)
- А зачем данные переносить? Это не увеличивает ли износ? Я оставляю
все страницы с данными не стёртыми. Nikolay_Po(411 знак., 11.04.2026 21:56)
- в an2594 примерно тоже самое, промежуточный маркер 0xEEEE ставится
в момент когда текущая страница становится полной и нужно последние
свежие данные из нее перенести в новую страницу (тоже защита от
пропадания питания), после переноса данных стираем старую страницу
(маркер в ней автоматом становится 0xE339) и затем в новой заменяем
промежуточный маркер на валидный и уже после этого с данными можно
работать. - petrd(11.04.2026 09:04)
- Я пишу подряд записи с уникальными номерами. Маркер ставлю один,
целиком на всю страницу, о том, что её стёр до конца успешно (чтобы
не было страниц, стирание которых не было выполнено до конца из-за
сбоя питания во время). А дальше - просто пронумерованные записи. Nikolay_Po(95 знак., 11.04.2026 08:32)
- Зачем? У меня на V303 работает портированный эмулятор EEPROM по
мотивам an2594 от STM и запись в нем происходит стандартным
способом полусловами. Но после Ваших исследований стало понятно,
что запись в страницу 256 байт каждый раз сопровождается стиранием
страницы и убиением ресурса перезаписи, т.е. на 128 записей
полуслова приходится 128 стираний страницы. Поэтому решил
переделать на быструю запись страницами по 256 байт. Но в работе
алгоритма an2594 в начале каждой petrd(812 знак., 11.04.2026 08:29)
- А я и не нашёл способа, как записать все биты так, чтобы во флеши
они стали нулями. Nikolay_Po(818 знак., 10.04.2026 23:09)