ЗАО «ЗЭО»

Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: oev от 17 Сентября, 2014, 16:45:23

Название: USB-host-device и ядро 2.6.22
Отправлено: oev от 17 Сентября, 2014, 16:45:23
Доброго всем времени суток!

У меня есть ядро Linux 2.6.22 собранное лет 5 назад, имеется его дистрибутив. Задача такова, что на нем необходимо поднять одновременно USB-host ( вложен в ядро ) при уже существующем USB-device ( подключается модульно ).

Если добавить USB-хост через menuconfig -> вылезает ошибкаdrivers/usb/core/usb.c: На верхнем уровне:
drivers/usb/core/usb.c:772:5: ошибка: несовместимые типы для «usb_buffer_map_sg»
In file included from drivers/usb/core/usb.c:34:0:
include/linux/usb.h:1536:5: замечание: здесь была предыдущая декларация «usb_buffer_map_sg»
drivers/usb/core/usb.c:833:6: ошибка: несовместимые типы для «usb_buffer_unmap_sg»
In file included from drivers/usb/core/usb.c:34:0:
include/linux/usb.h:1542:6: замечание: здесь была предыдущая декларация «usb_buffer_unmap_sg»
drivers/usb/core/usb.c:976:1: ошибка: несовместимые типы для «usb_buffer_map_sg»
In file included from drivers/usb/core/usb.c:34:0:
include/linux/usb.h:1536:5: замечание: здесь была предыдущая декларация «usb_buffer_map_sg»
drivers/usb/core/usb.c:980:1: ошибка: несовместимые типы для «usb_buffer_unmap_sg»
In file included from drivers/usb/core/usb.c:34:0:
include/linux/usb.h:1542:6: замечание: здесь была предыдущая декларация «usb_buffer_unmap_sg»

Тема наверно совсем неактуальна, потому что в ядре 2.6.35... от zao-zeo все хорошо работает. Но нужно поднять хост именно на дистрибутиве 2.6.22.

Кто знает из старожил, реализуема ли эта задача? если да, то какие существуют хитрости?
Заранее спасибо!
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: asv от 17 Сентября, 2014, 18:36:11
Вот на эту тему:
https://groups.google.com/d/topic/tion_sbc/oDPOJ_jdyDM/discussion
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 18 Сентября, 2014, 12:15:17
Полезная ссылочка, спасибо! Тем не менее, не могли бы вы дать, пожалуйста, готовые патчи к ядру. Это сэкономило бы мне уйму времени
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: asv от 18 Сентября, 2014, 12:24:45
> готовые патчи к ядру

Только те, которые там.
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 23 Сентября, 2014, 17:21:32
Вдоволь наевшись с исходниками моего дистрибутива, мне удалось собрать образ линукса.
У меня появилась папочка /proc/bus/usb , правда в ней ничего нет.
при подключении usb-устройства (например usb-мышка), однократно моргает ее светодиод, и все.
Никакого устройства в вышеуказанной папке не образуется

Подскажите пожалуйста, в каком направлении копать
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: asv от 23 Сентября, 2014, 17:54:13
usfbs примонтирована?

В /etc/fstab
none  /proc/bus/usb  usbfs  defaults,devmode=0666  0 0
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 23 Сентября, 2014, 18:07:43
Нет, не примонтирована! Спасибо, переделаю!
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: asv от 23 Сентября, 2014, 18:08:40
Учтите, что usbfs должна быть включена при сборке ядра.
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 24 Сентября, 2014, 12:17:36
В ядро я добавил почти все что можно было. Когда usbfs примонтировалась, то появились /proc/bus/usb/devices и папка  /proc/bus/usb/001.
Лог при загрузке ядра говорит, что все хорошо, hub настроен, есть 3 порта.
Но проблема так и осталась, питание на девайс идет кратковременно. В ..../devices подключенное устройство не отображается
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 24 Сентября, 2014, 17:01:03
В общем создается впечатление, что хост ( т.е. тион ) при подключении устройства не считывает с него даже дескриптор. В /proc/bus/usb/devices помимо хаба ничего нет.

Автоопрос шины заложен в ядре или он вызывается скриптом из фс?
В данной версии ядра не запускается lsusb(его просто нет), так и должно быть?
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: asv от 24 Сентября, 2014, 18:02:03
# uname -a
Linux tion270 2.6.22.19 #1 Mon Apr 2 14:02:56 MSK 2012 armv5tel GNU/Linux
# lsusb
Bus 001 Device 001: ID 0000:0000
dmesg | grep Tion                                                             
[    0.000000] Machine: Tion-Pro270 Board
Название: Re: USB-host-device и ядро 2.6.22
Отправлено: oev от 27 Октября, 2014, 10:28:51
Я не знаю, будет текст ниже интересен кому-то или нет, опишу как я поднял одновременно USB хост и клиент на своем дистрибутиве 2.6.22.9:

1)при добавлении USB-хост через menuconfig, вылезали ошибки при компиляции. Моя проблема была в том, что патч от zao-zeo для версии 2.6.22 встал криво на существующую версию. Виновника торжества я нашел в /include/usb/usb.h.
Заменил его на нужный. Сборка прошла, хост поднялся, клиент отвалился.

2)В ./arch/arm/mach-pxa/colibri.c указаны начальные настройки всей периферии. Что включено, а что нет. Мой USB-клиент всегда был выключен. Как оно раньше работало — для меня тайна. В старой версии клиент подключался
модульно, и похоже, ветвь ядра, отвечающая вообще за USB отсутствовала, поэтому конфликтов и не было. Почитав
https://groups.google.com/d/topic/tion_sbc/oDPOJ_jdyDM/discussion , я сделал так, чтобы у меня были постоянно и клиент и хост. OTG мне не нужен.
Теперь загрузка ядра проходит успешно, все инициализируется, но как раньше ( когда был только клиент ) связи с ПК нет

3) Находим виновника. При поднятии хоста поменялся major number  у USB клиента. Смотрим, чтоу нас в /proc/devices. А потом, что выдаст 'ls-l /dev'. Через 'mknod' связываем периферию ядра с КФС. И наконец-таки все работает.