Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Desarrollo ARM CortexM desde cero
Highest Rated
Rating: 4.9 out of 5(14 ratings)
103 students

Desarrollo ARM CortexM desde cero

Aprende a desarrollar proyectos basados en CortexM de ARM desde cero.
Created byJavier Casas
Last updated 6/2023
Spanish
Spanish [Auto],

What you'll learn

  • Desarrollar proyectos basados en el CortexM de ARM desde cero
  • Proceso de arranque de los Cortex-M
  • Generación de binarios, flags de compilación y linkado
  • Cómo grabar el binario y depurarlo en cualquier placa usando herramientas estándar de la industria
  • Linker scripts y startup code
  • Librería estándar de C y syscalls de la Newlib
  • GNU Make y creación de Makefiles
  • OpenOCD y GDB
  • Cómo añadir CMSIS y la Standard Peripheral Library de ST a nuestros proyectos
  • Integración con Eclipse
  • Cómo añadir FreeRTOS a nuestros proyectos
  • Cómo generar tus propios proyectos para dar forma a nuevas ideas

Course content

7 sections71 lectures5h 55m total length
  • Instalación de herramientas básicas3:29
  • Instalación de la toolchain de ARM4:12
  • Añadir usuario al grupo dialout1:35
  • Descarga del repositorio del curso2:00

Requirements

  • Conocimiento básico de lenguaje C (aunque todos los conceptos se explican desde cero)
  • Placa de desarrollo de bajo coste con una MCU ARM CortexM (STM32 Discovery board o similar)
  • Sobre todo, ganas de aprender :)

Description

Código de descuento: F6B2D9B1B90673F289B7


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.


A continuación, te detallo de qué va el curso.

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 cualquiera de tus proyectos.

    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.

Muchos de los conceptos que se muestran, a pesar de ser imprescindibles, son a menudo desconocidos o no completamente entendidos incluso para profesionales del sector.

Who this course is for:

  • Toda persona interesada en el desarrollo de sistemas embebidos
  • Toda persona que quiera aprender las técnicas de desarrollo profesionales
  • Toda persona interesada en el uso de herramientas gratuitas y estándar en la industria