PDF de programación - PRÁCTICAS DE ENSAMBLADOR BASADAS EN RASPBERRY PI

Imágen de pdf PRÁCTICAS DE ENSAMBLADOR BASADAS EN RASPBERRY PI

PRÁCTICAS DE ENSAMBLADOR BASADAS EN RASPBERRY PIgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Marzo del 2018)
916 visualizaciones desde el 8 de Marzo del 2018
4,6 MB
194 paginas
Creado hace 4a (28/01/2015)
ANTONIO JOSÉ VILLENA GODOY

RAFAEL ASENJO PLAZA

FRANCISCO J. CORBERA PEÑA

PRÁCTICAS DE ENSAMBLADOR

BASADAS EN

RASPBERRY PI

UNIVERSIDAD DE MÁLAGA / MANUALES

ii

Acrónimos

ii

Acrónimos

AAPCS

ARM

CPSR

CPU

CHI

CLO

CS

E/S

ETSII

FIQ

GNU

GCC

GDB

GPAFEN

GPAREN

GPEDS

GPFEN

GPHEN

GPIO

ARM Architecture Procedure Call Standard

Advanced RISC Machines

Current Program Status Register

Central Processing Unit

system timer Counter HIgher

system timer Counter LOwer

system timer Control/Status

Entrada/Salida

Escuela Técnica Superior de Ingeniería Informática

Fast Interrupt reQuest

GNU is Not Unix

GNU C Compiler

GNU DeBugger

GPIO Pin Async. Falling Edge Detect

GPIO Pin Async. Rising Edge Detect

GPIO Pin Event Detect Status

GPIO Pin Falling Edge Detect Enable

GPIO Pin High Detect Enable

General-Purpose Input/Output

iii

GPL

GPLEN

GPLEV

GPPUD

General Public License

GPIO Pin Low Detect Enable

GPIO Pin LEVel

GPIO Pin High Detect Enable

GPPUDCLK

GPIO Pin High Detect Enable CLocK

GPREN

GPIO Pin Rising Edge Detect Enable

GPU

IRQ

LED

LR

PFC

PC

RAM

RISC

ROM

RTI

SoC

SP

SPSR

UMA

VFP

abt

mon

svc

und

Graphics Processing Unit

Interrupt ReQuest

Light Emitting Diode

Link Register

Proyecto Fin de Carrera

Personal Computer

Random-Access Memory

Reduced Instruction Set Computer

Read-Only Memory

Rutina de Tratamiento de Interrupción

System on a Chip

Stack Pointer

Saved Program Status Register

Universidad de MÁlaga

Vector Floating-Point

ABorT mode

secure MONitor mode

Supervisor mode (antiguamente SuperVisor Calls)

UNDened mode

Índice

Acrónimos

Prólogo

iii

xiii

1 Introducción al ensamblador

1.1 Lectura previa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Características generales de la arquitectura ARM . . . . . . .
1.1.2 El lenguaje ensamblador . . . . . . . . . . . . . . . . . . . . .
1.1.3 El entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4 Conguración del entorno para realizar las prácticas en casa .
1.1.5 Aspecto de un programa en ensamblador . . . . . . . . . . . .
1.1.6 Ensamblar y linkar un programa

1
2
2
5
6
7
9
. . . . . . . . . . . . . . . . 14
1.2 Enunciados de la práctica . . . . . . . . . . . . . . . . . . . . . . . . 15
. . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Cómo empezar
1.2.2 Enteros y naturales . . . . . . . . . . . . . . . . . . . . . . . . 20
1.2.3
. . . . . . . . . . . . . . . . . . . . . . . 23
1.2.4 Rotaciones y desplazamientos . . . . . . . . . . . . . . . . . . 25
1.2.5
Instrucciones de multiplicación . . . . . . . . . . . . . . . . . 28

Instrucciones lógicas

2 Tipos de datos y sentencias de alto nivel

31
2.1 Lectura previa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.1 Modos de direccionamiento del ARM . . . . . . . . . . . . . . 31
2.1.2 Tipos de datos
. . . . . . . . . . . . . . . . . . . . . . . . . . 36
Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.3
2.1.4 Estructuras de control de alto nivel
. . . . . . . . . . . . . . . 42
2.1.5 Compilación a ensamblador
. . . . . . . . . . . . . . . . . . . 43
2.1.6 Ejercicios propuestos. . . . . . . . . . . . . . . . . . . . . . . . 46
2.2 Enunciados de la práctica . . . . . . . . . . . . . . . . . . . . . . . . 48
Suma de elementos de un vector . . . . . . . . . . . . . . . . . 48

2.2.1

v

3 Subrutinas y paso de parámetros

55
3.1 Lectura previa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.1.1 La pila y las instrucciones ldm y stm . . . . . . . . . . . . . . 56
3.1.2 Convención AAPCS . . . . . . . . . . . . . . . . . . . . . . . 58
3.2 Ejemplos de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.2.1 Funciones en ensamblador llamadas desde C . . . . . . . . . . 60
3.2.2 Funciones en ensamblador llamadas desde ensamblador . . . . 62
3.2.3 Funciones recursivas
. . . . . . . . . . . . . . . . . . . . . . . 64
3.2.4 Funciones con muchos parámetros de entrada . . . . . . . . . 70
3.2.5 Pasos detallados de llamadas a funciones . . . . . . . . . . . . 75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.3.1 Mínimo de un vector . . . . . . . . . . . . . . . . . . . . . . . 76
3.3.2 Media aritmética, macros y conteo de ciclos
. . . . . . . . . . 78
3.3.3 Algoritmo de ordenación . . . . . . . . . . . . . . . . . . . . . 80

