análisis spidev_test.c [cerrado]

-2

Estoy tratando de conectar una Raspberry Pi con un PIC32 a través de SPI. Para RPi estoy usando el código spidev_test.c (lo estoy modificando para adaptarlo a mis necesidades) pero ... porque soy un principiante en hardware de programación, me cuesta mucho entender el código completo en spidev_test. c

Aquí está el spidev_test.c: enlace

Si puede, le agradecería que me explicaran cómo funciona este código. Más exactamente, me gustaría saber lo siguiente:

  1. ¿Cómo funciona la función ioctl ()? ¿Qué devuelve?

  2. ¿La función open () devuelve 1/0?

  3. ¿Para qué sirve la función parse_opts ()?

  4. Detalle sobre la estructura spi_ioc_transfer. ¿Almacena en rx_buf el primer elemento de la dirección de la matriz?

  5. En la función transfer (), ¿cómo funciona exactamente la transferencia? Quiero decir, ¿el envío ocurre en la declaración de la estructura tr? ¿Dónde está la recepción? (Esta es la pregunta más molesta de todas para mí)

pregunta Andrei Tudora

1 respuesta

0

El código fuente al que hace referencia es en realidad una utilidad de línea de comandos de Linux. Lo que estás buscando son las páginas de Linux man . Son fáciles de acceder cuando estás en un sistema Linux, simplemente escribiendo:

También:

  • parse_opts es una función en el código fuente al que se vincula, simplemente analice la fuente y asegúrese de consultar man 3 getopt_long que es el comando principal en esa función. Básicamente, interpreta las opciones de línea de comando que se le dan a la herramienta.
  • Se menciona spi_ioc_transfer en el archivo de encabezado, pero no está seguro de cómo ir desde allí.
  • transfer() es una función en el código fuente al que se vincula, simplemente analice la fuente y asegúrese de consultar man 2 ioctl que es el comando principal en esa función.

Por último, pero no menos importante, consulte la documentación para spidev . Hay una gran cantidad de documentación disponible en kernel.org, solo agregue su site:kernel.org doc al término de búsqueda de Google.

    
respondido por el jippie

Lea otras preguntas en las etiquetas