Tabla de Contenidos

Microblaze Linux

Tutorial SIlab5: Linux para MicroBlaze en Spartan3E Starter Board

Resumen

Objetivo y antecedentes

Antecedentes

MicroBlaze es la primera arquitectura soft-CPU integrada en el Linux Kernel Source tree principal, gracias al trabajo de Simek, Petalogix e Iglesias

Configuración del sistema

Plataforma: Digilent Spartan 3E Starter Kit

http://www.digilentinc.com/Data/Products/S3EBOARD/S3EStarter_ug230.pdf

Mapa de memoria

Ejecución 0123 Microblaze Linux pre-construido

0 - Obtener archivos y descomprimir en workspace

silab5.zip

1 - Desde Xilinx SDK descargar el bitstream de bootloop con Program FPGA

2 - Conectar la consola (HyperTerminal, Teraterm, Putty, …) asociada al puerto serie DCE configurado a 115200 bps, 8, N, 1
3 - Conectar con el microprocesador por protocolo JTAG mediante consola XMD y descargar la imagen de Linux precompilada desde la carpeta boot del proyecto

Pruebas Microblaze Linux pre-construido

= Chequeo de archivos de /proc (cpuinfo, meminfo, interrupts) =

= Chequeo de la consola =

= Chequeo de interfaces de red (configuración automática por DHCP) =

/ # ifconfig
 eth0   Link encap:Ethernet  HWaddr 00:0A:35:00:00:00
        inet addr:158.49.55.93  Bcast:158.49.55.255  Mask:255.255.255.0
        UP BROADCAST RUNNING  MTU:1500  Metric:1
        RX packets:33367 errors:0 dropped:739 overruns:0 frame:0
        TX packets:4725 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:5859747 (5.5 MiB)  TX bytes:385896 (376.8 KiB)
        Interrupt:1 Memory:81000000-8100ffff

= Utilidades de red (ping, telnet, tftp) =

Aplicaciones de usuario sobre Microblaze Linux

Compilación cruzada estática de aplicaciones

Transferencia de la aplicación compilada vía TFTP

Recepción vía TFTP y ejecución de aplicación

Hello world!

Test de GPIO mediante comandos de consola (encendido de LED)

Tests GPIO e I2C con aplicaciones de usuario

Guía de compilación Microblaze Linux

0 - Directorios, archivos y variables de entorno

Creamos los siguientes directorios asociados al proyecto hardware, la distribución de Linux y las herramientas necesarias, estableciendo las correspondientes variables de entorno para los directorio base:

1 - Generar proyecto en Xilinx EDK (xps) de acuerdo a los requisitos anteriores, y exportando a Xilinx SDK (xsdk) los archivos necesarios
2 - Obtener e instalar el Device Tree Generator

Añadiremos la ruta $XUX/dts_bsp a los repositorios de XSDK para configurar y generar un BSP en $XHW/$XPRJ_device‐tree_bsp, ruta que posteriormente usaremos.

3 - Obtener e instalar la GNU Toolchain
4 - Obtener el Linux Kernel
5 - Obtener una imagen de disco RAM preconstruida y copiarla en las fuentes del Linux kernel

Para modificar la imagen descomprimir en un directorio temporal:

Hacer los cambios necesarios y volver a comprimir:

6 - Desde Xilinx SDK (xsdk), donde se ha generado una plataforma hardware de acuerdo a la exportación desde Xilinx EDK (xps) con el nombre $XPRJ_hw_platform, testearemos dicha plataforma con aplicaciones básicas como memory_tests y peripheral_tests sobre un BSP de tipo standalone

Una vez verificado correctamente la operativa del hardware, generaremos el $XHW/$XPRJ_device‐tree_bsp creando un BSP Device‐Tree con los parámetros:

Obtendremos un archivo con extensión .dts necesario para el Linux kernel, por lo que hacemos visible esa ruta:

Y copiamos finalmente el archivo DTS en las fuentes del Linux kernel :

7 - Configurar el Linux kernel

Partir de una configuración por defecto con MMU mediante:

Y configurar el resto de opciones en modo menu textual:

O en modo gráfico estándar:

O en modo gráfico Gnome:

Finalmente salvar la configuración, se guarda en un archivo .config para poder hacer cambios posteriores

8 - Compilar el kernel, limpiando previamente imágenes generadas anteriormente
9 - Configurar la FPGA

O descargar bootloop desde Xilinx SDK (xsdk) Y conectar la consola. Utilizar HyperTerminal, Teraterm o Putty en el puerto adecuado configurado a 115200 bps, 8, N, 1

10 - Cargar el Linux kernel generado

Conectar por JTAG con el microporocesador implementado en la plataforma mediante XMD

o

Carga y arranque de la imagen de Linux kernel generada

Referencias

Microblaze
http://www.xilinx.com/tools/microblaze.htm
Xilinx Open Source documentation
http://xilinx.wikidot.com
http://www.wiki.xilinx.com
Xilinx GIT server and access portal
http://git.xilinx.com
DENX Embedded Linux Development Kit
http://www.denx.de/wiki/DULG/ELDK
etc
http://devicetree.org http://buildroot.net http://cdstahl.org/?p=423 http://es.scribd.com/doc/63732567/Microblaze-Linux-on-Xilinx-ML605 http://m.lemays.org/blog/linuxforxilinxmicroblazeonml605 http://billauer.co.il/blog/2011/08/linux-microblaze-howto-tutorial-primer-1 http://frank.harvard.edu/~coldwell/toolchain
[(:Normark00b)]

Bibliografía

@InProceedings{Normark00b,
author = {Kurt N{\o}rmark},
title =  {A Suite of WWW-based Tools for Advanced Course Management},
booktitle = {ITiCSE'2000 - Innovation and Technology in Computer Science Education},
pages = {65--68},
year =  {2000},
month = {July},
publisher = {ACM Press},
note =      {Also Available from http://www.cs.auc.dk/~normark/laml/},
url =       {http://www.cs.auc.dk/~normark/laml/papers/educational-applications/www-education-paper.pdf}
}