Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Febrero del 2018)
3.218 visualizaciones desde el 16 de Febrero del 2018
6,3 MB
378 paginas
Creado hace 6a (17/07/2017)
Introducción a la arquitectura de
computadores con QtARMSim y
Arduino
Sergio Barrachina Mir
Germán Fabregat Llueca
Germán León Navarro
Rafael Mayo Gual
Maribel Castillo Catalán
Juan Carlos Fernández Fernández
José Vicente Martí Avilés
Raúl Montoliu Colás
Copyright c(cid:13) 2017 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 y Raúl
Montoliu Colás.
Esta obra se publica bajo la licencia «Creative Commons Atribución-
CompartirIgual 4.0 Internacional». Puede consultar las condiciones de
dicha licencia en: http://creativecommons.org/licenses/by-sa/4.0/.
A Laia, ¡bienvenida!
Índice general
Índice general
Prefacio
I
Introducción
i
v
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 . . . . . . . . . . . . . . . . . . . 28
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 . . . . . . . 39
2.2.
Introducción al simulador QtARMSim . . . . . . . . . . . 45
2.3. Literales y constantes en el ensamblador de ARM . . . . . 58
2.4.
Inicialización de datos y reserva de espacio . . . . . . . . . 62
2.5. Firmware incluido en ARMSim . . . . . . . . . . . . . . . 68
. . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.6. Ejercicios
3 Instrucciones de transformación de datos
75
. . . . . . . . . . . . . . . 76
3.1. Los números en el computador
3.2. Banco de registros de ARM . . . . . . . . . . . . . . . . . 80
3.3. Operaciones aritméticas . . . . . . . . . . . . . . . . . . . 82
3.4. Operaciones lógicas . . . . . . . . . . . . . . . . . . . . . . 88
3.5. Operaciones de desplazamiento . . . . . . . . . . . . . . . 90
3.6. Modos de direccionamiento y formatos de instrucción de
ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
. . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.7. Ejercicios
4 Instrucciones de transferencia de datos
103
i
ii
Índice general
Instrucciones de carga . . . . . . . . . . . . . . . . . . . . 104
Instrucciones de almacenamiento . . . . . . . . . . . . . . 111
4.1.
4.2.
4.3. Modos de direccionamiento y formatos de instrucción de
ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
. . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.4. Ejercicios
5 Instrucciones de control de flujo
127
. . . . . . . . . . . 129
5.1. Saltos incondicionales y condicionales
5.2. Estructuras de control condicionales
. . . . . . . . . . . . 132
5.3. Estructuras de control repetitivas . . . . . . . . . . . . . . 135
5.4. Modos de direccionamiento y formatos de instrucción de
ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
. . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.5. Ejercicios
6 Introducción a la gestión de subrutinas
147
6.1. Llamada y retorno de una subrutina . . . . . . . . . . . . 150
6.2. Paso de parámetros . . . . . . . . . . . . . . . . . . . . . . 154
. . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.3. Ejercicios
7 Gestión de subrutinas
163
7.1. La pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
7.2. Bloque de activación de una subrutina . . . . . . . . . . . 169
7.3. Ejercicios
. . . . . . . . . . . . . . . . . . . . . . . . . . . 180
IIIEntrada/salida con Arduino
183
8 Introducción a la entrada/salida
185
8.1. Generalidades y problemática de la entrada/salida . . . . 186
8.2. Estructura de los sistemas y dispositivos de entrada/salida191
8.3. Ejercicios
. . . . . . . . . . . . . . . . . . . . . . . . . . . 197
9 Dispositivos de entrada/salida y el entorno Arduino
199
9.1. Entrada/salida de propósito general (GPIO) . . . . . . . . 200
9.2. Gestión del tiempo . . . . . . . . . . . . . . . . . . . . . . 210
9.3. El entorno Arduino . . . . . . . . . . . . . . . . . . . . . . 214
. . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.4. Ejercicios
10 Gestión de la entrada/salida y otros aspectos avanzados233
10.1. Gestión de la entrada/salida . . . . . . . . . . . . . . . . . 234
10.2. Transferencia de datos por programa y mediante acceso
directo a memoria . . . . . . . . . . . . . . . . . . . . . . 249
10.3. Estandarización y extensión de la entrada/salida: buses y
controladores . . . . . . . . . . . . . . . . . . . . . . . . . 254
10.4. Microcontroladores y conversión digital/analógica . . . . . 258
Índice general
iii
10.5. Ejercicios
. . . . . . . . . . . . . . . . . . . . . . . . . . . 260
A Información técnica y guía de uso de la tarjeta de E/S
y del microcontrolador ATSAM3X8E
267
A.1. La tarjeta de E/S . . . . . . . . . . . . . . . . . . . . . . . 268
A.2. Controladores PIO en el ATSAM3X8E . . . . . . . . . . . 269
A.3. El temporizador del sistema del ATSAM3X8E . . . . . . . 283
A.4. El reloj en tiempo real del ATSAM3X8E . . . . . . . . . . 285
A.5. El temporizador en tiempo real del ATSAM3X8E . . . . . 299
A.6. Gestión de excepciones e interrupciones
. . . . . . . . . . 300
A.7. El controlador de DMA del ATSAM3X8E . . . . . . . . . 308
B Breve guía de programación en ensamblador
309
B.1. Variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . 309
B.2. Estructuras de programación . . . . . . . . . . . . . . . . 315
B.3. Estructuras iterativas
. . . . . . . . . . . . . . . . . . . . 321
C Firmware incluido en ARMSim
327
C.1. Funciones aritméticas
. . . . . . . . . . . . . . . . . . . . 328
C.2. Funciones del LCD . . . . . . . . . . . . . . . . . . . . . . 328
C.3. Código fuente del firmware de ARMSim . . . . . . . . . . 331
D Sistemas de numeración
339
D.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . 340
D.2. El sistema binario . . . . . . . . . . . . . . . . . . . . . . 341
D.3. El hexadecimal como expresión más cómoda del binario . 342
. . . . . . . . . . . . . . 344
D.4. Cambiando entre distintas bases
D.5. El signo de los números binarios
. . . . . . . . . . . . . . 346
E Guía rápida del ensamblador Thumb de ARM
Índice de figuras
Índice de cuadros
Índice alfabético
Bibliografía
351
355
359
361
365
Prefacio
Los cursos de Arquitectura de Computadores se han visto obligados
históricamente a seguir el frenético ritmo marcado inicialmente por los
avances tecnológicos y arquitectónicos en el diseño de grandes compu-
tadores, y, posteriormente, a partir de los 80, por la evolución en el
diseño de microprocesadores. De hecho, se puede decir que la docen-
cia en Arquitectura de Computadores ha pasado por seis grandes eras:
mainframes, minicomputadores, primeros microprocesadores, micropro-
cesadores, RISC y post RISC [11].
Por otro lado, conforme las universidades han podido acceder a hard-
ware específico a un coste razonable, éste ha pasado a utilizarse amplia-
mente como material de referencia. En concreto, los computadores, pro-
cesadores o arquitecturas que han disfrutado de una mayor popularidad
en la docencia de Arquitectura de Computadores han sido: el compu-
tador PDP-11, el procesador 68000 de Motorola, el procesador 80x86 de
Intel, la arquitectura MIPS y el procesador SPARC. Aunque en ocasio-
nes también se ha recurrido a computadores hipotéticos dedicados en
exclusiva a la enseñanza de los conceptos arquitectónicos.
En la Universitat Jaume I también habíamos optado por algunas
de las alternativas ya comentadas. Comenzamos con el 68000 de Moto-
rola, más adelante utilizamos brevemente un computador hipotético y
posteriormente, cambiamos a la arquitectura MIPS, que se utilizó como
arquitectura de referencia hasta el curso 2013/14.
A principios de 2013, los profesores de la unidad docente de arquitec-
tura de computadores nos plantemos migrar la arquitectura de referen-
cia a ARM por los siguientes motivos. En primer lugar, la arquitectura
ARM, al estar basada en RISC, es relativamente sencilla. En segundo
lugar, pese a su sencillez, presenta muchas características que la distin-
guen de otras arquitecturas contemporáneas [10]. Por último, pero no
menos importante, el hecho de que ARM sea una arquitectura actual y
ampliamente difundida, especialmente en dispositivos móviles, teléfonos
inteligentes y tabletas, es un factor especialmente motivador [12]. Cabe
destacar que la popularidad de la arquitectura ARM ha explotado en
las dos últimas décadas debido a su eficiencia y a la riqueza de su eco-
sistema: se han fabricado más de 50 mil millones de procesadores ARM;
v
vi
Índice general
más del 75 % de la población mundial utiliza productos con procesadores
ARM [14].
Una vez tomada la decisión de realizar dicho cambio, comenzamos a
replantearnos las guías docentes y los materiales que se deberían utilizar
en la enseñanza tanto teórica como práctica de las distintas asignaturas
relacionadas con la materia de Arquitectura de Computadores.
En el caso de la asignatura Estructura de Computadores, de primer
curso, primer semestre, partíamos del siguiente material: el libro Estruc-
tura y diseño de computadores: la interfaz software/hardware, de David
A. Patterson y Jonh L. Hennessy [17], como referencia para la parte teó-
rica de la asignatura; el libro Prácticas de introducción a la arquitectura
de computadores con el simulador SPIM, de Sergio Barrachina, Maribel
Castillo, José Manuel Claver y Juan Carlos Fernández [5], como libro de
prácticas; y el simulador de MIPS xspim (actualmente QtSpim1), como
material de laboratorio.
En un primer momento nos planteamos utilizar como documentación
para la parte de teoría el libro Computer Organization and Architecture:
Themes and Variations. International Edition., de Alan Clements, y
para la parte de prácticas, el libro de prácticas indicado anteriormente
pero adaptado a un simulador de ARM que fuera lo suficientemente
senc
Comentarios de: Introducción a la arquitectura de computadores con QtARMSim y Arduino (0)
No hay comentarios