alcosar (25.01.2007 23:12, просмотров: 27234)
at45db и как с ней работать. Остаются сомнения правильно ли делаю, можно ли сделать лучше, достаточно ли надежно.
Задача у меня такая: с ПК по последовательному порту на скорости 115200 нужно записывать файлы разного размера и сколько раз сколько потребуется. Страница разбита на 2 области - данные и служебная.
В странице для данных использую 256(at45db041, at45db041) или
512 байт данных (at45db161, at45db321).
После них следует байт состояния страницы - хорошая или плохая(дефектная).
Если этот байт не 0xff, то страница плохая.
Таблицы с дефектными страницами заводить не хотелось, т.к. используемый 8 битный микроконтроллер с 256 байт ОЗУ (MSC51). И каждый раз искать в таблице адрес рабочей страницы - долго.
0xff выбран потому, что когда память стерта все ячейки читаются как 0xff и нет необходимости начальной инициализации состояния страниц(форматирования).
Что вы об этом думаете?
Далее следует байт типа страницы - страница с данными или заголовк файла, описывающий его размер и имя и проч.
Затем следуют 2 байта порядкового номера страницы в файле.
Затем 1 байт контрольной суммы данных в странице по алгоритму crc8.
wear leveling обеспечивается тем, что запись ведется последовательно, один файл после другого.
Как вы обеспечиваете wear leveling?
Когда только начинал никаких проверок не делал, контрольных сумм не вводил.
Работает до сих пор - уже около 5 лет. Вроде проблем не было. Так что сомневаюсь стоило заводить контрольные суммы и wear leveling.
Ваши комментарии, критика.