Acerca del curso


En este curso aprenderás a desarrollar proyectos basados en el CortexM de ARM desde cero. Utilizando herramientas estándar en la industria y Open Source.

Entre otras cosas, entenderás el proceso de arranque de los Cortex-M (qué pasa antes de llegar a la función main y cómo se debe configurar el arranque y la memoria). Dedicaremos varias secciones a la generación de los binarios, entendiendo las flags de compilación y de linkado, y veremos cómo flashearlos y depurarlos en cualquier placa usando herramientas estándar de la industria.

Posteriormente veremos cómo añadir las librerías CMSIS y la Standard Peripheral Library de ST, como un ejemplo práctico y detallado que os valdrá para aprender a integrar cualquier librería a vuestros proyectos.

Una vez que entendemos el proceso de arranque, veremos cómo integrar nuestros proyectos en Eclipse, un IDE gratuito y ampliamente utilizado.

Por último, finalizaremos el curso con ejemplos prácticos para mostrar cómo añadir un sistema operativo en tiempo real como FreeRTOS que nos abra loas puertas al desarrollo de aplicaciones multi-threading y de tiempo real. Haremos ejemplos de creación de tareas, comunicación entre ellas mediante colas de mensajes y utilización de software timers.


Módulos del curso:

  1. Instalación y configuración del entorno de desarrollo
    Como siempre, una primera sección para la instalación de herramientas, toolchain de ARM, etc que se utilizarán a lo largo del curso. No se usan herramientas propietarias ni de pago para tener un entorno de desarrollo versátil, totalmente gratuito y evitar el vendor lock-in. Todo el curso se realiza en Linux (aunque también se pueden encontrar las herramientas que se instalan para Windows, si quieres dedicarte a esto y sacarle el máximo partido, te recomiendo encarecidamente que uses Linux).

  2. Arranque de la MCU. De reset a main. 
    Muchos desarrolladores usan IDEs que hacen todo el trabajo previo a la ejecución de main. Esto hace que no conozcan bien qué es lo que sucede realmente cuando la MCU arranca, ni los pasos necesarios para configurar correctamente la vector table, la memoria, el stack pointer, el reset handler.. y muchos otros detalles que es necesario entender para ser un desarrollador competente. Esto te permitirá depurar problemas de arranque, crear tus propios linker scripts, conocer las flags de compilación y linkado, organizar tu código en secciones, poder decidir dónde meter cada sección en memoria, entender los bootloaders.. en definitiva, tener el control total de lo que hace tu programa desde el momento que alimentas la placa o generas un reset.

    En esta sección se explica el linker script, el startup file, las flags de compilación y linkado, la librería estandar de C, se analiza el binario generado, se graba y depura en la placa utilizando openocd y gdb.
    Se combina la teoría con un ejemplo que se crea desde cero y sin la ayuda de ningún IDE, simplemente con un editor de texto.

  3. Introducción a GNU Make
    Una vez que sabemos generar nuestro binario, vemos como utilizar la herramienta Make para hacernos la vida mucho más fácil. Creamos los Makefile que automatizan la compilación y el linkado y permiten gestionar grandes proyectos.

  4. Añadiendo CMSIS y la STM32 Standard Peripheral Library de ST a nuestro proyecto
    Esto es algo que algunos me habíais pedido. Un ejemplo práctico de cómo añadir CMSIS y la Standard Peripheral Library de ST a cualquier proyecto.
    Vemos paso a paso, y de forma práctica, cómo configurar e integrar la librería a nuestro proyecto para poder empezar a usar los drivers de ST. Se van resolviendo los problemas a medida que aparecen y se integran también las syscalls de la Newlib.
    También se amplían los Makefiles de la sección anterior y se muestran un par de ejemplos que hacen uso de los drivers.
    La idea es que, después de estudiar esta sección, podáis incorporar al proyecto cualquier librería que queráis utilizar.

  5. Integración con Eclipse
    Una vez que ya se entiende todo el proceso de compilación y arranque del sistema, podemos instalar cualquier IDE y configurarlo para que utilice nuestros Makefiles. De esta forma, podemos hacer uso de las funcionalidades que ofrece el IDE a la vez que entendemos y controlamos totalmente el proceso de generación de nuestro binario.
    En esta sección, instalamos Eclipse y lo configuramos para compilar, grabar y depurar nuestro programa desde el IDE. También instalamos los paquetes CMSIS para mostrar los periféricos de la MCU de forma gráfica.

  6. Integrando FreeRTOS en nuestros proyectos
    En esta sección añadimos a nuestros proyectos FreeRTOS, que es un sistema operativo de tiempo real gratuito y muy utilizado en la industria.
    Una vez más, se muestra todo el proceso de integración y configuración de forma práctica y desde cero, resolviendo los problemas que van surgiendo hasta llegar a una compilación limpia.
    Se realizan ejemplos multi-thread donde diferentes tareas se comunican mediante colas de mensajes y se hace uso de los software timers que ofrece FreeRTOS.
    No se entra a explicar FreeRTOS en profundidad, ya que eso daría para un curso en sí mismo, pero se muestran ejemplos de cómo usar varias de sus APIs de forma que, echando mano a la documentación, podáis empezar a jugar con él y a utilizar el resto de elementos y funcionalidades que ofrece.

Este curso es el complemento perfecto al curso de drivers, y completa los conocimientos para poder crear proyectos controlando cada parte del sistema.



Proceso de arranque
de los ARM CortexM

Aprende todo el proceso de arranque de la MCU y cómo configurarlo según tus necesidades.

Linker script

Entiende los linker scripts, qué son y cómo se definen para tener el control absoluto de la organización de la memoria.

Compilación y lincado

Veremos cómo compilar y lincar correctamente nuestro código objeto, utilizando las flags adecuadas, para generar el binario que corra en nuestra MCU.

GNU Make

Con la herramienta GNU Make aprenderemos cómo automatizar la generación del binario y hacer el proceso mucho más simple y eficiente.

Common Microcontroller Software Interface Standard

Añadiremos CMSIS como capa de abstracción vendor-independent.

STM32 Peripheral Library

Integraremos la STM32 Standard Peripheral Library de ST en nuestro proyecto para facilitar el manejo de periféricos.

Eclipse IDE

Una vez entendido todo el proceso de arranque y generación del binario desde cero, pasaremos a instalar Eclipse como entorno de desarrollo estándar.

Real Time Operating System

Agregaremos FreeRTOS a nuestro proyecto y veremos cómo crear tareas y comunicarlas entre ellas.

Dame feedback!

Pare crear nuevos cursos o añadir secciones a los existentes no dudes en mandarme un email o un mensaje con las secciones que te gustaría que tratara.

Example Curriculum

  Resumen del curso
Available in days
days after you enroll
  Instalación del entorno de desarrollo
Available in days
days after you enroll
  Arranque de la MCU: de reset a main
Available in days
days after you enroll
  Haciéndonos la vida más fácil: Introducción a Make
Available in days
days after you enroll
  Añadiendo CMSIS y la Standard Peripheral Library de ST a nuestro proyecto
Available in days
days after you enroll
  Integración con Eclipse
Available in days
days after you enroll
  Integrando FreeRTOS en nuestros proyectos
Available in days
days after you enroll

Elige el plan que más te convenga


¡Si no te convence te devolvemos el dinero!


(*) Estamos tan seguros de que el curso te va a gustar que te devolvemos el dinero sin hacer preguntas si cancelas tu suscripción durante los primeros 30 días.



(siempre y cuando no hayas cursado más de un cuarto del mismo)