Esta lección analizará las opciones de software solamente (emuladores) disponibles para ejecutar el sistema operativo uClinux. uClinux es una versión de Linux para CPUs sin memoria virtual o un MMU (Memory Management Unit) y por lo general orientadas a sistemas embebidos con muy poca memoria o almacenamiento permanente.
1. ¿Por qué usar un emulador para ejecutar uClinux?
La gran cosa sobre los emuladores que se debaten aquí es que son libres. La calidad y la fiabilidad de las herramientas de desarrollo se pueden medir de antemano lo que es una gran ventaja en la pre-planificación del proyecto.
Si es posible, se debe elegir un emulador que se asemeja mucho a la CPU seleccionada. Esto le da la ventaja de probar las herramientas de desarrollo y, a su vez, la recepción de datos significativos sobre los requisitos de memoria flash y los requisitos de ROM. En algunas circunstancias, el desarrollo puede comenzar en el emulador antes incluso de que hardware real esté disponible. Un buen ejemplo es el proyecto leox que ha hecho la mayor parte utilizando el emulador TSIM:
La depuración también puede ser una tarea simple en el entorno virtual de un emulador. Es posible controlar totalmente la emulación de la CPU permitiendo el acceso a la información de depuración que no puede ser posible con el hardware real. Un emulador puede rastrear los accesos a memoria y la ejecución de código a un nivel más alto lo que ayuda para encontrar ese error difícil de alcanzar en el software o sistema operativo.
Emuladores puede permitir a los desarrolladores experimentar con diferentes opciones de rendimiento y su efecto en la usabilidad. Algo que puede ser útil para determinar los requisitos de rendimiento del hardware de destino. Los Emuladores también pueden ayudar a determinar los requisitos de flash y de memoriaToda esta información puede ser útil al principio del proceso de desarrollo.
2. Criterios para la elección de un emulador
Al elegir un emulador hay una serie de cosas a considerar. En primer lugar, se debe seleccionar un emulador que emule la CPU que pueden ser objeto de examen de la forma mas veraz, y si es posible, se desarrollará utilizando las mismas herramientas. Esto aumentará la pertinencia de cualquier trabajo realizado en el emulador.
Cuanto más cerca de un emulador es el hardware de destino mejor. Esto significa emulación de puertos serie, temporizadores y otros dispositivos se encuentran en el hardware de destino.
Uno de los déficit mas grandes de los emuladores disponibles para ejecutar uClinux es la falta de una verdadera emulación de dispositivos de red. Aunque es posible ejecutar redes en puertos serie emulados a través de PPP o SLIP, sería mucho más interesante disponer de un dispositivo de red emulado.
3. Qué opciones existen
Una búsqueda en la red para un emulador revelará una lista enorme de posibilidades. Sólo dos de las infinitas posibilidades que se discutirá en detalle aquí. Estos emuladores ya están bien soportados por uClinux y ofrecen una buena cobertura de las opciones embebidas de las CPU‟s objetivo.
El primer emulador, de hecho, el emulador que ayudó a crear las primeras versiones de uClinux es Xcopilot. Xcopilot es un emulador de PalmPilot que se ejecuta en Unix/X11. Ofrece emulación del temporizador, puertos serie, teclado táctil y pantalla LCD junto con la emulación de Motorola 68000 (m68k).
El segundo es el emulador ARMulator que es parte del depurador GNU gdb. Actualmente, el ARMulator ofrece una consola serie, junto con muchos posibles emulaciones ARM incluyendo big endian, little endian y emulaciones thumb.
4. Conseguir Xcopilot
Xcopilot se puede obtener de muchos lugares. La más actualizada de las fuente para el uso de Xcopilot con uClinux es la versión en el CVS en cvs.uclinux.org.
cvs -d:pserver:[email protected]:/var/cvs login
Simplemente presiona enter en la contraseña del sistema y, a continuación, ejecute:
cvs -d:pserver:[email protected]:/var/cvs checkout xcopilot Una versión bastante reciente puede ser descargada desde:
http://www.uclinux.org/pub/uClinux/utilities/xcopilot-0.6.6-uc0.tar.gz La compilación de Xcopilot es simple:
./configure make
Proporcionando todas las bibliotecas correctas en su lugar, el resultado será un Xcopilot que está listo para usar.
Una copia de la m68k-elf-tools serán necesarias para crear Kernels uClinux y binarios para Xcopilot. Estos pueden ser obtenidos a partir de:
http://www.uclinux.org/pub/uClinux/m68k-elf-tools/
Siga las instrucciones para instalar los binarios precompilados, o para los interesados, construir los instrumentos de la fuente proporcionada.
5. Conseguir el BGF/ARMulator
El BGF / ARMulator para su uso con uClinux está disponible en:
http://www.uClinux.org/pub/uClinux/utilities/armulator/
Esta página contiene toda la información necesaria para construir gdb para el uso con el ARMulator y uClinux. Hay incluso una selección de los binarios precompilados uClinux que se puede ejecutar en el ARMulator una vez que esté construido e instalado.
Una copia arm-elf-tools serán necesarias para crear kernels uClinux y los binarios para la ARMulator/ GDB. Estos pueden ser obtenidos a partir de:
http://www.uclinux.org/pub/uClinux/arm-elf-tools/
Una vez más, siga las instrucciones para instalar los binarios precompilados o construir estos desde la fuente proporcionada.
6. Construcción de la Fuente uClinux
La forma más fácil para empezar con la fuente de uClinux es tomar las fuentes de distribución de uClinux completas desde:
http://www.uclinux.org/pub/uClinux/dist/
Este es un archivo bastante grande que proporciona tanto los núcleos 2.0.39 y 2.4.17, junto con una buena selección de aplicaciones, la mayoría de los cuales han sido portadas a uClinux. También ofrece configuraciones prefabricadas, tanto para Xcopilot y el ARMulator/GDB que se pueden seleccionar en el menú de configuración.
El mecanismo para la construcción de cualquiera de los objetivos es esencialmente el mismo, sólo la selección de los objetivos es diferente.
gunzip < uClinux-dist-20020701.tar.gz | tar xzf - cd uClinux-dist
make xconfig
Seleccione 'Target Platform Selection' elija un destino. 3com/Xcopilot para el objetivo Xcopilot o GDB/ARMulator para la ARMulator. Seleccione la versión del kernel que desee utilizar y use UC-libc como la biblioteca de 'C'. Guardar y salir. Aquí hay un ejemplo de un xconfig para Xcopilot:
Figura 53: xconfig para Xcopilot
Cuando la configuración ha terminado de configure el árbol de código fuente: make dep
Cuando esto se completa, la recién construida imágen binaria estará listo para ser ejecutado en el emulador elegido.
7. Corriendo uClinux en Xcopilot
Hay un poco de configuración necesarios para ejecutar uClinux en Xcopilot. Desde el directorio raíz del código fuente de uClinux-dist haga lo siguiente.
mkdir ~/.xcopilot
ln -s `pwd`/images/pilot.rom ~/.xcopilot
Xcopilot ya está listo para utilizarse. Sólo tienes que escribir "xcopilot" y debería estar en funcionamiento el emulador uClinux xcopilot. Aquí está una captura de pantalla de lo que se espera.
Figura 54: emulador uClinux xcopilot
Los comandos se pueden introducir en la consola serie que se ejecuta en la ventana de terminal. Echa un vistazo en todo el sistema de archivos, /dev, /bin y /etc Se verá como una muy reducida versión de Linux / Unix.
Xcopilot tiene varias opciones de depuración. El más simple es el depurador predeterminado. Conectese con el depurador con:
telnet localhost 2000
Aquí teclee help para ver los comandos de depuración disponibles. Las opciones disponibles incluyen la detención/ inicio de la CPU y la traza de la ejecución a un archivo.
8. Corriendo uClinux en el BGF/ARMulator
Desde el directorio raíz del código fuente de uClinux-dist haga lo siguiente. ln -s images/romfs.img boot.rom
Ahora ejecute el arm-elf-gdb en el núcleo adecuado, aquí es una sesión de ejemplo:
arm-elf-gdb -n linux-2.*.x/linux GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"... (gdb) target sim
Loaded ROM boot.rom Loaded ROM boot.rom Loaded ROM boot.rom Loaded ROM boot.rom Connected to the simulator. (gdb) load
Loading section .text, size 0x77b84 vma 0x2000000 Loading section .rodata, size 0x8ddb vma 0x2077b84 Loading section .data, size 0x8fc8 vma 0x2080a60 Start address 0x2000000
Transfer rate: 4507960 bits in <1 sec. (gdb) run
En cualquier punto se puede hacer break en el depurador con ^C, establezca puntos de ruptura (break points) y examine la memoria y las variables. Break points se pueden establecer antes de escribir "run" para coger el inicio temprano del núcleo. A paso a través de los principios de la secuencia de arranque del núcleo establecer un punto de ruptura en start_kernel. Por ejemplo:
...
(gdb) break start_kernel (gdb) run
9. Resumen
Mientras un emulador nunca reemplazara el hardware real, puede desempeñar un papel importante en el desarrollo. Puede ser útil para la formación y la experimentación y también puede ayudar con el desarrollo y depuración de las características del nuevo sistema operativo.
Los emuladores mencionados aquí sirven para dar al usuario una comprensión fuerte de uClinux y su aplicación. No sólo pueden ser utilizados como un asistente de aprendizaje, pero también pueden proporcionar una base práctica para la construcción de dispositivos reales.
Un emulador puede jugar una parte importante en un conjunto de herramientas para desarrolladores y puede ser llamados cada vez que llene una necesidad inmediata.
10. Otros Emuladores
There are quite a few other emulators that can run uClinux to varying degrees.
LEON Sparc Emulator (TSIM)
Reasonable support included in the uClinux-dist sources.
NEC v850e
Quite good support with a selection of emulators available. The gdb based simulator is the easiest to use and is also supported in the uClinux-dist sources.
Coldfire Emulator
Capable of running the Arnewsh/5206 image from the uClinux-dist.
SWARM (Software ARM)
Basic support for this emulator is included in the uClinux-dist.
http://www.skyeye.org/index.shtml
SkyEye is an Open Source Software Project (GPL Licence). Origin from GDB/Armulator, The goal of SkyEye is to provide an integrated simulation environment in Linux and Windows. SkyEye environment simulates/emulates typical Embedded Computer Systems (Now it supports a series ARM, MIPS, PowerPC, Blackfin, Coldfire, and SPARC architecture based microprocessors). You can run some Embedded Operation System such as Embedded Linux, uClinux, uc/OS-II (ucos-ii) etc. in SkyEye, and analysis or debug them at source level.
ACTIVIDADES DE AUTOEVALUACIÓN DE LA UNIDAD
Que es un sistema operativo?
Cuáles son los componentes de un sistema operativo?
Que es el Kernel? Describa los tipos
Cuáles son las principales características del sistema operativo Linux?
Que es uCLinux?
Cuáles son las diferencias entre Linux y uCLinux?
Cuáles son las razones para usar uCLinux en sistemas embebidos?
Describa los paso básicos para implementar uCLinux
Que es un emulador? BIBILIOGRAFÍA:
[1] BARRETT Steven F, Pack Daniel J.Microcontrollers Fundamentals for Engineers and Scientists. Morgan & Claypool. 2006.
[2] NOERGAARD Tammy. Embedded Systems Architecture. Newnes. 2005. [3] MARWEDEl Peter. Embedded System Design. Springer. 2006.
[4] CATSOULIS John. Designing Embedded Hardware. O'Reilly. 2005.
[5] ZURELL Kira.(2000). C Programming for Embedded Systems. R&D Books. [6] BARR Michael. Programming Embedded Systems in C and GNU Development. O‟Reilly. 2006.
[7] P. RAGHAVAN, Amol Lad, Sriram Neelakandan. Embedded Linux System Design and Development. Auerbach Publications. 2006.
LINKS [8] www.freescale.com [9] http://elserver.forknet- ar.org/harpo///////uch/seminario/escrito//archivos//seminario-uch.nav/node28.html [10] http://www.cosmic-Software.com/products.php [11] http://www.uclinux.org/ports/coldfire/ [12] http://www.processorexpert.com/ [13] http://www.embedded.com [14] http://www.bairesrobotics.com.ar/data/guia68hc08.pdf [15] http://gem.win.co.nz/mario/hc08/