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?
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
Ale..chenski
Jason_L_Bens
Ale..chenski