Comments 12
UFO just landed and posted this here
Да, конечно. В разные страницы.
Но вообще вопрос какая страница будет переписываться чаще всего зависит от типа использования. Если плодить тысячи файлов-настроек (а что, удобно ведь! название настройки — один файл — одна настройка) то первая, где хранятся имена в FAT. И очевидно — та страница, где чаще всего меняются данные.
Но вообще вопрос какая страница будет переписываться чаще всего зависит от типа использования. Если плодить тысячи файлов-настроек (а что, удобно ведь! название настройки — один файл — одна настройка) то первая, где хранятся имена в FAT. И очевидно — та страница, где чаще всего меняются данные.
UFO just landed and posted this here
Записывать настройки «изнутри» используя FAT — не очень простой вариант.
«Изнутри» удобнее читать (надо будет продумать что-то лайт варианта поиска по FAT указателя на данные по имени файла) настройки, сделанные через компьютер.
Если надо именно только читать-писать изнутри, по лучше использовать следующий алгоритм:
— выделить переменную-счетчик циклов и хранить на странице флеш.
— по достижении к примеру 100000, страницу помечать как использованную и переходить на следующую.
так мы увеличим ресурс флеша в количество раз доступных страниц (если страница 1К — то 100К нашего флеша (если 28К прошивка), постранично выдержат 10 000 000 циклов)
«Изнутри» удобнее читать (надо будет продумать что-то лайт варианта поиска по FAT указателя на данные по имени файла) настройки, сделанные через компьютер.
Если надо именно только читать-писать изнутри, по лучше использовать следующий алгоритм:
— выделить переменную-счетчик циклов и хранить на странице флеш.
— по достижении к примеру 100000, страницу помечать как использованную и переходить на следующую.
так мы увеличим ресурс флеша в количество раз доступных страниц (если страница 1К — то 100К нашего флеша (если 28К прошивка), постранично выдержат 10 000 000 циклов)
Первой откажет страница флэша со счетчиком, не зря про wear-leveling — не мало копий сломано.
Отличный пример. Вы осуществили мою небольшую мечту и протоптали дорожку. Спасибо большущее!
Отличный пример. Вы осуществили мою небольшую мечту и протоптали дорожку. Спасибо большущее!
… конечно, если мы счетчик будем хранить на одной странице. Но так делать не надо. Счетчик всегда переезжает на "свежую" страницу, оставляя предыдущую, использованную, исключительно "read-only"
Вполне можно и на одной, просто записывать в незанятые ячейки. А когда все (256 или 512, или сколько там вмещается на страницу) заполнятся, только тогда стирать страницу. Собственно, это часть стратегии level wearing
Не изобретайте велосипед. В телефонах, планшетах и др. устройствах со флешем уже давно используются алгоритмы хранения, когда активная зона записи «переползает» по поверхности флеша для более равномерного износа.
Посмотрите внимательно на «старые» модели. Тогда отсутствовала «живучая» флеш, а потому проблема износа флеша была актуальна. И система использовала хитрые алгоритмы для минимизации износа флеша.
Поищите еще по теме «Flash file system».
Посмотрите внимательно на «старые» модели. Тогда отсутствовала «живучая» флеш, а потому проблема износа флеша была актуальна. И система использовала хитрые алгоритмы для минимизации износа флеша.
Поищите еще по теме «Flash file system».
А там нет EEPROM чтобы хранить счётчик? Обычно у него ресурс перезаписи больше.
На рассматриваемом F103 — увы нет. Но есть Backup registers — это несколько десятков 16 битных регистров, сохраняющихся при отключении основного питания, если есть питание от VB — дополнительной батарейке (как примерно биос на материнке). У них неисчерпаемый ресурс перезаписи, пока жива батарейка.
под счетчик можно отвести 1 страницу флэша (2 Кб). Хватит на 5 миллионов записей.
Sign up to leave a comment.
STM32F103C8T6 как накопитель flash с файловой системой FAT12