¿Cuál es el efecto de reasignar puertos en un concentrador USB?

Estoy usando el USB2517 para un proyecto. Es un concentrador de siete puertos y estoy usando seis de ellos. Estoy trabajando en los ajustes de configuración y estoy perplejo con los registros de reasignación de puertos. La hoja de datos proporciona el siguiente texto (página 34 en la hoja de datos):

Registro de reasignación de puertos para los puertos 1 y 2 Cuando un controlador de host USB enumera un concentrador, el concentrador solo puede informar cuántos puertos tiene; el concentrador no puede seleccionar un rango numérico o una asignación. El controlador de host numerará los puertos descendentes del concentrador comenzando con el número '1', hasta la cantidad de puertos que reconozca el concentrador.
El número de puerto del host se denomina "Número de puerto lógico" y el puerto físico en el concentrador es el "Número de puerto físico". Cuando el modo de reasignación está habilitado (consulte PRTMAP_EN en Registro 08h: Byte de datos de configuración 3), los números de puerto descendente
del
concentrador se pueden reasignar a diferentes números de puertos lógicos (asignados por el host) Nota: El OEM debe asegurarse de que los números de puertos lógicos contiguos sean
utilizado, comenzando desde el #1 hasta el número máximo de puertos habilitados; esto asegura que los puertos del concentrador estén numerados de acuerdo con la forma en que un Host se comunicará con los puertos

Entonces, tengo siete puertos, DS[1:7]. Estos son los "Números de Puerto Físico". El host los enumera como un rango, que podemos llamar PORT[1:7]. Estos son los "Números de puerto lógico". Al escribir en este registro, estoy mapeando DS[x] a PORT[y], o sobrescribiendo [¿ves lo que hice allí?] deshabilitándolo

Sin embargo, ¿por qué querría reasignar mis puertos? ¿Qué me gana eso sobre dejar que el centro maneje automáticamente la reasignación? ¿Hay algún tipo de prioridad de puerto en la especificación USB 2.0 que asigne ancho de banda adicional a puertos con números más bajos? ¿Está ahí solo para mantener despiertos a los ingenieros demasiado cautelosos por la noche?

Editar: el concentrador puede reasignar puertos automáticamente para garantizar puertos lógicos contiguos si los puertos físicos en el medio del rango están deshabilitados si PRTMAP_EN (08h:3) es bajo. ¿Se puede ganar algo al reasignarlos manualmente en un orden diferente al que lo haría automáticamente el concentrador?

Mi consejo: deja lo que estás haciendo y usa la configuración de encendido predeterminada. Si desea omitir un puerto en el medio por razones de enrutamiento, simplemente desactívelo con la opción de doble pull-ups (correas), el IC se encargará de sí mismo.
Me imagino que la configuración de encendido predeterminada funcionará para mí. Sin embargo, me interesa saber cuál sería el beneficio de reasignar puertos físicos específicos a puertos lógicos específicos. Esencialmente, no entiendo por qué los registros de reasignación de puertos están disponibles para mí cuando el concentrador ya es capaz de reasignar registros automáticamente. La funcionalidad adicional tiene un valor premium, entonces, ¿por qué expusieron este registro? ¿Qué ventaja hay en la reasignación manual sobre una reasignación automática ingenua?
La configuración adicional no cuesta mucho si el cambio de opción VID/PID/ya está en su lugar. El registro no está "expuesto", fue diseñado a pedido de marketing: más funciones dan la impresión de una mayor flexibilidad y dictan un mejor precio. Pero tenga en cuenta que hubo/hay un error: los 15k desplegables no son configurables, y si usa la opción de flejado permanente para deshabilitar un puerto, le costará alrededor de 300uA de consumo adicional, lo que podría ser una preocupación en baja -Potencia aplicaciones embebidas.

Respuestas (1)

Como explica la hoja de datos, los números de puerto lógicos deben asignarse consecutivamente, comenzando por 1. Si no está utilizando todos los puertos y uno de los puertos no utilizados no está al "final" de los números de puerto físicos, debe tiene que usar la reasignación para volver a poner los puertos activos en orden.

Por ejemplo: supongamos que está creando un concentrador de 4 puertos y, por razones de diseño de PCB, tiene que usar los puertos físicos 2, 3, 6 y 7. La reasignación de puertos le permitiría reasignar estos puertos como puertos lógicos 1 a 4, configurando:

PRTR12 = 0001_0000 -- physical port 2 = logical port 1, physical port 1 = disabled
PRTR34 = 0000_0010 -- physical port 4 = disabled, physical port 3 = logical port 2
PRTR56 = 0011_0000 -- physical port 6 = logical port 3, physical port 5 = disabled
PRTR7  = 0000_0100 -- physical port 7 = logical port 4
¿Hay algo que ganar al reasignar en un orden específico? Mi culpa por no incluirlo en la pregunta, pero el IC también puede reasignar automáticamente los puertos para acomodar puertos deshabilitados (registrar 08h PRTMAP_EN). Supongo que puede hacer bloques contiguos de puertos lógicos tan bien como yo. Si ese es el caso, ¿por qué me dan los registros?
¿Usualmente no? Podría ser significativo si tiene un dispositivo host que "se preocupa" por el orden de los puertos, pero la mayoría de las computadoras no lo hacen.
+1 Para agregar, el procedimiento estándar de habilitación de puertos en el software es comenzar desde el puerto 1 y trabajarlos. Si tiene un puerto no enrutado sin usar en el medio de la secuencia, será solo un puerto desconectado y no sucederá nada malo. Esto importa solo si desea certificar el producto. Durante la prueba de certificación obligatoria, le pedirá al operador de prueba que conecte y desconecte los ratones, etc. Si el puerto no está enrutado y expuesto a un conector, sería imposible seguir la prueba y la certificación fallaría. Aparte de eso, a quién le importa...