LINUX.ORG.RU

Разработка linux-драйверов для «шустрых и объемных» USB устройств


0

0

Российские программисты продолжают делиться опытом разработки linux-драйверов для USB устройств. В прошлой статье (http://b4open.spb.ru/bin/view/B4/UsbD...) Павел Курочкин рассказал об общих принципах общения с USB в ядре linux, а в этот раз -- о повышении производительности при передаче высокоскоростных потоков данных и обработке пакетов большого объема. Статья снова интересна тем, что является результатом исследований и разработок автора, а не переводом иностранного источника.

>>> Статья

Будем почитать, может пойму почему у меня usb-hub defender (знаю-знаю шо говно))) нормально работать не хочет... )))

Renso ★★
()

C этим usb вообще сплошные проблемы :(

Работали себе нормально все usb-storage и усбшные винты и флэшки. Потом перешел на ядро поновее - 2.6.16 - и все. Если поставить на монтируемую флэшку опцию sync то скорость записи 50кб/сек :( на усб винт 1мб/сек... и тот и другой usb2. С ядром 2.6.17 ничего не поменялось. Как быть, что делать?

petrosha ★★★★★
()
Ответ на: комментарий от petrosha

>Если поставить на монтируемую флэшку опцию sync то скорость записи 50кб/сек

угу. и сдохнет она через пару часов при активной работе.

blind
()
Ответ на: комментарий от Renso

>Сдаётся мне, шо они у тебя в режиме USB 1.1 работают...

1. 50 кб/сек это даже для usb1 медленно 2. проверял, модуль uhci_hcd вообще выгружал, оставлял только ehci_hcd. таже фигня :(

petrosha ★★★★★
()
Ответ на: комментарий от blind

>угу. и сдохнет она через пару часов при активной работе.

Ппочему? Не знаю как флэшка, а усбдиск по 40 гигов раньше только так закачивался. Теперь вот недождесся :(

petrosha ★★★★★
()
Ответ на: комментарий от Renso

>http://www.gatago.com/linux/kernel/14693868.html

Спасибо за ссылку. Я такой не нашел. Вот похоже суть вещей.

>So I have to mount it 'async' under 2.6.13; I didn't have to do that on older kernels because the 'sync' was not honoured by vfat, so the fat was updated asynchronously but the data were written synchronously (not cached, at least).

Если кратко, то в ядрах до 2.6.13 файловая система vfat не замечала опции sync/async в mount. Данные писались асинхронно, но синхронизация все-равно как-то делалась. Теперь она делается "железно" и поэтому все тормозит.

И как с этим бороццо?:)

petrosha ★★★★★
()
Ответ на: комментарий от anonymous_incognito

>Монтировать асинхронно :)

Тогда перед тем как дернуть флэшку из гнезда, нужно ее обязательно размонтировать. Это надо объяснять ведь всем юзверям :( А так ее ivman сам размонтирует, главное дождаться пока линейка в mc до конца дойдет.

petrosha ★★★★★
()
Ответ на: комментарий от petrosha

>Тогда перед тем как дернуть флэшку из гнезда, нужно ее обязательно размонтировать. Это надо объяснять ведь всем юзверям :(

Ну... не обязательо всем юзерам ядро обновлять )))

Renso ★★
()
Ответ на: комментарий от Renso

>Ну... не обязательо всем юзерам ядро обновлять )))

У нас на всех машинах система одинаковая должна быть... Вот прочитал SuSeшники аж целую опцию добавили в mount для vfat - flush :) но у меня в gentoo не работает.

petrosha ★★★★★
()
Ответ на: комментарий от petrosha

>Ну... не обязательо всем юзерам ядро обновлять )))

>>У нас на всех машинах система одинаковая должна быть... Вот прочитал SuSeшники аж целую опцию добавили в mount для vfat - flush :) но у меня в gentoo не работает.

И на серваках и на клиентах ))) А чего за контора,если е секрет, с линуховыми машинами ? )))

Вот ссылка на пост с патчем для flush :

http://linuxforum.ru/index.php?s=feb8421fb729cc6bf664bb1d262e59b7&showtop...

Renso ★★
()
Ответ на: комментарий от Renso

>И на серваках и на клиентах ))) А чего за контора,если е секрет, с линуховыми машинами ?

Институт :)

о! за ссылку спасибо!

petrosha ★★★★★
()
Ответ на: комментарий от petrosha

>И на серваках и на клиентах ))) А чего за контора,если е секрет, с линуховыми машинами ?
>Институт :)

Ааааа, паняна )))

Renso ★★
()
Ответ на: комментарий от petrosha

>Тогда перед тем как дернуть флэшку из гнезда, нужно ее обязательно размонтировать. Это надо объяснять ведь всем юзверям :(

Не понял в чем проблема, ну вытащит юзер флешку увидит окошко "запись на флеш не закончена вставьте флешку обратно" вставит то что не дописалось допишется выдается окошко "запись завершена можете вытаскивать" и никаких проблем!

anonymous
()
Ответ на: комментарий от anonymous

>Не понял в чем проблема, ну вытащит юзер флешку увидит окошко "запись на флеш не закончена вставьте флешку обратно" вставит то что не дописалось допишется выдается окошко "запись завершена можете вытаскивать" и никаких проблем!

Это ты где такое видел?

petrosha ★★★★★
()
Ответ на: комментарий от anonymous

Интересно, а можно найти работу в Москве в этой области? Писать драйвера для УСБ устройств?

anonymous
()
Ответ на: комментарий от anonymous

Да хоть в Киеве такую работу найти можно.

1) аутсорсинг
2) УСО, сбор данных, АСУТП
3) аппаратные ключи с национальными стандартами электронной подписи и другая подобная аппаратура
4) софтмодемы?

