![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
mantech
-
Постов
6 976 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные mantech
-
-
вот пример совмещеной работы на два физических носителя.
DRESULT disk_read ( BYTE drv, BYTE* buff, DWORD lba, BYTE count ) { switch (drv) { case DN_NAND: return NAND_read(buff, lba, count); case DN_MCI: return MCI_read(buff, lba, count); } return RES_PARERR; }
Более полную информацию можте подчерпнуть из примеров чана ffsample для lpc23xx
Это все у меня работает, я написал, что нижний уровень читает и записывает.
Мне интересна настройка самой фатфс, для одновременной работы с несколькими дисками...
Нужно-ли использовать для этого настройки partition или еще что...
"в ffconf.h указать не забыли?" нет, нге забыл :rolleyes:
-
Это Вы сейчас ошиблись или в исходнике так?
&fileSD или &fileUSB ? :)
Это я ошибся при перепечатке сюда. В данном случае - &fileUSB.
-
Да все так и есть за искл того, что у меня там цифра 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;???
Или это мутная часть чена, который решил втюхать работу с лог. и физ. дисками одновременно?
-
Не знаю, в тему или нет - насколько помню, возможность работы с несколькими дисками включалась через #define. Он у вас определен правильно?
Вот я про это и спрашиваю, как "настроить" дефайны в частности. Там много понаписано про логические диски, плюс как-то непонятно сделана передача номера физ. устройства в процедуры diskread и write...
Есть переменная default_vol, которая оределяется процедурой f_mount и переменная fs->drv, значение которой передается в disk_read, в структуре раздела, причем они берут данные из разных мест...
-
Написал данную тему в разделе армов, но ее почему-то перенесли в операционные системы??
Видимо фатфс уже стала не просто файловой, а у же осью :rolleyes:
Собственно вопрос к светилам в особенности по fatfs, есть 3 физ. диска - sd-карта, усб флешка и флеш контроллера, который используется как диск на 512Кбайт.
Нижний уровень работает исправно, т.е. по "отдельности" доступ к дискам есть, все читает и записывает,
но вместе (например копирование с диска на диск) не работает, причем отследил, что фатфс просто не обращается к процедурам чтения-записи соотв диска. Предполагаю, что фатфс не запоминает, к какому из дисков нужно обратиться, хотя в f_mount четко определяю номер 0,1 или 2 и открываю файл, где перед именем тоже указываю соотв диск - "1:filename.ext"
Смотрел доки, там что-то мутное по поводу одновременной работы дисков, макросы типа LD2PD и тп. Я не использую логические диски в пределах одного физического. Как настроить фатфс для такого режима работы?
-
На STM32F4 То же было. Похоже они новый мэнуал выложили и тут же убрали.
Погугли RM0090 reference manual там все должно быть. Сам его долго искал...
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
Собственно вопрос к светилам в особенности по fatfs, есть 3 физ. диска - sd-карта, усб флешка и флеш контроллера, который используется как диск на 512Кбайт.
Нижний уровень работает исправно, т.е. по "отдельности" доступ к дискам есть, все читает и записывает,
но вместе (например копирование с диска на диск) не работает, причем отследил, что фатфс просто не обращается к процедурам чтения-записи соотв диска. Предполагаю, что фатфс не запоминает, к какому из дисков нужно обратиться, хотя в f_mount четко определяю номер 0,1 или 2 и открываю файл, где перед именем тоже указываю соотв диск - "1:filename.ext"
Смотрел доки, там что-то мутное по поводу одновременной работы дисков, макросы типа LD2PD и тп. Я не использую логические диски в пределах одного физического. Как настроить фатфс для такого режима работы?
-
В отношении STM32F429 там (RM0090 ver 4) нет описания "плюшек", характерных именно 429, а не 407.
Да, я заметил - контроллера дисплея там точно нет(((
-
что и RM0008 не гуглится?
http://www.st.com/web/en/resource/technica.../CD00171190.pdf
Это для 107 мануал. Для 407 - RM0090 который я после 2х часов танцев с бубном и обращением к всевышнему, нашел у них на сайте
Сразу и ошибку с NAKом нашел, но еще "не вечер"...
Да, с СТ чтото странное: недавно познакомился с их чипом STM32F051. Микроконтроллер мощный в плане периферии, её возможностях - тут ничего не попишешь. Но дока - отвратительная! В смысле - как буд-то бы слегка кастрированная. В общем порой мучался на ровных местах...Да там нормальная дока (я про усб в смысле), просто сам контроллер навороченый очень, поэтому сложновато...
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
я практически купил кучку STM32F429 (в дороге), на которых даже нет документации на сайте)) Говорят, появится в октябре. Ну вот как-то так...
Прикольно, коты в мешке :blink:
Это случаем не те, что с ЖК контроллером и сдрамкой на борту?? Интересно бы посмотреть как они в работе...
-
Предлагается желающим добывать изюм из булочек, выискивая в этой навозной куче связанные с USB жемчужные зерна. Простите, оно мне надо ? И сил у меня на это нет. Ковыряние в мегабайтах исходников Линукса с целью выковыривания оттуда какой-то козявки - не мой конек.
Да уж, этот линукс... Меня тоже уже пытались "накормить" им, но не люблю копаться в чужих осях, особенно в тех, где нужно копать миллион файлов, с командной строкой в большинстве случаев и ждать несколько минут пересборку оси чтоб проверить тот-ли регистр был нужен...
Вобщем проблему с зависанием я решил, нашел глюк в либе, дело было в обработчике прерывания состояния канала, не всегда сбрасывался флаг NAK, отсюда постоянное прерывание до бесконечности...
Но моя радость еще не полная, есть еще одно НО, не всегда определяется картридер с карточкой... Чувствую придется еще "зарыться" в эти либы, мать их! :(
-
Документация на USB-движок, встроенный в эти МК была довольно неудачная и попросту неполная (т.е., даже имея ее, написать свою реализацию того же хоста было невозможно).
Нее, я только одного не понимаю, они что, не хотят, чтобы их микросхемы покупали?? Я уже целый час сижу на их сайте и ничего кроме даташита о том, что есть в этом камне, больше ничего нет!!! В чем смысл скрывать данные о девайсах в контроллере, снабдить все это чудо полукривыми либами, к которым тоже нет доков, кроме убогого описания усб либы и то, на 60% посвященной девайсу, а не хосту?? Или просто я дурак, что связался с стшным контроллером??? Хотя время еще есть можно послать его к "ядреной бабушке", и раскурить что-нить более путевое, типа nxp или atmel... На вашем месте, что лучше сделать??
-
Может кто дать ссылку на описание самого интерфейса усб? А то пока есть только общий даташит, и на сайте ст черт ногу сломает...
-
при горячем выключении USB - клавиатуры (именно клавиатуры, и ничего другого, производитель клавиатуры при этом не важен) система мертво зависает в среднем раз из десяти, а то и из пяти.
Дак это понятное дело... В данном случае не думаю, что виновата "железка", а про СТ-шные библиотеки вообще разговор особый!! Мне просто интересно, что лучше сделать при таком поведении хоста - как-то сбрасывать прерывание или ресетить сам хост, правда пока не знаю как...
-
Довелось мне поюзать платку дискавери в режиме усб-хоста. Так вроде все работает :rolleyes:
За одним нюансом - когда вставляешь-вынимаешь флеху "на горячюю" она как правило потом снова нормально подключается, но раз на 10й, а может и на 20й
... Просто виснет и все тут!!
"методом тыка" определил, что происходит постоянный вызов обработчика прерываний - OTG_FS_IRQHandler в котором вызывается процедура обработчика - USBH_OTG_ISR_Handler (...)
Причем, при "нормальной" работе хоста, прерывания вызываются только при подключенной флехе, а когда ее нет то нет и прерывания, а тут такое... :05:
Уважаемые гуру, может кто знает, что тут сделать можно?? Мое мнение - не происходит обработка какой-либо исключительной ситуации или ошибки хоста, хотя могу ошибаться. Как вариант - каким-либо образом проресетить усб контроллер, чтоб выйти из бесконечного прерывания...
-
Да это, как ZigBee с усилителем, ну ладно, чуть сложнее.
Вы же хотите встроить туда ОС с приложениями пользователя, плюс само ядро и стек, зигбишного куда круче...
Интересно, сколько инженеров будут работать над проектом? Просто к тому, что сам делал контроллер, без радиомодулей и протоколов, а только ОС с многозадачным интерпретатором, да поддержка периферии, mass storage, и всяческих менюшек и дисплеев... Дак у меня это месяца на 4 вышло, а тут объем в несколько раз больше. Да еще и тестирование. Задача не простая, уж поверьте...
Даже интересно, что тут получится...
-
Если и отключит, то не факт, что её тут же не включат обратно, прецеденты уже описывались.
Выход разве что в специальных контрактных M2M пакетах, с общим балансом на группу абонентов, который диспетчер сможет контролировать и пополнять удалённо.
Ну а если такой вариант - берем все то, что "выплюнул" модем и отправляем его в виде смски клиенту... Он уж разберется, ч то к чему...
-
Вот это - явная деза. Дело в том, что PDU как раз и используется как протокол передачи SMS. Если модуль поддерживает текстовый режим, то значит конвертер PDU у него внутри программно реализован. Причем иногда он кривовато реализован (ну или, скажем так, с особенностями) - в итоге результат, описанный в начале топика.
Приводили результат сравнения SIM300D при переводе с сотика сименс С35. На 35м передавало, на симе нет. Было что-то с длиной пакета, уже непомню - давно было дело...
PDU не использую из за процедуры "кудрявого" перекодирования в 7и битную кодировку.
"Причем иногда он кривовато реализован (ну или, скажем так, с особенностями) - в итоге результат, описанный в начале топика." - тоже не исключено, что так и есть.
Я думаю здесь нужно скорфигурировать кодировку, кажется командой AT+CSMPНо вообще говоря, чтобы не было недоразумений рекомендую использовать PDU режим (AT+CMGF=0)
kan35 - БОЛЬШОЙ РЕСПЕКТ!!! Так и есть, дело было тута
Может еще кому интересно будет.
Читаю из 700го там +CSMP: 17,255,0,241
А в 900м и висмо - +CSMP: 17,167,0,8
Если честно, незнаю, что это за циферки))), но когда задал в 900й параметры 700го - все заработало!!!
-
Не буду продолжать бессмысленный спор ибо нового в работе gsm стека еще не придумали и уже не придумают, а сам синтерион не даст 100 гарантии на отключение на лету. Только на корректное выключение.
Ну в принципе - да, чего тут продолжать... Мы тут просто распинаемся, а производители все-равно будут делать так, как им проще и выгоднее!
Вот есть один вопросик, тут проскакивало, что у симов часть команд сохраняется даже без &W. Так ли это на самом деле, и если я при каждом включении передаю блок команд инициализации, не опасно ли это для его флешки?
-
когда тачка угнана и стоит в металлическом отстойнике, спутники не помогут.
А разве трекер не может передавать предидущие координаты, если замер идет раз в сек. перед потерей спутника, координаты сильно не изменятся ведь..
-
Я думаю здесь нужно скорфигурировать кодировку, кажется командой AT+CSMP
Но вообще говоря, чтобы не было недоразумений рекомендую использовать PDU режим (AT+CMGF=0)
Хорошо, проверим, сравню, что в 700 и 900м попробовать данным параметром "обменяться"...
PDU не хотелось бы - МК слабоват и памяти мало, под поле для передачи...
Да и жаловались, что не во всех модемах работает, хотя сам не проверял.
-
з.ы. все это дело можно было бы запитать и от USB, только ограничить чем-нибудь ток заряда большого конденсатора lowESR, дабы не спалить порт...
Телеофисы так делали на 700х симах - USB+LDO+емкости+sim700 и работало. интерфейс через ft232rl...
-
Режем дорожку и ставим в разрыв ключик отключающий питание.
Кстати, может люди, "приближенные" к производителям модемов, подкинут идею, чтоб какой-нить watchdog с ключиками ставили прямо в модем??
-
Поэтому у любого модуля и имеется этот пишущий в память кусок и выбросить его согласно лицензии нельзя.
Почему так сделали америкосы изначально писавшие GSM часть - вопрос к ним, а не к производителю модуля.
Иными словами - такого модуля нет, который не занимается самопроизвольной записью во флеш?
FatFS и 3 физических диска одновременно!
в Программирование
Опубликовано · Пожаловаться
Диски физические или один с тремя лог. разделами?