ЗАО «ЗЭО»

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

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

Новости:

Автор Тема: Несколько вопросов по USB и не только  (Прочитано 13210 раз)

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

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49

Доброе время суток! У меня тион с linux, собранным в виртуальной машине.
Есть пара-тройка вопросов.

1. Я пытаюсь подключить платку к ПС, взял провод USB A с одинаковыми разъёмами на концах.
Если я правильно понял эту тему, то этого достаточно. Однако, ни ПС не видит платку, ни Тион не видит ПС. И там и там смотрел через lsusb.
Как правильно подключиться к компьютеру?

2. Я пытаюсь взять второй USB порт с разъёма X8 - не удачно. Тут где-то писали, что надо перенастроить что-то в ядре. Расскажите пожалуйста подробнее, где и что.

3. Мне не удаётся нормально подключить USB wi-fi, т.к. на "свистки", которые продаются сейчас, нет драйверов в доступном ядре, а более старые модели не найти в свободной продаже.
Для TP-LINK TL-WN821N (вернее для его чипсета) мне удалось собрать драйвера предоставленные производителем, интерфейс wlan0 в системе появляется. Однако wpa_supplicant (поставляемый и собранный вместе с драйверами) выдаёт гору ошибок вида "ioctl[SIOCSIWMODE]: Operation not supported" и по сути ничего не работает. Возможно нужно что-то включить в ядре дополнительно?
Вообще, ожидаются ли более свежие ядра для Тиона? Для того же TL-WN821N драйвера в ядре есть начиная кажется с версии 2.6.39.
« Последнее редактирование: 06 Марта, 2014, 21:51:34 от Genues »
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Несколько вопросов по USB и не только
« Ответ #1 : 07 Марта, 2014, 15:17:21 »

1. Для загрузки по USB J1, J2, J3, J4 ставите в положение 2-3.

При этом lsusb на хосте показывает:
Bus 001 Device 086: ID 15a2:004f Freescale Semiconductor, Inc. i.MX28 SystemOnChip in RecoveryMode

2. Не знаю

3.
> Вообще, ожидаются ли более свежие ядра для Тиона?

Как показывает история -- планово нет, не ожидается.

Но ядро 3.14 можно запустить на Тион-Про28, работает debug UART (X9),
Ethernet, видео с незначительными артефактами, PWM, светодиод, вероятно
Flash и некоторые другие интерфейсы (SPI, UART...).

Изменения незначительные, во вложении и dts-файл для размещения в
arch/arm/boot/dts/imx28-tion-pro28.dts
и патч для добавления этого файла в Makefile.

Подготовка ядра:
   patch -p1 < dts-makefile-add-imx28-tion-pro28.patch
   cp imx28-tion-pro28.dts arch/arm/boot/dts/
   cp config-tion-pro28 .config

Сборка ядра:
   export ARCH=arm
   export CROSS_COMPILE=<compiler-prefix>
   make oldconfig
   LOADADDR=40008000 make uImage

Для загрузки потребуется новый U-Boot, например v2014.01, работает SD, NAND,
Ethernet, debug UART.

Подготовка U-Boot:
   patch -p1 < u-boot.patch

Сборка U-Boot:
   export ARCH=arm
        export CROSS_COMPILE=<compiler-prefix>
        make mx28evk_config
   make
        make u-boot.sb

Запись на SD-карту (можно в NAND Flash), см. doc/README.mxs в исходных
кодах для создания разделов на SD-карте:
        tools/mxsboot sd u-boot.sb u-boot.SD
        dd if=u-boot.SD of=/dev/??1

Официальный Buildroot также хорошо работает.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Несколько вопросов по USB и не только
« Ответ #2 : 07 Марта, 2014, 15:19:43 »

Вместе с ядром надо загружать соответствующий dtb-файл arch/arm/boot/dts/imx28-tion-pro28.dtb
Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #3 : 11 Марта, 2014, 09:30:45 »

1. Для загрузки по USB J1, J2, J3, J4 ставите в положение 2-3.

