Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

Free LPC2xxx RTOS for non-commercial use

Free LPC2xxx RTOS for non-commercial use

2004-03-07 by kristianstad2001

Hello all,
I've followed this group basically from the beginning and I've 
notices that a recurring question/subject is real-time operating 
systems.
eCos is of course an interesting alternative, but as some of you have 
noted, the code size is rather large. This is true even if most of 
the functionality is removed in the configuration process.
Then we have uCos-ii, which is a widely used RTOS in smaller 8/16-bit 
designs. This RTOS has been ported to many processors, and there is 
of course a documentation that is "more than what is common" :-)
There are ARM7 ports for uCos-ii, but not specifically for LPC2xxx. A 
port has been promised in the near future, I believe.

Now, let me present a third alternative. I've just completed an 
initial port of our RTOS to LPC2xxx. It's a configurable RTOS, just 
like eCos and uCos-ii. We have however taken the configuration 
possibilities a bit further. In uCos-ii, you can configure the RTOS 
by including/excluding functions. In our RTOS, you can also configure 
the internal implementation. Just as an example, the ready queue is 
implemented differently if you can have multiple processes with 
identical priorities or if you require each process to have a unique 
priority. Our philosophy is that each application designer/programmer 
makes this (and similar) trade-offs, as opposed to the RTOS designer.
eCos has some configuration options for different internal 
implementation (the option above exist, or example), but slightly 
less details than we have.

So what's the catch? Well, as many others, we work under commercial 
constraints... but at the same time we would like to make some form 
of contribution. We offer basically the same license as uCos-ii. This 
means that our RTOS is totally free for non-commercial use. Just like 
uCos-ii it is not allowed to distribute the source code, but it can 
be generated when you have the program "InfraBed" installed (see 
below). So, if any of you would like a RTOS for LPC2xxx to start 
experimenting with; You are very welcome to test ours.
If you would like to use the RTOS in commercial situations, for 
example embed it into a product or ship a RTOS-library with LPC2xxx 
hardware (to for example increase the customer value for the offer) 
we require that you acquire a commercial license from us.
If you are interested the licensing terms can be found on our home 
page. There are also special deals if you for example ship library 
code with hardware.
If you are a hobbyist/teacher, don't bother about this - just use the 
RTOS!

Even though it may seem so, this is not a (spam) sales letter. We 
would just like to make a reasonable contribution (given our 
commercial constraints) that you all can benefit from.

So, now the details. The port has just been completed and undergone 
initial testing. All processes must run in ARM-mode. A Thumb-port 
will be available in the near future. I guess that this is not a 
problem for most of you since the LPC2xxx processors have large FLASH 
memories.

We ship all code within a graphical configuration tool called 
InfraBed. If you would like to test the RTOS, just download InfraBed 
(can be found on http://www.EmbeddedArtists.com under the download 
section). Install the program and register as a demo-user (which is 
free and basically just requires you to supply a valid name and e-
mail address). A key will then be mailed to you within 24 hours. 
Enter this key into the program and perform something we call an ESIC 
update. ESIC stands for Embedded System Infrastructure Component. The 
RTOS is one of these basic "building block components".
You can now configure the RTOS after your specific needs. Semaphores, 
queues, and signals (OSE compatible) are supported as synchronization 
primitives. Other synchronization primitives will be added based on 
customer requirements (or your request). Event flags will for example 
be added in the near future. There is also some additional 
functionality, such as timer handling, memory management, and an idle 
process (with CPU utilization calculation).
Code and documentation will be generated based on your configuration 
settings.
(As a side note, there are some parts of the documentation that needs 
more details. We are working on updating missing parts. For example, 
specific documentation about the ARM7 port is not yet available. The 
code is however quite self-explanatory if you need to study it.)

We also supply a complete build environment based on GCC for our 
ports. This environment is not yet complete, but the GCC compiler 
supplied from Keil (http://www.keil.com) works perfect. It's free to 
download. We will also add ports that compile under IAR and ADS. If 
you are in a hurry, you can do this port by yourself in a couple of 
hours.

We normally include the hardware abstraction layer code (HAL) in the 
code that is automatically generated. Until this has been completely 
integrated I've put the HAL code in a zip-file.
http://www.EmbeddedArtists.com/arm7hal/ARM7_HAL.zip
This zip-file also includes all startup-files needed to compile under 
Keils environment. Observe that you must create a project file 
yourself and include all source code files (if you are using 
uVision3). Ordinary make-files will be added in the near future.

When you start an InfraBed project, define it as a "generic" project. 
Set the following project settings:
  * Unsigned 8-bit:  unsigned char
  * Unsigned 16-bit: unsigned short
  * Unsigned 32-bit: unsigned int
  * Signed 8-bit:    char
  * Signed 16-bit:   short
  * Signed 32-bit:   int
  * Boolean:         unsigned char
  * Alignment:       4 bytes

The zip-file contains a subdirectory named "hal". Copy this directory 
to the place where the RTOS code is generated.
The two files in the subdirectory named "stub" shall be copied to the 
directory "pre_emptive_os/stub". The two files shall over-write the 
existing files.
I'm very aware that there are a number of steps here that you must 
perform to get the RTOS to compile. When the HAL code has been fully 
integrated and the build environment is ready, all this will be 
performed automatically. If you cannot wait a couple of weeks you 
will however need to perform these steps. I will help and try to 
solve any problems you may encounter in getting the RTOS up-and-
running.

Sorry for this VERY long letter. In short - I hope that some of you 
will find this RTOS useful!

Best Regards,
Anders Rosvall
Hobbyist and working for Embedded Artists AB
I can be reached at: Anders.Rosvall@... 
or the address where this message is posted from.


PS. If you are interested about code size:
Minimum: about 3.4 kbyte in ARM mode
Maximum: about 20 kbyte in ARM mode
It's basically up to you how much functionality you need...
DS.

Re: Free LPC2xxx RTOS for non-commercial use

2004-03-07 by embeddedjanitor

While I have not tried your RTOS yet, I would like to congratulate 
you on the excellent RTOS overview. I've been embedding for over 20 
years and this is the best descriptive text on RTOSs I have ever seen.

For anyone wondering:
* What an RTOS is
* What the issues are wrt RTOSs

I strongly suggest you read 
http://www.embeddedartists.com/pdf/refdoc/refDoc_rtos.pdf

Great job guys!

-- Charles

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.