реклама на сайте
подробности

 
 
> MSP430 и FatFs, есть глюки
jorikdima
сообщение Aug 24 2008, 18:38
Сообщение #1


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Приветствую.
Нужна поддержка файловой системы в проекте. Решил использовать Tiny FatFs последней 006 версии. Нашел в инете порт для sd-card yeah.gif и вроде сразу заработало, чему я удивился. Но со временем начали вылезать проблемы. В итоге обнаружил пару мест в софте, которые пришлось править. Например функция get_cluster в коде имела такую строчку
Код
if (clust >= 2 && clust < fs->max_clust) {        /* Valid cluster# */

что ИАРом V4.10A воспринялось неправильно без скобок 07.gif ну и т.д.
А вопрос собственно про другое biggrin.gif .
Это баг или фича, что я не могу записать файл размером более 2048 байт??? Кстати использую микроСД если это важно.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jorikdima
сообщение Sep 2 2008, 06:44
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



в итоге проблема решилась заменой флешки smile.gif вместо 128 меговой микро взял 1 Гб. Насколько я увидел там другой размер кластера и как-то все заработало, хотя так толком и не понял в чем была проблема, ибо деталей файловой системы не знаю.

Но появилась проблема №2. У меня ведется логирование на флешку с АЦП. Я поступаю следующим образом: создаю в памяти кольцевой буфер, внего в прерывании от АЦП кладу намерянные данные по 8 байт 512 раз в секунду. Затем в фоне когда данных в буфере, скажем, половина от размера буфера или более, я вычитываю их и делаю f_write() на флешку. При этом длительность функции записи не должна превышать время в течении которого весь мой кольцевой буфер заполнится данными в прерываниях. То есть я должен гарантировать длительность работы функции f_write() не более чем сколько то. Так вот я решил померить сколько занимает запись и получилось следующее:
Пока мы запимали данных менее чем 512 байт запись почти мгновенна, ибо пишется в локальный массив ФС вОЗУ и флешь не используется. Если количество уже записанных данных переваливает за 512 байт, то это переписывается на флешь и занимает где-то 10 тиков ОС (я все в тиках меряю, а они равны почти 2 мс). Если количество уже записанных данных переваливает за 4к (размер кластера), то длительность около 45 тиков. Все это приемлемо и относительно стабильно (+- пара тиков).
Но, если логировать около пары-тройки минут, то на графике видно, что случаются ситуации, причем совершенно не ожиданно, когда запись длится заметно больше, вплоть до 120 тиков. Случается это не с какой-то периодичностью, а случайно. Поэтому поставить брейкпоинт и пройти по шагам не представляется возможным, ибо узнаешь о длительной записи только постфактум. Писал я данные с постоянной длинной, один раз 110*8 байт, один раз 64*8 байт. В аттаче результаты, первая колонка длительность в тиках, вторая скалько данных писалось. Почему так? Флешка периодически тормозит? smile.gif Кстати тактируется она частотой около 800 кГц.
Прикрепленные файлы
Прикрепленный файл  fs.rar ( 109.91 килобайт ) Кол-во скачиваний: 131
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016