PDF de programación - Desarrollo en C/C++ para la RPi

Imágen de pdf Desarrollo en C/C++ para la RPi

Desarrollo en C/C++ para la RPigráfica de visualizaciones

Publicado el 25 de Abril del 2019
1.284 visualizaciones desde el 25 de Abril del 2019
1,2 MB
17 paginas
Creado hace 6a (17/10/2017)
Desarrollo en C/C++ para la RPi

2017/10/16
Àngel Perles

Contenido

● Objetivo



Introducción

● El desarrollo “cruzado”
● Herramientas GNU C compiler (GCC)



Instalar

● Primer programa

● Bibliotecas
● Actividades
“Activity 1”
“Activity 2”





armpower.blogs.upv.es

2

Objetivo

● Comprender el concepto de desarrollo cruzado
● Trasladar conocimientos de C a la plataforma RPi
● Aprender a usar bibliotecas externas

C/C++

armpower.blogs.upv.es

3

Introducción

while (1) {

● C/C++ es “clásico”, nativo, portable, modular, bla, bla ... asumimos

que lo sabéis
“El lenguaje” universal del mundo embebido y no embebido





cualquier “cacharro” dispone siempre de ensamblador y de C/C++

● de bajo/medio nivel --> ideal para la programación de periféricos

● Pegas

● poco expresivo, retorcido, mal tipado, traga aberraciones, muy susceptible a

errores de programación, ... durillo para novatos, ...



¡Puñeta!, ¿y por qué todo esto está hecho en C?





freno ABS de tu coche, bomba de insulina, marcapasos, ...
satélite artíficial, GPS, ...

} // end while

armpower.blogs.upv.es

4

Introducción

● Se asume la imposibilidad de escapar de C/C++



(Hay una notable falta mundial de ingenieros formados en este área)

● Soluciones/paliativos a los defectos de C

● Restringir las construcciones C/C++ a usar, i.e. MISRA C
● Usar generadores automáticos de código



... pero escapa del ámbito del curso



¡Quiero usar C/C++ en la RPi!





“Profesional”: usar desarrollo cruzado
“De ir por casa”: instalar todas las herramientas en la propia SD

Este curso

armpower.blogs.upv.es

5

El desarrollo “cruzado”

● La plataforma de desarrollo (“host”) es distinta a la plataforma destino

(“target”)
● Facilita enormemente el desarrollo
● Pero poner a punto el entorno suele ser complicado

● Descartada por que hay que explicar muuuchas cosas.
● No sirve para un introducción a Linux embebido y a RPi

armpower.blogs.upv.es

6

Herramientas GNU C compiler (GCC)

● GNU C Compiler

● Conjunto de herramientas de programación para desarrollo nativo en muchas

plataformas (de micros a supercomputadores)
Incluye, entre otros, copilador, enlazador, ensamblador, depurador, etc.



● De código abierto, libre y gratuito.
● Es la base de muchas herramientas comerciales (de pago y libres)
Instalar
● Lo instalamos en la RPi y trabajamos en ella directamente



$ sudo apt-get install gcc

● Comprueba realmente qué se ha instalado

$ which gcc
$ ls -l (pon aquí el resultado de antes)

NOTA: Parece que se ha instalado GCC, pero es una falacia.
En realidad, se ha instalado arm-linux-gnueabihf-gcc-X

armpower.blogs.upv.es

7

Herramientas GNU C compiler (GCC)

● Vamos a usar el compilador “a pelo”:

● pi$ cd
● pi$ mkdir test
● pi$ cd test
● pi$ leafpad primer_programa.c & (suponemos terminal dentro X o entubado X)
● pi$ gcc -o prueba primer_programa.c
● pi$ ./prueba

armpower.blogs.upv.es

8

Herramientas GNU C compiler (GCC)

● ¿Funciona? ¿Se capta?
● Rasquemos un poco ...

● pi$ ldd ./prueba

● Usa “man” para saber qué es “ldd”
● Mira el tamaño del ejecutable y prueba ahora

● pi$ gcc -o prueba primer_programa.c

● Mira de nuevo tamaño y prueba “ldd”

armpower.blogs.upv.es

9

Bibliotecas

● Lo bueno de Linux y de C es la cantidad de bibliotecas disponibles
● Echa un vistazo en /lib y /usr/lib … bufff, menudo berenjenal

armpower.blogs.upv.es

10

Bibliotecas

● Dos tipos principales de archivo (todos empiezan por lib)

● Terminados en .so* → shared object (equivalente a .dll en MWindows)
● Terminado en .a → para enlazado estático

● Y suelen estare acompañados de numeritos y enlaces para indicar la

versión

● Actividad:

● Piensa en algo que se pueda hacer con un computador y trata de localizar una

biblioteca que lo haga

armpower.blogs.upv.es

11

Bibliotecas

● Ejemplo: GCC + bibliotecas + WiringPi

● Son unas bibliotecas. ¡¡¡¡¡ Podemos usarlas !!!!!

● Construircon enlazado a la biblioteca libwiringPi*.so*

● $ gcc -o blink blink.c -lwiringPi

armpower.blogs.upv.es

12

Bibliotecas

● Probando
● $ ./blink

● Upsss! No va!!! … hay que “exportar el pin” para dejarlo accesible

● $ gpio export 17 out
● $ ./blink

armpower.blogs.upv.es

13

GCC: “Activity 1”

● Crea el módulo valve.c partiendo de la siguiente cabecera valve.h

● You are not alone in the world



If you are an engineer, then you
should use english for developing software

armpower.blogs.upv.es

14

GCC: “Activity 1”

● Ejemplo de programa principal que usa el módulo

● Construir y probar el ejemplo

● gcc -c valve.c
● gcc -o test_valve test_valve.c valve.o -lwiringPi



./test_valve

armpower.blogs.upv.es

15

GCC: “Activity 2”

● Crea el módulo doorlock_rpi_wiring.c partiendo de la cabecera doorlock.h

que os acabo de entregar

● Crear la aplicación opendoor que active el ¿pistón? del ¿resbalón?

durante 2 segundos

armpower.blogs.upv.es

16

armpower.blogs.upv.es

17
  • Links de descarga
http://lwp-l.com/pdf15793

Comentarios de: Desarrollo en C/C++ para la RPi (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad