DEMO in Rowley not compiling?

kenmosher wrote on Wednesday, September 16, 2009:

OK, obviously I’m missing something basic here, but loaded the LPC2368 FreeRTOS demo into Rowley v2.0 with the LPC2000 package, and Keil MCB2300 package (our eval board).

We are using v2.0.1 Rowley with the latest FreeRTOS (and demos).

First, I had to add the path to the FreeRTOS include directory to the configuration options so it didn’t freak out about all the header files.   I would have thought that would have been in the Demo project?  Did I force something that I shouldn’t have?

Anyway, it is now its down to just a couple of errors left, but we can’t find the missing files/folders?

One is #include < targets/LPC2368.h> in main.c "No such file or directory" … and indeed, there isn’t anywhere on my disk

Another is stdio.h is not found

… and obviously a bunch of cascade errors like EOF undefined, NULL undefined, size_t undefined, etc.

SO … where are those in the demo?  FreeRTOS?  Or is this something that should be in the Rowley stuff and we’re missing a package?

rtel wrote on Wednesday, September 16, 2009:

The 2368 Rowley demo was created with Rowley V1.7 and there are some differences with Rowley V2.

First off it does sound like you are missing some of the LPC2000 packages that you have to install separately to the main CrossWorks IDE.  Select "Package Manager" from the CrossWorks "Tools" menu and just double check that the LPC2000 stuff is installed.

Second, if you have the package installed then you should have an LPC2368.h file, but V2 stores it in a completely different place.  Look under C:\Documents and Settings\\Local Settings\Application Data\Rowley Associates Limited\CrossWorks for ARM\packages\include\targets - this is going to have to be in the path.  There is a path variable to do this - I forget exactly what it is buts something like $TargetsDir$.  I guess there will be something similar with stdio.h.

One fast way might to be to create a new project for the LPC2368, then look at the project options under include directories and copy any settings from the new (temporary) project into the real FreeRTOS project.

I am successfully using V2 with FreeRTOS, but only for project that were created in V2, I have not tried converting old projects to work with V2.

A couple of other hints.  By default V2 has the "enforce ANSI compliance" compiler option turned on.  To compile you will either have to turn this off, or change any occurrences of "asm volatile" to "__asm volatile".  Also the version of GCC used can struggle with some of the ISR functions.  The ISRs have an asm wrapper that calls a C function - make sure the C function has the noinline attribute set, and better still call the C function from asm code rather than C code.


kenmosher wrote on Wednesday, September 16, 2009:

First rate answer!  THANK YOU!  Working through it now to see if we have any other "newbie" questions!

BTW, we’re using the Mac OS version, so the paths are a little different, but it was enough of a clue to find that we DID have the LPC2368.h in the /username/Library directory (which is "hidden" from Apple’s Spotlight search … which means we didn’t see it).

Thanks again!