Просмотр сообщений
Страниц: [1]
1  Разработка / Программирование под QNX / Виртуальная файловая система : Августа 30, 2006, 05:29:48 pm
Спасибо всем за помощь!

Всё дело было в том, что "mc" и "readdir" требуют, чтобы после каждой структуры "dirent" шла структура "dirent_extra". Кроме того,  начало структур "dirent" и "dirent_extra" должны начинаться в буфере с байта, кратного восьми.

В хелпе же сказано, что передача структуры "struct stat" является необязательной, а про "dirent_extra" вообще ни слова.
2  Разработка / Программирование под QNX / Виртуальная файловая система : Августа 28, 2006, 08:48:44 pm
Добрый день!

Пытаюсь создать устройство, включающее в себя виртуальные папки и файлы. Смысл программы состоит вот в чём:
Программа регистрирует в системе некоторое устройство типа "папка", при попытке чтения папки (функция readdir, если не ошибаюсь) программа обращается к базе данных и найдя все таблицы в ней, возвращает набор структур "sruct dirent" с именами таблиц. При попытке прочесть вложенные папки (таблицы в бд), соответственно возвращаются записи таблицы.

Проблема в следующем: вложенные папки и файлы видны только по ls, mc их не видит, показывает, будто родительская директория пуста. "readdir" также возвращает "пусто".

В чём может быть проблема?
Может, кто-нибудь уже встречал такую проблему. Код для io_read могу прислать, если понадобится
3  Разработка / Программирование под QNX / USB drivers 4 QNX6.2.1 : Марта 10, 2006, 06:10:37 pm
2 tWINGe:
 Всем спасибо за содействие и помощь, на данный момент со всем разобрался (ну по райней мере то, что нужно работает). Виной во всем была моя невнимательность.
Кстати, такой вопрос: разработка драйвера для usb-устройтсва под 4 от 6 сильно отличаются(имеется в виду непосредственно использование функций ddk, а не администратор ресурсов), если да, то чем? Я сейчас работаю под 6.3, но необходимо в будущем написать под 4. Как я понял из хелпа используемые функции, что в 4, что в 6.3 одни и те же.


2 -Al-:
 Ну не понимаю я Вас.. Мы, возможно, говорим о разных ПЗУ. Я имел в виду ПЗУ, которое находится внутри  FX2. Если у Вас хватило терпения и усидчивости для внимательного прочтения пятисотстраничного Technical Reference Manual от Cypress'a , то Вы знаете, что аппаратно USB-engine обрабатывает ТОЛЬКО лишь команду получения адреса на шине USB. ВСЁ.
А все остальное реализует т.н. firmware.
И даже если вы имели в виду внешнее ЭСППЗУ (типа 24Cxx на шине I2C), То не понимаю вашего скепсиса его не ставить: у нас на макетке без его зашивки корректно обрабатываются команды (из  под QNX!!) загрузки прошивки (cypress vend.spec.command).
Хотя с другой стороны не вижу причины его не поставить в устройство: места на плате занимает мало, стоимость меньше доллара.
Но вариант загрузки FX2 через cypress vend.spec.command элегантнее: не требуется никаких  излишних телодвижений - только поменять на хост-машине файлик *.hex... и .. Вуаля! =)
4  Разработка / Программирование под QNX / USB drivers 4 QNX6.2.1 : Марта 06, 2006, 11:07:49 pm
-Al-
У FX2 НЕТ ПЗУ, firmware грузится по USB или с внешней Flash  


Несмотря на отсутствие упоминания о нем в datasheet: не верьте глазам своим - оно там есть
5  Разработка / Программирование под QNX / USB drivers 4 QNX6.2.1 : Марта 03, 2006, 10:03:54 pm
tWINGe
Извините, а зачем после usbd_alloc_urb проверять его статус, если URB не инициализирован ни на один эндпоинт, а так, в воздухе болтается?
На всякий случай ещё раз НЕ ЗАБУДТЕ в flags указать | URB_SHORT_XFER_OK .

Заведите при инициализации необходимое кол-во URB (равное кол-ву используемых эндпоинтов или больше, как хотите). URB привязывается к EP пайпу только функцией
usbd_setup_*, usbd_io, в свою очередь, осуществляет отправку.


