Capítulo 3: XEOS, software base de sistemas embebidos
3.3 Soporte de XEOS para las plataformas de hardware
hardware
Elframework de desarrollo de sistema operativos GenodeOS tiene soporte para la compilación empleando varioskernelsde sistema, entre ellos Fiasco.OC. También
Capítulo 3. XEOS, software base de sistemas embebidos tiene soporte para ejecutar directamente sobre el hardware empleando un kernel baremetal propio del framework, conocido como base hardware (base_hw) .
Actualmente GenodeOS tiene soporte para la RaspberryPI sobre el repositorio base_hw, pero no tiene soporte para la plataforma Odroid-X2. Las pruebas iniciales sobre la RaspberryPI se basaron en el empleo de base_hw, el cual se empleó como base para el soporte de XEOS. En el caso de la Odroid-X2 se tomó como referencia la plataforma Arndale, como se describe en las secciones siguientes.
Para dar soporte a ambas platafomas en XEOS fue necesario un estudio exhaustivo de los manuales técnicos de cada una de las plataformas, así como el intercambio con las comunidades de desarrollo internacional de Fiasco.OC y GenodeOS. Una vez finalizado el soporte de las plataformas de hardware sobre XEOS, es necesario probar el correcto funcionamiento del sistema sobre estas plataformas. Aunque hasta el momento no se ha generado nuevas aplicaciones desoftware es necesario probar la ejecución de las ya existentes sobre las nuevas plataformas dehardwareadicionadas. Estas pruebas permitirán validar el soporte dado. En el Capítulo 4 se describen las pruebas que pueden aplicarse para validar el soporte de las plataformas de hardware.
Para dar soporte a las plataformas de hardware fue necesario preparar un ambiente de trabajo con todas las herramientas de desarrollo instaladas y configuradas. En el Anexo B se presenta una guía para la puesta a punto de todas las herramientas para el trabajo con XEOS.
3.3.1.
Portando la plataforma RaspberryPI a XEOS
Como se mencionó anteriormente, el framework GenodeOS tiene soporte para la RaspberryPI empleando el kernel base_hw. Este soporte ya incorpora en el framework los componentes básicos para el funcionamiento de la plataforma: componentes de la arquitectura ARM, manejo de la CPU, MMU, puertos series UART, temporizadores e interrupciones.
Adicional a ello, GenodeOS también tiene soporte para algunos controladores, entre ellos el BUS USB y MMC, aunque este último con problemas de funcionamiento sobre tarjetas de fabricación moderna. La propia estructura y organización del framework permite la reutilización de gran parte de estos componentes que ya tienen soporte enbase_hw, por lo que el proceso de soporte de la RaspberryPI en base_foc se redujo a un proceso de configuración, el cual
Capítulo 3. XEOS, software base de sistemas embebidos se describe a continuación:
1. Generar de forma manual los ficheros de configuración para la compilación de Fiasco.OC + L4Re para la RaspberryPI.
repos/base-foc/config/rpi.kernel repos/base-foc/config/rpi.user
Para generar estos archivos de configuración se empleó el código fuente de Fiasco.OC. En el Anexo D se explica cómo generar estos archivos a partir del código fuente delmicrokernel.
2. Agregar soporte para la creación de los directorios de compilación para la RaspberryPI empleando GenodeOS + Fiasco.OC.
tool/create_buildir
tool/builddir/etc/build.conf.foc_rpi tool/run/boot_dir/foc
En el script tool/run/boot_dir/foc fue necesario agregar el soporte para localizar los binarios del L4Re para la arquitectura ARMv6. Para ello fue necesario agregar la siguiente línea en la función bin_dir:
if {[have_spec arm_v6]} { return "[l4_dir]/bin/arm_armv6" }
Consultar el Anexo D para más información sobre cómo modificar estos archivos de configuración.
3. Agregar soporte para la compilación e integración de Fiasco.OC y GenodeOS para la RaspberryPI.
repos/base-foc/lib/mk/spec/rpi/platform.mk repos/base-foc/mk/spec/foc_rpi.mk
repos/base-foc/src/core/spec/rpi/target.mk repos/base-foc/src/kernel/spec/rpi/target.mk
En el primer archivo se especifica la configuración para la compilación del L4Re, mientras que en el segundo se especifican los elementos que se van a compilar y empaquetar en la imagen del sistema, así como las opciones
Capítulo 3. XEOS, software base de sistemas embebidos generales de compilación. Los dos últimos ficheros se encargan de configurar la compilación y enlazar el código de Fiasco.OC y L4Re con GenodeOS; así como de otras especificaciones para el proceso de compilación.
Consultar el Anexo D para más información sobre cómo crear estos archivos de configuración.
3.3.2.
Portando la plataforma Odroid-X2 a XEOS
A diferencia de la RaspberryPI, la plataforma Odroid-X2 no tiene ningún soporte sobre GenodeOS. Como punto de partida para el soporte de la nueva plataforma se tomó el soporte existente para la plataforma Arndale que tiene un SoC Exynos5, superior al Exynos4412 del Odroid-X2, pero de la misma familia de SoC. Se señala que la única semejanza está dada por la familia del SoC y no por la plataforma dehardware en general.
A continuación se describen los pasos que se deben tener en cuenta para dar soporte a la Odroid-X2 en base_foc:
1. Generar de forma manual los ficheros de configuración para la compilación de Fiasco.OC + L4Re para la Odroid-X2.
repos/base-foc/config/odroid_x2.kernel repos/base-foc/config/odroid_x2.user
Al igual que para la RaspberryPI, estos archivos de configuración son generados a partir del código fuente de Fiasco.OC, tal y como se explica en el Anexo D.
2. Agregar soporte para la creación de los directorios de compilación para la Odroid-X2 empleando GenodeOS + Fiasco.OC.
tool/create_buildir
tool/builddir/etc/build.conf.foc_odroid_x2
Consultar el Anexo D para más información sobre cómo modificar estos archivos de configuración.
3. Agregar archivos de configuración de la plataforma Odroid-X2 en la base de GenodeOS:
Capítulo 3. XEOS, software base de sistemas embebidos
repos/base/include/spec/exynos4/board_base.h
repos/base/include/spec/odroid_x2/drivers/board_base.h repos/base/mk/spec/odriod_x2.mk
Estos archivos de configuración contienen las direcciones del mapa de memoria del SoC, empleadas por los componentes de GenodeOS. El archivo odroid_x2.mk contiene configuraciones generales para la compilación de la plataforma Odroid-X2.
4. Agregar soporte para la compilación e integración de Fiasco.OC y GenodeOS para la Odroid-X2.
repos/base-foc/lib/mk/spec/odroid_x2/platform.mk repos/base-foc/mk/spec/foc_odroid_x2.mk
repos/base-foc/src/core/spec/odroid_x2/target.mk repos/base-foc/src/kernel/spec/odroid_x2/target.mk
Al igual que en el caso de la RaspberryPI, en estos archivos se especifica la configuración para la compilación del L4Re, Fiasco.OC y su integración con GenodeOS.
Consultar el Anexo D para más información sobre cómo crear estos archivos de configuración.