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

 
 
 
Reply to this topicStart new topic
> FAT, FATfs, usb Помогите разобраться с файловой системой, Помогите запустить файловую систему на stm32f107
batisto4ka
сообщение Jul 18 2012, 13:29
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Помогите разобраться с библиотекой файловой системы fatfs. Ситуация такая.Есть отладочная плата sk-mstm32f107. Нужно сделать на ней хост, чтобы можно было подлючить флешку, записать/считать файл, вобщем порыться в флэшке. Пробовала библиотеку efsl. Эта файловая система не инициализируется, т.к. размер кластера на флешке больше 512 байт. Флешка 16 гектарная. отформатирована в FAT32.
Пробую библиотеку fatfs. Но с ней какие-то непонятки. Вроде флешка инициализируется (имеется в виду функция инит диск библиотеки фатфс). Монтируется диск, а при попытке создания файла внутри функции f_write clst = create_chain(fp->fs, fp->clust);
возвращает 0xFFFFFFFF и соответсвенно функция записи файла возращает FR_DISK_ERR. Подскажите, пожалуйста, что это может быть? Из-за чего?
Есть ли у кого-то примеры для стшки работы с файловой системой?
Go to the top of the page
 
+Quote Post
shmur
сообщение Jul 18 2012, 13:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 28-11-11
Пользователь №: 68 553



Из описания FR_DISK_ERR в файле ff.h: A hard error occured in the low level disk I/O layer. То есть скорее всего ваш физический уровень, который вы сами реализуете и подсовывайте фатфсу, вернул ему ошибку.
Go to the top of the page
 
+Quote Post
dubb
сообщение Jul 18 2012, 16:08
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-08-09
Из: Сибири
Пользователь №: 51 936



Вы использовали ту библиотеку, которую предлагает ST (USB host device lib)? Там как раз FatFS.
Сейчас тоже разбираюсь с ЮСБ хостом. Из примера в этой либе сделал работоспособный проект (пока тупо пишет и читает rolleyes.gif ) под плату TE-STM32F207.

Go to the top of the page
 
+Quote Post
kan35
сообщение Jul 19 2012, 04:16
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



не понятно зачем сразу начинать с записи!? Отформатируйте флэшку на компьютере, запишите туда текстовый файл и отработайте чтение для начала.

Сообщение отредактировал kan35 - Jul 19 2012, 06:19
Go to the top of the page
 
+Quote Post
oman
сообщение Jul 19 2012, 05:57
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 27-02-07
Пользователь №: 25 714



попробуйте увеличить число эндпоинтов (USBH_MAX_NUM_ENDPOINTS)
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Jul 19 2012, 06:51
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Цитата(kan35 @ Jul 19 2012, 07:16) *
не понятно зачем сразу начинать с записи!? Отформатируйте флэшку на компьютере, запишите туда текстовый файл и отработайте чтение для начала.

Проблема решена. В функциях файла diskio disk_write, disk_read и т.д. взятых из примера юсбишной библиотеки переменная Stat негде не обновляет свое значение, а оставляет инициализированное STA_NOINIT. Заменив эту перменную на вызов функции disk_status(drv) все заработало..теперь на 16 гб флешку записывается и создается файл. Сейчас буду пробовать чтение из файла.

Сообщение отредактировал batisto4ka - Jul 19 2012, 06:52
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Jul 19 2012, 13:20
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Цитата(batisto4ka @ Jul 19 2012, 09:51) *
Проблема решена. В функциях файла diskio disk_write, disk_read и т.д. взятых из примера юсбишной библиотеки переменная Stat негде не обновляет свое значение, а оставляет инициализированное STA_NOINIT. Заменив эту перменную на вызов функции disk_status(drv) все заработало..теперь на 16 гб флешку записывается и создается файл. Сейчас буду пробовать чтение из файла.

Собственно, чтение из флешки также опробовано. Все работает. Терь можно обновляться с флешки.
Go to the top of the page
 
+Quote Post
dubb
сообщение Aug 6 2012, 13:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-08-09
Из: Сибири
Пользователь №: 51 936



Всем доброго дня. Чтобы не плодить сущностей, задам в этой теме вопрос по FATFS: Каков максимальный размер накопилтеля с которым оно будет работать. Хочется для одного проекта 128Gb на USB Flash. Реально ли это?
Go to the top of the page
 
+Quote Post
dubb
сообщение Aug 8 2012, 16:26
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-08-09
Из: Сибири
Пользователь №: 51 936



STMовский встроенный USB не хочет работать с 128Gb флешкой Kingston DataTraveler HyperX 3.0. Пишет USBH_USR_UnrecoveredError.Видимо его смущает поддержка USB 3.0 этой флеш.

А вот с 32Gb Sandisk Cruzer Fit всё работает. Только очень печалит меня имеющаяся скорость записи - около 1.2 Мбит/с. Дописываю в существующий файл по 50000 Байт. Ушла почти вся оперативная память микроконтроллера blush.gif (STM32F207VG).
Начал подумывать о внешней памяти по FSMC, чтобы писать буферами большей длинны, но в ближайшем будущем такой апгрейт нереален.

Пока собираюсь ставить микруху физического уровня для поддержки USB HS. Выбрал USB3300. Надеюсь с ней получиться поднять скорость при таком же размере дописываемого буфера.

Может кто использовал связку STM и USB_HS_PHY? Каких скоростей записи удалось достичь?

ЗЫ: Нашёл тест скорости используемой флешки http://usbflashspeed.com/20182, там её разгоняют до 12.39 MByte/s - значит расти есть куда, вопрос только в том, что окажется слабым звеном))
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:40
Рейтинг@Mail.ru


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