75
09/09/13 1 Agenda Introducción Presentación de la Familia Cortex M3 Arquitectura de los Cortex M3 Repertorio de Instrucciones y Ejemplos Sistema de Memoria Excepciones, Interrupciones y el NVIC La familia NXP LPC17xx 1 Cortex Parte 1 Agenda Introducción Presentación de la Familia Cortex M3 Arquitectura de los Cortex M3 Repertorio de Instrucciones y Ejemplos Sistema de Memoria Excepciones, Interrupciones y el NVIC La familia NXP LPC17xx 2 Cortex Parte 1

Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

Embed Size (px)

Citation preview

Page 1: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

1

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

1  Cortex  -­‐  Parte  1  

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

2  Cortex  -­‐  Parte  1  

Page 2: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

2

Algunos  conceptos  Fundamentales  

3  Cortex  -­‐  Parte  1  

Ciclo perpetuo de ejecución

Búsqueda Cod Op

Decodificación Cod Op

Ejecución Este ciclo perpetuo y secuencial cambiará con la introducción del pipeline de la familia ARM

4  Cortex  -­‐  Parte  1  

Page 3: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

3

Arquitecturas de las computadoras

•  Arquitectura Von Neumann CPU

000000010002..

DIREC.

nnnn

BUSES

Memoriade Programa

y de Datosindistinta

5  Cortex  -­‐  Parte  1  

Arquitecturas de las computadoras

CPU

MEMORIA MEMORIADE DE

PROGRAMA DATOS

000000010002..

DIREC.

nnnn

DIREC.000000010002..mmmm

BUSES BUSES

• Arquitectura Harvard

6  Cortex  -­‐  Parte  1  

Page 4: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

4

Una de las formas de clasificar las computadoras

•  Complejidad de su repertorio de instrucciones – Computadoras CISC – Computadoras RISC

7  Cortex  -­‐  Parte  1  

Análisis  estadísOco  de  Ejecución  de  programas  estándar  

Tipo de instrucción % de Uso Movimiento de datos 43 Control de flujo (branches) 23

Operaciones Aritméticas 15 Comparaciones 13 Operaciones Lógicas 5 Otras 1

2/3 de las

instrucciones

8  Cortex  -­‐  Parte  1  

Page 5: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

5

Concepto  RISC  

•  Se   buscó   diseñar   un   procesador   que   tuviera   pocas  instrucciones,   fundamentalmente   las   de   uso   más  frecuente   y   se  opOmizó   su  Oempo  de  ejecución,   de  manera   que   la   arquitectura   resultante   fuera   muy  eficiente   en   la   mayoría   de   las   instrucciones   de   uso  corriente.  

•  Las   instrucciones  complejas,  no   tendrían   lugar  en  el  repertorio   de   instrucciones   y   deberían   ser  implementadas   por   medio   de   varias   instrucciones  sencillas.  

9  Cortex  -­‐  Parte  1  

Ventajas  Arquitectura  RISC  

1.  Mejor   aprovechamiento   de   área   de   silicio.  Típicamente   1/3   a  ¼   del   área   requerida   por  un  procesador  x86.  

2.  Menor  consumo  de  energía.  3.  Menor  Oempo  de  desarrollo  4.  Mayor   rendimiento   de   la   energ ía .  

Típicamente   40   a   50%   menor   consumo   por  MHz  de  reloj.  

h"p://blogs.arm.com/so0ware-­‐enablement/375-­‐risc-­‐versus-­‐cisc-­‐wars-­‐in-­‐the-­‐prepc-­‐and-­‐pc-­‐eras-­‐part-­‐1/  

h"p://blogs.arm.com/so0ware-­‐enablement/377-­‐risc-­‐versus-­‐cisc-­‐wars-­‐in-­‐the-­‐postpc-­‐eras-­‐part-­‐2/  10  Cortex  -­‐  Parte  1  

Page 6: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

6

Inconvenientes  Arquitectura  RISC  

1.  No  ejecuta  código  x86  2.  Generalmente  Oenen  una  pobre  densidad  de  

código  comparada  con  CISC  3.  Se   requerirán   múlOples   instrucciones   RISC  

para  ejecutar  una  CISC  (aunque  el  Oempo  de    ejecución  del  programa  completo  en  RISC  sea  menor  que  el  Oempo  de  ejecución  en  CISC)  

11  Cortex  -­‐  Parte  1  

El  repertorio  de  instrucciones  con  que  nos  encontraremos  será:  

1.  Instrucciones  de  procesamiento  de  datos  2.  Instrucciones  de  movimientos  de  datos  3.  Instrucciones  de  control  de  flujo  4.  Instrucciones  especiales  

12  Cortex  -­‐  Parte  1  

Page 7: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

7

Cantidad de direcciones en la palabra de instrucción

Tres Direcciones

13  Cortex  -­‐  Parte  1  

Implementación en un Microcontrolador Cortex

14

En los microcontroladores de 32 bits se implementa una versión de las máquinas de 3 direcciones en las que las direcciones de los operandos se puede dar por medio de registros de 32 bits que contienen los operandos y que previamente fueron cargados en los mismos

14  Cortex  -­‐  Parte  1  

Page 8: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

8

Suma  del  contenido  de  dos  posiciones  de  memoria  

 En  RISC  puede  ser:    ldr    r0,=Oper1    ldr    r1,[r0]    ldr    r0,=Oper2    ldr    r2,[r0]    add    r3,r2,r1    LDR    r0,=result    str    r3,[r0]  

       

Oper1  DCD    0x12345678  Oper2  DCD    0x23456789    AREA  DATA  result  space  4  

Lo que en un CISC sería: Add result, Oper1, Oper2

15  Cortex  -­‐  Parte  1  

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

16  Cortex  -­‐  Parte  1  

Page 9: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

9

17  

Fabricantes  

Cortex  -­‐  Parte  1  

Aplicaciones  

18  Cortex  -­‐  Parte  1  

Page 10: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

10

19 19

Cortex M

Temporizadores

A/D

D/A

Serie RTC

