Vous êtes sur la page 1sur 40

armcortexm.blogs.upv.

es
Arquitectura ARM Cortex-M
y
soporte a lenguaje C
2012/0/0
Arquitectura Cortex-M y C
armcortexm.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 caracter-sticas y componentes b.sicos
#e la arquitectura Cortex-M
(i)erenciar los pasos #el proceso #e creaci'n #e una
aplicaci'n escrita en C
,er capa/ #e imaginar el esquema b.sico #e tra#ucci'n #e
un )ragmento #e c'#igo C al ensambla#or $%umb2
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 3
Conteni#o
10Conceptos b.sicos #el 12
103ni#a# #e instrucci'n ARMv
20,egmentaci'n y riesgos
204uego #e instrucciones $%umb2
10$ipos #e instrucci'n
20Mo#i)ica#ores
*0$ra#ucci'n #e C a ensambla#or
105asos #e compilaci'n
+0Conceptos #e C en microcontrola#ores
10(e)inici'n #e variables y tipos #e #atos
20(epuraci'n y niveles #e optimi/aci'n
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 4
ARMv
6a arquitectura ARM nace en 178 9)ec%a #el primer lan/amiento0
ARMv: ; <ersi'n #e la arquitectura.
ARM: ; =amilia #e procesa#ores basa#os en la misma
arquitectura pero con implementaciones #i)erentes.
ARMv; >ltima versi'n #e la arquitectura? pero varios #ise@os
#i)erentes que #an lugar a varias )amilias;
ARMv-A ; =amilia Cortex-A ; procesa#ores #e aplicaci'n
ARMv-M; =amilias Cortex-M* y Cortex-M+; microcontrola#ores
3n #ise@o ARM #e)ine los componentes y su )uncionamiento
6os #ise@os se compran... a esto se llama licenciar.
Ao to#os los componentes son obligatorios
Ca#a licencia#o pue#e %acer mo#i)icaciones en la implementaci'n
9#entro #e las especi)icaciones0
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 5
&squema #e bloques Cortex-M
$exas "nstrument
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 6
3ni#a# #e "nstrucci'n
5rocesa#or #e *2 bits
6os registros y las direcciones de memoria son #e *2 bits
4uego #e instrucciones #e tipo 6!A(/,$!R& 9R&B-R&B0
3ni#a# #e ejecuci'n segmenta#a en tres etapas.
,egmentaci'n; se acaba una instrucci'n por ciclo 9Mejor caso0
$ama@o #e las instrucciones; *2 bits 9ARM0
Thumb; instrucciones #e 1C bots para tener programas compactos
Thumb2; en un mismo c'#igo y sin recon)iguraci'n se pue#en me/clar
instrucciones ARM y $%umb
Arquitectura 1AR<AR(
,altos con especulaci'n 9Aplicable a saltos con#icionales0
ARMv7-M
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 7
D5or quE $%umb 2F
C'#igo ARM; to#as las instrucciones? con to#as las opciones y
to#os los mo#os #e #ireccionamiento
C'#igo $%umb; instrucciones #e 1C bits m.s GcompactasH.
!bjetivo; programas m.s cortos
5roblema; A! caben lo mismo que en *2 bits
$%umb2; combina los #os anteriores #e )orma que no sea
necesario poner instrucciones para pasar #e un mo#o a otro.
Ao es necesario que las instrucciones estEn alinea#as a palabra.
ARM
$%umb
$%umb2
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 8
Registros accesible por las instrucciones
1C registros #e *2 bits... pero;
R1I JJK 5C
R1* JJK ,5
R1+ JJK 6R
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es
&jecuci'n segmenta#a
,egmentaci'n; 1 instrucci'n por ciclo salvo riesgos
R"&,B! JJ ,$A66 JJ per#i#a# #e prestaciones
Stall; signi)ica que %ay un ciclo en el que no po#emos ejecutar una
instrucci'n porque %ay otra que lo impi#e
Ca#a )abricante in#ica con una tabla las GlatenciasH #e las
instrucciones que pue#en generar GstallsH
Latencia; tiempo que se tar#a en que una instrucci'n acabe
Cortex-M; evita muc%os riesgos por 12
Ao to#os los riesgos se pue#en evitar
Riegos #e #atos y #e nombre; cortocircuitos L compila#or
Riesgos #e #e control; especulaci'n 9apostar quE va a ocurrir0
<&R; Cortex-M* $ec%nical Re)erencce Manual M 5rogrammers
Mo#el M "nstruction set summary
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !"
Memoria
&spacio #e #ireccionamiento GplanoH con #irecciones #e *2 bits
M53 9opcional0; Memory 5rotection 3nit
5ermite #e)inir c'mo se acce#era la memoria 9%asta 8 /onas0
(ispositivos; mapea#os en memoria
Ao to#o el espacio #e #ireccionamiento se pue#e usar para RAM
Arquitectura 1AR<AR(; el procesa#or acce#e a memoria por #os
caminos #i)erentes? uno para #atos y otro para programa.
&A("AA; pue#e ser big o little
Nonas especiales para acceso e)iciente a bits; O"$ OAA(,
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !!
Mapa #e Memoria
Cdigo o datos
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !2
Mapa #e Memoria
(ispositivos;
(e 0x+000000 a 0xC0000000 #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 v-as #e acceso 9(co#e y "co#e0
(e 0x2000000 a 0x+0000000 1 v-a #e acceso 9,ystem Ous0
(e 0xC000000 a 0xA0000000 1 v-a #e acceso 9,ystem Ous0
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !3
Acceso al Oit Oan#
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !4
Caminos #e interconexi'n
Cortex$M -M* core is #esigne# )or ,ystem on a C%ip
9,!C0 approac%es.
$%e ,ystem-6evel bus inter)aces )rom t%e Cortex$M -M*
core to microcontroller manu)acturer are base# on t%e
A1O an# A5O protocols.
A#vance# Microcontroller Ous Arc%itecture 9AMOA0 #escribes t%ese protocols.
A#vance# 1ig%-5er)ormance Ous 9A1O0
"nstruction bus 9"-co#e bus0; *2 bit
(ata bus 9(-co#e bus0; *2 bit
,ystem Ous; *2 bit
9"nternal0 A#vance# 5erip%eral Ous 9A5O0; *2 bit
&xternal 5rivate 5erip%eral Ous 9&xternal 55O0; *2 bit
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !5
Caminos #e interconexi'n
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !6
Caminos #e interconexi'n ,$M*2=+
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !7
",A; $ipos b.sicos #e "nstrucci'n
AritmEtico-l'gicas
=uentes y #estino en registros o valores inme#iatos
Movimiento entre registros 9M!<0
=uentes y #estino en registros o valores inme#iatos
Acceso a memoria
,'lo con instrucciones 6!A( y ,$!R&
Control;
,alto 9O? O6? O:? O6:? O:4? CON? COAN? $OO? $O10
PC3"(A(!Q &l 5C es un registro a to#os los e)ectos
")-$%en y &jecuci'n con#icional
Mo#i)icar el esta#o #el procesa#or
%ttp;//in)ocenter.arm.com/%elp/topic/com.arm.#oc.qrc0001m/RRC0001S3A6.p#)
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !8
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es !
!peraciones AritmEtico/l'gicas

&nsambla#or basa#o en GRuicT Re)erence Car#H;


A((U,VWcK UR#?VRn?W!peran#2K

6as llaves in#ican opcional? luego esto #escribe al menos #os


operaciones; A(( y A((,

Con la , se actuali/an )lags ; Negativo? Zero? Carry? oVer)loX.

<c> &jecuci'n con#icional basa#a en )lags actuales.

&l registro #estino es R#? si no est.? Rn es )uente y #estino

W!peran#2K pue#e ser;

<alor inme#iato

Registro

Registro sobre el que se %ace una operaci'n #e #espla/amiento


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 2"
!peran#o )lexible con #espla/amiento
Rm? s%i)t

,%i)t pue#e ser;

A,R Yn (espla/a. (erec%a aritmEtico 9 1WJnWJ*20

6,R Yn (espla/a. (erec%a l'gico 9 1WJnWJ*20

6,6 Yn (espla/a. (erec%a l'gico 9 1WJnWJ*10

R!R Yn Rotaci'n a la #erec%a 9 1WJnWJ*10

RR: Rotaci'n a la #erec%a #e un bit que implica al bit #e acarreo

5ermite otros tipos #e especi)icaci'n menos utili/a#os. 5o#Eis


encontrar su especi)icaci'n en el manual #e la arquitectura
ARMv si os registr.is en ARM como usuarios

5ue#en %aber restricciones en el uso #e algunos registros en


algunas operaciones 9sobre to#o 5C y ,50
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 2!
&jecuci'n Con#icional
,3O&R R1?R2?R*
,3OA& R1?R*?R2
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 22
Movimiento entre registros
M!<UsVWcK R#? W!p2K Copia W!p2K en R#
M<AUsVWcK R#? W!p2K Copia W!p2K en R# nega#o bit a bit
M!<$WcK R#?YWi1CK Copia el valor Wi1CK en la parte alta #e R#
M!<WcK R#?YWi1CK Copia el valor Wi1CK en la parte baja #e R#

C3"(A(!; una operaci'n sobre 5C o R1I equivalen a un salto

C3"(A(!; la operaciones sobre R1* o ,5 mo#i)ican la pila

6a actuali/aci'n #e los c'#igos #e con#ici'n #epen#en #el


valor escrito en el registro #estino.
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 23
!peraciones 6!A(/,$!R&
(os tipos; sencillas y m>ltiples

$o#as; utili/an un registro base para calcular la #irecci'n #e


memoria

&l registro bases se pue#e mo#i)icar antes o #espuEs #e calcular


la #irecci'n #e acceso a memoria

Antes; 6(R R*? ZRI? Y1+[Q

(espuEs; 6(R R*? ZRI[? Y1+

,encillas; utili/an un registro para almacenar resulta#o 96!A(0


o leer el #ato 9,$!R&0

5ue#en usarse para leer bytes? me#ias palabra o palabras

Multiples; copian o leen m>ltiples registros #e posiciones


consecutivas #e memoria

$o#os los valores #e registros en memoria ser.n #e *2 bits


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 24
"nstrucciones #e Control
OWcK WlabelK ; salto a WlabelK se anula #epen#ien#e #e WcK
O6WcK WlabelK ; equiv a OWcK WlabelK pero guar#a 5C en 6R
O:WcK Rm ; pone en valor #e RM en 5C
O6: ; Ao util en $%umb-2 equivalente a O6 o a O:
COUAVN Rn? label; ,alta a WlabelK si RA es cero 9N0 o no 9AN0
$OO $O1 ; ,alto a travEs #e tabla #e #irecciones 9sXitc%0
"$UpaternV WcK; Con#iciona las siguientes instrucciones seg>n WcK
"$? "$$? "$&? "$$$? "$$&? "$&$? "$&&? "$$$$? "$$&$? "$&$$? "$&&$?
"$$$&? "$$&&? "$&$&? "$&&&
M.s GbaratoH que un salto... culpa #e la segmentaci'n
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 25
3ni#a# ,egmenta#a
D=3AC"!AA "B3A6 R3& ," A! &,$3<"&RA ,&BM&A$A(!F
DR3\ 5A,A C!A 6!, 6!A(/,$!R& M]6$"56&,F
DR3\ 5A,A C!A 6!, ,A6$!,F
DR3\ 5A,A C!A 6A, ("<","!A&,F
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 26
&n blanco intenciona#amente
Conceptos bsicos sobre el software
armcortexm.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
12
Oibliotecas
!pciones
y
mapa mem
$ool C%ain
=ic%eros
.%
&ntorno #e
#esarrollo integra#o
=ic%eros
.o
=6A,1
=ic%ero
MA5A
=ic%ero
.c
Conceptos bsicos sobre el software
armcortexm.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 l-neas que empie/an por Y menos Ypragma

Yinclu#e; Ousca )ic%eros .% y los GconcatenaH junto al )ic%ero .c

6os .% A! ,!A 6"OR&R"A,

&limina to#os los comentarios 9esta acci'n se pue#e evitar0

Compila#or; tra#ucci'n #e C a ensambla#or

6a tra#ucci'n #epen#e #e la m.quina #estino

(i)erentes tipos #e tra#ucci'n; normal? optimi/a#a para espacio?


optimi/a#a para veloci#a#...
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 2
&nsambla#or

Co#i)ica el ensambla#or 9to#av-a era un arc%ivo #e texto0 para


que lo pue#a leer la C53 #estino

,A6"(A; arc%ivo objeto o binario

,on las pie/as #e la )utura aplicaci'n; se unir.n para )ormarla

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

Ca#a toolc%ain incluye %erramientas espec-)icas para su


manipulaci'n

6os )ic%eros objeto se pue#en unir en )ic%eros m.s gran#es


llama#os librer-as

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


compatibles entre s-
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 3"
&nla/a#or

3ne los #i)erentes componentes #e un programa seg>n un


patr'n

&l patr'n lo #etermina la toolc%ain emplea#a? la m.quina #on#e


se ejecutar. y el sistema operativo utili/a#o.

Cuan#o se trabaja con MC3 no suele %aber ,.!p.

(etermina las posiciones #e memoria #e variables y )unciones

&ste proceso se #enomina O"A("AB

&ste proceso se basa en los nombres genera#os por el


compila#or a partir #el c'#igo )uente

,i %ay una re)erencia a un s-mbolo y no se encuentra la


implementaci'n 9)unci'n0 o la #e)inici'n 9variable0 #e ese s-mbolo
se genera un error y la aplicaci'n no se crea

,i un s-mbolo no se re)erencia el enla/a#or suele eliminarlo.

3tili/a un GMA5AH para #eci#ir #on#e pone ca#a elemento


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 3!
5rogramaci'n en C

$ipos b.sicos

&nteros;

Uunsigne#^signe#V int

Uunsigne#^signe#V c%ar 98bits0

Uunsigne#^signe#V s%ort UintV 91C bits0

Uunsigne#^signe#V long UintV 9*2 bits0

Uunsigne#^signe#V long long UintV 9C+ bits0

Coma )lotante

)loat 9*2 bits en ARM0

#ouble 9C+ bits en ARM0

5unteros

,u tama@o #epen#e #e la m.quina; *2 bits en ARM


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 32
5rogramaci'n en C

$ipos compuestos; se componen #e elementos #e cualquier


tipo v.li#o #e C 9b.sicos y compuestos0

<ectores

Conjunto #e elementos #el mismo tipo

,e almacenan consecutivos en memoria

,e acce#en por in#exaci'n

Registros

Conjunto #e elementos #e tipos #iversos.

,e acce#en asignan#o un i#enti)ica#or a ca#a


componente

Ca#a elemento en una posici'n #e memoria #i)erente

&numeration; es una )orma alternativa #e crear constantes

3nion; parece a un registrol? pero to#os los componentes se


alinean para usar la misma /ona #e memoria
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 33
5rogramaci'n en C
=unciones

$ro/os #e c'#igo autoconteni#os y que o)recen encapsulaci'n


#e algoritmos y #atos

5ue#en tener cero o m.s par.metros y #evolver %asta un >nico


valor

,e pue#en #e)inir variables para almacenar )unciones...

6o que se almacena es la #irecci'n #e inicio #el c'#igo

C3"(A(!

6as variables #entro #e una )unci'n s'lo existen mientras se


ejecuta la )unci'n? luego su memoria se libera; no #evolver nunca
un puntero a una #e estas variables M &st.n en la 5"6A

6as par.metros en C siempre se pasan por valor; una copia #e la


variable

,e pue#e simular paso por re)erencia con punteros


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 34
6a memoria y C
3n programa en C supone #ivi#i#a la memoria en secciones. 6os
tipos #e secciones que contempla son;

C'#igo; /ona #e memoria #on#e est. el programa en ejecuci'n.

(atos globales;

Nona #e memoria #on#e est.n las variables accesibles


#es#e cualquier )unci'n o aquellas que se #eben
conservar entre llama#as a la misma )unci'n 9static0

Nona #e memoria #on#e el compila#or pone constantes


que no pue#e poner como valores inme#iatos

!LA;

Nona #in.mica #on#e se crean variables #e las )unciones

Nona auxiliar para guar#ar el esta#o entre llama#as a


)unciones o ante la llega#a #e interrupciones

"ea#; /ona #in.mica gestiona#a por el programa#or


Conceptos bsicos sobre el software
armcortexm.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 registro


9m.s )recuente si se %a optimi/a#o el c'#igoF

C3"(A(!

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


minimi/ar estas acciones al optimi/ar? por lo que incluso las
variables #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


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 36
Mo#i)ica#ores est.n#ar

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

extern; el s-mbolo 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 s-mbolo 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 A! est. en la pila y


mantiene el valor que ten-a la >ltima ve/ que se ejecut' la )unci'n

$olatile; in#ica que esta variable #ebe Gestar en memoria y s'lo


en memoriaH

&l compila#or no la mapea a ning>n registro

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


Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 37
Con#iciones en C

Ao existe un tipo espec-)ico para almacenar #atos O!!6

,e utili/a el valor entero GceroH para in#icar =A6,! y Gno ceroH


para cierto.

6as comparaciones #evuelven enteros

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

&structuras con#icionales simples;

i)9con#0UcuerpoSciertoV

i)9con#0UcuerpoSciertoVelseUcuerpoS)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)0; resultJ9con#0Fvalor1;valor2a

6as con#iciones compuestas ,"&M5R& con Gearly exitH


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

$res tipos #e bucles en C;

)or9initacon#ainc0 U cuerpo V

X%ile9con#0UcuerpoV

#oUcuerpoVX%ile9con#0a

,e pue#en reali/ar mo#i)icaciones para implementar cualquiera


#e ellos con otro.

&n sistemas segmenta#os el #oUVX%ile90 suele ser el esquema


m.s 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 esta


estructura... no te preocupes.
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 3
&ntorno #e (epuraci'n

(epuraci'n y optimi/aci'n son una mala combinaci'n si no se


conoce M3b O"&A el ensambla#or #e la m.quina

,in optimi/aci'n el programa pue#e ser m.s lento o m.s


gran#e 9o ambos0.

1ay #i)erentes niveles #e optimi/aci'n

Ca#a compila#or reali/a unas acciones #i)erentes en ca#a nivel

C!A,&4!;

Ao actives la optimi/aci'n en la )ase #e #ise@o #e un programa a


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

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


la aplicaci'n )inal; m.s peque@a? m.s r.pi#a y m.s #i)-cil #e
G%acTearH
Conceptos bsicos sobre el software
armcortexm.blogs.upv.es 4"
MAA!, A 6A !ORA
,eguir los pasos #el pro)esor en pi/arra y pantalla
3saremos el ejemplo #e G$imersH #e ayer y....
5R&B3A$A(
5R&B3A$A(
5R&B3A$A(

Vous aimerez peut-être aussi