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(
Top Related