C2 - Conceptos Fundamentales

De Proyectos
Saltar a: navegación, buscar

C2.2.-Embedded Systems


Ha explicado las diferentes partes de un microcontrolador:

  • Memoria
    • La no volatil - ROM
    • La programable - EEPROM
    • La que se usa para guardar datos pero se pierden cuando se va la corriente - RAM
  • I/O
  • CPU

Memoria microcontroladores

Tipos de memoria
Memoria RAM (SRAM)
Memoria ROM (EEPROM)
Memoria ROM (Flash)


Tambien ha explicado las diferentes versiones de los procesadores ARM:

  • Serie A es para samrtphones
  • Serie M es para microcontroladores
  • Serie R es para aplicaciones en tiempo real RTC

Hay dos maneras de desarollar sistemas embedidos:

  • El primero es usando microncontroladores de la serie M. Estos no tienen sistema operativo, asi que se desarrolla el sistema entero. Son dispositivos baratos y de caracteristicas mas modestas
    • The book Embedded Systems: Real-Time Operating Systems for ARM Cortex-M Microcontrollers describes how to design a real-time operating system for the Cortex M family of microcontrollers
  • La segunda manera es utilizar los de la serie A. Son microcontroladores mas potentes que suelen incorporar un sistema operativo (Android)


Las interfaces son el hardware y software combinados para permitir a un microcontrolador comunicarse con hardware externo.

Device Driver:

  • Un device driver es un conjuto de funciones de software que facilitan el uso de los puertos I/O
  • Un ejemplo de puerto en los microcontroladores Stellaris es el puerto A. Este esta compuesto por 8 pines que pueden usarse como input o output
  • Si el Puerto A esta configurado como input, el software leera del GPIO_PORTA_DATA_R
    • En la lectura obtendra 8 bits (0 o 1) representando el nivel de las entradas (pines) en el momento de la lectura


Real Time:
The other general concept involved in most embedded systems is they run in real time. In a real-time computer system, we can put an upper bound on the time required to perform the input-calculation-output sequence. A real-time system can guarantee a worst case upper bound on the response time between when the new input information becomes available and when that information is processed. This response time is called interface latency. Another real-time requirement that exists in many embedded systems is the execution of periodic tasks. A periodic task is one that must be performed at equal-time intervals. A real-time system can put a small and bounded limit on the time error between when a task should be run and when it is actually run. Because of the real-time nature of these systems, microcontrollers have a rich set of features to handle many aspects of time.

Propiedades de los sistemas embedidos:

  • A microcontroller hidden inside
  • A dedicated purpose
  • Runs in real time
  • Input/output is important
  • High volume, low cost
  • Extremely reliable
  • Low power
  • Small size and weight


C2.3.-Introduction to Computers


Tipos de memoria:

  • Memoria de Código
    • Es en la que se almacena el programa
    • Es no volátil
    • Es la comunmente llamada ROM, y la tecnologia flash es una de las utilizadas para almacenar la ROM
      • La memoria flash se borra mediante impulsos eléctricos. Es una sucesora de la EEPROM
  • Memoria de Datos
    • Es la que almacena las variables del programa
    • Es volátil
    • Es la comunmente llamada RAM. La tecnologia que se utiliza para los microcontroladores es la SRAM
    • También nos podemos encontrar con microcontroladores que ademas tienen memoria EEPROM para guardar datos cuando se corta la electricidad

Sistema de memoria:

  • Arquitectura Von Neumann
    • La Memoria de Código y la de Datos comparten el Bus hacia la CPU
  • Arquitectura Harvard
    • Hay un bus para la Memoria de Código (ICode bus) y otro bus para la Memoria de datos (DCode bus)


Arm cortex m.gif
Imagen Cortex-M ARM (CPU, Memoria, Perifericos, ...)

  • Arquitectura Harvard. ICode bus conecta con la ROM y System bus conecta con la RAM
  • NVIC se encarga d elas interrupciones
  • Algunos perifericos internos se conectan directamente con el procesador por el bus PPB


C.2.4.-I/O Ports


Los I/O ports son:

  • Puerto entrada - Permite la entrada de datos del entorno al microcontrolador
  • Puerto de salida - Permite enviar información del microcontrolador al entorno (pantallas, leds, ...)


Interfaz:

  • Es una colección de puertos I/O, electronica externa, dispositivos físicos y software, que combinados permiten que el microcontrolador se comunique con el entorno
  • Hay interfaces de entrada y de salida
    • Una interfaz de entrada es por ejemplo un interruptor. El microcontrolador puede leer su posición y actuar de una manera u de otra dependiendo de ella.
    • Una interfaz de salida es un led. Este puede utilizar el estado de encendido o apagado para indicar diferentes acciones.


  • Podemos clasificar las interfaces I/O en cuatro categorias:
    • Parallel - binary data are available simultaneously on a group of lines
    • Serial - binary data are available one bit at a time on a single line
    • Analog - data are encoded as an electrical voltage, current, or power
    • Time - data are encoded as a period, frequency, pulse width, or phase shift


Architecture TM4C123.jpg
Imagen que muestra los puertos que tiene el microcontrolador TM4C123

Se pueden ver los números de pines que tiene cada puerto, el puerto A tiene 8 pines, el puerto B tiene 8, ...
Los puertos PC3, PC2, PC1 y PC0 es mejor no utilizarlos.

TivaLaunchPad.jpg
Imagen de la LaunchPad evaluation board

Características de la LaunchPad:

  • La placa integra un In-Circuit Debug Interface (ICDI) que permite programar y depurar en la misma placa
  • Una entrada USB se usa para el debugger (ICDI) y la otra sirve para desarollar aplicaciones que se comuniquen por USB (device)
  • El usuario puede seleccionar alimentar la placa desde el debugger (ICDI) o desde el otro USB a través del switch que incorpora