Watchdog

PLL

PWM

USB, Ethernet CAN, etc

ISP, IAP

19

¿Con qué nos encontraremos?

Cortex  -­‐  Parte  1  

Principios  Básicos  ARM  -­‐  Cortex  •  Se  basa  en  Arquitectura  RISC.  •  OpOmización   del   Oempo   de   ejecución   de   las  instrucciones  más  frecuentes  

•  Importante  banco  de  registros  •  Arquitectura  load-­‐store.  •  Pipeline  

20  Cortex  -­‐  Parte  1  

Page 11: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

11

Principios  Básicos  ARM  -­‐  Cortex  •  Instrucciones  de  tamaño  fijo:    16  ó  32-­‐bit  •  Ejecución   condicional   de   todas   las   instrucciones,   para  maximizar  el  rendimiento  de  la  ejecución.  

•  Computadora  de  3  direcciones.  •  Varios  modos  de  operación.  •  Las   operaciones   aritméOcas   y   lógicas   son   entre  registros.  

21  Cortex  -­‐  Parte  1  

Características ARM - Cortex

•  Todos las familias de procesadores Cortex comparten el mismo repertorio de instrucciones.

•  El núcleo del procesador es compartido por todos los fabricantes de silicio. Los periféricos son específicos de cada modelo y suelen NO ser compatibles entre si, por lo cual se han implementado metodologías de homogeneización (CMSIS).

•  Existen técnicas de programación que hacen que esas incompatibilidades de hardware sean disimuladas para el programador

•  Registros de 32 bits (16 + 1 disponibles). Registros 0 a 7 disponibles en todo momento

•  Estructura del bus tipo Von Neuman (ARM7), tipo Harvard ( Cortex y ARM9)

22  Cortex  -­‐  Parte  1  

Page 12: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

12

Componentes,  Familias  y  subfamilias  

23  Cortex  -­‐  Parte  1  

Portafolio  Procesadores  NXP  

24  Cortex  -­‐  Parte  1  

Page 13: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

13

Evolución  

25  Cortex  -­‐  Parte  1  

Evolución    

26  Cortex  -­‐  Parte  1  

Page 14: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

14

Evolución  

27  Cortex  -­‐  Parte  1  

Aplicaciones  de  las  disOntas  subfamilias  

28  Cortex  -­‐  Parte  1  

•  ARM   Cortex-­‐A,   Orientado   a  Sistemas  OperaOvos  complejos  y  aplicaciones  mulOusuario.  

•  ARM   Cortex-­‐R,   Orientada   a  s i s t e m a s   o p e r a O v o s  embebidos  en  Oempo  real.  

•  ARM   Cortex-­‐M,   Orientada   a  aplicaciones   de   bajo   costo   y  FPGA  h"p : / /www . a c t e l . c om / i n t e r a c t /

c o n fi r m a J o n . a s p x ?p=E239default.aspx.htm  

Page 15: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

15

Evolución  

29  Cortex  -­‐  Parte  1  

Costo  /  Performance  

30  Cortex  -­‐  Parte  1  

Page 16: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

16

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  

•  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

31  Cortex  -­‐  Parte  1  

ObjeOvos  Cortex  M3  •  OpOmizado  para  uso  con  flash  en  un  solo  ciclo  •  Esquema   de   Interrupciones   priorizables   basado   en  hardware  •  DeterminisOco/Interrupciones  con  baja  latencia  •  Interrupción  no  enmascarable  (NMI)  

•  MulOplicación   en   un   solo   ciclo   y   división   por  hardware  

•  Requerimientos  reducidos  de  memoria.  •  Almacenamiento  de  datos  no-­‐alineado  •  Manipulación  de  bits  •  Thumb-­‐2  

32  Cortex  -­‐  Parte  1  

Page 17: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

17

ObjeOvos  Cortex  M3  •  Manejo  de  potencia  disipada   y  modos  de  muy  bajo  consumo.  

•  Herramientas  de  depuración  incorporadas  en  el  chip  (breakpoints,  watchpoints  y  serial  wire  viewer).  

•  Diseño  opOmizado  para  la  programamción  en  C  (aún  del  reset,  interrupciones  y  excepciones).  

•  Excelente   soporte   para   la   implementación   de  sistemas  operaOvos.  

•  Mapa  de  memoria  Fijo  •  Bit-­‐banding  (operación  atómica  sobre  bits)  

33  Cortex  -­‐  Parte  1  

Tamaño de instrucciones y datos

•  ARM es una arquitectura de 32-bits. –  Byte significa 8 bits –  Halfword significa 16 bits –  Word significa 32 bits

•  El repertorio de instrucciones –  32-bit ARM –  16-bit Thumb –  Thumb-2 es una combinación de ambos

•  Los que tienen la extensión Jazelle ejecutan código Java

34  Cortex  -­‐  Parte  1  

Page 18: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

18

Cortex  M3  

Diseñado Por ARM

Diseñado por el

fabricante del

integrado

35  Cortex  -­‐  Parte  1  

Arquitectura  Cortex  M3  Núcleo  Cortex-­‐M3  (core)  

Arquitectura  Harvard    Pipeline  de  tres  etapas  con  especulación  

de  saltos  Thumb®-­‐2  y  Thumb  tradicional    ALU  con  división  por  H/W  y  mulOplicación  

en  un  ciclo    

Procesador  Cortex-­‐M3  Controlador  de  interrupciones  

Configurable  Bus  matrix  Componentes  de  depuración  avanzados  Opcionales:    MPU  &  ETM  

36  Cortex  -­‐  Parte  1  

Page 19: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

19

Arquitectura  Cortex  M3  

37  Cortex  -­‐  Parte  1  

Opcional

Un  ejemplo:  AMBA  (Advanced  Microcontroller  Bus  Architecture)  

Sim

ilar a

PC

No se

Justi

fica

Que trab

ajen

A velocid

ad

Del proce

sador

38  Cortex  -­‐  Parte  1  

Page 20: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

20

Ejemplo  de  Implementación  Arquitectura  NXP  LPC17xx    

39  Cortex  -­‐  Parte  1  

Ejemplo  de  Implementación  Arquitectura  NXP  LPC13xx    

40  Cortex  -­‐  Parte  1  

Page 21: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

21

Registros  de  Cortex  M3  

  Modelo   amigable   para  compiladores  •  Arquitectura  Load/Store  •  Registros  de  32-­‐bit  •  Esquema  Flexible  de  registros  •  Espacio   de   direccionamiento  Linear  de  32-­‐bits  

41  Cortex  -­‐  Parte  1  

Registros  específicos  

•  R15  =  PC  •  R14  =  LR  =  Link  register.  Almacena  la  dirección  de  retorno  en  subruOnas  y  excepciones  

•  R13  =  SP  (con  doble  significación)  •  Program  Status  Registers  (PSRs)  •  Interrupt   Mask   Registers   (PRIMASK,  FAULTMASK,  BASEPRI)  

•  Control  Register  (CONTROL)  42  Cortex  -­‐  Parte  1  

Page 22: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

22

Modos  ARM,  Thumb  y  Thumb-­‐2  

43  Cortex  -­‐  Parte  1  

Thumb-­‐2  y  Thumb  

44  Cortex  -­‐  Parte  1  

Page 23: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

23

Cambio  de  modos  en  ARM  

Archivo 2

Archivo 1

45  Cortex  -­‐  Parte  1  

Arm  32  y  Thumb  2  en  Cortex  

•  No   hay   overhead   de   conmutación   de   estado,     ahorrando  Oempo  de  ejecución  y  espacio  de  instrucción  

•  No  hay  necesidad  de  separar  el  código  ARM  del  Thumb  y  se  puede  hacer  todo  el  programa  en  un  solo  archivo,  lo  que  hace  el  desarrollo  y  mantenimiento  del  firmware  más  fácil  

•  Es  más   fácil   obtener   la  mejor   eficiencia   y   rendimiento,   a   su  vez,  por   lo  que  es  más  fácil  escribir  soqware,  porque  no  hay  necesidad   de   preocuparse   por   el   cambio   de   código   entre   el  ARM   y   Thumb   para   tratar   de   obtener   la   mejor   densidad   /  rendimiento  

46  Cortex  -­‐  Parte  1  

Page 24: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

24

Thumb-­‐2  

•  Permite   mezclar   instrucciones   de   16   bits   de  longitud  con  instrucciones  de  32  bits.  

•  La   mayor   parte   de   las   instrucciones   de   los  Cortex-­‐M3  son  de  16  bits.  

•  Internamente  se  procesan  como  instrucciones  de   32   bits,   por   lo   que   existe   una   etapa   de  decompresión   de   las   instrucciones   que   las  lleva  de  16  a  32  bits.  

47  Cortex  -­‐  Parte  1  

Thumb-­‐2  Debemos destacar dos temas muy importantes: 1.  A pesar de que la mayoría de las instrucciones de un Cortex M3

son de 16 bits, internamente se procesan como 32 bits “descomprimiéndose”

2.  Aunque las instrucciones sean de 16 operan sobre registros de 32 bits (salvo las instrucciones específicas que trabajan sobre 16 u 8 bits)

Cortex  -­‐  Parte  1   48  

Page 25: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

25

Instrucciones  en  Thumb-­‐2  

•  En  ARM  Unified  Assembler  Language  Muchas  instrucciones  se  representan   nemónicamente   de   igual   manera   para   32   ó   16  bits.  

•  Si  no  indicamos  lo  contrario,  y  de  ser  posible  los  compiladores  habitualmente  eligen  la  opción  de  16  bits.  

•  Ej:  ADDS  R0,  #1        será  implementada  en  16  bits  •  Si  deseamos  se  más  explícitos  (strong  Typing)  •  ADDS.W  R0,#1  ;  Wide  =  32  bits  •  ADDS.N    R0,#1  ;  Narrow  =  16  bits  

49  Cortex  -­‐  Parte  1  

Thumb-­‐2  

50  Cortex  -­‐  Parte  1  

Page 26: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

26

Repertorio  de  instrucciones  basado  en  Thumb  

Compatibilidad

Compatibilidad

51  Cortex  -­‐  Parte  1  

Caminos  de  Datos  y  pipeline  

52  Cortex  -­‐  Parte  1  

Page 27: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

27

Caminos  de  datos  

53  Cortex  -­‐  Parte  1  

Pipeline de 3 etapas

Búsq Cod Op Ejecución Decodificación

Búsq Cod Op Ejecución Decodificación

Búsq Cod Op Ejecución Decodificación

1

2

3

Tiempo

PC

= 0

x010

0

PC

= 0

x010

4

PC

= 0

x010

8

54  Cortex  -­‐  Parte  1  

Page 28: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

28

Pipeline  en  Cortex.  Funciones  ampliadas  

•  Pipeline de 3-etapas + especulación de saltos •  Cuando se encuentra una instrucción de salto, la etapa de

decodificación también incluye una búsqueda de código de operación especulativa del salto

55  Cortex  -­‐  Parte  1  

UOlización  ÓpOma  del  Pipeline  

6 cilos = 6 Instrucciones

56  Cortex  -­‐  Parte  1  

Page 29: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

29

Caso  más  desfavorable  

Ejecutar el Branch tarda 3 ciclos.

57  Cortex  -­‐  Parte  1  

LDR  Debe completarse la instrucción LDR antes de poder ejecutar la sig. instrucción

58  Cortex  -­‐  Parte  1  

Page 30: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

30

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

59  Cortex  -­‐  Parte  1  

Repertorio  de  Instrucciones  

60  Cortex  -­‐  Parte  1  

Page 31: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

31

Registros  r0 r1 r2 r3 r4 r5 r6 r7 r8 r9

r10 r11 r12

r15 (PC) r14 (LR)

xPSR

r13 (MSP) r13 (PSP)

61  Cortex  -­‐  Parte  1  

Instrucciones •  Formatos de instrucción de 3 direcciones •  Consta de “f” bits para el código de operación, “n” bits para especificar la