Спасибо. С передачей данных разобрался. Оказалось все просто - я прото осуществлял саму передачу в функции подключения, сейчас перенес в основную и все заработало. НО!! Возникла следующая проблема: иногда,непонятно почему, при записи данных(чтение не пробывал)  линия входит в состояние EBUSY и висити. Все последующие попытки послать данные заканчиваются тем же - EBUSY. Все решается, если только слэвить драйвер io-usb -duhci и запустить заново. Причем я пробывл как с флагом URB_SHORT_XFER_OK , так и без него, опять же, в некоторых случаях проходило, в некоторых нет.  Пробывал передать данные 5 раз подряд (по 1 байту), та же история, какое-то количество прошло, а на каком-то зависло. Непонятно. То ли дело в драйвере io-usb, то ли я где-то чего не прописал или не запустил или не подключил. Вообщем незнаю Если кто знает в чем дело или как это можно решить помогите.
6  Разработка / Программирование под QNX / USB drivers 4 QNX6.2.1 : Марта 03, 2006, 04:40:29 pm
lestat
А URB'ы разные для каждого из endpoint'ов ?


как сделать так, чтобы для каждого ЕндПоинта был свой URB?
В хелпе по этому поводу я ничего не нашел. Там просто перед передачей данных(или их запроса) выделяется память для urb.


to tWINGe:
1) Да. Своя. Пока работаем с вот таким вот КИТом для отладки работы:
http://www.em.avnet.com/evk/home/0,1719,RID%253D0%2526CID%253D21564%2526CCD%253DUSA%2526SI  D%253D4742%2526DID%253DDF2%2526SRT%253D1%2526LID%253D18806%2526PVW%253D%2526BID%253DDF2%25 26CTP%253DEVK,00.html
CY7C68013 закладываем и в свою. Пока рисуем схемы. Там тоже будет (как и на КИТе высокоскоростной обмен с ПЛИС).

2) FX2 (CY7C68013) отличается от  SX2 (CY7C68001) наличием встроенного микроконтроллера, который никак не вмешиваясь в работу EP2-EP8 (в саму передачу данных) конфигурит всю USB-сбрую для работы с нужными пользователю
С этой точки зрения FX2 выгодно отличается от SX2 тем, что весь секс с хитрым конфигурированием SX2 для поддержки Control/Vendor, и иных запросов отменяется.(и перекладывается на плечи разработчика железки, а не драйверописателя)
в FX2 это делает программа, прошитая в ПЗУ FX2.  Притом эту программу ничего не стоит сменить, используя поддерживаемый уже после включения VendorSpecificCommand на загрузку нового firmware.
После загрузки firmware, FX2 под управлением загруженного firmware "отсоединяется" от шины. потом подсоединяется снова и процесс енумерации повторяется уже для новых VID|PID|DID (если они сменились).
притом крайне порадовал уровень документирования, примеров и богатого инструментария разработчика: все нужное качается одним архивом с сайта Cypress.
та же поддержка (если ее надо расширить) Control/Vendor запросов делается простым дописыванием дополнительных функций к тем уже существующим, которые есть в примерах от Cypress
(притом, в отличие от примеров других производителей все примеры компилируются и РАБОТАЮТ так , как должны работать).  Работа к добавлению обработки специфичных запросов сведена к минимуму.

3) Значение EBUSY понятно и не смущает. Смущает следующее:
Перед тем как настроить BULK-канал (usbd_setup_bulk()). Аллокируется URB (usbd_alloc_urb()).  После этого запрашиваю статус URB (usbd__urb_status()); функция выводит EBUSY.
После этого осуществляю передачу данных (4 байта). После чего возникает описанная постом выше ситуация(висим в ожидании окончании передачи - EBUSY) .
Вопрос: возможно я неправильно выделяю память под URB-структуру или делаю это не  в том месте (хотя делаю аналогично исходникам DDK)?

ЗЫ: ссылки на исходники и лог работы (то, что выводится на консоль):
http://mgup.fromru.com/qnx/usb_test1.c
http://mgup.fromru.com/qnx/view.txt
7  Разработка / Программирование под QNX / USB drivers 4 QNX6.2.1 : Марта 02, 2006, 06:33:57 pm
добрый день
работаю с USB под QNX 6.3.0
столкнулся со следующей трудностью:
существует устройство на Cypress CY7C68013 , с которым пытаюсь общаться
связь устанавливается, правильно определяется тип и кол-во конечных точек
(2шт - BULK_OUT и 2шт BULK_IN)
проблема в том, что при передаче данных функция usbd_io() возвращает EOK, но при запросе статуса URB (функция usbd_urb_status()) канал все время занят (возвращается EBUSY)
Насколько я понимаю, у участников темы были схожие проблемы, которые , возможно, решены.
Не мог бы кто0л. поборовший сию ситуацию поделиться конкретикой решения?!
8  Разработка / Программирование под QNX / Драйвер виртуального порта : Ноября 18, 2005, 10:03:55 pm
Я занимался чем-то подобным и у меня есть простецкая модель синхронного устройства. Может подойдёт? Незнаю, правда, куда слать/ложить.
Страниц: [1]