При этом lsusb на хосте показывает:
Bus 001 Device 086: ID 15a2:004f Freescale Semiconductor, Inc. i.MX28 SystemOnChip in RecoveryMode
Я спрашивал не о загрузке по USB, а про подключении по USB с целью обмена информацией между ПК и программой в тионе.

2. Не знаю
Если не вы, то кто?

3.
> Вообще, ожидаются ли более свежие ядра для Тиона?

Как показывает история -- планово нет, не ожидается.

Но ядро 3.14 можно запустить на Тион-Про28, работает debug UART (X9),
Ethernet, видео с незначительными артефактами, PWM, светодиод, вероятно
Flash и некоторые другие интерфейсы (SPI, UART...).
Спасибо, попробую.
Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #4 : 11 Марта, 2014, 09:39:55 »

2. Я пытаюсь взять второй USB порт с разъёма X8 - не удачно. Тут где-то писали, что надо перенастроить что-то в ядре. Расскажите пожалуйста подробнее, где и что.
Я померил напряжение на разъёме X8. Между 2 и 8 выводами +2.8V, между 8 и 4, 8 и 6 выводам +3.2V.
Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #5 : 14 Марта, 2014, 10:57:00 »

Интересно фирма то ещё существует...
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #6 : 14 Марта, 2014, 21:09:20 »

Разъем Х5 для подключения к ПК использовать не стоит, это порт USB1 (Host).
Можно использовать USB0 (в режиме Device), разъемы Х8 и Х25.

Для работы нужно включить USB в режиме OTG, добавить нужные драйвера и пересобрать ядро.
О том, что нужно включить в ядро, написано в документе "i.MX28_Linux_BSP_RM.pdf" раздел "Chapter 24. ARC USB Driver". Файл есть в этом архиве с документацией http://www.zao-zeo.ru/media/files/docs/freescale_imx28_linux_docs.zip.

Проверял работу Тиона в режиме "Mass storage device", "USB Serial" и "USB Ethernet". В режиме "HID" не заработал, почему - не ясно.

Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #7 : 18 Марта, 2014, 09:17:21 »

Спасибо, как USB Ethernet мне тоже удалось запустить, что уже не плохо.
Но мне нужно именно как HID. При insmode оно пишет "can't insert 'g_hid.ko': No such device". Но вы наверно и сами видели...
Что тут можно придумать?
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #8 : 18 Марта, 2014, 19:34:46 »

В соответствии с документацией linux/Documentation/usb/gadget_hid.txt cделать нужно следующее:

В файл linux/arch/arm/mach-mx28/mx28evk.c добавить:

#include <linux/usb/g_hid.h>

/* hid descriptor for a keyboard */
static struct hidg_func_descriptor my_hid_data = {
.subclass       = 0, /* No subclass */
.protocol       = 1, /* Keyboard */
.report_length      = 8,
.report_desc_length = 63,
.report_desc        = {
    0x05, 0x01, /* USAGE_PAGE (Generic Desktop)           */
    0x09, 0x06, /* USAGE (Keyboard)                       */
    0xa1, 0x01, /* COLLECTION (Application)               */
    0x05, 0x07, /*   USAGE_PAGE (Keyboard)                */
    0x19, 0xe0, /*   USAGE_MINIMUM (Keyboard LeftControl) */
    0x29, 0xe7, /*   USAGE_MAXIMUM (Keyboard Right GUI)   */
    0x15, 0x00, /*   LOGICAL_MINIMUM (0)                  */
    0x25, 0x01, /*   LOGICAL_MAXIMUM (1)                  */
    0x75, 0x01, /*   REPORT_SIZE (1)                      */
    0x95, 0x08, /*   REPORT_COUNT (8)                     */
    0x81, 0x02, /*   INPUT (Data,Var,Abs)                 */
    0x95, 0x01, /*   REPORT_COUNT (1)                     */
    0x75, 0x08, /*   REPORT_SIZE (8)                      */
    0x81, 0x03, /*   INPUT (Cnst,Var,Abs)                 */
    0x95, 0x05, /*   REPORT_COUNT (5)                     */
    0x75, 0x01, /*   REPORT_SIZE (1)                      */
    0x05, 0x08, /*   USAGE_PAGE (LEDs)                    */
    0x19, 0x01, /*   USAGE_MINIMUM (Num Lock)             */
    0x29, 0x05, /*   USAGE_MAXIMUM (Kana)                 */
    0x91, 0x02, /*   OUTPUT (Data,Var,Abs)                */
    0x95, 0x01, /*   REPORT_COUNT (1)                     */
    0x75, 0x03, /*   REPORT_SIZE (3)                      */
    0x91, 0x03, /*   OUTPUT (Cnst,Var,Abs)                */
    0x95, 0x06, /*   REPORT_COUNT (6)                     */
    0x75, 0x08, /*   REPORT_SIZE (8)                      */
    0x15, 0x00, /*   LOGICAL_MINIMUM (0)                  */
    0x25, 0x65, /*   LOGICAL_MAXIMUM (101)                */
    0x05, 0x07, /*   USAGE_PAGE (Keyboard)                */
    0x19, 0x00, /*   USAGE_MINIMUM (Reserved)             */
    0x29, 0x65, /*   USAGE_MAXIMUM (Keyboard Application) */
    0x81, 0x00, /*   INPUT (Data,Ary,Abs)                 */
    0xc0        /* END_COLLECTION                         */
}
};