dirección del 1er. operando, “n” bits para especificar la dirección del 2do. operando y “n” bits para especificar la dirección del resultado (el destino).

•  n = 4 para instrucciones de 32 bits y n = 3 para instrucciones de 16 bits •  El formato de esta instrucción en Assembler, por ejemplo para la instrucción

de sumar dos números para producir un resultado, es: •  ADD d, s1, s2 ;d := s1 + s2.

62  Cortex  -­‐  Parte  1  

Page 32: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

32

Instrucciones  Condicionales  

63  Cortex  -­‐  Parte  1  

Instrucciones  Condicionales  

64  Cortex  -­‐  Parte  1  

Page 33: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

33

Instrucciones  Condicionales  •  If  –  Then  (IT)  se  agrega  la  instrucción  (16  bit)  

•  Hasta  3  condiciones  “then”  o  “else”  adiconales  pueden  ser  especificadas  (T  or  E)  

•  Hace  hasta  4  instrucciones  condicionales          •  Puede  uOlizarse  cualquier  código  de  operación  ARM  normal  •  Las  instrucciones  de  16  bits,  en  bloque,  no  afectan  los  flags    

•  Si  lo  hacen  las  instrucciones  de  comparación  •  Las  instrucciones  de  32  bits  (según  las  reglas  generales)  pueden  afectar  los  

flags  •  El  estado  actual  del  “if-­‐then”  se  almacena  en  el  CPSR  

•  El  bloque  condicional  puede  ser  interrumpido  y  retornado  con  seguridad  •  NO  se  deben  realizar  branch  dentro  o  fuera  del  bloque  ‘if-­‐then’  

♣  

65  Cortex  -­‐  Parte  1  

Ejemplos condicionales

if (r0 == 0) { r1 = r1 + 1; } else { r2 = r2 + 1; }

Fuente C

§  5 instrucciones §  5 palabras §  5 o 6 ciclos

§  3 instrucciones §  3 palabras §  3 ciclos

... ...

ARM instructions Incondicional CMP r0, #0 BNE else ADD r1, r1, #1 B end else ADD r2, r2, #1 end

CMP r0, #0 ADDEQ r1, r1, #1 ADDNE r2, r2, #1 ...

Condicional

66  Cortex  -­‐  Parte  1  

Page 34: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

34

Instrucciones •  Casi todas las instrucciones se ejecutan en un ciclo de reloj •  Modos de direccionamiento simples •  El procesamiento de datos solo opera con contenidos de

registros, no directamente en memoria. •  Control sobre la unidad aritmética lógica (ALU, Arithmetic

Logic Unit) y el “shifter”, en cada instrucción de procesamiento de datos para maximizar el uso de la ALU y del “shifter”.

•  Modos de direccionamiento con incremento y decremento automático de punteros, para optimizar los lazos de los programas.

•  Carga y almacenamiento de múltiples registros, para maximizar el rendimiento de los datos.

67  Cortex  -­‐  Parte  1  

Registro, opcionalmente con operación de desplazamiento –  El valor del desplazamiento puede ser:

•  5 bit entero no signado •  Especificado en el LSB de otro

registro. –  Usado para multiplicar por una

constante Valor inmediato

–  8 bit : Número en el rango de 0-255. •  Rotado a la derecha en un nùmero

par de posiciones –  Permite que sean cargados

directamente a los registros constantes de 32-bits

Resultado

Oper 1

Barrel Shifter

Oper 2

ALU

Barrel Shifter: El 2º Operando

68  Cortex  -­‐  Parte  1  

Page 35: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

35

Operandos  inmediatos  

69  Cortex  -­‐  Parte  1  

•  Instrucciones de procesamiento

de datos

70  Cortex  -­‐  Parte  1  

Page 36: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

36

Instrucciones  de  procesamiento  de  datos  

71  Cortex  -­‐  Parte  1  

Instrucciones  de  procesamiento  de  datos  

72  Cortex  -­‐  Parte  1  

Page 37: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

37

Procesamiento de Datos •  Consiste de:

–  Aritmeticas: ADD ADC SUB SBC RSB RSC –  Logicas: AND ORR EOR BIC –  Comparaciones: CMP CMN TST TEQ –  Movimiento Datos: MOV MVN

•  Estas instrucciones operan sobre registros y NO en memoria.

•  Sintaxis:

<Operación>{<cond>}{S} Rd, Rn, Operand2

•  Comparaciones sólo afectan flags – no especifican Rd •  Movimiento de datos no especifican Rn

•  El segundo operando se envía a la ALU a través del desplazador en barril.

73  Cortex  -­‐  Parte  1  

Procesamiento de Datos Aritméticas

•  ADD r1, r2, r3 ; r1 = r2 + r3 •  ADC r1, r2, r3 ; r1 = r2 + r3 + C •  SUB r1, r2, r3 ; r1 = r2 - r3 •  SUBC r1, r2, r3 ; r1 = r2 - r3 + C - 1 •  RSB r1, r2, r3 ; r1 = r3 - r2 (inversa) •  RSC r1, r2, r3 ; r1 = r3 - r2 + C - 1

74  Cortex  -­‐  Parte  1  

Page 38: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

38

Procesamiento de Datos

•  Aritméticas – ADD r3,r2,#1 – ADD r3,r2,r1, lsl #3 (lsr, asl, asr, ror, rrx) – ADD r5,r5,r3, LSL r2 – MUL r4,r3,r2 – MLA r4,r3,r2,r1 ;r4:=(r3 x r2 + r1) – RSB r0,r0,r0, LSL #3

»  ; Multiplicar por 7

75  Cortex  -­‐  Parte  1  

Procesamiento de Datos

•  Lógicas – AND r0,r1,r2 ; r0:= r1.r2 – ORR r0,r1,r2 ; r0:= r1 + r2 – EOR r0,r1,r2 ; r0:= r1 xor r2 – BIC r0,r1,r2 ; r0:= r1 and not r2 – AND r8,r7,#0xff ; r8:= r7 . 0x000000ff

