Discussion group dedicated to the Philips LPC2000 family of ARM MCUs
Request: LPC2292 FreeRTOS Port - jsalomo1 - Oct 31 12:43:37 2007
Does anyone have an Eclipse lpc2292 FreeRTOS port?
The FreeRTOS link on Keil's site
(http://www.keil.com/dd/chip/3652.htm) links to a 2106 port. Would
this be compatible? I would assume some memory mappings would probably
be changed. Any other changes I should know about?

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )
RE: Request: LPC2292 FreeRTOS Port - "FreeRTOS.org Info" - Nov 1 17:30:48 2007
> Does anyone have an Eclipse lpc2292 FreeRTOS port?=20
>=20
> The FreeRTOS link on Keil's site
> (http://www.keil.com/dd/chip/3652.htm=20
>
) links to a 2106 port. Would
> this be compatible? I would assume some memory mappings would probably
> be changed. Any other changes I should know about?
I presume you are wanting to use GCC as you mention Eclipse. If so, I woul=
d
suggest:
1) Downloading the LPC2368 Eclipse FreeRTOS.org demo
http://www.freertos.org/portlpc2368_Eclipse.html
2) Reading the installation instructions (I mention that quite a lot :o)
http://www.freertos.org/Eclipse.html
3) In the makefile, change the inclusion of the file:
___a) Change the definition compiler option "-I
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx" to "-I
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC2000" [just the last three
characters are different].
___b) Remove all web server, Ethernet and TCP/IP stack code.
4) Edit the file
FreeRTOS\Demo\ARM7_LPC2368_Eclipse\RTOSDemo\ParTest\ParTest.c so it toggles
the LED that are connected to your hardware. Check the LED flashing code
works using a simple hello world style program before trying them within a
FreeRTOS.org application.
5) Edit main() so that is just contains the following:
int main( void )
{
prvSetupHardware();
=09
vStartLEDFlashTasks( mainFLASH_PRIORITY );
vTaskStartScheduler();
return 0;=20
}
This just creates three tasks that flash three different LEDs at different
frequencies. Its a simple starting point.
6) Edit the file FreeRTOS\Demo\ARM7_LPC2368_Eclipse\RTOSDemo\lpc2368.ld so
the flash and ram sizes (at the top of the file) are correct, and remove th=
e
references to USB and Ethernet RAM.
Try compiling it. I'm sure there will be a few things I forgot to mention,
but you get the idea.
Regards,
Richard.
+ http://www.FreeRTOS.org
13 official architecture ports, 1000 downloads per week.
+ http://www.SafeRTOS.com
Certified by T=DCV as meeting the requirements for safety related systems.
=20
=20

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )Re: Request: LPC2292 FreeRTOS Port - jsalomo1 - Nov 6 21:40:35 2007
Thanks for the response. I've been trying to get it to compile, but no
luck.=20
I am getting errors similar to this:
./FreeRTOS/Source/portable/GCC/ARM7_LPC2000/portISR.o: In function
`vPortISRStartFirstTask':
FreeRTOS/Source/portable/GCC/ARM7_LPC2000/portISR.c:92: undefined
reference to `pxCurrentTCB'
Is there an include file that it's not seeing? I included portmacro.h
in the includes for this instance, but it doesn't seem to help.
--- In l...@yahoogroups.com, "FreeRTOS.org Info"
wrote:
>
> > Does anyone have an Eclipse lpc2292 FreeRTOS port?=20
> >=20
> > The FreeRTOS link on Keil's site
> > (http://www.keil.com/dd/chip/3652.htm=20
> > ) links to a 2106 port. Would
> > this be compatible? I would assume some memory mappings would probably
> > be changed. Any other changes I should know about?
>=20
>=20
> I presume you are wanting to use GCC as you mention Eclipse. If so,
I would
> suggest:
>=20
> 1) Downloading the LPC2368 Eclipse FreeRTOS.org demo
> http://www.freertos.org/portlpc2368_Eclipse.html
>=20
> 2) Reading the installation instructions (I mention that quite a lot :o)
> http://www.freertos.org/Eclipse.html
>=20
> 3) In the makefile, change the inclusion of the file:
>=20
> ___a) Change the definition compiler option "-I
> $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx" to "-I
> $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC2000" [just the last three
> characters are different].
>=20
> ___b) Remove all web server, Ethernet and TCP/IP stack code.
>=20
> 4) Edit the file
> FreeRTOS\Demo\ARM7_LPC2368_Eclipse\RTOSDemo\ParTest\ParTest.c so it
toggles
> the LED that are connected to your hardware. Check the LED flashing
code
> works using a simple hello world style program before trying them
within a
> FreeRTOS.org application.
>=20
> 5) Edit main() so that is just contains the following:
>=20
> int main( void )
> {
> prvSetupHardware();
>=20=09
> vStartLEDFlashTasks( mainFLASH_PRIORITY );
> vTaskStartScheduler();
>=20
> return 0;=20
> }
>=20
> This just creates three tasks that flash three different LEDs at
different
> frequencies. Its a simple starting point.
>=20
> 6) Edit the file
FreeRTOS\Demo\ARM7_LPC2368_Eclipse\RTOSDemo\lpc2368.ld so
> the flash and ram sizes (at the top of the file) are correct, and
remove the
> references to USB and Ethernet RAM.
>=20
> Try compiling it. I'm sure there will be a few things I forgot to
mention,
> but you get the idea.
>=20
>=20
> Regards,
> Richard.
>=20
> + http://www.FreeRTOS.org
> 13 official architecture ports, 1000 downloads per week.
>=20
> + http://www.SafeRTOS.com
> Certified by T=DCV as meeting the requirements for safety related systems=
.
>
=20
=20

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )Re: Request: LPC2292 FreeRTOS Port - mjames_doveridge - Nov 7 3:10:14 2007
grep *.* for 'pxCurrentTCB'?
That's how I normally find unresolved symbols to get things to link :)
'CurrentTCB' sounds like an OS object, so you are probably right - a
header missing somewhere.
Rgds,
Martin

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )
Re: Request: LPC2292 FreeRTOS Port - jsalomo1 - Jan 24 15:35:58 2008
--- In l...@yahoogroups.com, "mjames_doveridge"
wrote:
>
> grep *.* for 'pxCurrentTCB'?
>
> That's how I normally find unresolved symbols to get things to link :)
>
> 'CurrentTCB' sounds like an OS object, so you are probably right - a
> header missing somewhere.
>
> Rgds,
> Martin
>
After a while of being away...
So I fixed that problem, now I have another:
make -k all
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb main.c -o main.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb ParTest/ParTest.c -o ParTest/ParTest.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb LCD/portlcd.c -o LCD/portlcd.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/BlockQ.c -o
FreeRTOS/Demo/Common/Minimal/BlockQ.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/blocktim.c -o
FreeRTOS/Demo/Common/Minimal/blocktim.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/flash.c -o
FreeRTOS/Demo/Common/Minimal/flash.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/integer.c -o
FreeRTOS/Demo/Common/Minimal/integer.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/GenQTest.c -o
FreeRTOS/Demo/Common/Minimal/GenQTest.o
FreeRTOS/Demo/Common/Minimal/GenQTest.c: In function
'vStartGenericQueueTasks':
FreeRTOS/Demo/Common/Minimal/GenQTest.c:127: warning: pointer targets
in passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/GenQTest.c:135: warning: pointer targets
in passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/GenQTest.c:136: warning: pointer targets
in passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/GenQTest.c:137: warning: pointer targets
in passing argument 2 of 'xTaskCreate' differ in signedness
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/QPeek.c -o
FreeRTOS/Demo/Common/Minimal/QPeek.o
FreeRTOS/Demo/Common/Minimal/QPeek.c: In function 'vStartQueuePeekTasks':
FreeRTOS/Demo/Common/Minimal/QPeek.c:100: warning: pointer targets in
passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/QPeek.c:101: warning: pointer targets in
passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/QPeek.c:102: warning: pointer targets in
passing argument 2 of 'xTaskCreate' differ in signedness
FreeRTOS/Demo/Common/Minimal/QPeek.c:103: warning: pointer targets in
passing argument 2 of 'xTaskCreate' differ in signedness
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Demo/Common/Minimal/dynamic.c -o
FreeRTOS/Demo/Common/Minimal/dynamic.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Source/list.c -o FreeRTOS/Source/list.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Source/queue.c -o FreeRTOS/Source/queue.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Source/tasks.c -o FreeRTOS/Source/tasks.o
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s: Assembler messages:
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:987: Error: bad
instruction `stmdb SP!,{R0}'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:988: Error: bad
instruction `mrs R0,CPSR'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:989: Error:
register expected, not '#0xC0' -- `orr R0,R0,#0xC0'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:990: Error: bad
instruction `msr CPSR,R0'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:991: Error: lo
register required -- `ldmia SP!,{R0}'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:1030: Error: bad
instruction `stmdb SP!,{R0}'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:1031: Error: bad
instruction `mrs R0,CPSR'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:1032: Error:
register expected, not '#0xC0' -- `orr R0,R0,#0xC0'
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:1033: Error: bad
instruction `msr CPSR,R0'
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Source/portable/GCC/ARM7_LPC2000/port.c
-o FreeRTOS/Source/portable/GCC/ARM7_LPC2000/port.o
arm-elf-gcc -c -g -O1 -Tlpc2368.ld -I . -I FreeRTOS/Source/include -I
FreeRTOS/Source/portable/GCC/ARM7_LPC2000 -I
FreeRTOS/Demo/Common/include -I FreeRTOS/Demo/Common/Minimal -I
Demo/Common -mthumb FreeRTOS/Source/portable/MemMang/heap_2.c -o
FreeRTOS/Source/portable/MemMang/heap_2.o
/cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:1034: Error: lo
register required -- `ldmia SP!,{R0}'
make: *** [FreeRTOS/Source/tasks.o] Error 1
make: Target `all' not remade because of errors.
===
For reference,
Makefile: http://paste-it.net/5977
boot.s: http://paste-it.net/5978 (default boot.s from 2368 demo)
===
Any suggestions?

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )RE: Re: Request: LPC2292 FreeRTOS Port - "FreeRTOS.org Info" - Jan 24 15:48:21 2008
> /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:987: Error: bad
> instruction `stmdb SP!,{R0}'
> /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:988: Error: bad
> instruction `mrs R0,CPSR'
> /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:989: Error:
You are trying to build ARM instructions into THUMB code.
Take a look at the files rom_thum.bat, ram_thumb.bat, rom_arm.bat and
ram_arm.bat in the FreeRTOS/Demo/ARM7_LPC2106_GCC directory. These show yo=
u
how to setup the environment to build for the different modes.
You are missing the USE_THUMB_MODE definition.
I missed the start of this thread so may miss the point, but if you are
wanting to create a build for an LPC2292 then you should just be able to
take an existing demo app for an LPC2000 device and change the linker scrip=
t
to be correct for your memory map. The demo applications are provided so
you have all the compiler setup and options required pre-configured 'out of
the box'.=20=20
The one caveat to this is the timer setup which differs slightly between
devices, you will either need to include files from
FreeRTOS\Source\portable\GCC\ARM7_LPC23xx or
FreeRTOS\Source\portable\GCC\ARM7_LPC2000 depending on the timer
configuration of the LPC2292.
Also take a look at the following page:
http://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html.
Regards,
Richard.
+ http://www.FreeRTOS.org
14 official architecture ports, 5000 downloads per month.
+ http://www.SafeRTOS.com
Certified by T=DCV as meeting the requirements for safety related systems.
=20
=20
______________________________
Stellaris® MCU Family: New Parts, New Package, New Price.
(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )
Re: Request: LPC2292 FreeRTOS Port - jsalomo1 - Jan 24 22:05:54 2008
--- In l...@yahoogroups.com, "FreeRTOS.org Info"
wrote:
>
> > /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:987: Error: bad
> > instruction `stmdb SP!,{R0}'
> > /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:988: Error: bad
> > instruction `mrs R0,CPSR'
> > /cygdrive/c/DOCUME~1/user/LOCALS~1/Temp/ccjgvQ9s.s:989: Error:
> You are trying to build ARM instructions into THUMB code.
>
> Take a look at the files rom_thum.bat, ram_thumb.bat, rom_arm.bat and
> ram_arm.bat in the FreeRTOS/Demo/ARM7_LPC2106_GCC directory. These
show you
> how to setup the environment to build for the different modes.
>
> You are missing the USE_THUMB_MODE definition.
>
> I missed the start of this thread so may miss the point, but if you are
> wanting to create a build for an LPC2292 then you should just be able to
> take an existing demo app for an LPC2000 device and change the
linker script
> to be correct for your memory map. The demo applications are
provided so
> you have all the compiler setup and options required pre-configured
'out of
> the box'.
>
> The one caveat to this is the timer setup which differs slightly between
> devices, you will either need to include files from
> FreeRTOS\Source\portable\GCC\ARM7_LPC23xx or
> FreeRTOS\Source\portable\GCC\ARM7_LPC2000 depending on the timer
> configuration of the LPC2292.
> Also take a look at the following page:
>
http://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html.
>
Thanks for your quick reply.
I was already trying to configure the existing 2368 Eclipse demo
application for use with the 2292, as someone had suggested as a reply
to my first post. I changed the linker script memory ram and flash
sizes. There was no existing USE_THUMB_MODE definition so I did not
know that was necessary.
I also thought that it should compile 'out of the box' and was
wondering why I was having so much trouble.
So I should enable thumb mode?

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )