FreeRTOS Support Archive

The FreeRTOS support forum can be used for active support both from Amazon Web Services
and the community. In return for using our software for
free, we request you play fair and do your bit to help others! Sign up
to receive notifications of new support topics then help where you can.

This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.

LPC488(Cortext MR) FreeRTOS Port Under Crossworks for ARM

I suceeded in creating a functional, but incomplete, FreeRTOS port for the LPC4088
in the Crossworks for ARM environment, which was tested on the Embedded Artists
LPC4088-32 Developer's Kit board.

Most of the incomplete aspects are related to Crossworks system components.
The details follow. Please let me know if you see something which is wrong,
can be automated, or done in a better way. (i.e. Look for TBD for comments
on the incomplete aspects.)

TBD: Currently, it appears Rowley does not recommend or require a Cortex M4
specific or floating point support package. The STM packages should be replaced
by equivalent NXP packages--but such packages with the requisite FreeRTOS
components may not be currently available. It is believed the LPC1000 CPU
package contains the correct LPC4088 components.

Crossworks Project Properties Configuration

Use the Crossworks GUI to create a project a starting point by selecting
"File->New Project->Executable for LPC OEM EA". Be sure to select a sensible project
name and project directory. (i.e. For example, $(HomeFreeRTOS)/FreeRTOSLPC4088)

Obtain the FreeRTOS V8.01 source code from the FreeRTOS website or download it from
Crossworks and put it in the "Source" subdirectory. The organization of the FreeRTOS
code should already be the same or very close to directory structure shown above.

TBD: It is believed that threads_CMF4.js script is needed under Crossworks and not
supplied with the generic FreeRTOS source code. Rowley must be consulted to determine
the origin of the file and how to install it.

Put the attached versions of main.c and main_blinky.c in the "Example" subdirectory.
They are slightly modified versions of the source code from the generic FreeRTOS V8.01
and NXP LPC Open V2.10 blinky example for the LPC4088.

In the Crossworks GUI and project, the "Example" directory is labeled as "Source Files"
by default. Make sure it exists and is pointing at "Example" and includes main.c and
main_blinky.c.

Add a "Source" directory to the project with the Crossworks GUI. You should
do this recursively.

Rowley Source Code Organization

The overall directory structure of the Crossworks system software is as follows.
(i.e. These are the currently available generic Crossworks components and
should automatically be installed under the project "System Files" subdirectory
in the Crossworks GUI.)

The following items should be put in EALPC4088OEM. (i.e. There is a directory named
"Systems Files/lpc4088 open bsp" directory in the Crossworks project GUI. Verify
that it points at EALPC4088OEM.)

FreeRTOSConfig.h

FreeRTOS_board.c

Also, confirm the following definitions in FreeRTOSConfig.h.

define configMINIMALSTACKSIZE ( ( unsigned short ) 256 )

define configTOTALHEAPSIZE ( ( size_t ) ( 10 * 1024 ) )

For timer functionality, add the following definitions.

//
// This must be done to enable timers.
// The timer task should be highest or close to the highest
// priority task. The queue size may need to be configured.
//

define configUSE_TIMERS 1

define configTIMERTASKPRIORITY (configMAX_PRIORITIES - 1)

define configTIMERTASKSTACKDEPTH configMINIMALSTACK_SIZE

define configTIMERQUEUELENGTH 10

TBD: These files are very close to the versions in the STM32F4DISCOVERY subdirectory
supplied by Rowley. It is't believed currently Rowley has LPC4088 specific versions
of these files. It is likely the generic FreeRTOS release has almost identical
versions for LPC17xx family member or an actual LPC4088 version.

TBD: The LPC1000 and LPC100/CMSIS directories contain as least partially compatible LPC4088
system files. It is believed that they are completely compatible with some LPC17xx family
member. It isn't known if this is the final or official Rowley solution for LPC4088
functionality.

TBD: STM32 contains the memory map and interrupt vector definition files. As an interim
measure, the STM32F4 versions for the STMF4DISCOVERY board are being used as they are almost
identical to how they are used for for the Cortex M4 on the LPC4088 board. However, there
is probably another more appropriate Rowley directory.

NXP LPC Open Source Code Organization

The overall directory structure of the LPC Open Library is as follows.

The entire lpcboardeadevkit4088 and lpcchip40xx subdirectories
should be put under $(HomeLPCOpen).

In the file lpcchip40xx/src/chip17xx40xx.c the variable declaration for
SystemCoreClock and the routine SystemCoreClockUpdate() must be commented
out as they are supplied by the generic Crossworks system files.

Crossworks Configuration

The following paths need to be included in the Crosworks GUI project "User Include Directories".