ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: USB-host-device и ядро 2.6.22  (Прочитано 7788 раз)

0 Пользователей и 1 Гость просматривают эту тему.

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
USB-host-device и ядро 2.6.22
« : 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.

Кто знает из старожил, реализуема ли эта задача? если да, то какие существуют хитрости?
Заранее спасибо!
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: USB-host-device и ядро 2.6.22
« Ответ #1 : 17 Сентября, 2014, 18:36:11 »

Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #2 : 18 Сентября, 2014, 12:15:17 »

Полезная ссылочка, спасибо! Тем не менее, не могли бы вы дать, пожалуйста, готовые патчи к ядру. Это сэкономило бы мне уйму времени
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: USB-host-device и ядро 2.6.22
« Ответ #3 : 18 Сентября, 2014, 12:24:45 »

> готовые патчи к ядру

Только те, которые там.
Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #4 : 23 Сентября, 2014, 17:21:32 »

Вдоволь наевшись с исходниками моего дистрибутива, мне удалось собрать образ линукса.
У меня появилась папочка /proc/bus/usb , правда в ней ничего нет.
при подключении usb-устройства (например usb-мышка), однократно моргает ее светодиод, и все.
Никакого устройства в вышеуказанной папке не образуется

Подскажите пожалуйста, в каком направлении копать
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: USB-host-device и ядро 2.6.22
« Ответ #5 : 23 Сентября, 2014, 17:54:13 »

usfbs примонтирована?

В /etc/fstab
none  /proc/bus/usb  usbfs  defaults,devmode=0666  0 0
Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #6 : 23 Сентября, 2014, 18:07:43 »

Нет, не примонтирована! Спасибо, переделаю!
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: USB-host-device и ядро 2.6.22
« Ответ #7 : 23 Сентября, 2014, 18:08:40 »

Учтите, что usbfs должна быть включена при сборке ядра.
Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #8 : 24 Сентября, 2014, 12:17:36 »

В ядро я добавил почти все что можно было. Когда usbfs примонтировалась, то появились /proc/bus/usb/devices и папка  /proc/bus/usb/001.
Лог при загрузке ядра говорит, что все хорошо, hub настроен, есть 3 порта.
Но проблема так и осталась, питание на девайс идет кратковременно. В ..../devices подключенное устройство не отображается
Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #9 : 24 Сентября, 2014, 17:01:03 »

В общем создается впечатление, что хост ( т.е. тион ) при подключении устройства не считывает с него даже дескриптор. В /proc/bus/usb/devices помимо хаба ничего нет.

Автоопрос шины заложен в ядре или он вызывается скриптом из фс?
В данной версии ядра не запускается lsusb(его просто нет), так и должно быть?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: USB-host-device и ядро 2.6.22
« Ответ #10 : 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
Записан

oev

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 47
Re: USB-host-device и ядро 2.6.22
« Ответ #11 : 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' связываем периферию ядра с КФС. И наконец-таки все работает.

Записан