76  Cortex  -­‐  Parte  1  

Page 39: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

39

Procesamiento de Datos Solo afectan los Flags

CMP r1, r2 ; cc por r1 - r2 CMN r1, r2 ; cc por r1 + r2 TST r1, r2 ; cc por r1 and r2 TEQ r1, r2 ; cc por r1 xor r2

77  Cortex  -­‐  Parte  1  

Procesamiento de Datos Inmediatas

•  ADD r3, r3,#1 ; r3 := r3 + 1 •  AND r8, r7,#oxff ; r8 := r7[7:0]

78  Cortex  -­‐  Parte  1  

Page 40: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

40

Registro, opcionalmente con operación de desplazamiento –  El valor del desplazamiento puede ser:

•  5 bit entero no signado •  Especificado en el LSB de otro

registro. –  Usado para multiplicar por una

constante Valor inmediato

–  8 bit : Número en el rango de 0-255. •  Rotado a la derecha en un n´´umero

par de posiciones –  Permite que sean cargados

directamente a los registros constantes de 32-bits

Resultado

Oper 1

Barrel Shifter

Oper 2

ALU

Procesamiento de Datos Barrel Shifter: El 2º Operando

79  Cortex  -­‐  Parte  1  

Procesamiento de Datos Desplazamientos

•  ADD r3, r2, r1, LSL #3 ; r3 := r2 + 8 x r1 •  ADD r5, r5, r3, LSL r2 ; r5 : = r5 + r3 x 2r2

•  RSB r0,r0,r0, LSL #3 •  ; Multiplicar por 7

80  Cortex  -­‐  Parte  1  

Page 41: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

41

Desplazamientos

81  Cortex  -­‐  Parte  1  

•  INSTRUCCIONES DE TRANSFERENCIA DE

DATOS

82  Cortex  -­‐  Parte  1  

Page 42: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

42

Transferencias de Datos

83  Cortex  -­‐  Parte  1  

Transferencias de Datos

•  Movimiento – MOV r0,r2 – MVN r0,r2 ; r0:= not r2

84  Cortex  -­‐  Parte  1  

Page 43: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

43

Transferencias de Datos LDR

