Pregunta:
¿Dónde está el archivo de encabezado GPIO ("linux / gpio.h")?
Mark Ingram
2012-07-19 02:17:01 UTC
view on stackexchange narkive permalink

He estado leyendo acerca de las funciones linux GPIO e intenté hacer un pequeño ejemplo usando la función gpio_is_valid , pero la compilación falla porque no puede encontrar linux / gpio.h .

  #include <iostream> # include <linux / gpio.h>int main () {const bool is17Valid = !! gpio_is_valid (17); if (is17Valid) {std :: cout << "¡17 es válido!" << std :: endl; } else {std :: cout << "¡17 * no * es válido!" << std :: endl; } return 0;}  

¿Está linux / gpio.h disponible en Raspberry Pi? Si no es así, ¿ninguna de las funciones descritas en la documentación de Linux está disponible?

Estoy usando la imagen "Squeeze" de Debian original.

¿Qué distribución estás usando?
¿Configuraste el vinculador? ¿Cuáles son los mensajes de error? "Devolvería 0;" ¿Sería inútil ya que no es C?
Estoy usando la imagen original de Debian "Squeeze" y el mensaje de error era, no puedo encontrar "linux / gpio.h".
Tienes que interactuar con el GPIO como "root". ¿Eres root?
@Haskeller: C ++ es compatible con versiones anteriores de C, por lo que aún necesita `return 0;` porque está en una función que devuelve un `int`. Omitir esto da como resultado un error del compilador.
Ninguno de los ejemplos de conducción que puedo encontrar usa `linux / gpio.h`; ¿Tienes un ejemplo de uno que lo haga?
@Jivings ¡Completamente irrelevante!
@AlexChamberlain: Supuse que `linux / gpio.h` es inaccesible sin acceso de root. No veo cómo eso es irrelevante.
@Jivings ¡Ese sería un plan terrible! Se deben necesitar permisos de root para acceder a GPIO (están mapeados en memoria), ¡pero no querrás ejecutar `gcc` como root!
@AlexChamberlain Sí, es cierto. Eso no estaría bien.
Dos respuestas:
Malvineous
2012-07-19 04:05:29 UTC
view on stackexchange narkive permalink

Suponiendo que está compilando en la propia Pi, probablemente necesitará instalar algunos paquetes de desarrollo, ya que los binarios precompilados no necesitan archivos de encabezado presentes para ejecutarse (por lo que no están instalados de forma predeterminada).

Creo que en este caso el nombre del paquete que desea es probablemente linux-headers , que pondrá gpio.h en /usr/include/linux/gpio.h . Debido a que el archivo se encuentra en / usr / include , significa que no necesita especificar esta parte de la ruta ni en su código ni en el compilador, así que #include <linux / gpio.h> ya que tiene suficiente, una vez que haya instalado el paquete correcto.

¿Alguien ha probado esto?
A través de una serie de enlaces, logré encontrar lo siguiente: https://github.com/raspberrypi/linux/blob/rpi-patches/include/linux/gpio.h, ¡parece que las funciones no están implementadas de todos modos!
Alex Chamberlain
2012-07-19 14:28:30 UTC
view on stackexchange narkive permalink

No creo que necesites linux / gpio.h ; como dijiste en un comentario, el repositorio RPi tiene una versión bastante redundante.

El GPIO están mapeados en memoria, que puede leer al respecto en ¿Cómo funciona el direccionamiento de E / S mapeado en memoria?.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...