Publicado el 4 de Julio del 2018
985 visualizaciones desde el 4 de Julio del 2018
1,2 MB
119 paginas
Creado hace 15a (14/09/2009)
Proyecto de Sistemas Informáticos.
Curso 2008-2009.
MINIX 3 SOBRE
ARQUITECTURA ARM
Componentes del grupo:
J. Adrián Bravo Navarro
Héctor Cortiguera Herrera
Jorge Quintás Rodríguez
Directores del proyecto:
Luis Piñuel Moreno
Manuel Prieto Matías
Facultad de Informática.
Universidad Complutense de Madrid.
Prefacio
En este trabajo detallamos el proceso de desarrollo de un port del sistema
operativo Minix 3 a arquitectura ARM. Para una mejor comprensión de este
proceso, es necesario introducir al lector en una serie de conceptos. Por ello,
en primer lugar introducimos Minix 3 y realizamos un análisis de sus aspectos
más importantes. A continuación, exponemos las características más relevan-
tes de la arquitectura ARM, comparándola con la arquitectura x86 en algunos
puntos relevantes para nuestro trabajo. En las secciones siguientes mostramos
la relevancia del proyecto, enumeramos los objetivos iniciales y el estado fi-
nal que ha alcanzado el desarrollo. Posteriormente describimos en detalle los
entresijos de la implementación, centrándonos en los aspectos más relevantes.
Debido a su importancia, a continuación se dedica una sección para introducir
al lector en el entorno de desarrollo que hemos utilizado, sus componentes y su
utilidad, ya que este entorno es un componente crucial del proceso de imple-
mentación, y su configuración no es un asunto trivial. Finalmente, exponemos
las dificultades con las que nos hemos encontrado en la realización del proyec-
to, así como el alcance final del mismo y las lineas de trabajo futuro que quedan
abiertas.
Palabras clave
ARM, Minix 3, sistemas operativos, system on chip, SoC, microkernel, ker-
nel, dispositivo empotrado.
Abstract
In this work we detail the developing process of porting the Minix 3 opera-
ting system to ARM architecture. For a better understanding of this process, we
should introduce the reader into some basic concepts. Therefore, we first intro-
duce Minix 3 and make an analysis of its main features. Afterwards, we present
the main features of the ARM architecture, comparing with the x86 architecture
in some outstanding points for our project. In the next sections we explain the
importance of our project, list the initial goals and the state the development
has reached. Later we go into details about the internals of the coding process,
focusing in the most significant points. Due to its importance, the next section
is used to introduce the reader into the development environment that we ha-
ve used, its components and usefulness, for this environment is a vital part of
the coding process, and its setup it is not a trivial issue. Finally, we present the
dificulties we have faced during the execution of the project, just as the project
scope and the future work lines to pursue.
Keywords
ARM, Minix 3, operating systemas, system on chip, SoC, microkernel, ker-
nel, Embedded systems.
Cesión de derechos
El código fuente del proyecto se encuentra disponible bajo la licencia GPL
versión 2, descargable de http://www.gnu.org/licenses/gpl-2.0.txt.
Por su parte, la memoria del mismo está disponible bajo la licencia GFDL ver-
sión 1.3, a su vez descargable de http://www.gnu.org/licenses/fdl-1.
3.txt.
Sin perjuicio de lo anterior, J. Adrián Bravo Navarro, Héctor Cortiguera
Herrera y Jorge Quintás Rodriguez, los autores del proyecto y abajo firmantes
autorizamos además a la Universidad Complutense a difundir y utilizar con
fines académicos, no comerciales y mencionando expresamente a sus autores,
tanto la propia memoria, como el código, la documentación y/o el prototipo
desarrollado.
Madrid, a 18 de Septiembre de 2009.
Adrián Bravo
Héctor Cortiguera
Jorge Quintás
Agradecimientos
A mi familia, mamá, papá y Rober, por haberme puesto en el camino. A Vicky por
haber retirado las piedras, y a Cris por haber caminado conmigo. A Jorge y Héctor, por
ser un equipo increíble.
A Cris, por estar siempre conmigo. A mis padres, por haberme ayudado a hacer lo
que quería. A mis amigos y compañeros de sobremesa en la facultad, por aguantar que-
jas cuando las cosas no salían como planeábamos. Y a Adrián y Jorge, por que encontré
a los mejores compañeros de prácticas.
A mi extensa familia (¡sois muchos para poneros a todos!). A Unai y Ana por ale-
grarme la vida. A Pepa e Isidro por ejercer de abuelos. A Franciso, "Viriato", Miguel,
Marcelo y Juan, seguís estando aquí. Con especial cariño a Javi e Isabel, a "Isita", a
Clara, a Paula, a mi bisabuela Clara, a mis abuelos Carmen, José y Concha, a mi tío
Antonio y a mis padres (a vosotros especialmente por aguantarme, sé que no lo pongo
fácil). A los compañeros del viaje que se acaba, sobre todo a Adrián y Héctor por vuestro
fantástico trabajo y por ser los mejores compañeros.
Al restaurante Tokio de Moncloa, por alimentarnos durante las jornadas más in-
tensas.
Al Aula SUN UCM, por cedernos un espacio para reunirnos y trabajar a gusto.
A esta carrera, por haberse terminado.
Índice general
1. Introducción
1.1. Motivación .
. . . . . . . . . . . . . . . . . . . . . . .
1.2. Estructura del documento . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
2. Minix 3
2.1. Historia de Minix .
2.2.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . .
Introducción a Minix 3 .
. . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Diseño y arquitectura . . . . . . . . . . . . . . . . . . . .
2.2.2. Estructura de Minix 3 . . . . . . . . . . . . . . . . . . . .
2.2.3. Ventajas de la arquitectura . . . . . . . . . . . . . . . . . .
2.2.4. Desventajas de la arquitectura . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
2.4.1. Estructuras de datos . . . . . . . . . . . . . . . . . . . . .
2.4.2. Llamadas al sistema y gestión de memoria . . . . . . . .
2.4.3. Cambio de contexto y memoria . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
2.3. Gestión de Procesos .
.
2.4. Gestión de Memoria .
2.5. Paso de mensajes .
3. ARM
3.1. Historia de ARM .
3.2. Arquitectura .
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Modelo de Programación . . . . . . . . . . . . . . . . . .
3.2.2. Extensiones de la arquitectura . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
3.3.1. Segmentación frente a paginación . . . . . . . . . . . . .
3.3.2. Cambio de contexto hardware frente a cambio de contexto
. .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
software .
. . . . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
3.4. Nuestra elección .
3.3. ARM frente a Intel
I
1
1
3
5
5
6
7
8
9
10
10
13
14
16
16
17
19
20
22
25
31
35
35
35
36
Índice general
4. Memoria virtual
4.1. Pequeña introducción a la memoria virtual
. . . . . . . . . . . .
4.1.1. Paginación .
. . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2. Segmentación . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3. Segmentación con paginación . . . . . . . . . . . . . . . .
4.2. Memoria virtual en Intel x86 . . . . . . . . . . . . . . . . . . . . .
4.3. Memoria virtual en ARM . . . . . . . . . . . . . . . . . . . . . .
4.3.1. Memory Management Unit . . . . . . . . . . . . . . . . .
5. Minix@ARM
5.1. Objetivos iniciales . .
. . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Objetivos alcanzados . . . . . . . . . . . . . . . . . . . . . . . . .
6. Implementación
.
. . .
. . .
. . . . .
6.1. Multiprogramación . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Scheduler .
. . . . . . . . . . . . . . . . . . . . . . . .
6.3. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Paso de mensajes .
. . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Gestión de memoria dinámica . . . . . . . . . . . . . . . . . . . .
Inicialización . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.
6.6.1. Placa . . .
. . . . . . . . . . . . . . . . . . . . . .
6.6.2. Vectores de interrupción . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
6.7.1. Temporizadores . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
6.7.2. PIC .
. . .
6.7.3. MMU . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
6.8.1. Mapa de memoria . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
6.8.2. Stackframe . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
6.7. Dispositivos . .
6.8. Definiciones . .
. . . . .
. . . . .
6.9. Minix .
. . .
. . .
.
.
.
.
. . .
7. Entorno de Desarrollo
.
.
. . .
. . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
7.1. Qemu .
.
. . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. U-Boot
.
7.3. Toolchain .
. . . . . . . . . . . . . . . .
7.4. Desarrollo Colaborativo: Launchpad, Bazaar y Dokuwiki . . . .
.
.
. . . . . .
. . . . .
. . .
.
.
.
8. Dificultades
9. Trabajo futuro
II
39
39
40
41
42
43
47
50
55
56
56
57
58
58
58
61
61
62
63
63
65
65
69
70
71
71
72
74
77
77
78
80
80
83
87
Índice general
I
I
I
II
III
IV
IV
V
V
IX
X
XI
XVII
XXI
A. Configuración del Entorno
.
A.1. Instalación .
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . .
A.1.1. Software Necesario . . . . . . . . . . . . . . . . . . . . . .
A.1.2. Qemu, tftpd, bridge-utils y uml-utilities . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
A.1.3. DNSmasq .
A.1.4. CodeSourcery Toolchain . . . .
. . . . .
. . . . . . . . . . . . . . . . . . . . . .
A.1.5. U-Boot .
.
. . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
.
A.2. Utilizando el entorno .
.
.
.
A.2.1. Ejecutando .
.
A.2.2. Depurando .
A.2.3. Compilando .
. . . . . . .
Comentarios de: Minix 3 sobre arquitectura ARM (0)
No hay comentarios