kolk
()
Ответ на: комментарий от kolk

5) неклассовые сетевые устройства, типа ADSL-модемов, WiFi и т.п.

Совет: поискать в СПб или даже в Новосибирске, или даже в провинции, где разработчики дешевле, потом найти их филиал у себя.

kolk
()
Ответ на: комментарий от anonymous

>Не понял в чем проблема, ну вытащит юзер флешку увидит окошко "запись на флеш не закончена вставьте флешку обратно" вставит то что не дописалось допишется выдается окошко "запись завершена можете вытаскивать" и никаких проблем! anonymous (*) (30.08.2006 7:40:59)

ЛОЛ

похоже вы ниразу не выдергивали флешку во время записи не только в Линукс, но и в Windows, и не знаете, что будет потом ;)

anonymous
()
Ответ на: комментарий от anonymous

>ЛОЛ > похоже вы ниразу не выдергивали флешку во время записи не только в Линукс, но и в Windows, и не знаете, что будет потом ;)

Ну винда скажет. "не могу записать бла бла бла", и втыкание назад уже не поможет, только ребут. Под линуксом не знаю, рука не успевает дотянуться до флэшки, что бы выдернуть, пишет мгновенно :)

ip ★★★★
()

> В ядре версии 2.6 вышеописанная процедура сильно упрощена благодаря появлению udev и sysfs [5]. В системе работает программа-daemon udevd, которая отслеживает появление файлов в sysfs (/sys/class/).

поправьте меня если я не прав. udev слушает NETLINK UEVENT_KOBJECT сокет сообщения, а не отслеживает изменения /sys/class.

anonymous
()
Ответ на: комментарий от blind

> угу. и сдохнет она через пару часов при активной работе.

nforce выбрось нафиг.

или поставь acpi_irq_balance или еще лучше acpi=noirq

anonymous
()
Ответ на: комментарий от anonymous

> В системе работает программа-daemon udevd, которая отслеживает появление файлов в sysfs (/sys/class/).

Да.. Это не совсем верно... Или совсем не верно...

Наверное, правильнее было бы сказать, что udevd отслеживает появление устройств в системе (узнает он об этом от /sbin/hotplug) и использует информацию об устройствах, отображаемую в sysfs. В частности - в /sys/class

Спасибо, Павел Курочкин.

paulig
()
Ответ на: комментарий от paulig

Правда, в man udev написано, что udevd узнает об event'ах напрямую из ядра.

> Usually udev runs as udevd(8) and receives uevents directly from the kernel if a device is added or removed form the system.

/sbin/hotplug, видимо, использовался на начальном этапе (документация за 2003 год): http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OL...

paulig
()
Ответ на: комментарий от petrosha

> C этим usb вообще сплошные проблемы :(

> Работали себе нормально все usb-storage и усбшные винты и флэшки. Потом перешел на ядро поновее - 2.6.16 - и все. Если поставить на монтируемую флэшку опцию sync то скорость записи 50кб/сек :( на усб винт 1мб/сек... и тот и другой usb2. С ядром 2.6.17 ничего не поменялось. Как быть, что делать?

Файловая система какая?

Gharik
()
Ответ на: комментарий от petrosha

> Тогда перед тем как дернуть флэшку из гнезда, нужно ее обязательно размонтировать. Это надо объяснять ведь всем юзверям :( А так ее ivman сам размонтирует, главное дождаться пока линейка в mc до конца дойдет.

Разумеется. Для кого в венде делали "device safe removal tool"? Вот и в линуксовых дистрах так же, только удобнее и прямо на иконке носителя, а юзерам дергающим флешку из разъема без размонтирования ФС лучше подергать себя за что-нибудь, да посильнее.

Gharik
()
Ответ на: комментарий от paulig

> Правда, в man udev написано, что udevd узнает об event'ах напрямую из ядра.

man netlink

netlink UEVENT_KOBJECT. создается сокет с таким "адресом" и броадкаст группой -1 (или 0 в новых версиях).

Раньше udev получал сообщения от /sbin/hotplug или от unix socket'а в виртуальном пространстве /org/kernel (кажется так)

теперь udev сам дергает /sbin/hotplug и пишет в нужные сокеты.

читайте исходники а не маны

anonymous
()
Ответ на: комментарий от Gharik

>Файловая система какая?

Там дальше все написано:) Что касается автовыдергивания, то при правильном синке можно дергать сколько хочешь. Без синка дергать тоже можно :) Проблемы будут у того кто дергает с данными на флэшке, а не у системы, что радует :)

petrosha ★★★★★
()

>...о повышении производительности при передаче высокоскоростных потоков данных и обработке пакетов большого объема. Статья снова интересна тем, что является результатом исследований и разработок автора, а не переводом иностранного источника.

1. Для меня эта новость больше похожа на рекламу, поскольку я нигде не нашел ни слова ни о проблемах производительности, ни о способах их повышения. Иначе говоря, новость никаким образом не соотвествует содержанию статьи.

2. В статье описывыют только основы USB (причем в EZ-USB FX2 Technical Reference Manual лучше обьяснено) и основы работы с драйвером в Linux.

IMHO статья неинтересна, поскольку несет в себе недостатчно информации для того чтобы начать что-нибудь разрабатывать.

PS. у меня язык не повернется назвать исследованиями, то что до сих пор описал автор.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.