Embedded/es
│
English (en) │
español (es) │
中文(中国大陆) (zh_CN) │
中文(臺灣) (zh_TW) │
La finalidad embebida está todavía en desarrollo y solamente están soportados unos cuantos controladores. No obstante, es posible crear programas para dispositivos embebidos arm. Su finalidad se centra en dispositivos que no utilizan sistema operativo y que tienen disponibles varios KBs de memoria RAM, más algunas docenas de KBs en memoria flash. Un tipo de dispositivo típico en el que utilizarlo es la familia LPC de NXP con miembros populares tales como el PC2124 con 16 kB de RAM y 256 kB de flash utilizando el juego de instrucciones ARM7.
Embedded port
Estado
- Solamente hay soporte útil disponible desde la versión 2.3.1 desde el svn.
- Actualmente solamente está soportado arm embebido.
- Los controladores soportados actualmente están limitados a los NXP LPC.
ARM Embebido
Construcción
Obtener los FPC más actualizados desde svn:
svn co http://svn.freepascal.org/svn/fpc/trunk fpc
Obtener las utilidades binarias embebidas arm.
Para Windows, están disponibles en http://svn.freepascal.org/svn/fpcbuild/binaries/i386-win32. Se puede chequear el directorio completo para su descarga o bien descargar solamente arm-embedded-ar.exe, arm-embedded-as.exe, arm-embedded-ld.exe, arm-embedded-strip.exe, arm-embedded-objdump.exe y arm-embedded-objcopy.exe manualmente. Sitúa estas utilidades en un directorio que esté incluido en la variable de entorno path.
Para construir FPC para arm embebido:
cd fpc make clean buildbase installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm
Esto construye solamente el compilador y la rtl en lugar del FPC completo. Debido a las capacidades limitadas de los sistemas embebidos en los que utilizarlo, construir todos los paquetes no resulta demasiado útil. Como siempre, se debe tener cuidado para evitar sobreescribir un compilador arm pre-existente en el sistema. Si este es el caso, se debería utilizar INSTALL_PREFIX para instalarlo en un directorio diferente y commutar estre ellos.
Testeando
A continuación se encuentra un programa simple. Debe guardarse como tled1.pp para seguir la descripción. El programa está indicado para las placas de desarrollo tipo LPC-WEB de OLIMEX (http://www.olimex.com/dev/lpc-e2124.html). Cuando se presiona el pulsador 1 se enciendo el LED 1 durante un cierto tiempo, lo mismo ocurre para el pulsador 2 y el LED 2.
procedure Wait(d : dword);
begin
while d<>0 do
dec(d); { decrementa la variable d }
end;
begin
{ inicializa PLL }
InitPLL(2,1);
{ inicializa LEDs }
{ port 0.8: output }
TBitvector32(GPIO0_IODIR)[8]:=1;
{ port 0.10: output }
TBitvector32(GPIO0_IODIR)[10]:=1;
{ apaga ambos LEDs }
TBitvector32(GPIO0_IOSET)[8]:=1;
TBitvector32(GPIO0_IOSET)[10]:=1;
{ inicializa la entrada de pulsadores }
{ port 0.9: input }
TBitvector32(GPIO0_IODIR)[9]:=0;
{ port 0.15: input }
TBitvector32(GPIO0_IODIR)[15]:=0;
{ endless loop}
while true do
begin
{ pulsador 1 presionado }
if TBitvector32(GPIO0_IOPIN)[15]=0 then
begin
{ enciende LED, lógica inversa }
TBitvector32(GPIO0_IOCLR)[8]:=1;
{ wait }
Wait(500000);
{ apaga LED, lógica inversa }
TBitvector32(GPIO0_IOSET)[8]:=1;
end;
{ pulsador 2 presionado }
if TBitvector32(GPIO0_IOPIN)[9]=0 then
begin
{ enciende LED, lógica inversa }
TBitvector32(GPIO0_IOCLR)[10]:=1;
{ espera }
Wait(500000);
{ apaga LED, lógica inversa }
TBitvector32(GPIO0_IOSET)[10]:=1;
end;
end;
end.
Si se tiene instalado FPC para arm embebido tal como se describe arriba, el programa puede ser compilado mediante:
fpc -Parm -Tembedded -Wplpc2124 tled1.pp
-Parm
Indica al compilador que compile para arm.
-Tembedded
Indica al compilador que compile para el objetivo embebido.
-Wplpc2124
Indica al compilador que compile para NXP LPC 2124. Esto tiene dos efectos: primero, una unit (lpc21x4 en este caso) conteniendo el código de inicio y el port etc. cargando las definiciones para este controlador. Además el compilador utiliza un script para el enlazador que se ajusta a las necesidades de este controlador.
El resultado obtenido por el compilador es un fichero con extensión .hex que puede ser programado con la utilidad flash NXP.
Añadiendo nuevos controladores
Añadir un nuevo tipo de controlador requiere básicamente tres pasos: primero, extender el compilador de manera que reconozca el nombre del controlador, entonces añadir el script del enlazador y finalmente crear una unidad rtl con el registro de definiciones y código de inicio.
Añadir el tipo de controlador al compilador
Añadir el script del enlazador (linker) al compilador
Crear una rtl unit con código de inicio y registro de definiciones
Enlaces de interés
- http://de.wikipedia.org/wiki/Intel_HEX
- http://www.nxp.com/products/microcontrollers/support/software_download/lpc2000/
- http://www.nxp.com/acrobat_download/usermanuals/UM10114_3.pdf
- Jim Lynch: Empleando utilidades de código abierto para AT91SAM7 Diseño cruzado - Revisión B http://www.atmel.com/dyn/resources/prod_documents/atmel_tutorial_source.zip
- Traducción inicial 27 junio 2009 -