C2 - Conceptos Fundamentales
Tema 2
Memoria microcontroladores
Tipos de memoria
Memoria RAM (SRAM)
Memoria ROM (EEPROM)
Memoria ROM (Flash)
Tipos de I/O
- 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
ISA (Instruction Set Architecture)
Registros ARM ISA
Recursos
http://www.depeca.uah.es/depeca/repositorio/asignaturas/31944/ARM_i%20(SOFT).pdf

- R1...R12 - General Purpose Registers
- 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 - 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 negativo
- Z resultado es 0
- V overflow signed numbers
- C overflow unseigned numbers
- 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.

Program Status Register del procesador ARM® Cortex-M
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
Memory Map
Memory Map Layout
- La memoria del ARM se divide en:
- ROM/Flash
- RAM
- I/O Ports
- Internal I/O
C2 - Conceptos Fundamentales
C2.2.-Embedded Systems
C2.3.-Introduction to Computers
C.2.4.-I/O Ports
C.2.5.-CPU Registers
C.2.6.-Assembly Language
C.2.7.-Address Space
