HispaMSX

Re: [hispamsx] USB en MSX

2005-01-07 12:51:52
Nestor, el USB es un bus muy complejo, mucho.

Cierto. Igual que una pila TCP/IP o una tarjeta Ethernet son cosas muy
complejas. ;-)

Lo se porque yo me tuve que empapar el estandar enterito

Yo también me lo he leido (el 1.1, eso sí, que es más pequeñajo) y
simple lo que se dice simple no es... pero yo creo que tampoco es tan
tan tan complejo.

Implementar un soporte para USB es bastante complicado (especialmente por
el software) y si ademas le metes el usb-storage entero pues ...

El usb-storage no es más que comandos SCSI convenientemente encapsulados
(si se usa la subclase "SCSI transparent command set" y el protocolo
"Bulk-only transport", que es la combinación más común hoy en día). No
es que sea trivial pero es factible.

Para empezar el estandar USB requiere multitarea a la fuerza (si lo
quieres hacer para todo cacharro), ya que un mismo dispositivo puede tener
varios streams de datos simultaneos e independientes entre si

No hace falta multitarea si no queremos emular un PC con webcam, ratón,
teclado y mil cosas más USB. Si sólo queremos almacenamiento, basta
enviar los comandos de lectura/escritura en el momento adecuado, y
esperar la respuesta. El dispositivo no va a enviar datos "por la cara"
(si es de almacenamiento, repito).

Y te diré más, incluso se podría implementar el plug & play, porque la
inserción y extracción de dispositivos se controla mediante una consulta
al hub que apenas consume tiempo si no ha habido cambios (lo cual será
cierto la mayoría de las veces). Eso se puede controlar desde la
interrupción del reloj.

que por una conexion USB el bus se organiza en una especie de token bus,
por lo que hay que ir controlando el token, y ademas hacerlo con una
temporizacion exacta, ya que ese token permite sincronizar los relojes de
todos los dispositivos del bus y etc, etc ...

¿Te refieres a la trama de sincronización? Eso lo controla el
controlador USB (valga la rebuznancia). Por ejemplo el SL811HS que usan
los payos de Atari, genera automáticamente dicha trama, y se le puede
decir "envíame esta transacción pero después de que envíes la próxima
trama de sincronización". Y mejor aún, si quieres optimizar las
transferencias, tienes otro registro que te dice cuántos tiempos de bit
hay disponibles antes de la próxima sincronización, para saber si puedes
enviar inmediatamente o no la transacción que tienes entre manos.

Aunque la mayoria del trabajo lo hace el controlador USB (si es OHCI, si
es UHCI no veas el curro del micro ...) complica el software muchisimo.

¿OHCI, UHCI? Yo me he leído la especificación del USB 1.1, la del
SL811HS, la del subsistema de almacenamiento ("Bulk-only transport") y
diría que no hace falta nada más.

Despues de esto, ¿cuantos voluntarios hay para desarrollar algo asi? :D

Dame un hardware de apoyo y moveré el mundo.

Pos eso.

Pos falen.

Y lo dicho: que lo que hay es mucho miedo a hacer cosas, más que otra
cosa. :-)

-- 
Nestor Soriano <konamiman(_en_)konamiman(_punto_)com>


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>