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

 
 
> STM32f407 и FatFS, 3 физических диска, одновременная работа...
mantech
сообщение Sep 15 2013, 15:06
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Написал данную тему в разделе армов, но ее почему-то перенесли в операционные системы??
Видимо фатфс уже стала не просто файловой, а у же осью rolleyes.gif

Собственно вопрос к светилам в особенности по fatfs, есть 3 физ. диска - sd-карта, усб флешка и флеш контроллера, который используется как диск на 512Кбайт.

Нижний уровень работает исправно, т.е. по "отдельности" доступ к дискам есть, все читает и записывает,
но вместе (например копирование с диска на диск) не работает, причем отследил, что фатфс просто не обращается к процедурам чтения-записи соотв диска. Предполагаю, что фатфс не запоминает, к какому из дисков нужно обратиться, хотя в f_mount четко определяю номер 0,1 или 2 и открываю файл, где перед именем тоже указываю соотв диск - "1:filename.ext"

Смотрел доки, там что-то мутное по поводу одновременной работы дисков, макросы типа LD2PD и тп. Я не использую логические диски в пределах одного физического. Как настроить фатфс для такого режима работы?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mantech
сообщение Sep 16 2013, 07:43
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Да все так и есть за искл того, что у меня там цифра 3 стоит.

Коды возврата правильные, но работает так:

Делаю f_mount (0,fatSD);
f_mount (1,fatUSB);

Далее циклю все это -
{
открываю файл на SD -
res= f_open(&fileSD,"0:fileSD.txt",FA_READ);
...
res=f_read(&fileSD,&buff,512,&cnt);
затем вывожу в уарт то, что прочитал
f_close(&fileSD);

открываю файл на USB -
res= f_open(&fileSD,"1:fileUSB.txt",FA_READ);
...
res=f_read(&fileUSB,&buff,512,&cnt);
затем вывожу в уарт то, что прочитал
f_close(&fileUSB);

еще раз открываю тот-же файл на USB -
res= f_open(&fileSD,"1:fileUSB.txt",FA_READ);
...
res=f_read(&fileUSB,&buff,512,&cnt);
затем вывожу в уарт то, что прочитал
f_close(&fileUSB);
}

А работает все это так - читается файл на SD правильно, затем не читает с USB, но читает второй раз, потом снова читает с SD и т.д...

Если убираю чтение с SD, то с усб читает оба раза правильно! В чем тут может быть дело? Да, когда идет первое "чтение" с усб, активности в процедурах USB_DiskRead нет!


Вот еще один вопрос - что означает запись: *rfs=fs=FatFs[vol];
Т.е. создается массив структур FatFs, равный кол-ву дисков? Тогда зачем вот это - FATFS usb_fs, sdc_fs;???
Или это мутная часть чена, который решил втюхать работу с лог. и физ. дисками одновременно?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Sep 16 2013, 14:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Это Вы сейчас ошиблись или в исходнике так?
Цитата(mantech @ Sep 16 2013, 10:43) *
открываю файл на USB -
res= f_open(&fileSD,"1:fileUSB.txt",FA_READ);
...
res=f_read(&fileUSB,&buff,512,&cnt);
затем вывожу в уарт то, что прочитал
f_close(&fileUSB);

&fileSD или &fileUSB ? sm.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 16 2013, 16:23
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Ruslan1 @ Sep 16 2013, 17:41) *
Это Вы сейчас ошиблись или в исходнике так?

&fileSD или &fileUSB ? sm.gif


Это я ошибся при перепечатке сюда. В данном случае - &fileUSB.
Go to the top of the page
 
+Quote Post



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

 


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


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