LDR r0,[r1] ; r0 := mem32[r1] LDR R4, [R2, #4] ; Carga word en R4 desde direc R2 + 4 LDR R4, [R2, R1] ; Carga word en R4 desde direc R2 + R1 LDRH R3, [R6, R5] ; Carga half word en R3 desde R6 + R5 LDRB R2, [R1, #5] ; Carga byte en R2 desde R1 + 5 LDR R6, [PC, #0x3FC] ; Carga R6 desde PC + 0x3FC LDR R5, [SP, #64] ; Carga R5 desde SP + 64

85  Cortex  -­‐  Parte  1  

Transferencias de Datos Pre y post indexado

LDR r0,[r1,#4] ; r0 := mem32[r1+ 4] LDR r0,[r1,#4]! ; r0 := mem32[r1+ 4] ; r1 := r1 + 4

86  Cortex  -­‐  Parte  1  

Page 44: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

44

Transferencias de Datos STR

STR r0,[r1] ; mem32[r1] := r0 STR R0, [R7, #0x7C] ; Guarda word desde R0 a direc R7 + 124 STRB R1, [R5, #31] ; Guarda byte desde R1 a direc R5 + 31 STRH R4, [R2, R3] ; Guarda halfword desde R4 a dir R2 + R3 STR R4, [SP, #0x260] ; Guarda R5 a direc. SP + 0x260

87  Cortex  -­‐  Parte  1  

Preindexado  y  posOndexado    

0x5

0x5

r1 0x200 Base

Register 0x200

r0

0x5 Source Register for STR

Offset 12 0x20c

r1

0x200

Original Base

Register 0x200

r0

0x5 Source Register for STR

Offset

12 0x20c

r1 0x20c

Updated Base

Register

 Pre-­‐indexado:  STR r0,[r1,#12]  

n  Post-indexado: STR r0,[r1,#12]!

88  Cortex  -­‐  Parte  1  

Page 45: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

45

Multiples Load y Store Registros •  Sintaxis:

–  <LDM|STM>{<cond>}<addressing_mode> Rb{!}, <register list> •  4 modos de direccionamiento:

–  LDMIA / STMIA increment after –  LDMIB / STMIB increment before –  LDMDA / STMDA decrement after –  LDMDB / STMDB decrement before

IA

r1 Increasing Address

r4

r0

r1 r4

r0

r1 r4

r0 r1 r4

r0

r10

IB DA DB LDMxx r10, {r0,r1,r4} STMxx r10, {r0,r1,r4}

Base Register (Rb)

89  Cortex  -­‐  Parte  1  

LDMIA y STMIA

LDMIA R7!, {R0-R3, R5} ; Load R0 to R3-R5 desde R7, add 20 to R7 STMIA R0!, {R3, R4, R5} ; Store R3-R5 to R0: add 12 to R0

90  Cortex  -­‐  Parte  1  

Page 46: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

46

PUSH y POP

Funcion:

PUSH {R0-R7, LR} ; push al stack (R13) R0-R7 y la ; dirección de retorno

... ; Cuerpo de la función

... POP {R0-R7, PC} ; restaura R0-R7 del stack ; y el PC y retorna

91  Cortex  -­‐  Parte  1  

Uso  de  la  Pila  

92  Cortex  -­‐  Parte  1  

Page 47: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

47

Push  y  Pop  

PUSH {R0} ; R13 = R13 - 4, luego Memory[R13] <- R0 POP {R0} ; R0 <- Memory[R13], luego R13 = R13 + 4

93  Cortex  -­‐  Parte  1  

Push  y  Pop  Ampliados  

94  Cortex  -­‐  Parte  1  

Page 48: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

48

Uso  de  la  pila  en  subruOnas  

; R0 = X, R1 = Y, R2 = Z BL funcion1 ; Regresa al prgma ppal ; R0 = X, R1 = Y, R2 = Z ... ;

funcion1 PUSH {R0} ; almacena R0 en pila y ajusta SP PUSH {R1} ; almacena R1 en pila y ajusta SP PUSH {R2} ; almacena R2 en pila y ajusta SP ... ; Ejecuta tarea. (R0, R1 y R2 pueden cambiar) POP {R2} ; restaura R2 y reajusta SP POP {R1} ; restaura R1 y reajusta SP POP {R0} ; restaura R0 y reajusta SP BX LR ; R

95  Cortex  -­‐  Parte  1  

Program  Status  Register  –  Ampliado  y  Condensado  

• APSR - Application Program Status Register – ALU flags • IPSR - Interrupt Program Status Register – Interrupt/Exception No. •  EPSR - Execution Program Status Register

•  IT field – If/Then block information •  ICI field – Interruptible-Continuable Instruction information

Condensado Almacenado en el stack al Inicio de

excepción

96  Cortex  -­‐  Parte  1  

Page 49: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

49

Instrucciones  de  control  de  flujo  

97  Cortex  -­‐  Parte  1  

Instrucciones  de  control  de  flujo  

98  Cortex  -­‐  Parte  1  

Page 50: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

50

Saltos - Branch •  Instrucciones de salto (Branching): BX, B, BL •  B: salto con desplazamiento de 24 bits con

signo •  BL: enlace (link) PC -> R14 •  Instrucciones de transferencia de datos: LDR,

STR, LDRH, STRH, LDRSB, LDRSH, LDM, STM, SWP.

99  Cortex  -­‐  Parte  1  

Control de flujo

100  Cortex  -­‐  Parte  1  

Page 51: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

51

•  Branch : B{<cond>} etiqueta •  Branch with Link : BL{<cond>} Etiqueta subrutina •  El procesador desplaza el campo del offset a la izquierda en

dos lugares, extiende el signo y lo suma al PC –  ± 32 Mbyte de rango –  ¿Cómo se pueden implementar Branches mayores?

28 31 24 0

Cond 1 0 1 L Offset

Campo de condiciones

Link bit 0 = Branch 1 = Branch with link

23 25 27

Instrucciones de Branch

101  Cortex  -­‐  Parte  1  

Subrutinas

BL subru … Subru: ….

mov pc,r14

102  Cortex  -­‐  Parte  1  

Page 52: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

52

AAPCS      Procedure  Call  Standard  for  the  ARM®  Architecture    

 

103  Cortex  -­‐  Parte  1  

Uso de Registros

r8 r9/sb r10/sl r11

r12

r13/sp r14/lr r15/pc

r0 r1 r2 r3

r4 r5 r6 r7 Variables en registros

deben ser preservadas

Argumentos a funcion Resultado(s) de functon

alterables ((Parámetros pasados

en la pila)

Scratch register (alterable)

Stack Pointer Link Register

Program Counter

El compilador tiene un conjunto de reglas conocidas como Procedure Call Standard que determina como pasar parámetros a las funciones (ver AAPCS) Los flags del CPSR pueden corromperse por una llamada inapropiada a función Si se vinculan tutinas en assembler con rutinas en C deben seguir el protocolo El AAPCS es parte del nuevo ABI de la arquitectura ARM ABI = Application Binary Interface

Register

- Stack base - Stack limit e

- R14 puede serusado una vez que se almacenó en pila - SP debe ser 8 bytes (2 palabras alineadas)

104  Cortex  -­‐  Parte  1  

Page 53: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

53

Branches y subrutinas en ARM •  B <etiqueta>

–  Relativo al PC ±32 Mbyte range. •  BL <subrutina>

–  Almacena la dirección de retorno en LR –  Retorna restaurando el PC desde LR –  Para lamadas a subrutina desde una subrutina, LR debe ser guardada

en la pila

STMFD sp!,{regs,lr} : BL func2 : LDMFD sp!,{regs,pc}

func1 func2 : : BL func1 : :

: : : : : MOV pc, lr

105  Cortex  -­‐  Parte  1  

Instrucciones  reservadas  de  control  

106  Cortex  -­‐  Parte  1  

Page 54: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

54

Instrucciones de control

•  Instrucciones de excepciones: SVC •  Instrucciones del Coprocesador: CDP,

LDC, STC, MRC, MCR. •  Cortex no ejecuta estas instrucciones

p e r o d e j a a l c o p r o c e s a d o r l a manipulación de ellas.

107  Cortex  -­‐  Parte  1  

Modos  de  Operación  

108  Cortex  -­‐  Parte  1  

Page 55: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

55

Modos  del  Procesador  

•  Handler Mode: Utilizado para gerenciar excepciones. El procesador retornará al modo Thread al finalizar el procesamiento de la excepción.

•  Thread Mode: Utilizado para ejecutar software de aplicación. El procesador entra en este modo luego del reset. •  En modo Thread, el registro CONTROL maneja la ejecución del

programa en forma privilegiada o no privilegiada. •  En modo Handler siempre se trabaja en forma privilegiada  

109  Cortex  -­‐  Parte  1  

Niveles  de  privilegio  

•  No  privilegiado:  •  El  soqware  Oene  acceso  limitado  a  las  instricciones  MSR  y  MRS  y  no  puede  ejecutar  la  instrucción  CPS  

•  No  puede  acceder  a:  system  Omer,  NVIC,  o  system  control  block  

•  Tiene  algunas  zonas  de  acceso  restringido  a  memoria  o  periféricos.  

•  Unprivileged  soqware  executes  at  the  unprivileged  level  

•  Privilegiado:  El  soqware  Oene  acceso  a  todas  las  instrucciones  y  recursos  

110  Cortex  -­‐  Parte  1  

Page 56: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

56

Privilegios  

111  Cortex  -­‐  Parte  1  

Registros  para  cada  modo  

112  Cortex  -­‐  Parte  1  

Page 57: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

57

Modos  de  trabajo  

113  Cortex  -­‐  Parte  1  

Transiciones  permiOdas  

114  Cortex  -­‐  Parte  1  

Page 58: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

58

Conmutación  de  estados  

Desde el modo Usuario no se puede pasar al modo privilegiado por voluntad propia

115  Cortex  -­‐  Parte  1  

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  •  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

116  Cortex  -­‐  Parte  1  

Page 59: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

59

Matriz  de  buses  mulOcapa  AHB  

117  Cortex  -­‐  Parte  1  

Mapa  de  Memoria  Genérico  

118  Cortex  -­‐  Parte  1  

Page 60: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

60

Mapa  de  memoria  detallado  

119  Cortex  -­‐  Parte  1  

Unidad  de  Protección  de  memoria  •  Soporta  8  regiones  (de  32bytes  a  los  4GB)  •  Las  reglas  de  protección  están  basadas  en  el  Opo  de  transacción  

(read,   write   o   execute)   y   el   privilegio   del   código   realizando   el  acceso  

•  La   violación   de   la  MPU   producirá   una   excepción   de   Falla   en   el  Gerenciamiento  de  Memoria  (Memory  Management  Fault  )  

•  Escenarios  de  uso  de  la  MPU:  •  La  MPU  puede  ser  programada  por  un  RTOS  a  fin  de  evitar  que  los  datos  

usados  por  el  kernel  sean  protegidos  de  otros  usuarios  •  Que   ciertas   zonas   de   memoria   sean   sólo   de   lectura   para   prevenir   su  

borrado  accidental  •  Para   aislar   regiones   de   memoria   entre   disOntas   tareas   en   un   sistema  

mulOtarea  

120  Cortex  -­‐  Parte  1  

Page 61: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

61

Manipulación  de  Bits    (operación  atómica  sobre  bits)  

121  Cortex  -­‐  Parte  1  

Manejo  de  Bits  

•  El   manejo   de   bits   de   los   ARM7   es   bastante  primiOvo   y   requiere   las   acciones   de   read-­‐modify-­‐write  {picas  de  los  microprocesadores  

•  En   la   familia  Cortex   se   rescató   la  filoso|a  del  bit  set  –  bit  clear  de  los  microcontroladores.  

•  Buscando   no   crear   nuevas   instrucciones   se  asociaron   palabras   de   una   zona   de   memoria  con  bits  de  periféricos.  Es  llamado  Bit  Band  

122  Cortex  -­‐  Parte  1  

Page 62: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

62

Bit  Banding  

123  Cortex  -­‐  Parte  1  

Bit  Banding  

124  Cortex  -­‐  Parte  1  

Page 63: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

63

Bit  Banding  

Cuando se utiliza la dirección del bit-band alias, cada b i t ind iv idual puede ser accedido individualmente en forma separada en el LSB de cada palabra alineada en dirección

125  Cortex  -­‐  Parte  1  

Bit  Band  

126  Cortex  -­‐  Parte  1  

Page 64: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

64

Endianess  

•  Las   variables   mulObyte   pueden  ser   almacenadas   y   leídas   de  menor  a  mayor  o  viceversa.  

•  Por   omisión   se   emplea   el  formato  Big  Endian.  

•  No   es   frecuente   que   se   cambie  a   lo   largo  de   la  ejecución  de  un  programa  y  la  uOlización  de  una  u   otra   forma   de   almacenar   las  variables   es   transparente   para  el  usuario  

Cortex  -­‐  Parte  1   127  

Agenda  

•  Introducción  •  Presentación  de  la  Familia  Cortex  M3  •  Arquitectura  de  los  Cortex  M3  •  Repertorio  de  Instrucciones  y  Ejemplos  •  Sistema  de  Memoria  

•  Excepciones,  Interrupciones  y  el  NVIC  •  La  familia  NXP  LPC17xx  

128  Cortex  -­‐  Parte  1  

Page 65: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

65

Excepciones  e  Interrupciones  

129  Cortex  -­‐  Parte  1  

Excepciones  

•  Es   un   concepto   más   amplio   que   las  interrupciones   pues   no   necesariamente   se  producen  por  acciones  externas.  

•  Las   interrupciones   son   un   subgrupo   de   las  excepciones  y  se  procesan  similarmente  

130  Cortex  -­‐  Parte  1  

Page 66: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

66

Excepciones  

131  Cortex  -­‐  Parte  1  

Excepciones  

Externas

132  Cortex  -­‐  Parte  1  

Page 67: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

67

NVIC  

•  Se   introduce   un   controlador   de   interrupciones  vectorizadas  y  anidadas  

•  Permite   el   cambio   dinámico   de   prioridades   de  interrupción.  

•  Reducción  del  Oempo  de  latencia  de  interrupción  •  Enmascaramiento  individual  de  interrupciones  •  System   Tick   (Sys   Tick),   que   es   un   contador  descendente  de  24  bits  imaginado  para  trabajar  con  un  RTOS  u  otras  tareas  similarmente  planificadas  

133  Cortex  -­‐  Parte  1  

Interrupciones  

• Una interrupción no enmascarable (INTNMI) •  1-240 interrupciones priorizables •  Las interrupciones pueden ser enmascaradas

• Puede seleccionarse el número de interrupciones activas • El controlador de interrupciones anidadas (NVIC) está fuertemente asociado al núcleo del procesador • Las entradas de interrupción son activas ALTA

134  Cortex  -­‐  Parte  1  

Page 68: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

68

Terminología  (a  ser  ampliada)  •  Determinístico: Que es predecible. Dado un conjunto de

entradas, siempre producirá las mismas salidas pasando por la misma secuencia de estados.

•  Prevaciado (preemption) Habilidad de un sistema operativo o programa similar de detener la ejecución de una tarea programada a favor de una tarea de mayor prioridad.

•  Tail chaining: Forma de encolar los retornos de interrupciones anidadas, de forma de optimizar el tiempo total de ejecución.

•  Latencia de interrupciones: Demora experimentada desde que se genera una interrupción hasta que es atendida

135  Cortex  -­‐  Parte  1  

Manejo  de  interrupciones  microcodificado  

•  Entrada:  •  Se  pushean  automáOcamente  la  la  pila  os  registros  R0–R3,  R12,  LR,  PSR,  y  

el  PC  •  En  paralelo  se  hace  la  pre-­‐fetch  de  la    ISR    en  el  bus  de  instrucciones.  •  ISR  esta  lista  para  comenzar  tan  pronte  termine  las  operaciones  de  PUSH.  •  La  llegada  tardía  de  otra  interrupción  reiniciará  el  prefetch  de  la  ISR  pero  

no  necesita  repeOr  el  salvado  de  registros.  •  Salida:  

•  El  estado  del  procesador  es  recuperado  automáOcamente  de  la  pila.  •  En  paralelo,   la   instrucción   interrumpida  es  prefetched,   lista  para  reiniciar  

la  ejecución  apenas  se  completen  los  POPs  de  la  pila.  •  Los  POPs  de  la  pila  pueden  ser  interrumpidos,  permiOendo  nuevas  ISR  ser  

inmediatamente  atendidas  sin  la  sobrecarga  temporal  de  guardar  registros  

136  Cortex  -­‐  Parte  1  

Page 69: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

69

Las  excepciones  y  el  stack  

Cortex  -­‐  Parte  1   137  

Interrupciones  

•  Latencia de interrupciones determinística •  Características avanzadas

•  Prioridad de pre-vaciado •  Tail chaining (encadenado de colas)

138  Cortex  -­‐  Parte  1  

Page 70: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

70

Latencia  de  Interrupciones  del  NVIC  

Latencia de interrupciones determinística •  Cortex-M3 tiene una latencia de interrupción de 12

ciclos y 12 ciclos para retornar de la ISR •  ARM7 tiene una latencia de interrupción entre 24 y

42 ciclos y 16 de retorno. NO ES DETERMINÍSTICO

139  Cortex  -­‐  Parte  1  

Tail  Chaining  

•  En el caso de que una interrupción de mayor prioridad interrumpa una de menor prioridad, se abreviará el proceso de salida y nueva entrada a interrupción (Tail Chaining)

140  Cortex  -­‐  Parte  1  

Page 71: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

71

Tail  Chaining  

141  

PUSH POP ISR 1 PUSH POP ISR 2

PUSH ISR 1 POP ISR 2

26 16 26 16

12

IRQ1

IRQ2

ARM7 Manejo interrupciones en

assembler

Cortex-M3 Manejo de interrupcione s

por hardware

6 12

42 CICLOS

6 CICLOS

Mayor

Tail-chaining

ARM7 •  26 Ciclos desde IRQ1 a la entrada de ISR1

•  42 ciclos si LSM • 42 ciclos desde salida ISR1 a entada ISR2 • 16 ciclos para retornar desde ISR2

Cortex-M3 •  12 ciclos desde IRQ1 a la entrada de ISR1

•  12 ciclos si LSM • 6 ciclos desde salida ISR1 a entrada ISR2 • 12 ciclos para retomar desde ISR2

En el caso de que una interrupción de mayor prioridad interrumpa una de menor prioridad, se abreviará el proceso de salida y nueva entrada a interrupción (Tail Chaining)

Cortex  -­‐  Parte  1  

Latencia  de  interrupciones  -­‐  Prevaciado  

POP ISR 1 PUSH 2 POP ISR 2

ISR 1 POP ISR 2

16 26 16

1- 12

IRQ1

IRQ2

ARM7

Cortex-M3

6

42 ciclos

7-18 ciclos

ARM7 • El procesador debe terminar con los POPs y luego relizar los PUSH

Cortex-M3 •  POP puede ser abandonado tempranamente si llega otra interrupción •  Si POP es interrumpido, sólo toma 6 ciclos en entrar en ISR2 (equivalente al Tail chaining)

Mayor

POP

12

142  Cortex  -­‐  Parte  1  

Page 72: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

72

Latencia  de  interrupciones  –  Llegada  tardía  

ISR 2

IRQ1

IRQ2

ISR 2

Tail-Chaining

ISR 1 PUSH PUSH POP POP

PUSH POP

ARM7

Cortex-M3

Mayor

Cortex-M3 •  Se interrumplen los push a ISR 2 •  Stacking continúa pero la dirección del nuevo vector se busca en paralelo • 6 ciclos más tarde entra ISR1. •  Tail-chain en ISR 2

ARM7 •  26 ciclos Para entrar a ISR2 •  Immediatamente pre-vaciado por IRQ1 y lleva 26 ciclos más entrar a ISR 1. •  ISR 1 se completa y lleva 16 ciclos Retornar a ISR 2.

26 16 16 26

12 6

ISR 1

143  Cortex  -­‐  Parte  1  

Tabla  de  vectores  Inicial  

144  Cortex  -­‐  Parte  1  

Page 73: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

73

Tabla  de  vectores  Inicial  

145  Cortex  -­‐  Parte  1  

Regreso  de  excepción  

Cortex  -­‐  Parte  1   146  

Page 74: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

74

Desde  el  Reset…..  

147  Cortex  -­‐  Parte  1  

Referencias    h~p://event.on24.com/clients/default/presentaOon/default.html?

Otlecolor=000000&evenOd=143900&sessionid=1&username=&partnerref=&format=rmaudio&key=4B2981D839231C9C19F8AF717E67D193&text_language_id=en&playerwidth=1020&playerheight=685&eventuserid=46875874&conten~ype=A&mediametricsessionid=40306582&mediametricid=358721&usercd=46875874&mode=launch  

 

h~p://ics.nxp.com/support/training/cortex-­‐m.intro/  

h~p://ics.nxp.com/support/training/lpc1700.overview/  

   

 

148  Cortex  -­‐  Parte  1  

Page 75: Cortex Vers 4becaths1.s3.amazonaws.com/tecnicasdigitalesiii/287565273.17_Cortex... · Cortex’M3’ Diseñado Por ARM Diseñado por el fabricante del ... A pesar de que la mayoría

09/09/13

75

That’s  All  Folks  

149  Cortex  -­‐  Parte  1  

Muchas Gracias