Bienvenido: Ingresar
location: LabElectronica / Lpc2114FreeRTOS

Adaptando FreeRTOS para utilización con LPC2114

Introducción

FreeRTOS[1] (Free Real Time Operating System) es un mini Kernel de Tiempo Real, que se distribuye bajouna versión modificada de la GPL[2], cuya única diferencia consiste en que no obliga a liberar el código desarrollado independientemente del núcleo del OS, aún cuando el código esté "linkeado" dinámica o estáticamente al del FreeRTOS.

Vamos a utilizar la versión 5.3.0, cuyo código fuente se puede descargar desde la página oficial de FreeRTOS[1].

Modificaciones al Proyecto Original

El código que descargamos contiene ejemplos para utilizar FreeRTOS en varias arquitecturas de hardware, y con varios compiladores distintos.

Como ninguno de estos ejemplos corresponde exactamente a al microcontrolador NXP LPC2114 que queremos utlizar, optamos por modificar el que se encuentra en FreeRTOS/Demo/ARM7_LPC2106_GCC.

Eliminación de otras arquitecturas

De todo el árbol de directorios, solo dejamos los que necesitamos, que son:

Modificación del Linker Script

Cambiamos en las líneas 4 y 7 del archivo Demo/ARM7_LPC2106_GCC/lpc2106-rom.ld donde dice "64K" (RAM del lpc2106) por "16K" (RAM del lpc2114). Hacemos lo mismo con lpc2106-ram.ld.

Modificación del Makefile

Eliminamos los siguientes archivos fuente, que pertencen a ejemplos de módulos que no vamos a utilizar:

Con estos comandos podemos elegir si quermos grabar el ejecutable a través de un puerto serie, o a través de un conversor USB a RS232.

Script de Compilación

Se utiliza para automatizar los pasos que se deben dar para compilar el proyecto. En general lo que se hace es definir variables de entorno que luego se utilizan para realizar compilación condicional.

En Demo/ARM7_LPC2106_GCC/ boramos todos los archivos ".bat", que solo sirven bajo Windows, y creamos el archivo "rom_arm.sh" (al que debemos darle permiso de ejecución), con el siguiente contenido:

export USE_THUMB_MODE=NO
export DEBUG=
export OPTIM=-O3
export RUN_MODE=RUN_FROM_ROM
export LDSCRIPT=lpc2106-rom.ld

echo $USE_THUMB_MODE
echo $DEBUG
echo $OPTIM
echo $RUN_MODE
echo $LDSCRIPT

make

Configuración del FreeRTOS

En el archivo "Demo/ARM7_LPC2106/FreeRTOSConfig.h" se encuentran una serie de definiciones que sirven para configurar el funcionamiento de FreeRTOS y también del mirocontrolador en si.

Los cambios que realizamos son:

Modificación de "main.c"

Eliminar las siguientes líneas (que pertenecen a módulos no utilizados):

vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartMathTasks( tskIDLE_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );

Cambiando Nombres

Cambiamos los nombres de los siguientes archivos:

Compilando y Ejecutando

Conclusiones

Ejecutando las siguientes instrucciones desde Demo/ARM7_LPC2106_GCC

#ReFer

Referencias

  1. http://www.freertos.org

  2. http://www.freertos.org/index.html?http://www.freertos.org/a00114.html

None: LabElectronica/Lpc2114FreeRTOS (última edición 2010-06-07 22:15:20 efectuada por GonzaloPerezPaina)