Como empezar en los sistemas embebidos sin morir en el intento

De eso va todo esto.

De que sepas de que va esto de los sistemas embebidos y tengas una base sobre la que hacer dos cosas.

a) Decidir si esto es para ti

b) Ir añadiendo más conocimientos sin que la casa se venga abajo.

¿Que me voy a encontrar aquí?

18 lecciones. Ni una más ni una menos.

-Vale Einstein, 18 lecciones. Muy bien. ¿Y de que?

-Sujetame el cubata, que voy.

Lección 1

En esta lección aprenderás que tipos de sistemas embebidos existen. Para que así sepas si hay alguno de ellos que te gusta más y así poder centrarte en ellos.

Vamos, como cuando vas a comprar una TV tienes que saber los tamaños, si es HD, 4K, 8K o 27K y esas cosas. Y ya luego eliges…

… o caes en la cuenta que no ves la tele y prefieres una radio.

Lección 2

Los seres humanos hablamos con la boca. Con esa parte de nuestra anatomía podemos decir las cosas más bonitas y también cagarla miserablemente.

Bueno, pues un sistema embebido, normalmente «habla» por un puerto de consola. Por ahí te cuenta sus penas y te enteras si le va bien la vida o si está hasta los…

Puertos de consola. Algo que se da por hecho, pero que en un sistema embebido hay que saber como funciona.

Lección 3

Guia Campsa. Tom Tom, Google Maps…

Ya sabes, saber donde está un lugar.

¿Y en un sistema embebido, como se donde está todo?

Con un mapa. Pero de memoria. Obvio.

Lo que no es tan obvio es tener claro como «leer» uno y tener la imagen metal clara.

Después de esta lección tendrás claro eso.

Lección 4

¿Y una vez que tienes el mapa y más o menos sabes que significa lo que allí pone?

Me refiero, como con esa información llegas al punto que quieres.

Andando, en globo, en coche.

¿Como se traduce eso que pone en el mapa en código SW?

¿Como accedo a esa dirección de memoria donde está el registro que quiero tocar?

Después de la lección 4 lo sabrás.

Lección 5

¿Te imaginas mirar tu movil cada 5 segundos para ver si te están llamando?

– ¡Como voy a hacer eso si tengo una alarma que me avisa!

– Pues las CPUs también tienen alarmas. Se llaman interrupciones.

– Si, ya lo sé Carlos. No soy idiota.

Pues esta lección va un paso más allá. En ella aprenderás que es un «vector de interrupciones» y como se «conecta» una interrupción con una función que haga algo cuando esa interrupción ocurre.

Yo hubiera matado por esta lección cuando empezaba.

Lección 6

Vale, ¿y si cogemos todo lo que hemos aprendido en las anteriores lecciones y lo juntamos todo para hacer algo tangible?

En esta lección hacemos parpadear un LED (el hello world de los embebidos) pero con el VAR.

Vamos a ver todo «a camra lenta» para ver toda la jugada en detalle.

Una miniserie, como en Netflix

No se si fue porque había visto una miniserie en Netflix, pero las siguientes 5 lecciones son una miniserie.

Una miniserie dedicada a los 3 protocolos/interfaces de comunicaciones más utilizados en sistemas embebidos.

SPI, I2C y RS-232

Cuando tienes que conectar algún sensor a tu placa, en un altísimo porcentaje de las veces el protocolo que utilizarán será alguno de estos «sospechosos habituales».

Lección 7

Y el primero de los protocolos a tratar es el SPI.

Si, ya sé que Youtube y Google están llenos de información sobre SPI.

¿Pero te cuentan con un datasheet de un sensor en la mano como configurar el módulo SPI de tu microcontrolador para hablar con el?

Esa es la clave. Relacionar la «teoría» con los datos del datasheet del dispositivo SPI con el que quieres comunicarte.

Después de esta lección tendrás mucho más claro como manejar cacharros SPI.

Lección 8

Segundo amiguito. Protocolo I2C.

Mismo procedimiento. Datasheets tanto del microcontrolador que va a funcionar de «master» como del sensor que vamos a usar.

Y vamos uniendo puntos. Vamos viendo como se relaciona todo para llegar a entender la cadena completa.