static struct platform_device my_hid = {
.name           = "hidg",
.id         = 0,
.num_resources      = 0,
.resource       = 0,
.dev = {
.platform_data  = &my_hid_data,
},
};

static void __init hidg_device_init(void)
{
int ret;
ret = platform_device_register(&my_hid);
if (ret)
    printk("HID Gadget registration failed\n");

}

В функцию mx28evk_device_init() в этом же файле добавить

hidg_device_init();
Пересобрать ядро. После этого insmod g_hid.ko выполняется без ошибок, на ПК появляется HID-устройство.

Могу выложить собранное ядро с этими изменениями. Патч добавлю позже.
« Последнее редактирование: 18 Марта, 2014, 20:01:17 от Danila »
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #9 : 18 Марта, 2014, 20:38:56 »

Для решения проблем с wpa_supplicant можно попробовать включить поддержку cfg80211 и nl80211 (Networking support -> Wireless) в ядро. Судя по информации в интернете wpa_supplicant использует nl80211.
Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #10 : 19 Марта, 2014, 09:05:41 »

Могу выложить собранное ядро с этими изменениями. Патч добавлю позже.
Спасибо большое, сейчас попробую.
Upd. заработало, спасибо!

Ваше ядро мне не к чему, т.к. у меня уже включены некоторые доп. модули и прочее. Да и вообще вроде бы не возникает проблем со сборкой ядра на вашей виртуалке, спасибо вам за неё.
Для решения проблем с wpa_supplicant можно попробовать включить поддержку cfg80211 и nl80211 (Networking support -> Wireless) в ядро. Судя по информации в интернете wpa_supplicant использует nl80211.
Это у меня включено - не помогает.
Там при конфигурирование ./ltib -m config можно выбрать список пакетов для установки, среди них есть пакет с названием linux-wlan. Не знаю, что входит в этот пакет, но может быть он нужен. Я хотел попробовать его собрать, но не удачно.
« Последнее редактирование: 19 Марта, 2014, 14:01:49 от Genues »
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #11 : 24 Марта, 2014, 13:28:28 »

У нас нет такого WiFi модуля, поэтому однозначно что-то посоветовать не могу.

Есть модули на чипсете rt2870. Могу попробовать собрать для них драйвер.
Записан

Genues

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 49
Re: Несколько вопросов по USB и не только
« Ответ #12 : 24 Марта, 2014, 15:53:05 »

Могу попробовать собрать для них драйвер.
А про пакет linux-wlan ничего не можете сказать? Не могли бы Вы попробовать его собрать?
Подскажите пожалуйста, какие можете посоветовать свистки на чипе rt2870 из свободной продажи? Я бы сам попробовал собрать драйвера.
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #13 : 24 Марта, 2014, 16:04:05 »

Tenda W311U+ - мы используем такой, c WinCE 6.0.
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Несколько вопросов по USB и не только
« Ответ #14 : 24 Марта, 2014, 16:06:18 »

linux-wlan попробую собрать.
Записан