Descargo de responsabilidad, soy un chico de SW, así que, por favor, no des por sentado nada, y agradecería las explicaciones en términos sencillos :)
Tenemos un diseño personalizado basado en Freescale's i.mx233
, y como referencia, utilizamos un tablero de Olimex llamado Olinuxino.
En el Olinuxino, tienen un chip LAN-USB de doble funcionamiento que no es necesario para nuestro diseño (solo necesitamos 1 puerto USB para un dongle WiFi), así que pensamos que podemos eliminarlo y conectar un dispositivo USB directamente a los procesadores. D + y D- líneas.
Debido a un error de diseño independiente, el conector USB que seleccionamos no se puede usar en esta revisión de HW. Pensé que podía verificar el diseño simplemente cortando un cable de extensión USB y soldándolo en el lugar de los conectores, por lo que actualmente se ve así:
foto http://oi57.tinypic.com/wtu7w1.jpg
Ahora, cuando conecto el módulo WiFi al conector, parece que comienza a enumerar correctamente y, al observar la señalización, también parece decente (lo comparé con el panel de referencia y veo mucho lo mismo):
foto 2 http://oi58.tinypic.com/2yvryxl.jpg
Sin embargo, en el lado del software, el controlador para WiFi se queja de que está leyendo mal la identificación del chipset y se niega a cargar:
[ 2.390000] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x1000 with error -
[ 2.400000] ieee80211 phy0: rt2800_probe_rt: Error - Invalid RT chipset 0xc37b, rev 5108 detected
[ 2.410000] ieee80211 phy0: rt2x00lib_probe_dev: Error - Failed to allocate device
La parte del esquema para el puerto USB (original):
Yeldiseñorealparaesapartetambiénessimple(enlaimagensolocapasuperior,heocultadotodaslasdemáscapasparamayorclaridad.DibujélatrazadelaseñalDdelacapainferioramano,tengaencuentaqueenlaimagenrealporencimadelarotaciónde180grados):
El exacto mismo paquete de software y la misma mochila en nuestra placa de referencia funcionan, y el controlador se carga ... Comencé a leer la Especificación USB2.0 , y en el capítulo 7, hable sobre la señalización eléctrica, y esta parte me llamó la atención:
El funcionamiento a alta velocidad admite la señalización a 480 Mb / s. Para lograr una señalización confiable a este ritmo, el cable es Terminado en cada extremo con una resistencia de cada cable a tierra. El valor de esta resistencia (en cada cable) es nominalmente establecido en 1/2 la impedancia diferencial especificada del cable, o 45. Esto presenta un diferencial. terminación de 90 Ω.
¿He arruinado la señalización ahora con mi puerto USB? Qué significa este código ? Además, ¿habría tenido exactamente el mismo problema con el puerto original ya que solo planeamos conectar las líneas differential impedance
, 5V
, GND
y D+
al conector?
¿O se supone que esta resistencia está dentro de cada extremo de la conexión dentro del silicio? ¿Qué podría estar mal aquí?
Gracias por cualquier consejo!
Editar: Se ha agregado el diseño y la imagen esquemática para mayor claridad
Edición 2 : tiré mi cable de extensión recortado, doblé el conector USB original y pude colocarlo en la pizarra en un ángulo un tanto extraño.
También agregué los controladores necesarios al kernel para las memorias USB, y ahora he verificado que mi memoria USB HighSpeed de 16GB funciona. Durante el arranque se detecta:
[ 2.240000] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 2.430000] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 2.440000] scsi0 : usb-storage 1-1:1.0
[ 3.460000] scsi 0:0:0:0: Direct-Access UFD 2.0 Silicon-Power16G PMAP PQ: 0 ANSI: 4
[ 3.500000] sd 0:0:0:0: [sda] 30283008 512-byte logical blocks: (15.5 GB/14.4 GiB)
[ 3.520000] sd 0:0:0:0: [sda] Write Protect is off
<snip>
El flash en la placa es muy pequeño, pero en la unidad USB puedo copiar un archivo 1GB a otro directorio, y la velocidad es de alrededor de 360KB / seg. La suma MD5 coincide, y no veo ningún problema al utilizar la tarjeta de memoria.
Entonces, supongo que esto significa que ahora algo va mal solo con el dongle WiFi ... es extraño ... Si hubiera corrupción en las líneas D-
y DP
, ¿no vería también la corrupción durante las transferencias de datos?
Edición final Si bien no hemos podido identificar el problema con un 100% de certeza, al forzar al controlador a que entre en el registro solo funcione en modo 1.1, todos los dispositivos USB funcionan sin problemas, incluido El módulo WLAN. En nuestro siguiente diseño, hemos seguido estrictas reglas de enrutamiento diferencial, y esperamos que este sea el final de nuestros problemas :)