Lección 9

Y cerramos la parte «teórica» de la serie con el protocolo RS-232.

Una vez más. Datasheets, y muchos puntos unidos.

Además, algunas precauciones que hay que tener con estos puertos. Sobre todo con los voltajes para no acabar con un algo chamuscado.

Lección 10

Y después de tanta chachará nos metemos en harina.

Abrimos nuestro editor de código y vemos como hablarnos con un sensor SPI con nuestro microcontrolador (nRF52840 en este caso) y como sacar por el puerto RS-232 las lecturas del sensor.

2 en 1. SPI y RS-232. Además, como dato importante usamos el puerto RS-232 como suele usarte en gran parte de los sistemas embebidos, como salida de consola.

Lección 11

Y para cerrar la «miniserie» de los protocolos más código. Pero esta vez con I2C como protagonista (y el RS-232, igual que Joe Peschi, de secundario).

Una de construcción

Tenemos 6 lecciones sobre la base.

Luego una «miniserie» sobre protocolos de comunicación.

Entre esas lecciones, algunas donde tenemos código.

¿Pero, ese código, como lo convierto en algo que pueda grabar en mi tarjeta?

Pues en las siguientes 2 lecciones nos metemos con eso.

Lección 12

En esta lección entramos de lleno en el proceso de convertir un puñado de ficheros .c, .h y .s en un binario.

Además vemos que es eso de compilador «cruzado». Y no, no es que haya tenído un mal día.

Lección 13

¿Y una vez que tenemos nuestro código compilado, ya está?

¿Eso es todo?

No, ni mucho menos.

Hay unas cuantas «cositas» que podemos hacer con nuestros binarios. Especialmente cuando no funcionan como queremos.

Lección 14

Todos somos «vagos» por naturaleza. Por eso se inventó el mando a distancia, el sofá y los coches.

Y cuando toca compilar. ¿Porqué volver a escribir un comando cuando puedes tenerlo todo automatizado?

Eso mismo pensaron los creadores de la herramienta Make.

En esta lección vemos como organizar nuestro código y automatizar su compilación para que todo se reduzca a pulsar la tecla intro.

Algo más avanzado

Y para cerrar este curso 4 lecciones sobre algunos términos más avanzados.

Pero como siempre, intentando desmitificar cosas que siempre nos han parecido más dificiles de lo que son.

Lección 15

Y para empezar fuerte. ¿Que es un driver?

Ese nombre que hace que nos entren escalofríos. Esa «cosa» que pensamos que tenemos que ser poco menos que el elegido para entender.

En esta lección entraras conmigo a las catacumbas del SW para que veas que ahí abajo está todo tranquilo.

Lección 16

Y que mejor que enfrentarse a algo para perderle el miedo. En esta lección cogemos un driver y lo diseccionamos de arriba a abajo para ver lo que hace.
 

Lección 17

En esta lección vemos algo que todos hemos usado (sobre todo en Arduino) pero que muchos ni siquiera sabemos que existe.

Los bootloaders.

Esos pequeños programas «escondidos» en la memoria de nuestro microcontrolador que se encargan de recibir nuevos programas y grabarlas sustituyendo a la anterior.

Que es un bootloader y los diferentes tipos es algo que tendrás mucho más claro después de esta lección.

Lección 18

Y para acabar, la lección más rara.

Escribir código embebido para alejarse del HW.

Si si, como lo oyes.

¿Que es una Hardware Abstraction Layer (HAL) y para que sirve?

En esta lección lo verás.

Y poco más…

Ciertamente no tengo nada más que contarte sobre este curso.

Si has leido hasta aquí tienes dos opciones.

a) Cerrar la ventana y marcharte con la música a otra parte. Si lo haces, sin rencores. Al fin y al cabo, tu dinero, tu decisión.

b) Entrar aquí abajo y apuntarte.

…Una cosa más

Pero si te vas a apuntar, tienes que saber que puedes tener el curso y ya está.

O puedes tener el curso con 3 meses de soporte. Soporte atendido por mi. Tu preguntas, yo contesto. Rápido. Nada de tardar 1 semana.

Ya ahora sí. Llegó el momento.

CURSO TEMPORALMENTE NO DISPONIBLE