Модуль FAT карты microSD - PullRequest
       32

Модуль FAT карты microSD

1 голос
/ 29 апреля 2011

Я недавно использовал плату microSD uALFAT от GHI Electronics для регистрации данных, но у меня были проблемы с ее надежностью;некоторые из его вызовов функций иногда занимают гораздо больше времени, чем я могу справиться.В настоящее время я использую микроконтроллер MSP430 для связи с uALFAT.

Какие существуют подобные платы, которые я мог бы использовать вместо uALFAT, который, надеюсь, будет более надежным?

ИЛИ

Что было бы наиболее выгодным OEM-решением, если бы мне нужно было разработать собственную интерфейсную плату для работы с MSP430?

Ответы [ 3 ]

6 голосов
/ 29 апреля 2011

Я бы подумал об этом немного по-другому.Любое запоминающее устройство на основе флэш-памяти может иметь переменную синхронизацию при записи.Особенно с файловой системой, выравниванием износа и подобными функциями.Это, как правило, характер вспышки, поскольку вы должны стирать целые блоки и перемещать объекты.Если вы не можете жить с переменным временем, то, что я сделал в прошлом, это переместил этот фрагмент из критической по времени части кода.

Обычно я добавляю очередь, в которую записывается критический по времени код, а затем в фоновом режиме извлекаю из очереди и записываю на SD-карту.В ОСРВ это будет задачей с более низким приоритетом.В цикле опроса это будет функция, вызываемая, когда система находится в режиме ожидания.

Это изменяет ограничение с наихудшего случая синхронизации для вызова функции на простую возможность удовлетворения требований средней пропускной способности для ведения журнала.В худшем случае задержка и пропускная способность определяют размер очереди;как правило, это может быть маленьким.

4 голосов
/ 30 апреля 2011

Вероятно, это более сложно, и лучшее решение, как советовал @sbass, даже если вы решите изменить файловую систему.Вам нужно точно определить, где и почему возникла задержка, прежде чем обвинять uALFAT.

Однако для записи я успешно использовал ELM FatFs и его сокращение ELMPetit FatFs , а также EFSL .

Что касается задержки, в то время как, например, с помощью ELM я достиг скорости записи до 300 кбит / с с использованием SPI (скоростьв значительной степени зависит от карты, и скорость может варьироваться от 30 кбит / с до 1 Мбит / с), я не смог успешно использовать ее для записи потока данных 96 кбит / с в течение любого продолжительного периода времени, даже с оптимизированным буферомразмеры (кратные размеру сектора) и очередь в 50 кбит из 512 байтовых секторов.Это было не из-за библиотеки, а скорее из-за SD-карты, которая, очевидно, на границах 1 Мбит, остановилась бы на 128 миллисекунд, что было достаточно для исчерпания буферизации, предоставляемой очередью.Решение, конечно, состоит в том, чтобы увеличить буферизацию, как сказал @sbas, но в этом случае общий объем системной памяти составлял всего 64 кбит, так что это было невозможно.

Если вы можете бросить память и задачу RTOS (возможно, собственный SYS / BIOS от TI в вашем случае) на проблему, вы должны иметь возможность работать с библиотекой, которая у вас есть.Объем необходимой оперативной памяти зависит от скорости передачи данных и от того, работает ли она непрерывно или непрерывно.

1 голос
/ 10 мая 2011

Спасибо, ребята, в итоге я реализовал кольцевой буфер с дополнительной памятью, и это, похоже, помогло.Спасибо за хороший вклад!

...