Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить, что файл полностью записан? 
V
    Опции темы
LeonidPr
Дата 14.7.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



 Доброго всем времени суток. Столкнулся со следующей проблемой, возможно вы предложите варианты её решения.
 Есть девайс на STM32F107RC. Реализован Mass storage device на базе примеров от ST. Физическое хранилище - внутренняя флэш контроллера (мне много не надо, 160КБ достаточно). Файловая система FAT16. 
 Внутренняя программа контроллера непрерывно проверяет наличие в хранилище некоторого файла, если он там есть - читает его в ОЗУ и обрабатывает.
 Для работы с FAT16 пользуюсь FatFS. 
 Так вот, проблема в следующем: когда я кидаю файл, именно во время записи прошивка глючит, иногда улетает в исключение HardFault. Такого не наблюдается ни когда файл уже есть (идет нормальная его обработка), ни когда его нет (на дисплее сообщение об отсутствии файла).
 Я так понимаю причина в том, что когда винда его пишет, то сначала создается запись в каталоге. Если в это время я пытаюсь проверить его наличие, видимо FatFS сообщает что все OK! Ну и моя прошивка соответственно пытается этот файл считать, но его фактически нет в этот момент. 
 Вот такая проблемка. Мой вариант решения - тормозить обработку на время записи файла. Но, скорее всего в устройстве не будет кнопок. Тогда выходит, нужна внешняя прога, которая будет по USB слать запрос на стоп/старт.
 Может у кого-то есть другие варианты?
 Собственно, я хотел узнать, можно ли  как-то понять, что файловая операция завершена (т.е. виндовая прога, выполнявшая копирование вызвала CloseHandle)?
 А, есть еще один вариант - записывать в хранилище некоторый файл-флаг. Если он есть - обработка работает. Но это - не очень удобно.
--------------------
pkunzip.zip
PM MAIL   Вверх
xvr
Дата 15.7.2012, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(LeonidPr @  14.7.2012,  19:34 Найти цитируемый пост)
 Может у кого-то есть другие варианты?

Контролируйте активность обменов по USB. Перед тем, как проверять файл нужно убедится, что в течении некоторого времени по USB ничего не передавалось

PM MAIL   Вверх
LeonidPr
Дата 15.7.2012, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Согласен конечно. Только вот загвоздка. USB Trace показывает что хост периодически шлет девайсу SCSI команду Test Unit Ready, проверяя готовность устройства. Посмотрю на работе завтра насколько часто это происходит.
--------------------
pkunzip.zip
PM MAIL   Вверх
xvr
Дата 15.7.2012, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(LeonidPr @  15.7.2012,  11:31 Найти цитируемый пост)
 USB Trace показывает что хост периодически шлет девайсу SCSI команду Test Unit Ready, 

Отфильтруйте ее - учитывайте только команды записи

PM MAIL   Вверх
LeonidPr
Дата 15.7.2012, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Ну да, что-то туплю. И то верно. Спасибо, что подбросили идейку. Тему закрываю.
--------------------
pkunzip.zip
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.