Tengo una ranura M.2 con llave M en mi computadora portátil y varios dispositivos M.2 PCI-e que me gustaría usar al mismo tiempo. Estuve buscando un conmutador o divisor M.2 pero no pude encontrar nada, así que decidí diseñar el mío propio y también ganar algo de experiencia en PCI Express.
Traté de buscar especificaciones para la capa física PCI Express pero no pude encontrar mucha información. La mayoría de los artículos que encontré se refieren al sitio web de PCI-SIG que necesita una membresía con un correo electrónico de trabajo (que no tengo) de una de las compañías miembro. Así que traté de aprender lo más posible por mi cuenta.
Por lo que pude entender, una ranura M.2 M-key expone 4x carriles PCI-e. Los dispositivos que tengo son una combinación de teclas A/E, E y M. Los dispositivos clave A/E y E requieren 1 o 2 carriles PCIe. Ninguna de las tarjetas que tengo necesita las características específicas de M.2 como USB o DisplayPort. También estoy completamente de acuerdo con los dispositivos M-key (x4) que se ejecutan en 2 carriles o incluso en un solo carril a velocidades reducidas. También aprendí que cada carril PCI-e tiene un par diferencial de transmisión y recepción, y que el host proporciona un reloj de referencia. Así que me pregunto;
Considero esto más como una experiencia de aprendizaje que como una solución para mi necesidad, por lo que agradezco cualquier ayuda que pueda obtener. ¡Gracias!
Más allá de la capa física, tiene sistemas kernel de muy bajo nivel en el nivel de la CPU para los que necesitaría escribir un controlador complejo, tal vez incluso reescribir el BIOS.
El bus I2C se usa para algunos sistemas específicos de bajo nivel y, a menudo, no se implementa en productos de consumo, solo en placas base de gama alta.
Dado que el bus I2C es de drenaje abierto, ¿puedo unirlos todos? (Lo mismo con SMBus)
No, esto podría desactivar algunos de los chips de la placa base, ya que la línea se puede compartir para otros fines (como controles de suministro de energía, etc.).
¿Cuál es la función de las líneas WAKE# y PERST#?
Wake es para despertar la computadora desde el hardware.
¿El host detectará y enumerará todos los dispositivos por separado, o necesita soporte especial de BIOS o firmware UEFI para esto?
Lo hace, pero no necesariamente sabe cómo comunicarse con ellos, por lo que se requiere el controlador.
¿Hay algo más que deba tener en cuenta?
La velocidad del bus dificulta el trabajo con una MCU y, por lo general, se requieren FPGA/chip personalizado costoso. También hay mucha IP y no hay mucha información disponible.
Ron Beyer
brahans
ozg
DKNguyen
ozg
DKNguyen
ozg
DKNguyen
tom carpintero