Publicado el 17 de Febrero del 2019
953 visualizaciones desde el 17 de Febrero del 2019
912,6 KB
21 paginas
Creado hace 12a (18/04/2013)
Conceptos básicos sobre software
para microcontroladores ARM Cortex-M
armcortexm.blogs.upv.es
2013/04/18
Contenido
● Objetivos
● El lenguaje C es lo adecuado
● El caos de las bibliotecas
● CMSIS: La solución
● CMSIS y el St STM32F(4)
● Proyectos
– Creándolo con Keil MDK-ARM
– A partir de una plantilla
“Hola Mundo” (Al servicio de depuración)
●
● El arranque: del vacío al main()
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
2
Objetivos
● Entender la filosofía de desarrollo
● Tener nociones de CMSIS
● Aprender a crear un proyecto mínimo
● Aprender a usar plantillas y bibliotecas externas
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
3
El lenguaje C es lo adecuado
● Esta arquitectura está pensada para desarrollo en lenguaje C
● Usar ensamblador no tiene sentido (ni aquí ni en otros sitios)
●
(Un programador experto conoce ensamblador y le da ventaja
respecto al resto de programadores)
● Hay otras opciones:
● Pascal, Basic, C++, C#, java, Ada, ...
● Son lenguajes marginales en el ámbito de los microcontroladores
● Como ingeniero, elige ...
Inglés
Griego
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
4
El caos de las bibliotecas
● Los microcontroladores ARM Cortex-M son complejos
● Primera solución
● Cada fabricante crea sus bibliotecas C para simplificar
● Pega (bueno para unos, malo para otros)
●
Incompatibles entre fabricantes
● Dificulta la migración entre fabricantes
● A ARM no le convenía esto y puso orden
● Si te das cuenta, a ti tampoco te conviene
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
5
CMSIS: La solución
● CMSIS: Cortex Microcontroller Software Interface Standard
● Fruto de la coordinación entre ARM, fabricantes,
desarrolladores de entornos, desarrolladores de bibliotecas, ...
● Pretende establecer abstracción del hardware común a todos
los fabricantes de procesadores ARM Cortex-M
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
6
● Arquitectura de CMSIS (bueno, de CMSIS-Core)
CMSIS: La solución
● Funcionalidades para arranque del sistema
● Acceso características específicas del núcleo y periféricos básicos
● Visión consistente registros de periféricos y servicios de interrupción
1
2
Nota: La imagen corresponde a CMSISv3
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
7
CMSIS: La solución
● ¿Recuerdas el ejemplo del LED?
1
2
● Y 2 se apoya en 1
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
8
CMSIS: La solución
● CMSIS se basa en el sentido común. Por ejemplo:
● Cumple MISRA 2004 (Sí, busca en Google)
A Juan lo echaron de la
Volkswagen por esto
● El código se debe documentar con doxygen (y el desarrollador se
ahorra hacer el manual)
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
9
CMSIS: La solución
● CMSIS se basa en el sentido común. Por ejemplo:
● Emplea la definición de enteros <stdint.h>
– ejemplo: un int es distinto en un PIC 12F, un Cortex-M
o un x86
● El siguiente ejemplo compila bien en un PIC, un 8051, un Cortex-
M, un PC x86, una GPU Nvidia o un IBM Blue Gene/Q
entero de 16 bits sin signo
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
10
CMSIS y el St STM32F(4)
● Módulos C típicos para CMSIS con microcontrolador STM32F4
Fte. STM32F4 DSP and Standard peripheral library
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
11
CMSIS y el St STM32F(4)
● En nuestro ejemplo mínimo del LED
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
12
CMSIS y el St STM32F(4)
● Los cometidos de cada archivo son
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
13
Proyectos: Creándolo con Keil MDK-ARM
● Keil es muy flojillo en esto, cualquier otro entorno es mejor
● La plantilla de la primera sesión se desarrolló con estos pasos
● Actividad:
● Crea tu mismo el proyecto siguiendo el punto “Crear la primera
aplicación” de la guía de iniciación de la STM32F4 Discovery de
este curso.
● Echa un vistazo al interior de los archivos creados. Identifícalos
con los de la tabla anterior
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
14
Proyectos: A partir de una plantilla
● Una plantilla es otra opción
● La proporcionan los fabricantes del chip, los entornos, ...
● St la proporciona con la “STM32F4 DSP and Standard peripheral library”
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
15
Proyectos: A partir de una plantilla
● Un proyecto ARM se debe
apoyar en montones de
bibliotecas
● Hay que ser organizados
● Una plantilla suele usar
rutas preconfiguradas
mis
proyectos
● En la rutas, evitar,
espacios y símbolos
raros
bib, bib, ...
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
16
Proyectos: A partir de una plantilla
● Con la demo de la Discovery no viene plantilla
● No problem. Hemos preparado una.
● Actividad: Usar la plantilla
● 1 - Descomprime la “plantilla con printf() ITM debug” en el
directorio de trabajo
● 2 - Descarga “STM32F4DISCOVERY board firmware package"
● 3 - Descomprímelo en el subdirectorio “terceros”
● 4 - Con Keil, abre el proyecto “plantilla_ITM_debug.uvproj”
● 6 - Prueba a compilar
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
17
“Hola Mundo”: al servicio de depuración
● Modifica main.c para incorporar el siguiente código
● y sigue la guía de activar servicio depuración del blog (English)
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
18
El arranque: del vacío al main()
● En general, un microcontrolador está vació de software
● Por tanto, nuestro programa será responsable de
● gestionar la operación de “reset”
● configurar relojes (osciladores) que marcan el ritmo del sistema
● ajustar las zonas de memoria donde colocar cosas: heap, stack,
code ...
● proporcionar la función estándar de C main()
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
19
El arranque: del vacío al main()
● En general, el arranque lo produce un “reset”
● Aquí, el reset es una petición de interrupción/servicio
● Actividad:
● Abrir cualquier proyecto y localizar el “handler” del reset. Pensar
dónde puede estar a partir de la tabla de módulos
● Seguir las funciones hasta llegar a main()
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
20
Deberes
● Puesss, vemos como sale la sesión
Conceptos básicos sobre el software
armcortexm.blogs.upv.es
21
Comentarios de: Conceptos básicos sobre software para microcontroladores ARM Cortex-M (0)
No hay comentarios