Vous êtes sur la page 1sur 22

Conceptos bsicos sobre software para microcontroladores ARM Cortex-M

2012/07/07 armcortexm.blogs.upv.es

Objetivos

Contenido

El lenguaje C es lo adecuado El caos de las bibliotecas CMSIS: La solucin CMSIS y el St STM32F(4) Proyectos

Crendolo con Keil MDK-ARM A partir de una plantilla Al servicio de depuracin Al GLCD

Hola Mundo

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

Objetivos

Entender la filosofa de desarrollo Tener nociones de CMSIS Aprender a crear un proyecto mnimo Aprender a usar plantillas y bibliotecas externas

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

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) Pascal, Basic, C++, C#, java, Ada, ... Son lenguajes marginales en el mbito de los microcontroladores

Hay otras opciones:


Como ingeniero, elige ...


Ingls Griego

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

El caos de las bibliotecas


Los microcontroladores ARM Cortex-M son complejos Primera solucin

Cada fabricante crea sus bibliotecas C para simplificar Incompatibles entre fabricantes Dificulta la migracin entre fabricantes Si te das cuenta, a ti tampoco te conviene

Pega (bueno para unos, malo para otros)


A ARM no le convena esto y puso orden

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

CMSIS: La solucin

CMSIS: Cortex Microcontroller Software Interface Standard Fruto de la coordinacin entre ARM, fabricantes, desarrolladores de entornos, desarrolladores de bibliotecas, ... Pretende establecer abstraccin del hardware comn a todos los fabricantes de procesadores ARM Cortex-M

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

CMSIS: La solucin

Arquitectura de CMSIS (bueno, de CMSIS-Core)

Funcionalidades para arranque del sistema Acceso caractersticas especficas del ncleo y perifricos bsicos Visin consistente registros de perifricos y servicios de interrupcin

2 1

Nota: La imagen corresponde a CMSISv3, que an no est muy extendida


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es

CMSIS: La solucin

Recuerdas el ejemplo del LED?

Y 2 se apoya en 1

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

CMSIS: La solucin

CMSIS se basa en el sentido comn. Por ejemplo:

Cumple MISRA 2004 (S, busca en Google)


A Juan lo echaron de la Volkswagen por esto

El cdigo se debe documentar con doxygen (y el desarrollador se ahorra hacer el manual)

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

CMSIS: La solucin

CMSIS se basa en el sentido comn. Por ejemplo:

Emplea la definicin 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 CortexM, un PC x86, una GPU Nvidia o un IBM Blue Gene/Q
entero de 16 bits sin signo

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

10

CMSIS y el St STM32F(4)

Mdulos C tpicos para CMSIS con microcontrolador STM32F4

CMSIS y el St STM32F(4)

En nuestro ejemplo mnimo del LED

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

12

CMSIS y el St STM32F(4)

Los cometidos de cada archivo son


Descripcin CMSIS Cortex-Mx STMFx device peripheral access. Debera ser el nico a incluir en nuestro programa. Configura/incluye el resto de piezas. CMSIS Cortex-M4F STM32F4 devices peripheral access layer system. Acceso al core comn (lo bsico). STM32F44xx devices startup file. (PIFIA: Mezclar entre compiladores) Ensamblador. En C, antes de llegar al main(), se pasa por aqu. Peripheral's drivers configuration file. Configurar que cabeceras de perifricos se aaden. No lo toques al principio. Cabecera y cdigo del driver de un dispositivo ppp. Por ejemplo, stm32f4x_spi.h es la cabecera para el driver del SPI. Cabecera y plantillas para todas los servicios de interrupcin. Basta aadir nuestro cdigo de servicio dentro.

Archivo stm32f4xx.h

system_stm32f4xx.h / .c startup_stm32f4xx.s stm32f4xx_conf.h

stm32f4x_ppp.h /.c stm32f4xx_it.h/.c

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

13

Proyectos: Crendolo con Keil MDK-ARM


Keil es muy flojillo en esto, cualquier otro entorno es mejor La plantilla de la primera sesin se desarroll con estos pasos Actividad:

Crea tu mismo el proyecto siguiendo el punto Crear la primera aplicacin de la gua de iniciacin de la STM32F4 Discovery de este curso. Echa un vistazo al interior de los archivos creados. Identifcalos con los de la tabla anterior

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

14

Proyectos: A partir de una plantilla

Una plantilla es otra opcin

La proporcionan los fabricantes del chip, los entornos, ... St la proporciona con la STM32F4 DSP and Standard peripheral library

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

15

Proyectos: A partir de una plantilla

Un proyecto ARM se debe apoyar en montones de bibliotecas

Una plantilla est preconfigurada para eso No es buena idea perder la biblioteca

Conceptos bsicos 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. 1 - Descarga STM32F4DISCOVERY board firmware package" 2 - Descomprmelo en C:\??? 3 - Crea la carpeta curset dentro de Project 4 - Descomprime la plantilla con printf() ITM debug en esa carpeta 5 - Con Keil, abre el proyecto plantilla_ITM_debug.uvproj dentro de la carpeta MDK-ARM 6 - Prueba a compilar

Actividad: Usar la plantilla


Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

17

Hola Mundo: al servicio de depuracin

Modifica main.c para incorporar el siguiente cdigo

y sigue la gua de activar servicio depuracin del blog (English)

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

18

Hola Mundo: al GLCD

Ser productivo -> colaborar y aprovechar trabajo de otros

Hay que acostumbrarse a usar/adaptar bibliotecas externas Adapta el ejercicio anterior al GLCD grfico para el curso http://armcortexm.blogs.upv.es/display-lcd-grafico-para-el-curso/

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

19

El arranque: del vaco al main()


En general, un microcontrolador est vaci de software Por tanto, nuestro programa ser responsable de

gestionar la operacin de reset configurar relojes (osciladores) que marcan el ritmo del sistema ajustar las zonas de memoria donde colocar cosas: heap, stack, code ... proporcionar la funcin estndar de C main()

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

20

El arranque: del vaco al main()


En general, el arranque lo produce un reset Aqu, el reset es una peticin de interrupcin/servicio Actividad:

Abrir cualquier proyecto y localizar el handler del reset. Pensar dnde puede estar a partir de la tabla de mdulos Seguir las funciones hasta llegar a main()

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

21

Deberes para la noche

La STM32Fx DSP?

Conceptos bsicos sobre el software


armcortexm.blogs.upv.es

22

Vous aimerez peut-être aussi