Pull to refresh

Comments 12

UFO just landed and posted this here
Да, конечно. В разные страницы.
Но вообще вопрос какая страница будет переписываться чаще всего зависит от типа использования. Если плодить тысячи файлов-настроек (а что, удобно ведь! название настройки — один файл — одна настройка) то первая, где хранятся имена в FAT. И очевидно — та страница, где чаще всего меняются данные.
UFO just landed and posted this here
Записывать настройки «изнутри» используя FAT — не очень простой вариант.
«Изнутри» удобнее читать (надо будет продумать что-то лайт варианта поиска по FAT указателя на данные по имени файла) настройки, сделанные через компьютер.

Если надо именно только читать-писать изнутри, по лучше использовать следующий алгоритм:
— выделить переменную-счетчик циклов и хранить на странице флеш.
— по достижении к примеру 100000, страницу помечать как использованную и переходить на следующую.
так мы увеличим ресурс флеша в количество раз доступных страниц (если страница 1К — то 100К нашего флеша (если 28К прошивка), постранично выдержат 10 000 000 циклов)
Первой откажет страница флэша со счетчиком, не зря про wear-leveling — не мало копий сломано.

Отличный пример. Вы осуществили мою небольшую мечту и протоптали дорожку. Спасибо большущее!

… конечно, если мы счетчик будем хранить на одной странице. Но так делать не надо. Счетчик всегда переезжает на "свежую" страницу, оставляя предыдущую, использованную, исключительно "read-only"

Вполне можно и на одной, просто записывать в незанятые ячейки. А когда все (256 или 512, или сколько там вмещается на страницу) заполнятся, только тогда стирать страницу. Собственно, это часть стратегии level wearing
Не изобретайте велосипед. В телефонах, планшетах и др. устройствах со флешем уже давно используются алгоритмы хранения, когда активная зона записи «переползает» по поверхности флеша для более равномерного износа.
Посмотрите внимательно на «старые» модели. Тогда отсутствовала «живучая» флеш, а потому проблема износа флеша была актуальна. И система использовала хитрые алгоритмы для минимизации износа флеша.

Поищите еще по теме «Flash file system».
Я и говорил, что это часть стратегии. Пример для одной 16 или 32 бит переменной и блока в 1КБ. Если блоков несколько, то раскидывается на несколько блоков. В начале в первом заполняется, второй и т.п. После заполнения последнего стирают все и начинают с начального блока.
А там нет EEPROM чтобы хранить счётчик? Обычно у него ресурс перезаписи больше.
На рассматриваемом F103 — увы нет. Но есть Backup registers — это несколько десятков 16 битных регистров, сохраняющихся при отключении основного питания, если есть питание от VB — дополнительной батарейке (как примерно биос на материнке). У них неисчерпаемый ресурс перезаписи, пока жива батарейка.
под счетчик можно отвести 1 страницу флэша (2 Кб). Хватит на 5 миллионов записей.
Sign up to leave a comment.

Articles