Written by Fabio ¬¬
INTRODUCCIÓN:
El presente documento pretender dar una guía sobre como implementar el sistema operativo UcLinux en la De0nano-SOC, para ello se describe primero un pequeño marco teórico sobre este sistema operativo y el porqué implementarlo y siguiente a esto se dan los pasos para implementarlo en la De0nano-Soc.
MARCO TEÓRICO:
Linux: la palabra linux actualmente puede hacer referencia a un núcleo de sistema operativo o a un sistema operativo, dependiendo del contexto. Linux se empezó a crear en 1991 por un joven llamado Linus Torvalds quien mediante simples ideas y con la ayuda de muchas personas lanzó la versión 0.01 de Linux de manera gratuita y a través del tiempo paso de tener 10239 lineas de código a tener mas de 14000000 y su código fuente puede ser descargado de manera gratuita en la red.
UClinux: el primer uCllinux fue derivado del kernel de Linux 2.0, para microcontroladores de poca memoria. Actualmente uClinux es un sistema operativo completo con una colección de aplicaciones, librerias y herramientas de desarrollo.
DESARROLLO:
El sistema será desarrollado en base a un NIOS2, se usará una MMU( Memory Management Unit) para facilitar la virtualización de la memoria en uClinux. El desarrollo del siguiente tutorial se hará a través de las siguientes tareas:
Construcción de un NIOS2-system con MMU y periféricos en QSys.
Construcción de un custom hardware para controlar algunos LEDs.
Construcción y configuración de uClinux para NIOS2 con MMU.
Escriber un "kernel driver" para controlar los LEDs.
El hardware de este tutorial es la tarjeta DE0nano SOC, Sin embargo el puede ser adaptado a otras tarjetas de desarrollo DE*. A continuación se realiza la descripción de cada tarea.
CONSTRUCCIÓN DE QSys
Descargue la siguiente plantilla de base y abra el archivo Qsys e implemente los siguientes elementos:
OnChip RAMs: dos memorias OnChip son usadas. Una para el reset- and exception vectors y otra para el MMU TLB. La primera es de 4096 bytes y la segunda de 1024 bytes. Tenga en cuenta que la MMU TLB OnChip RAM es tipo dual-port RAM. En la figura 1 se muestra la configuaración Reset/exception Memory y en la figura 2 la configuración MMU TLB Memory.
CPU: la CPU es una "fast variant" del NIOS 2 (NIOS2(f)). conecte la CPU con las Onchip Memory así: conecte el data master al s1-port and instruction master al s2-port del TLB OnChip RAM. También conecte el instruction master y data master al puerto s1 de el regular OnChipRam. como se muestra en la siguiente imagen:
Configuración CPU-On Chip Memories: Configure la memoria en el modulo Nios II como se muestra a continuación:
Timer: Uclinux necesita un timer. este timer controla las diferentes interrupciones de la CPU. añade un timer como se muestra a continuación.
Guarde, de click en generate y proceda con los siguientes pasos.
2. Uclinux- Instalación y configuración
Para poder construir el uClinux se deben tener los siguientes requerimientos:
Linux build box (Fedora 17 en este caso)
Hacer la versión 3.81 o menor.
uClinux distribution
Precompilador Toolchain.
Instalar fedora en una maquina virtual ( este enlace le puede ayudar: https://www.youtube.com/watch?v=8b1eFlq-omQ