Pregunta

Estoy tratando de depurar un tanto extraño problema en el controlador de dispositivo para el dispositivo PCIe FPGA. Tanto la imagen de la FPGA el controlador de dispositivo y se desarrollan en la casa.

El sistema de destino es 86, y el sistema operativo es el sombrero de ala 9. Tiene una tarjeta PCIe con la FPGA enchufado es sólo ranura PCIe. La imagen FPGA se carga después del arranque de la EEPROM.

El conductor está escrito de tal manera que utiliza los archivos de recursos (donde /sys/bus/pci/devices/0000:02:00.0/ 0000: 02: 00.0 es la ranura PCI de la tarjeta que contiene la FPGA) para configurar la FPGA.

Cuando se inicia el sistema (o cuando se vuelve del modo de hibernación), las costuras de enlace FPGA que se pierdan, y los archivos de recursos que faltan. Cuando arranca el FPGA correctamente, todo funciona bien (los archivos de recursos están allí). Cuando el sistema entra en el modo de hibernación, la FPGA está apagado. Cuando se devuelve desde la hibernación, el FPGA está encendido, antes de comenzar la inicialización del controlador.

Estoy sospechando en cosas siguientes:

  • un error en el firmware - algo relacionado con PCI de conexión en
  • un error en el kernel - menos probable, bien porque otras tarjetas PCI son reconocidos. Sólo
    esta tarjeta PCI hace que los problemas

Y las preguntas son:

  • ¿Alguien ha tenido problemas similares?
  • ¿Qué otra cosa podría estar mal?
  • ¿Alguna sugerencia sobre cómo depurar este problema?

Editar

este error , que es muy similar al problema que estoy viendo.

¿Fue útil?

Solución

Una tarjeta PCIe tiene que responder a un mensaje "¿Hay alguien ahí" dentro de un cierto tiempo. Es posible que su tarjeta no está respondiendo lo suficientemente rápido después de la hibernación / reset?

Sin más detalles de su diseño, es difícil hacer otra cosa que adivinar.

Puede hacer una lista de las diferencias entre el sistema de trabajo y de trabajo, es decir, ¿qué se puede hacer de manera diferente para obtener la tarjeta de trabajo?

Otros consejos

Finalmente logró depurar mi problema. Justo antes de entrar en el modo de hibernación, todos los procesos que todavía están utilizando los archivos de recursos están siendo asesinados. Por alguna razón desconocida, un proceso no dio a conocer los recursos, y murió. Tenemos un perro guardián, que reapariciones y todos los procesos que no se están ejecutando.

Cuando al volver de la hibernación, este proceso respawned, y ya que no podía abrir los archivos de recursos, que murió de nuevo, y luego se declaró un error crítico. Después de algún tiempo muy pequeño, los archivos de recursos fueron agregados por el sistema operativo, y este proceso podría continuar normalmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top