3.3 Ejercicios

4 E/S a bajo nivel

83
4.1 Lectura previa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.1.1 Librerías y Kernel, las dos capas que queremos saltarnos
. . . 84
4.1.2 Ejecutar código en Bare Metal . . . . . . . . . . . . . . . . . . 86
4.2 Acceso a periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.2.1 GPIO (General-Purpose Input/Output)
. . . . . . . . . . . . 89
4.2.2 Temporizador del sistema . . . . . . . . . . . . . . . . . . . . 95
. . . . . . . . . . . . . . . . . . . 96
4.3.1 LED parpadeante con bucle de retardo . . . . . . . . . . . . . 96
4.3.2 LED parpadeante con temporizador . . . . . . . . . . . . . . . 99
Sonido con temporizador . . . . . . . . . . . . . . . . . . . . . 99
4.3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.4.1 Cadencia variable con bucle de retardo . . . . . . . . . . . . . 101
4.4.2 Cadencia variable con temporizador . . . . . . . . . . . . . . . 101
4.4.3 Escala musical . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.3 Ejemplos de programas Bare Metal

4.4 Ejercicios

5 Interrupciones hardware

103
5.1 Lectura previa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.1.1 El sistema de interrupciones del ARM . . . . . . . . . . . . . 104
5.1.2 Rutina de tratamiento de interrupción . . . . . . . . . . . . . 109
5.1.3 Pasos para congurar las interrupciones
. . . . . . . . . . . . 110
5.1.4 El controlador de interrupciones . . . . . . . . . . . . . . . . . 112
5.1.5 Ejemplo. Encender LED rojo a los 4 segundos . . . . . . . . . 114
5.1.6 Ejemplos de aplicación . . . . . . . . . . . . . . . . . . . . . . 118
5.1.7 Parpadeo de todos los LEDs . . . . . . . . . . . . . . . . . . . 119
5.1.8 Control de LEDs rojos con pulsadores . . . . . . . . . . . . . . 123

5.2 Ejercicios

5.1.9 Parpadeo secuencial de LEDs con sonido por altavoz
. . . . . 127
5.1.10 Manejo de FIQs y sonidos distintos para cada LED . . . . . . 133
5.1.11 Control de luces/sonido con pulsadores en lugar temporizadores138
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.2.1 Todo con IRQs
. . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.2.2 Alargar secuencia a 10 y parpadeo . . . . . . . . . . . . . . . . 142
5.2.3 Tope de secuencia y limitar sonido . . . . . . . . . . . . . . . 142
5.2.4 Reproductor de melodía sencilla . . . . . . . . . . . . . . . . . 143

A Funcionamiento de la macro ADDEXC

145
. . . . . . . . . . . . . . . . . . . . . . . . 145
A.1 Finalidad y tipos de salto
A.2 Elección: salto corto
. . . . . . . . . . . . . . . . . . . . . . . . . . . 146
A.3 Escribir una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
A.4 Codicación de la instrucción de salto . . . . . . . . . . . . . . . . . . 147
A.5 Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

B Funcionamiento de la placa auxiliar

149
B.1 Esquema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
B.2 Pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
B.3 Correspondencia
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
B.4 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
B.5 Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
B.6 Diseño PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

C Cable serie y bootloaders

155
C.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
C.2 Cable USB-serie desde el ordenador de desarrollo . . . . . . . . . . . 155
C.3 Cable serie-serie que comunica dos Raspberries . . . . . . . . . . . . . 157
C.4 Reseteo automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
C.5 Código fuente del bootloader . . . . . . . . . . . . . . . . . . . . . . . 162

D Resistencias programables de pull-up y pull-down

169
D.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
D.2 Pulsadores en la placa auxiliar . . . . . . . . . . . . . . . . . . . . . . 170
D.3 Ejemplo de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
D.3.1 Pulsador a masa sin cambiar conguración . . . . . . . . . . . 170
D.3.2 Pulsador a masa cambiando conguración . . . . . . . . . . . 172
D.3.3 Pulsador a Vcc sin cambiar conguración . . . . . . . . . . . . 175

Bibliografía

178

Índice de guras

1.1 Registros de la arquitectura ARM . . . . . . . . . . . . . . . . . . . .
1.2 Ubicación de datos en memoria . . . . . . . . . . . . . . . . . . . . .
1.3 Entorno típico de programación . . . . . . . . . . . . . . . . . . . . .
1.4
1.5
1.6
1.7

3
5
6
Instrucciones de desplazamiento lógico . . . . . . . . . . . . . . . . . 25
Instrucciones de desplazamiento aritmético . . . . . . . . . . . . . . . 25
Instrucciones de rotación . . . . . . . . . . . . . . . . . . . . . . . . . 25
Instrucciones de rotación con carry . . . . . . . . . . . . . . . . . . . 26

2.1 Representación de un vector en memoria . . . . . . . . . . . . . . . . 38
2.2

(a) Formato de una matriz C con N las y M columnas y (b) orga-
nización por las

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.1 Uso de la pila en una función . . . . . . . . . . . . . . . . . . . . . . 65
3.2 Uso de la pila en nuestra función . . . . . . . . . . . . . . . . . . . . 66
3.3 Mapa de pila de función poly3 . . . . . . . . . . . . . . . . . . . . . . 72
3.4 Mapa de función hipotética . . . . . . . . . . . . . . . . . . . . . . . 73

. . . . . . . . . . . . .
  • Links de descarga
http://lwp-l.com/pdf9341

Comentarios de: PRÁCTICAS DE ENSAMBLADOR BASADAS EN RASPBERRY PI (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad