Arquitectrura y c

Embed Size (px)

Citation preview

  • 8/15/2019 Arquitectrura y c

    1/40

    armcortexm.blogs.upv.es

     Arquitectura ARM Cortex-My

    soporte a lenguaje C

    2012/0/0

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

  • 8/15/2019 Arquitectrura y c

    2/40

    Arquitectura Cortex-M y Carmcortexm.blogs.upv.es 2

    !bjetivos

    "nterpretar un programa ensambla#or escrito en $%umb2&nten#er la nomenclatura #e la #ocumentaci'n sobre ARM

    Cortex-M

    (i)erenciar entre Cortex-M* y Cortex-M+

    ,aber enumerar las caractersticas y componentes bsicos#e la arquitectura Cortex-M

    (i)erenciar los pasos #el proceso #e creaci'n #e unaaplicaci'n escrita en C

    ,er capa #e imaginar el esquema bsico #e tra#ucci'n #eun )ragmento #e c'#igo C al ensambla#or $%umb2

  • 8/15/2019 Arquitectrura y c

    3/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 3

    Conteni#o

    1Conceptos bsicos #el

    13ni#a# #e instrucci'n ARMv

    2,egmentaci'n y riesgos

    24uego #e instrucciones $%umb2

    1$ipos #e instrucci'n

    2Mo#i)ica#ores

    *$ra#ucci'n #e C a ensambla#or 

    15asos #e compilaci'n

    +Conceptos #e C en microcontrola#ores

    1(e)inici'n #e variables y tipos #e #atos

    2(epuraci'n y niveles #e optimiaci'n

  • 8/15/2019 Arquitectrura y c

    4/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 4

     ARMv

    6a arquitectura ARM nace en 178 9)ec%a #el primer lanamiento

     ARMv: ;

  • 8/15/2019 Arquitectrura y c

    5/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 5

    &squema #e bloques Cortex-M

    $exas "nstrument

  • 8/15/2019 Arquitectrura y c

    6/40

  • 8/15/2019 Arquitectrura y c

    7/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 7

    D5or quE $%umb 2F

    C'#igo ARM; to#as las instrucciones? con to#as las opciones yto#os los mo#os #e #ireccionamiento

    C'#igo $%umb; instrucciones #e 1 bits ms GcompactasH.

    !bjetivo; programas ms cortos

    5roblema; ! caben lo mismo que en *2 bits

    $%umb2; combina los #os anteriores #e )orma que no seanecesario poner instrucciones para pasar #e un mo#o a otro.

    o es necesario que las instrucciones estEn alinea#as a palabra.

     ARM

    $%umb

    $%umb2

  • 8/15/2019 Arquitectrura y c

    8/40

  • 8/15/2019 Arquitectrura y c

    9/40

  • 8/15/2019 Arquitectrura y c

    10/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es !"

    Memoria

    &spacio #e #ireccionamiento GplanoH con #irecciones #e *2 bits

    M53 9opcional; Memory 5rotection 3nit5ermite #e)inir c'mo se acce#era la memoria 9%asta 8 onas

    (ispositivos; mapea#os en memoria

    o to#o el espacio #e #ireccionamiento se pue#e usar para RAM

     Arquitectura AR

  • 8/15/2019 Arquitectrura y c

    11/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es !!

    Mapa #e Memoria

    Código o datos

  • 8/15/2019 Arquitectrura y c

    12/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es !2

    Mapa #e Memoria

    (ispositivos;

    (e 0x+000000 a 0x0000000 #e)ini#os por el )abricante(e 0xA000000 a 0x&0000000 #e)ini#os por el )abricante

    (e 0x&000000 a 0x&00+0000 #e)ini#os por ARM

    (e 0x&00+000 a 0x&0100000 #e)ini#os por ARM o el )abricante

    (e 0x&010000 a 0x======== #e)ini#os por el )abricante

    Memoria;

    (e 0x0000000 a 0x20000000 2 vas #e acceso 9(co#e y "co#e

    (e 0x2000000 a 0x+0000000 1 va #e acceso 9,ystem Ous(e 0x000000 a 0xA0000000 1 va #e acceso 9,ystem Ous

  • 8/15/2019 Arquitectrura y c

    13/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es !3

     Acceso al Oit Oan#

  • 8/15/2019 Arquitectrura y c

    14/40

  • 8/15/2019 Arquitectrura y c

    15/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es !5

    Caminos #e interconexi'n

  • 8/15/2019 Arquitectrura y c

    16/40

  • 8/15/2019 Arquitectrura y c

    17/40

  • 8/15/2019 Arquitectrura y c

    18/40

  • 8/15/2019 Arquitectrura y c

    19/40

  • 8/15/2019 Arquitectrura y c

    20/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 2"

    !peran#o )lexible con #esplaamiento

    Rm? s%i)t●

    ,%i)t pue#e ser;●  A,R Yn (esplaa. (erec%a aritmEtico 9 1WJnWJ*2

    ● 6,R Yn (esplaa. (erec%a l'gico 9 1WJnWJ*2

    ● 6,6 Yn (esplaa. (erec%a l'gico 9 1WJnWJ*1

    ● R!R Yn Rotaci'n a la #erec%a 9 1WJnWJ*1● RR: Rotaci'n a la #erec%a #e un bit que implica al bit #e acarreo

    ● 5ermite otros tipos #e especi)icaci'n menos utilia#os. 5o#Eisencontrar su especi)icaci'n en el manual #e la arquitectura

     ARMv si os registris en ARM como usuarios● 5ue#en %aber restricciones en el uso #e algunos registros en

    algunas operaciones 9sobre to#o 5C y ,5

  • 8/15/2019 Arquitectrura y c

    21/40

  • 8/15/2019 Arquitectrura y c

    22/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 22

    Movimiento entre registros

    M!

  • 8/15/2019 Arquitectrura y c

    23/40

  • 8/15/2019 Arquitectrura y c

    24/40

  • 8/15/2019 Arquitectrura y c

    25/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 25

    3ni#a# ,egmenta#a

    D=3C"!A "B3A6 3& ," ! &,$3

  • 8/15/2019 Arquitectrura y c

    26/40

    5 # i' # li i

  • 8/15/2019 Arquitectrura y c

    27/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 27

    5roceso #e creaci'n #e aplicaciones

     Asm 6inT

    itor; C'#igo )uente !pciones

    (ebug

    Compile*

    Brap%s?5ro)iling?

    ...

    ,imula#or 

    Oibliotecas

    !pcionesy

    mapa mem

    $ool C%ain

    =ic%eros

    .%

    &ntorno #e#esarrollo integra#o

    =ic%eros

    .o

    =6A,

    =ic%eroMA5A

    =ic%ero.c

    C il i'

  • 8/15/2019 Arquitectrura y c

    28/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 28

    Compilaci'n Acciones;● Comprueba que el c'#igo #e entra#a no tiene errores● $ra#uce a ensambla#or; NO CREA AL!CAC!ONES

    Componentes;● 5recompila#or;

    &limina to#as las lneas que empiean por Y menos Ypragma● Yinclu#e; Ousca )ic%eros .% y los GconcatenaH junto al )ic%ero .c

     – 6os .% ! ,! 6"OR&R"A,● &limina to#os los comentarios 9esta acci'n se pue#e evitar

    Compila#or; tra#ucci'n #e C a ensambla#or ● 6a tra#ucci'n #epen#e #e la mquina #estino

    ● (i)erentes tipos #e tra#ucci'n; normal? optimia#a para espacio?optimia#a para veloci#a#...

    & bl #

  • 8/15/2019 Arquitectrura y c

    29/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 2

    &nsambla#or 

    ● Co#i)ica el ensambla#or 9to#ava era un arc%ivo #e texto para

    que lo pue#a leer la C53 #estino● ,A6"(A; arc%ivo objeto o binario

    ● ,on las pieas #e la )utura aplicaci'n; se unirn para )ormarla

    ● 6a sali#a #el ensambla#or no se pue#e leer #irectamente

    Ca#a toolc%ain incluye %erramientas espec)icas para sumanipulaci'n

    ● 6os )ic%eros objeto se pue#en unir en )ic%eros ms gran#esllama#os libreras

    ●  Arc%ivos objetos #e #os toolc%ain #i)erente pue#en no ser

    compatibles entre s

  • 8/15/2019 Arquitectrura y c

    30/40

    5rogramaci'n en C

  • 8/15/2019 Arquitectrura y c

    31/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 3!

    5rogramaci'n en C● $ipos bsicos

    ● &nteros;

     – Uunsigne#^signe#V int – Uunsigne#^signe#V c%ar 98bits – Uunsigne#^signe#V s%ort UintV 91 bits –

    Uunsigne#^signe#V long UintV 9*2 bits – Uunsigne#^signe#V long long UintV 9+ bits

    ● Coma )lotante

     – )loat 9*2 bits en ARM –

    #ouble 9+ bits en ARM● 5unteros

     – ,u tama@o #epen#e #e la mquina; *2 bits en ARM

    5rogramaci'n en C

  • 8/15/2019 Arquitectrura y c

    32/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 32

    5rogramaci'n en C● $ipos compuestos; se componen #e elementos #e cualquier

    tipo vli#o #e C 9bsicos y compuestos

  • 8/15/2019 Arquitectrura y c

    33/40

  • 8/15/2019 Arquitectrura y c

    34/40

    D('n#e est mi variableF

  • 8/15/2019 Arquitectrura y c

    35/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 35

    D('n#e est mi variableF

    ● ,i se %a #e)ini#o )uera #e una )unci'n se le asigna una posici'n

    #e memoria )ija● ,i se %a #e)ini#o #entro #e una )unci'n;

    ● 5ue#e estar en la pila

    ● 5ue#e que el compila#or %aya #eci#i#o mapearla a un registro9ms )recuente si se %a optimia#o el c'#igoF

    ● C3"(A(!● Como los 6!A(/,$!R& son caros? el compila#or trata #e

    minimiar estas acciones al optimiar? por lo que incluso lasvariables #e)ini#as )uera #e cualquier )unci'n pue#en estar

    mapea#as temporalmente a un registro. – &sta acci'n #epen#e #el compila#or; no siempre ocurre

    Mo#i)ica#ores estn#ar

  • 8/15/2019 Arquitectrura y c

    36/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 36

    Mo#i)ica#ores estn#ar 

    ● const; el conteni#o #e esta variable es #e ,_6! lectura

    extern; el smbolo al que se re)iere existe... ya lo ver el linTer ● register; in#ica que esta variable se pue#e poner en un registro

    #e la C53 sin temor a e)ectos colaterales.● static; este smbolo s'lo se pue#e acce#er #es#e aqu

    =uera #e )unci'n; acceso s'lo #es#e este )ic%ero● (entro #e )unci'n sobre variable; la variable ! est en la pila y

    mantiene el valor que tena la >ltima ve que se ejecut' la )unci'n

    ● $olatile; in#ica que esta variable #ebe Gestar en memoria y s'loen memoriaH● &l compila#or no la mapea a ning>n registro

    ● &n CM,", se #e)inen sin'nimos como %%!O ? %%! y %%O

    Con#iciones en C

  • 8/15/2019 Arquitectrura y c

    37/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 37

    Con#iciones en C

    ● o existe un tipo espec)ico para almacenar #atos O!!6●

    ,e utilia el valor entero GceroH para in#icar =A6,! y Gno ceroHpara cierto.

    ● 6as comparaciones #evuelven enteros

    ● Cualquier operaci'n se pue#e usar como Gcon#ici'nH

    &structuras con#icionales simples;● i)9con#UcuerpoSciertoV

    ● i)9con#UcuerpoSciertoVelseUcuerpoS)alsoV

    ● !pera#ores con#icionales #e comparaci'n; W?K?WJ?KJ?JJ?QJ

    !pera#ores l'gicos; Q?``?^^● !pera#or con#ici'n 9no es un i); resultJ9con#Fvalor1;valor2● 6as con#iciones compuestas ,"&M5R& con Gearly exitH

    Oucles

  • 8/15/2019 Arquitectrura y c

    38/40

    Conceptos básicos sobre el softwarearmcortexm.blogs.upv.es 38

    Oucles

    ● $res tipos #e bucles en C;●

    )or9initcon#inc U cuerpo V● X%ile9con#UcuerpoV

    ● #oUcuerpoVX%ile9con#

    ● ,e pue#en realiar mo#i)icaciones para implementar cualquiera

    #e ellos con otro.● &n sistemas segmenta#os el #oUVX%ile9 suele ser el esquema

    ms e)iciente;● &jecuta menos instrucciones #e saltos si se #an al menos #os

    pasa#as por el bucle.

    ●  Aunque uses otro tipo #e bucle el compila#or lo pasa a estaestructura... no te preocupes.

    &ntorno #e (epuraci'n

  • 8/15/2019 Arquitectrura y c

    39/40

    Conceptos básicos sobre el software

    armcortexm.blogs.upv.es 3

    &ntorno #e (epuraci'n

    ● (epuraci'n y optimiaci'n son una mala combinaci'n si no se

    conoce M3 O"& el ensambla#or #e la mquina● ,in optimiaci'n el programa pue#e ser ms lento o ms

    gran#e 9o ambos.● ay #i)erentes niveles #e optimiaci'n

    ● Ca#a compila#or realia unas acciones #i)erentes en ca#a nivel

    ● C!,&4!;● o actives la optimiaci'n en la )ase #e #ise@o #e un programa a

    menos que no te quepa en memoria o sea #emasia#o lento.

    ● 3"$A la generaci'n #e c'#igo e in)ormaci'n #e #epuraci'n para

    la aplicaci'n )inal; ms peque@a? ms rpi#a y ms #i)cil #eG%acTearH

    MA!, A 6A !ORA

  • 8/15/2019 Arquitectrura y c

    40/40

    Conceptos básicos sobre el software

    armcortexm.blogs.upv.es 4"

    MA!, A 6A !ORA

    ,eguir los pasos #el pro)esor en piarra y pantalla

    3saremos el ejemplo #e G$imersH #e ayer y....

    5R&B3$A(

     5R&B3$A(

      5R&B3$A(