domingo, 28 de abril de 2013

Compilación e instalación de Freertos na Raspberry Pi

Freertos e un sistema operativo en tempo real que pode ser instalado sobre a Raspberry Pi. A diferencia fundamental con respecto a outros sistemas operativos como por exemplo o Raspibian é que nos sistemas operativos de tempo real podes saber que o tempo de proceso do programa vai a ter unha duración dentro dun límite de tempo, o cal permite unha resposta adecuada para unha automatización dun proceso crítico. Nun sistema operativo multitarefa, de propósito xeral, o tempo de proceso non se pode asegurar, depende da prioridade da tarefa, do número tarefas en execución, etc.

Para elo é necesario baixarse unha serie de ferramentas e arquivos que dependen do sistema operativo onde se compilen. Os arquivos necesarios para a compilación se poden encontrar neste repositorio https://github.com/jameswalmsley/RaspberryPi-FreeRTOS. O programa proposto é simplemente un "Ola mundo" pero en harware (un led que parpadea). Hai que baixar os arquivos do repositorio, facendo un git clone.

Como é probable que compilemos os arquivos en un dispositivo distinto da Rasberry pi é necesario utilizar o "toolchain" (non se me ocorre como traducilo) para que a compilación non sexa co xogo de instruccións do procesador do equipo no que imos facer o proceso. O meu procesador, un x86 compila código para outro procesador, un ARM. De non facelo así, o compilar co make nos dará un erro de código 127 por que non encontra o gcc adecuado para compilar o código.

usuario@equipo:/datos/robotica/RaspberryPi-FreeRTOS$ make
 Dark Builder - Unified Build Environment
 Version (1.0.0 - Armstrong)
  [CC]    [RaspberryPi BSP] port.o
make: arm-none-eabi-gcc: Comando non atopado
make: *** [/datos/robotica/RaspberryPi-FreeRTOS/build/FreeRTOS/Source/portable/GCC/RaspberryPi/port.o] Erro 127



A Raspberry utiliza un procesador Broadcom BCM2835 SoC, que a súa vez está formado por varios módulos. O módulos máis importante é o procesador da CPU, un ARM1176JZF 700 MHz. Temos que instalar o compilador adecuado para este procesador que se pode obter do seguinte enlace https://launchpad.net/gcc-arm-embedded/. Ademais temos que especificarlle no makefile o camiño para que encontre os arquivos que precise. A continuación podedes ver como exemplo a ruta que eu tiña no meu equipo.

kernel.elf: LDFLAGS += -L"/datos/robotica/gcc-arm-none-eabi-4_7-2012q4/lib/gcc/arm-none-eabi/4.7.3/" -lgcc
kernel.elf: LDFLAGS += -L"/datos/robotica/gcc-arm-none-eabi-4_7-2012q4/arm-none-eabi/lib/" -lc


Unha vez executado o comando make créase no directorio un arquivo chamado kernel.img. Para poder utilizar ese kernel o máis fácil é nunha instalación de calquera distribución para a Raspberry sustituir o kernel orixinal polo kernel do Freertos. Neste documento podedes consultar como arrinca a Rasberry e o proceso de instalación do Freertos https://abacus.abo.fi/ro.nsf/141b8735bd22ff31c225700600473a01/6bb4b57f4db82685c2257aec0052581e/$FILE/ex5_2013.pdf

Unha vez feito isto, poderedes desfrutar do marabilloso chiscar do led verde  da Raspberry pi.

No hay comentarios:

Publicar un comentario