Table Of ContentIntroducción a la arquitectura de
computadores con QtARMSim y
Arduino
Sergio Barrachina Mir Maribel Castillo Catalán
Germán Fabregat Llueca Juan Carlos Fernández Fernández
Germán León Navarro José Vicente Martí Avilés
Rafael Mayo Gual Raúl Montoliu Colás
Copyright(cid:13)c 2015SergioBarrachinaMir,MaribelCastilloCata-
lán,GermánFabregatLlueca,JuanCarlosFernándezFernández,
Germán León Navarro, José Vicente Martí Avilés, Rafael Mayo
Gual y Raúl Montoliu Colás.
Esta obra se publica bajo la licencia «Creative Com-
mons Atribución-CompartirIgual 4.0 Internacional».
Puede consultar las condiciones de dicha licencia en:
http://creativecommons.org/licenses/by-sa/4.0/.
Índice general
Índice general I
I Introducción 1
1 Introducción a la Arquitectura de Computadores 3
1.1. Componentes de un ordenador . . . . . . . . . . . . . . . 4
1.2. El procesador, el núcleo del ordenador . . . . . . . . . . . 6
1.3. Introducción a los buses . . . . . . . . . . . . . . . . . . . 27
1.4. La memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 29
II Arquitectura ARM con QtARMSim 35
2 Primeros pasos con ARM y QtARMSim 37
2.1. Introducción al ensamblador Thumb de ARM . . . . . . . 38
2.2. Introducción al simulador QtARMSim . . . . . . . . . . . 44
2.3. Literales y constantes en el ensamblador de ARM . . . . . 57
2.4. Inicialización de datos y reserva de espacio . . . . . . . . . 61
2.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3 Instrucciones de transformación de datos 73
3.1. Banco de registros de ARM . . . . . . . . . . . . . . . . . 74
3.2. Operaciones aritméticas . . . . . . . . . . . . . . . . . . . 77
3.3. Operaciones lógicas . . . . . . . . . . . . . . . . . . . . . . 82
3.4. Operaciones de desplazamiento . . . . . . . . . . . . . . . 84
3.5. Modos de direccionamiento y formatos de instrucción de
ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4 Instrucciones de transferencia de datos 95
4.1. Instrucciones de carga . . . . . . . . . . . . . . . . . . . . 96
4.2. Instrucciones de almacenamiento . . . . . . . . . . . . . . 103
i
ii Índice general
4.3. Modos de direccionamiento y formatos de instrucción de
ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5 Instrucciones de control de flujo 119
5.1. Saltos incondicionales y condicionales . . . . . . . . . . . 121
5.2. Estructuras de control condicionales . . . . . . . . . . . . 124
5.3. Estructuras de control repetitivas . . . . . . . . . . . . . . 127
5.4. Modos de direccionamiento y formatos de instrucción de
ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6 Introducción a la gestión de subrutinas 137
6.1. Llamada y retorno de una subrutina . . . . . . . . . . . . 140
6.2. Paso de parámetros . . . . . . . . . . . . . . . . . . . . . . 144
6.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
7 Gestión de subrutinas 155
7.1. La pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.2. Bloque de activación de una subrutina . . . . . . . . . . . 161
7.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
IIIEntrada/salida con Arduino 175
8 Introducción a la Entrada/Salida 177
8.1. Generalidades y problemática de la entrada/salida . . . . 178
8.2. Estructura de los sistemas y dispositivos de entrada/salida182
8.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9 Dispositivos de Entrada/Salida 189
9.1. Entrada/salidadepropósitogeneral(GPIO-GeneralPur-
pose Input Output) . . . . . . . . . . . . . . . . . . . . . . 190
9.2. Gestión del tiempo . . . . . . . . . . . . . . . . . . . . . . 199
9.3. El entorno Arduino . . . . . . . . . . . . . . . . . . . . . . 203
9.4. Creación de proyectos . . . . . . . . . . . . . . . . . . . . 210
9.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
10 Gestión de la Entrada/Salida y otros aspectos avanzados221
10.1.Gestión de la entrada/salida . . . . . . . . . . . . . . . . . 222
10.2.Transferencia de datos y DMA . . . . . . . . . . . . . . . 231
10.3.Estandarización y extensión de la entrada/salida: buses y
controladores . . . . . . . . . . . . . . . . . . . . . . . . . 233
10.4.Otros dispositivos . . . . . . . . . . . . . . . . . . . . . . . 235
10.5.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Índice general iii
A Información técnica ATSAM3X8E 241
A.1. GPIO en el Atmel ATSAM3X8E . . . . . . . . . . . . . . 242
A.2. La tarjeta de entrada/salida . . . . . . . . . . . . . . . . . 248
A.3. El temporizador del Atmel ATSAM3X8E y del sistema
Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
A.4. El reloj en tiempo real del Atmel ATSAM3X8E . . . . . . 252
A.5. El Temporizador en Tiempo Real (RTT) del Atmel AT-
SAM3X8E . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
A.6. Gestión de excepciones e interrupciones en el ATSAM3X8E266
A.7. El controlador de DMA del ATSAM3X8E . . . . . . . . . 273
B Breve guía de programación en ensamblador 275
B.1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
B.2. Estructuras de programación . . . . . . . . . . . . . . . . 281
B.3. Estructuras iterativas . . . . . . . . . . . . . . . . . . . . 288
Bibliografía 293
Parte I
Introducción
1
o 1
l
u
t
í
p
a
C
Introducción a la Arquitectura
de Computadores
Índice
1.1. Componentes de un ordenador . . . . . . . . . . . . 4
1.2. El procesador, el núcleo del ordenador . . . . . . . . 6
1.3. Introducción a los buses . . . . . . . . . . . . . . . . 27
1.4. La memoria . . . . . . . . . . . . . . . . . . . . . . 29
Los primeros procesadores que aparecieron en el mercado se compo-
nían de muy pocos transistores —decenas de miles— y tenían un campo
muy reducido de aplicaciones. Se trataba de sencillos microcontrolado-
res destinados a usos muy específicos y que básicamente eran empleados
en sistemas de control. Han pasado más de 40 años desde entonces y los
avances tecnológicos han provocado notables cambios tanto en el cam-
po de los procesadores como en el de sus aplicaciones. Los procesadores
cada vez se componen de más transistores —actualmente del orden de
millones—, lo que ha permitido mejorar notablemente su arquitectura e
incorporar técnicas que los hacen más rápidos, complejos y económicos,
lo que a su vez ha propiciado que su campo de aplicación sea cada vez
más extenso.
Estecapítuloformapartedellibro«Introducciónalaarquitecturadecomputadorescon
QtARMSimyArduino».Copyright(cid:13)c 2015SergioBarrachinaMir,MaribelCastilloCatalán,
Germán Fabregat Llueca, Juan Carlos Fernández Fernández, Germán León Navarro, José
Vicente Martí Avilés, Rafael Mayo Gual y Raúl Montoliu Colás. Se publica bajo la licencia
«CreativeCommonsAtribución-CompartirIgual4.0Internacional».
3
4 Introducción a la Arquitectura de Computadores
Actualmente, el procesador es el elemento principal de los ordena-
dores de sobremesa y portátiles y de muchos dispositivos electrónicos
de gran uso, como agendas, móviles, dispositivos de uso doméstico, etc.
No obstante, los principios básicos de un ordenador, o de cualquier dis-
positivo que incluya un ordenador, son muy sencillos. En este capítulo
se describen los elementos básicos que componen un ordenador y sus
principios de funcionamiento.
1.1. Componentes de un ordenador
El modelo de funcionamiento de los ordenadores actuales continúa
siendo, con variaciones poco significativas, el establecido por John von
Neumann en 1949, que a su vez se basó en las ideas de la máquina
analítica de Charles Babbage, de 1816. Estas ideas, con casi doscientos
años de antigüedad, materializadas en circuitos muy rápidos, con miles
de millones de transistores, hacen que la informática haya llegado a ser
lo que conocemos hoy en día.
El principio de funcionamiento de los ordenadores es sencillo. El nú-
cleo del ordenador transforma y modifica datos que tiene almacenados,
dirigido por una sucesión de órdenes que es capaz de interpretar, y que
tambiénestánalmacenadasenél.Esteconjuntodeórdenesydatoscons-
tituye lo que se conoce como programa. Siguiendo un programa, un
ordenador es capaz de modificar y transformar datos para, por ejemplo,
hacer cálculos matemáticos o buscar palabras en un texto. Además de
lo anterior, el ordenador también dispone de un conjunto de elementos
quehacenposiblesuinteracciónconelmundoexterior,loquelepermite
recibir los datos de partida y las órdenes, y comunicar los resultados.
De esta descripción, simple pero fiel, del funcionamiento de un or-
denador se deduce que contiene las siguientes tres clases de elementos
(véase la Figura 1.1), con funciones claramente diferenciadas.
El núcleo del ordenador, que recibe el nombre de procesador, es
capaz de encontrar, entender y mandar realizar las órdenes, también
llamadas instrucciones. Se puede decir que el procesador es el elemen-
to del ordenador capaz de: i) ejecutar las instrucciones codificadas en
un programa, encontrando los datos que se van a transformar y alma-
cenando el resultado de dicha transformación; y ii) generar todas las
señales eléctricas necesarias para coordinar el funcionamiento de todo el
sistema.
Por otro lado, el elemento que almacena los datos y las instrucciones
de un programa recibe el nombre de memoria. Esta se compone de
una colección ordenada de recursos de almacenamiento de manera que
cada uno de ellos se identifica por una dirección. Cuando la memoria
de un ordenador almacena de forma indistinta datos e instrucciones,
Description:dores de sobremesa y portátiles y de muchos dispositivos electrónicos de gran uso, como el funciona- miento de cada uno de dichos componentes con el objetivo de profundi- . Circuitos digitales y secuenciadores. Se encargan