Conceptes Software ARM Cortex M

21
 armcortexm.blogs.upv.es Conceptos básicos sobre software para microcontroladores ARM Cortex-M 2013/04/18

description

concepts

Transcript of Conceptes Software ARM Cortex M

  • armcortexm.blogs.upv.es

    Conceptos bsicos sobre software para microcontroladores ARM Cortex-M

    2013/04/18

    http://armcortexm.blogs.upv.es/

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 2

    Contenido

    Objetivos 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

    Hola Mundo (Al servicio de depuracin) El arranque: del vaco al main()

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 3

    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 softwarearmcortexm.blogs.upv.es 4

    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 ...

    Ingls Griego

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 5

    El caos de las bibliotecas

    Los microcontroladores ARM Cortex-M son complejos Primera solucin

    Cada fabricante crea sus bibliotecas C para simplificar Pega (bueno para unos, malo para otros)

    Incompatibles entre fabricantes Dificulta la migracin entre fabricantes

    A ARM no le convena esto y puso orden Si te das cuenta, a ti tampoco te conviene

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 6

    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 softwarearmcortexm.blogs.upv.es 7

    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

    Nota: La imagen corresponde a CMSISv3

    1

    2

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 8

    CMSIS: La solucin

    Recuerdas el ejemplo del LED? Y 2 se apoya en 1

    1 2

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 9

    CMSIS: La solucin

    CMSIS se basa en el sentido comn. Por ejemplo: Cumple MISRA 2004 (S, busca en Google)

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

    A Juan lo echaron de laVolkswagen por esto

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 10

    CMSIS: La solucin

    CMSIS se basa en el sentido comn. Por ejemplo: Emplea la definicin de enteros

    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 bsicos sobre el softwarearmcortexm.blogs.upv.es 11

    CMSIS y el St STM32F(4)

    Mdulos C tpicos para CMSIS con microcontrolador STM32F4

    Fte. STM32F4 DSP and Standard peripheral library

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 12

    CMSIS y el St STM32F(4)

    En nuestro ejemplo mnimo del LED

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 13

    CMSIS y el St STM32F(4)

    Los cometidos de cada archivo son

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 14

    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 softwarearmcortexm.blogs.upv.es 15

    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 softwarearmcortexm.blogs.upv.es 16

    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 En la rutas, evitar,

    espacios y smbolos raros

    bib, bib, ...

    misproyectos

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 17

    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 - Descomprmelo en el subdirectorio terceros 4 - Con Keil, abre el proyecto plantilla_ITM_debug.uvproj 6 - Prueba a compilar

  • Conceptos bsicos sobre el softwarearmcortexm.blogs.upv.es 18

    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 softwarearmcortexm.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 softwarearmcortexm.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 softwarearmcortexm.blogs.upv.es 21

    Deberes

    Puesss, vemos como sale la sesin

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21