Frage

I'm trying to find a free/cheap RTOS that others have found works well with the NXP LPC1788 microcontroller. I was originally planning on using FreeRTOS, but it doesn't seem to support that particular processor; the closest supported core is the LPC1768. ThreadX works with the LPC1788, but a license for it will cost several thousand pounds. Suggestions?

EDIT 1: I forgot to mention, I'm working with IAR Embedded Workbench.

EDIT 2: I guess I should also point out that I'm fairly new to embedded programming, let alone using RTOS's. FreeRTOS and ThreadX both seem to be pretty similar, and both have fairly intuitive API's. The more that the API of another RTOS matches with these kinds of API's, the better I suppose.

EDIT 3: I've been looking into one RTOS called embOS. It looks professional, the API looks nice, they support a decent number of processor/IDE combinations (including mine), and I've already got an example project working fine. It's not free, and a license for it will cost around 2500 euros, but that's still around 3 times cheaper than the threadX license. Thanks for the suggestions, I feel kind of bad that I can't choose an accepted answer.

War es hilfreich?

Lösung

I have specifically evaluated FreeRTOS, embOS and Keil RTX on Cortex-M3. Of the three FreeRTOS certainly had the slowest context switch times, while RTX had the fastest, but the range was 5us to 15us so probably not critical for all but the most hard real-time applications (it made a difference in my case however).

RTX is of course Keil specific and you are using IAR, it's API is less sophisticated than embOS, and at the time it had a few bugs on CM3 and did not fully support the NVIC interrupt priority scheme. I believe these issues are resolved. FreeRTOS is perhaps the most unconventional of the three in terms of API and architecture, having extensively used embOS and VxWorks and similar "traditional" RTOS systems I was not entirely comfortable with it.

embOS works well with IAR and its debugger, with a level of RTOS aware debug that is useful. The licensing is per-developer/per-processor/per-toolchain, but otherwise royalty free and can be used over many projects using the same architecture and toolchain. The support from Segger is excellent, as is the documentation, and I would suggest that for a commercial product with sufficient volumes and margin it would be well worth it.

You might also consider eCos - this is a more comprehensive solution offering support for USB, netwoking, filesystems and more as well as scheduling and IPC. There is a port for LPC1766 that could probably be ported relatively easy. Most likely however you would have to use the GNU toolchain for development which may have a bearing on your use of existing tools such as JTAG debuggers.

Andere Tipps

I was originally planning on using FreeRTOS, but it doesn't seem to support that particular processor

Actually, FreeRTOS support all Cortex-M3 and Cortex-M4 processors with GCC, IAR and Keil. Just because there is not a specific pre-configured demo project for it does not mean it is not supported.

FreeRTOS does not rely on anything outside of the Cortex-M core, because the timer generation and interrupt controller are part of the core itself.

You can take an existing official LPCxx IAR demo project from the FreeRTOS distribution, and simply re-target it by setting up the right linker script for the chip. Any demo tasks that make use of IO that might be different on your particular hardware (ports used for LED outputs, etc.) can be modified to be correct for your IO port assignment, or just removed.

For example, Atollic have 55 FreeRTOS projects running on 55 different hardware platforms, all that actually use the same C source files - only the start up files and linker scripts are different.

I know that Keil mVision IDE have RTOS for NXP chips, it works on 24xx 100%. But this RTOS is not opens source, and only IDE owners can use it.

You can try an get RTAI compiled with any linux kernel. Might take some work but should be doable (and free)

Linux, it its uClinux form, runs just fine on the LPC1788. Take a look at this video, for instance:

http://www.youtube.com/watch?v=VTemb8P1doI

As mentioned in the comments above, internal SRAM of the LPC1788 is not enough to run Linux, however LPC1788 provides an SDRAM interface making it possible to add external RAM.

The Unison RTOS offers the same POSIX calls as Linux including a complete set of I/O calls that you will find missing from things like freertos. The business model is free for DIY and royalty based for commercial products. It tends to be a small fraction of the competitors prices at $999 getting started with serial I/O and a file system. www.rowebots.com for details.

I'm working at a RTOS if you want you can find at github

http://www.github.com/geppo12/YasminOS

(path case sensitive)

Is a simple scheduler I'm going to introduce task priority as soon as possible. I create YasminOS because other OS are too complex or too expensive Actually I'm developing YasminOS with only one vision: simplicity

There are many application that not require a extreme powerful OS, but just as simple scheduler. Actually it's tested on Spansion FM3 architecture or NXP lpc800 (yes work also for cortex m0) in near future I'll test it on nxp 4088....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top