Собственно вопрос в опыте реализации данного варианта USB устройства. ...ранее (сейчас у неё аккумулятор сдох) имея Motorola Motoming A1200e(с Linux на борту) имелась возможность подключить сей девайс в режиме USB-ETHERNET. В линуксе на ПК устройство сразу было: Код (Bash): root@debian-i:/home/igor/coding/bash/nsite3# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8197 errors:0 dropped:0 overruns:0 frame:0 TX packets:8197 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1265628 (1.2 MiB) TX bytes:1265628 (1.2 MiB) usb0 Link encap:Ethernet HWaddr ce:85:f2:9d:19:f1 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::cc85:f2ff:fe9d:19f1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1494 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:492 (492.0 B) wlan0 Link encap:Ethernet HWaddr 74:de:2b:86:ee:8b inet addr:192.168.0.67 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::76de:2bff:fe86:ee8b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63120 errors:0 dropped:0 overruns:0 frame:0 TX packets:76823 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:24258919 (23.1 MiB) TX bytes:8128130 (7.7 MiB) root@debian-i:/home/igor/coding/bash/nsite3# Видите по Ifconfig интерфейс usb0 определялся как сетевое устройство с неким IP ну и ping: Код (Bash): root@debian-i:/home/igor/coding/bash/nsite3# ping 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=1.20 ms 64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=1.12 ms 64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=1.35 ms 64 bytes from 192.168.1.2: icmp_req=4 ttl=64 time=1.32 ms ^C --- 192.168.1.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 1.120/1.252/1.358/0.102 ms root@debian-i:/home/igor/coding/bash/nsite3# ну и : Код (Bash): root@debian-i:/home/igor/coding/bash/nsite3# nmap 192.168.1.2 Starting Nmap 6.00 ( http://nmap.org ) at 2018-08-04 12:17 +03 Nmap scan report for 192.168.1.2 Host is up (0.016s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 139/tcp open netbios-ssn MAC Address: CA:25:86:0A:DE:52 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.56 seconds root@debian-i:/home/igor/coding/bash/nsite3# как видите сей девайс имеет и SSH и вот: Код (C++): root@debian-i:/home/igor/coding/bash/nsite3# ssh root@192.168.1.2 root@192.168.1.2's password: Permission denied, please try again. root@192.168.1.2's password: root@(none):~# cd / root@(none):/# ls bin dev etc ezx_user ezxlocal home lib mmc mnt proc ram root sbin tmp usr var root@(none):/# cd home root@(none):/home# ls ezx_user ezxlocal native root root@(none):/home# Мы вошли по SSH по сетевому USB соединению в моторолу. А это: mc в мотороле... мы запустили его в SSH сессии, и управляем/работаем с ПК. туда я засунул (скачал) и GCC для этой моторолы. И редактор nano там в наличии. Вот только ОЗУ 64 Мб конечно мало... но это для 2005 года. И wifi нет... а только bluetooth На ней я поднимал и WEB сервер. кстати lsusb показал: Код (Bash): root@debian-i:/home/igor/coding/bash/nsite3# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 004: ID 1bcf:2c00 Sunplus Innovation Technology Inc. Bus 002 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. Bus 001 Device 006: ID 04ca:3004 Lite-On Technology Corp. Bus 001 Device 007: ID 09da:c10a A4 Tech Co., Ltd Bus 002 Device 004: ID 22b8:6027 Motorola PCS USBLAN root@debian-i:/home/igor/coding/bash/nsite3# А usb-devices: Код (Bash): T: Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=02(commc) Sub=02 Prot=00 MxPS=16 #Cfgs= 1 P: Vendor=22b8 ProdID=6027 Rev=00.00 S: Manufacturer=Motorola S: Product=Motorola USBLAN C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 3 Cls=02(commc) Sub=0a Prot=00 Driver=zaurus Драйвер сразу подцепил из Debian, для Windows надо драйвер устанавливать. А вопрос в том, что нашлось ряд проектов... на stm32 https://github.com/majbthrd/stm32ecm https://r-ol.blogspot.com/2017/04/stm32-windows-cdc-eem.html Сам пробую сделать на AT91SAM3U4E и добрался только до того, что устройство определилось как eth1 по ifconfig... ну а остальное пока не могу сделать. А хотелось бы сделать устройство с вебмордой по usb. Это с лихвой заменит и сериал и дисковое устройство. А при наличии websocket возможности расширятся многократно. Заранее спасибо!
...Да совсем не указал что мне надо. Какие дескрипторы инициализации должны быть? Дескрипторы устройства и интерфейса уже сделал и оно определилось как eth1 по ifconfig. И по usb-devices определялся и интерфейс и драйвер прикручивался. Всё как надо. Но вот может что не доделал, потому как ендпоинты не получаю... есть предположение что инициализация на окончена. Собираюсь заиметь stm32 для запуска имеющегося по ссылкам проекта с целью просмотреть в отладчике последовательность инициализации... ну и может работы. Спасибо!
Доброго времени суток! Вот дали мне "прокатиться" на плате STM32F103... специально для этого проекта: https://r-ol.blogspot.com/2017/04/stm32-windows-cdc-eem.html ...и изменив (для удобства) в main.c в функции main(): Код (C++): //uip_ipaddr(ipaddr, 10,11,12,2); uip_ipaddr(ipaddr, 192,168,200,1); Ну что бы устройство заимело IP 192.168.200.1 получил: Код (Text): root@debian:/home/kto/coding/GCC/wsobj3# ifconfig eth0 Link encap:Ethernet HWaddr 54:ab:3a:97:4e:ed UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:382321 errors:0 dropped:11 overruns:0 frame:0 TX packets:1503832 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:98499130 (93.9 MiB) TX bytes:2234650820 (2.0 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:212678 errors:0 dropped:0 overruns:0 frame:0 TX packets:212678 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:6530623476 (6.0 GiB) TX bytes:6530623476 (6.0 GiB) usb0 Link encap:Ethernet HWaddr 56:3e:b8:49:66:31 inet6 addr: fe80::543e:b8ff:fe49:6631/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:2956 (2.8 KiB) vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00 inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:372 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:71339 (69.6 KiB) root@debian:/home/kto/coding/GCC/wsobj3# сетевое устройство usb0... к сожалению DHCP не реализовано на нём. Ну тогда вручную: Код (Text): ifconfig usb0 192.168.200.10 Даём себе IP 192.168.200.10, а как говорилось устройство имеет 192.168.200.1. Делаем пинг сначала себя: Код (Text): root@debian:/home/kto/coding/GCC/wsobj3# ping 192.168.200.10 PING 192.168.200.10 (192.168.200.10) 56(84) bytes of data. 64 bytes from 192.168.200.10: icmp_seq=1 ttl=64 time=0.020 ms 64 bytes from 192.168.200.10: icmp_seq=2 ttl=64 time=0.022 ms 64 bytes from 192.168.200.10: icmp_seq=3 ttl=64 time=0.030 ms 64 bytes from 192.168.200.10: icmp_seq=4 ttl=64 time=0.025 ms 64 bytes from 192.168.200.10: icmp_seq=5 ttl=64 time=0.024 ms ^C --- 192.168.200.10 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3998ms rtt min/avg/max/mdev = 0.020/0.024/0.030/0.004 ms root@debian:/home/kto/coding/GCC/wsobj3# и затем устройство: Код (Text): root@debian:/home/kto/coding/GCC/wsobj3# ping 192.168.200.1 PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data. 64 bytes from 192.168.200.1: icmp_seq=1 ttl=64 time=0.605 ms 64 bytes from 192.168.200.1: icmp_seq=2 ttl=64 time=0.458 ms 64 bytes from 192.168.200.1: icmp_seq=3 ttl=64 time=0.474 ms 64 bytes from 192.168.200.1: icmp_seq=4 ttl=64 time=0.475 ms 64 bytes from 192.168.200.1: icmp_seq=5 ttl=64 time=0.395 ms 64 bytes from 192.168.200.1: icmp_seq=6 ttl=64 time=0.456 ms 64 bytes from 192.168.200.1: icmp_seq=7 ttl=64 time=0.389 ms ^C --- 192.168.200.1 ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 5999ms rtt min/avg/max/mdev = 0.389/0.464/0.605/0.070 ms root@debian:/home/kto/coding/GCC/wsobj3# Как они и говорили пинг есть... И по usb-devices признано: Код (Text): T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 93 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=02(commc) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=076b ProdID=5401 Rev=02.00 S: Manufacturer=STMicroelectronics S: Product=cdc-eem S: SerialNumber=002030112233 C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=400mA I: If#= 0 Alt= 0 #EPs= 2 Cls=02(commc) Sub=0c Prot=07 Driver=cdc_eem Но драйвера для Windows (прилагаются) не встали... как 32, так 64. Благо линуксу они вовсе ни к чему. И можно что-то испытать. Если кто имел дело подскажите по этому классу USB устройств. Спасибо.
Так делал ли кто это? Во как долго висит вопрос... аж с августа сего года. Для понимания (это я для себя) стал перетаскивать проект cdc-eem-f103-master на Keil uV4 пофайлово. Компилю, пробую и т.д. Выложить не выходит (а может и ни к чему) - он исходный рабочий в Keil uV5 весит 2.4 Мб в архиве zip, а тот, что делаю уже 8.7 Мб. Но уже что-то кроме ping пробую. Зачем? А web морда по usb разве плохо? Да с нормальной страницей по сетевому соединению. А устройство представляется системе как сетевое устройство. https://r-ol.blogspot.com/2017/04/stm32-windows-cdc-eem.html
Доброе время суток. Мне удалось реализовать UDP и TCP, правда с TCP какие-то траблы. У меня получилось отправлять страницу до 512 байт, и то с глюками. Дело в том, что при поднятие соединения от компьюютера(windows7) начинают лететь очень много пакетов ломающие мои пакеты. У вас получилось решить эту проблему?
Спасибо! Попробую! Только моя задача в том, что бы перенести это на AT91SAM3U4E(там пока вообще не вышел даже ping), а STM плату взял "покататься" у товарища на время, которого сейчас нет. Нет времени именно по этой теме. Вы я так понимаю в Keil uVision 5. Все примеры я "перетаскиваю" на uVision 4. Они все 3, 4 и 5 на одной виртуалке (машине WinXP). Вот надоело искать всякие dll-ки для разных девайсов на 5. Вот и юзаю 4 - на ней по "старинке". Времени пока на это нет, чуть позже - отвлекусь от рабочего. /сама общая идея в том, что бы заменить в устройстве на контроллере сервис, который требуют как накопитель USB-FLASH от устройства. Устройство должно быть в случае необходимости ONLINE-контроля/измерения. Да калибровать его надо. Так вот сервис HTTP-ETHERNET-USB должен заменить всё. И файловая система не нужна - на флеш устройства(не контроллера) можно записывать последовательно порциями/структурами и FAT не надо. Можно работать через запросы с веб-страниц имея только просто браузер. И софт дополнительный не надо. Всё просто - прибор работает(должен) без спецпрограмм и на всех платформах. Linux к примеру без спецдрайверов уже умеет работать с этим. Для windows надо только драйвер и не более. А любой браузер может сохранять содержимое страницы в файл/