MINIX 3 SOBRE ARQUITECTURA ARM

  • View
    234

  • Download
    4

Embed Size (px)

Text of MINIX 3 SOBRE ARQUITECTURA ARM

  • Proyecto de Sistemas Informticos.Curso 2008-2009.

    MINIX 3 SOBRE

    ARQUITECTURA ARM

    Componentes del grupo:

    J. Adrin Bravo Navarro

    Hctor Cortiguera Herrera

    Jorge Quints Rodrguez

    Directores del proyecto:

    Luis Piuel Moreno

    Manuel Prieto Matas

    Facultad de Informtica.Universidad Complutense de Madrid.

  • Prefacio

    En este trabajo detallamos el proceso de desarrollo de un port del sistemaoperativo Minix 3 a arquitectura ARM. Para una mejor comprensin de esteproceso, es necesario introducir al lector en una serie de conceptos. Por ello,en primer lugar introducimos Minix 3 y realizamos un anlisis de sus aspectosms importantes. A continuacin, exponemos las caractersticas ms relevan-tes de la arquitectura ARM, comparndola con la arquitectura x86 en algunospuntos relevantes para nuestro trabajo. En las secciones siguientes mostramosla relevancia del proyecto, enumeramos los objetivos iniciales y el estado fi-nal que ha alcanzado el desarrollo. Posteriormente describimos en detalle losentresijos de la implementacin, centrndonos en los aspectos ms relevantes.Debido a su importancia, a continuacin se dedica una seccin para introduciral lector en el entorno de desarrollo que hemos utilizado, sus componentes y suutilidad, ya que este entorno es un componente crucial del proceso de imple-mentacin, y su configuracin no es un asunto trivial. Finalmente, exponemoslas dificultades con las que nos hemos encontrado en la realizacin del proyec-to, as como el alcance final del mismo y las lineas de trabajo futuro que quedanabiertas.

    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, weshould introduce the reader into some basic concepts. Therefore, we first intro-duce Minix 3 and make an analysis of its main features. Afterwards, we presentthe main features of the ARM architecture, comparing with the x86 architecturein some outstanding points for our project. In the next sections we explain theimportance of our project, list the initial goals and the state the developmenthas 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 sectionis 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 ofthe coding process, and its setup it is not a trivial issue. Finally, we present thedificulties we have faced during the execution of the project, just as the projectscope and the future work lines to pursue.

    Keywords

    ARM, Minix 3, operating systemas, system on chip, SoC, microkernel, ker-nel, Embedded systems.

  • Cesin de derechos

    El cdigo fuente del proyecto se encuentra disponible bajo la licencia GPLversin 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-sin 1.3, a su vez descargable de http://www.gnu.org/licenses/fdl-1.3.txt.

    Sin perjuicio de lo anterior, J. Adrin Bravo Navarro, Hctor CortigueraHerrera y Jorge Quints Rodriguez, los autores del proyecto y abajo firmantesautorizamos adems a la Universidad Complutense a difundir y utilizar confines acadmicos, no comerciales y mencionando expresamente a sus autores,tanto la propia memoria, como el cdigo, la documentacin y/o el prototipodesarrollado.

    Madrid, a 18 de Septiembre de 2009.

    Adrin Bravo Hctor Cortiguera Jorge Quints

    http://www.gnu.org/licenses/gpl-2.0.txthttp://www.gnu.org/licenses/fdl-1.3.txthttp://www.gnu.org/licenses/fdl-1.3.txt

  • Agradecimientos

    A mi familia, mam, pap y Rober, por haberme puesto en el camino. A Vicky porhaber retirado las piedras, y a Cris por haber caminado conmigo. A Jorge y Hctor, porser un equipo increble.

    A Cris, por estar siempre conmigo. A mis padres, por haberme ayudado a hacer loque quera. A mis amigos y compaeros de sobremesa en la facultad, por aguantar que-jas cuando las cosas no salan como planebamos. Y a Adrin y Jorge, por que encontra los mejores compaeros de prcticas.

    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, segus estando aqu. Con especial cario a Javi e Isabel, a "Isita", aClara, a Paula, a mi bisabuela Clara, a mis abuelos Carmen, Jos y Concha, a mi toAntonio y a mis padres (a vosotros especialmente por aguantarme, s que no lo pongofcil). A los compaeros del viaje que se acaba, sobre todo a Adrin y Hctor por vuestrofantstico trabajo y por ser los mejores compaeros.

    Al restaurante Tokio de Moncloa, por alimentarnos durante las jornadas ms 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. Introduccin 1

    1.1. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.2. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . 3

    2. Minix 3 5

    2.1. Historia de Minix . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.2. Introduccin a Minix 3 . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2.1. Diseo y arquitectura . . . . . . . . . . . . . . . . . . . . 7

    2.2.2. Estructura de Minix 3 . . . . . . . . . . . . . . . . . . . . 8

    2.2.3. Ventajas de la arquitectura . . . . . . . . . . . . . . . . . . 9

    2.2.4. Desventajas de la arquitectura . . . . . . . . . . . . . . . 10

    2.3. Gestin de Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.4. Gestin de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . 13

    2.4.1. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . 14

    2.4.2. Llamadas al sistema y gestin de memoria . . . . . . . . 16

    2.4.3. Cambio de contexto y memoria . . . . . . . . . . . . . . . 16

    2.5. Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3. ARM 19

    3.1. Historia de ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3.2.1. Modelo de Programacin . . . . . . . . . . . . . . . . . . 25

    3.2.2. Extensiones de la arquitectura . . . . . . . . . . . . . . . 31

    3.3. ARM frente a Intel . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    3.3.1. Segmentacin frente a paginacin . . . . . . . . . . . . . 35

    3.3.2. Cambio de contexto hardware frente a cambio de contextosoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    3.4. Nuestra eleccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    I

  • ndice general

    4. Memoria virtual 39

    4.1. Pequea introduccin a la memoria virtual . . . . . . . . . . . . 39

    4.1.1. Paginacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.1.2. Segmentacin . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.1.3. Segmentacin con paginacin . . . . . . . . . . . . . . . . 42

    4.2. Memoria virtual en Intel x86 . . . . . . . . . . . . . . . . . . . . . 43

    4.3. Memoria virtual en ARM . . . . . . . . . . . . . . . . . . . . . . 47

    4.3.1. Memory Management Unit . . . . . . . . . . . . . . . . . 50

    5. Minix@ARM 55

    5.1. Objetivos iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5.2. Objetivos alcanzados . . . . . . . . . . . . . . . . . . . . . . . . . 56

    6. Implementacin 57

    6.1. Multiprogramacin . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    6.2. Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    6.3. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    6.4. Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    6.5. Gestin de memoria dinmica . . . . . . . . . . . . . . . . . . . . 61

    6.6. Inicializacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    6.6.1. Placa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    6.6.2. Vectores de interrupcin . . . . . . . . . . . . . . . . . . . 63

    6.7. Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    6.7.1. Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . 65

    6.7.2. PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    6.7.3. MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    6.8. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    6.8.1. Mapa de memoria . . . . . . . . . . . . . . . . . . . . . . 71

    6.8.2. Stackframe . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    6.9. Minix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    7. Entorno de Desarrollo 77

    7.1. Qemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    7.2. U-Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    7.3. Toolchain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    7.4. Desarrollo Colaborativo: Launchpad, Bazaar y Dokuwiki . . . . 80

    8. Dificultades 83

    9. Trabajo futuro 87

    II

  • ndice general

    A. Configuracin del Entorno IA.1. Instalacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I

    A.1.1. Software Necesario . . . . . . . . . . . . . . . . . . . . . . IA.1.2. Qemu, tftpd, bridge-utils y uml-utilities . . . . . . . . . . IIA.1.3. DNSmasq . . . . . . . .