C.2.5.-CPU Registers

Que son los registros? - http://es.wikipedia.org/wiki/Registro_%28hardware%29

Los ISA es un standard que tiene que tener el procesador del microcontrolador:

  • Indica las instrucciones basicas que ha de tener un microcontrolador
  • Indica los tipos de datos que puede soportar el microcontrolador (char, integer, float, ...)
  • Indica los registros que tiene el microcontrolador, el tamaño de cada registro y que proposito tienen
  • Addresing Mode
  • Memeory Acces



Registros:
Registers.gif

  • General Purpose Registers
    • Tienen una longitud de 32 bits
    • Comprenden desde el registro R1 hasta R12
      • AAPCS (ARM Architecture Procedure Call Satandard) (parte de la ABI (ARM Application Binary Interface)) utiliza los registros R0, R1, R2 y R3 para pasar parámetros a las funciones de C
      • Los parámetros que devuelven las funciones se colocan en el R0 según el AAPCS
      • In this class, the SP will always be the main stack pointer (MSP), not the Process Stack Pointer (PSP).
  • R13 - Stack Points (Almacena la dirección del elemento top de la pila)
  • R14 - Link Register (Almacena la dirección devuelta por las subrutinas)
  • R15 - Program Counter (Almacena la dirección de la siguiente instrucción a ejecutar)

Special Registers

  • PSR - Process Status Register - Indica el resultado de la ultima operacion ejecutada - Combina:
    • APSR - Application Program Status Register
    • IPSR - Interrupt Program Status Register
    • EPSR - Execution Program Status Register
    • Se puede consultar el registro PSR (que nos devuelve toda la información que contienen los tres registros), o consultar cada registro individulamente
    • Los bits N, Z, V, C y Q nos dan información sobre el resultado de la anterior operación de la ALU
      • N resultado es negativo
      • Z resultado es 0
      • V el resultado con signed numbers ha causado un ovweflow
      • C el resultado con unseigned numbers ha causado un overflow
      • Q indica que ha habido una saturacion
    • El bit T siempre es 1 y nos indica que el procesador esta ejecutando instrucciones Thumb
    • ISR_NUMBER indica el numero del tipo de excepcion actual del ISR
  • PRIMASK (Exception Mask Registers) - Bit 0 of the special register PRIMASK is the interrupt mask bit. If this bit is 1, most interrupts and exceptions are not allowed. If the bit is 0, then interrupts are allowed.
  • FAULTMASK (Exception Mask Registers) - Bit 0 of the special register FAULTMASK is the fault mask bit. If this bit is 1, all interrupts and faults are not allowed. If the bit is 0, then interrupts and faults are allowed. The nonmaskable interrupt (NMI) is not affected by these mask bits.
  • BASEPRI (Exception Mask Registers) - The BASEPRI register defines the priority of the executing software. It prevents interrupts with lower or equal priority but allows higher priority interrupts. For example if BASEPRI equals 3, then requests with level 0, 1, and 2 can interrupt, while requests at levels 3 and higher will be postponed. A lower number means a higher priority interrupt. The details of interrupt processing will be presented in subsequent chapters.


Special registers.gif

Program Status Register del procesador ARM® Cortex-M

C.2.6.-Assembly Language


Assembly language


Las instrucciones assembler tienen 4 campos separados por espacios o tabuladores:
Label - Opcode - Operand - Comment
FUNC - MOV - R0,#100 ; Pone 100 en R0

  • Label field: Es opcional. Identifica la posicion en la memoria de la actual instrucción. Se debe elegir un único nombre para cada label.
  • Opcode field: Es la isntrucción a ejecutar.
  • Operand field: Especifica donde se encuentra el dato que ejecuta la instruccion. Las instrucciones Thumb tienen 1, 2, 3 o 4 operandos.
  • Comment field: Son los comentarios y son opcionales. La forma correcta es explicar porque se pone esa instrucción, no explicar que hace.


Label Opcode Operands Comment
Func MOV R0, #100 ; this sets R0 to 100
BX LR ; this is a function return



Addressing mode

  • Es el formato que la instrucción utiliza para especificar el lugar de la memoria que se va a leer o escribir
  • Esta asociada a los operandos, y una única instrucción puede utilizar multiples addressing modes para cada operando
  • Algunas instrucciones operan dentro del procesador y no necesitan guardar la informacion en memoria
  • Inmediate addressing mode
    • Cuando los datos estan en la misma instrucción - MOV R0,#1
  • Indexed addressing mode
    • Utiliza un register pointer para acceder a la memoria (register pointer - es un registro que contiene la dirección del dato)
  • PC-relative addressing mode
    • Utiliza el PC como puntero
    • Se usa para para llamar funciones y acceder a constantes de la ROM




Las instrucciones se pueden clasificar en 4 categorias:

  • Acceso a la memoria
  • Instrucciones aritméticas y lógicas
  • Instrucciones de control
  • Resto de instrucciones



C.2.7.-Address Space

Memory Map Layout

  • La memoria del ARM se divide en:
    • ROM/Flash - Se guarda el codigo, constantes, ...
    • RAM - Se guardan las variables, datos, ... Es la parte volatil de la memoria
    • I/O Ports
      • La información que se lee o escribe en un puerto la encontramos en esta parte de la memoria. Para acceder a los puertos solo hemos de escribir o leer esa memoria. Esto es posible a la Memory Mapped I/O
      • A parte de los I/O ports tambien hay otra información, como los registros
    • Internal I/O



Memory map layout.gif
Memory map of the TM4C123