Sign in Join
Wiki copytemporary

Embedded/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11La 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.
22
33# Embedded port
44
55## Estado
66
77- Solamente hay soporte útil disponible desde la versión 2.3.1 desde el svn.
88- Actualmente solamente está soportado arm embebido.
99- Los controladores soportados actualmente están limitados a los NXP LPC.
1010
1111## ARM Embebido
1212
1313### Construcción
1414
1515Obtener los FPC más actualizados desde svn:
1616
17-` svn co `[`http://svn.freepascal.org/svn/fpc/trunk`](http://svn.freepascal.org/svn/fpc/trunk)` fpc`
17+```text
18+ svn co http://svn.freepascal.org/svn/fpc/trunk fpc
19+```
1820
1921Obtener las utilidades binarias embebidas arm.
2022
2123Para 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.
2224
2325Para construir FPC para arm embebido:
2426
25-` cd fpc`\
26-` make clean buildbase installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm`
27+```text
28+ cd fpc
29+ make clean buildbase installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm
30+```
2731
2832Esto 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.
2933
3034### Testeando
3135
3236A 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.
3337
3438``` pascal
3539procedure Wait(d : dword);
3640begin
3741 while d<>0 do
3842 dec(d); { decrementa la variable d }
3943end;
4044
4145begin
4246 { inicializa PLL }
4347 InitPLL(2,1);
4448
4549 { inicializa LEDs }
4650 { port 0.8: output }
4751 TBitvector32(GPIO0_IODIR)[8]:=1;
4852 { port 0.10: output }
4953 TBitvector32(GPIO0_IODIR)[10]:=1;
5054
5155 { apaga ambos LEDs }
5256 TBitvector32(GPIO0_IOSET)[8]:=1;
5357 TBitvector32(GPIO0_IOSET)[10]:=1;
5458
5559 { inicializa la entrada de pulsadores }
5660 { port 0.9: input }
5761 TBitvector32(GPIO0_IODIR)[9]:=0;
5862 { port 0.15: input }
5963 TBitvector32(GPIO0_IODIR)[15]:=0;
6064
6165 { endless loop}
6266 while true do
6367 begin
6468
6569 { pulsador 1 presionado }
6670 if TBitvector32(GPIO0_IOPIN)[15]=0 then
6771 begin
6872 { enciende LED, lógica inversa }
6973 TBitvector32(GPIO0_IOCLR)[8]:=1;
7074 { wait }
7175 Wait(500000);
7276 { apaga LED, lógica inversa }
7377 TBitvector32(GPIO0_IOSET)[8]:=1;
7478 end;
7579
7680 { pulsador 2 presionado }
7781 if TBitvector32(GPIO0_IOPIN)[9]=0 then
7882 begin
7983 { enciende LED, lógica inversa }
8084 TBitvector32(GPIO0_IOCLR)[10]:=1;
8185 { espera }
8286 Wait(500000);
8387 { apaga LED, lógica inversa }
8488 TBitvector32(GPIO0_IOSET)[10]:=1;
8589 end;
8690 end;
8791end.
8892```
8993
9094Si se tiene instalado FPC para arm embebido tal como se describe arriba, el programa puede ser compilado mediante:
9195
92-` fpc -Parm -Tembedded -Wplpc2124 tled1.pp`
96+```text
97+ fpc -Parm -Tembedded -Wplpc2124 tled1.pp
98+```
9399
94-` -Parm`
100+```text
101+ -Parm
102+```
95103
96104Indica al compilador que compile para arm.
97105
98-` -Tembedded`
106+```text
107+ -Tembedded
108+```
99109
100110Indica al compilador que compile para el objetivo embebido.
101111
102-` -Wplpc2124`
112+```text
113+ -Wplpc2124
114+```
103115
104116Indica 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.
105117
106118El resultado obtenido por el compilador es un fichero con extensión .hex que puede ser programado con la utilidad flash NXP.
107119
108120### Añadiendo nuevos controladores
109121
110122Añ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.
111123
112124#### Añadir el tipo de controlador al compilador
113125
114126#### Añadir el script del enlazador (linker) al compilador
115127
116128#### Crear una rtl unit con código de inicio y registro de definiciones
117129
118130### Enlaces de interés
119131
120132- <http://de.wikipedia.org/wiki/Intel_HEX>
121133- <http://www.nxp.com/products/microcontrollers/support/software_download/lpc2000/>
122134- <http://www.nxp.com/acrobat_download/usermanuals/UM10114_3.pdf>
123135- 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>
124136
125-`                     - Traducción inicial 27 junio 2009 -`
137+```text
138+ - Traducción inicial 27 junio 2009 -
139+```
126140
127141---
128142*From the Free Pascal wiki, page "Embedded/es", as it stood on 2020-02-14 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
129143Category: Castellano
130144Category: Español

Back to history