liquorice.sourceforge.net
Home of the Liquorice project.
Aims
The Liquorice project aims to provide a reliable,
high performance, environment for embedded application development, including:
-
Real-time kernel facilities that supports
multiple threads, thread priorities and a wide range of synchronization
mechanisms.
-
Pre-emptive thread-switching, with any lower
priority thread being pre-empted when a higher priority thread becomes
runnable.
-
Almost entirely written in C.
-
Highly modular, with each service or kernel
mechanism being implemented as distinct units. This makes replacement of
modules relatively simple, either on the basis of function or to allow
optimized versions for specific target hardware.
-
Standard set of peripheral device handlers
and support services.
-
IP Networking (UDP, TCP, ARP, PPP, SLIP, HTTP,
SNMP, etc).
-
Thread-safe C library facilities.
-
Dynamic binding of services at run-time. This
allows different protocol services to be attached to device drivers without
recompilation.
-
Scalable from modest 8 bit systems to 16,
32 or even 64 bit.
-
Designed to support SMP (symmetric multiprocessing).
There are many other (secondary) elements
that are not included in this list, but a lot of these are side effects
of the ones listed (e.g. IP networking should be bomb-proof, uncrashable,
etc.).
Latest News
The 20001018a snapshot features a new implementation
of PPP and a number of minor bug fixes and enhancements. Another major
change is that as of this release the software is now released under the
same terms as the FSF's GUILE. Specifically, this is a GPL with an exception
clause that allows the code to be linked with non-free applications, thus
eliminating a problem with the LGPL used for previous snapshots.
Current Status
The software is somewhat in its infancy at
the moment, although there's quite a lot already. Whilst the code is becoming
more stable it's a little early to call it "production ready". The snapshots
should give some feel as to how things are put together and the aim is
to make a new release for every few days worth of development.
Liquorice currently supports Atmel AVR
series of microcontrollers (high performance 8 bit RISC architecture) and
i386-derived PC systems (32 bit architectures only). Whilst it is probably
best suited to larger devices, the kernel libraries can be used with devices
that have as little as 8 kBytes of code space (e.g. AT90S8515). It is hoped
that at least one more CPU family (probably the ARM7TDMI) will be supported
before v1.0 is released (64 bit support and SMP will probably have to wait
until v2.0). [Aside: there's no particular preference for any of these
CPUs; they are simply the ones for which I have development hardware -
DJH].
Whilst it is classed as an operating system
(or real-time kernel, etc), Liquorice is implemented as a series of libraries
because it is intended to run in the same address space as the application.
One advantage to this of course is that only those functions that are required
for a particular application are linked to it, keeping the memory footprint
as small as possible. If you have 256 MBytes of RAM and an 800 MHz Pentium
III processor this probably isn't a concern, but try doing things with
32 kBytes of RAM (yes, kilo not Mega) and a 4 MHz ATMega103.
The software is designed to be built using
the GNU GCC compiler and GNU binutils. The AVR family is now supported
in the latest GCC and binutils snapshots, however an older and perhaps
more stable port is currently being used (patched up v2.95.2 - please see
Denis Chertykov's site http://www.overta.ru/users/denisc/).
It would be nice to support the newer versions as they should make things
faster and smaller! [Another aside: there's no particular reason why it
would not be possible to support other C compilers and assemblers, but
I don't have any others and the code does use a few GCC tweaks to gain
speed - DJH].
The development environment is currently
Linux, although everything is designed to try and make it easy to modify
to build under other OS platforms. There's nothing too Linux-specific at
the moment, although a few parts are a little *nix-oriented (although I'm
sure supporting Windows wouldn't be difficult however).
So far we have:
CPU support:
-
(Atmel) ATMega103
-
(Atmel) AT90S8515
-
(Intel, AMD, etc) i386, i486, Pentium, etc
- currently assumes the presence of an FPU (i387, i486DX, etc).
Kernel mechanisms:
-
Contexts (basic unit of multi-tasking) and
threads.
-
Spin locks.
-
Memory heap management and reference counted
memory buffers.
-
Condition variables, counting semaphores and
reader/writer locks.
-
One-shot timers.
Debug support:
-
LCD character matrix or text-mode CRT output.
-
Lots of built-in sanity checking.
-
Telnet-style debug/query mechanism to inspect
internal data structures (via TCP/IP).
Device drivers:
-
UART drivers for NS16550A and AVR-UART.
-
Ethernet drivers for 3Com 3C509B ISA Ethernet
card, NE2000 Ethernet solution (card or chip/chipset), SMC 91C96 Ethernet
solution (card or chip) (AVR only) and Intel EtherExpress Pro/10+ Ethernet
card (i386 only).
-
Bit-banged I2C bus master.
Services:
-
IP (v4) networking, featuring SLIP, PPP, ARP/Ethernet,
ICMP, UDP and TCP.
v1.0 will not be issued for a while
yet (probably not until near the end of 2000) because it will take quite
a while to include all of the software that is on the feature list. Please
feel free to submit any patches, bug fixes or new facilities before the
v1.0 release - they will be more than welcome. Each tarball now contains
a current "to-do" list and so should give some idea about how things are
progressing.
If anyone is interested in extending (perhaps
filling in one of the to-do blanks) or porting the software, please feel
free to send a note to the liquorice-devel mailing list, or alternatively
contact:
Dave Hudson
davejh@users.sourceforge.net
Licensing
Most of the project's files are released under
the GNU General Public License v2 with a special exception clause to allow
the linking of Liquorice code with non-GPL'd software, whilst the remainder
are either purely GPL'd or under completely non-restrictive terms. None
of the pure-GPL'd files are linked into the Liquorice executables however,
thus facilitating the use of Liquorice in applications where the GPL would
be unacceptable.
More details...
Documentation
As of "snapshot 20000716a", some (fairly useful)
documentation is included with each release tarball. Each subsequent release
should contain a little bit more. The information hasn't been put into
HTML (XHTML, XML, etc) format yet so it is not yet available on this web
site. As of snapshot 20000908a there is a significantly overhauled, although
still not complete, documentation set.
File Releases
The latest set of release files is "snapshot
20001018a".
Details of changes between each release
can be found by looking at the notes associated with each one. A full change
history is included in each snapshot's tarball.
More
details...
Mailing Lists
There are two mailing lists currently active
for this project. The first, liquorice-announce, provides details of anything
new or particularly important. The second, liquorice-devel, is an unmoderated
forum for discussing anything relating to the development of Liquorice
or applications using it.
Anyone interested in Liquorice should consider
joining them. There are a lot of possibilities for how the software may
develop and the main source of feedback is currently the liquorice-devel
list.
More
details...
Hardware
The original aim of the Liquorice project
was simply to provide software, however whilst developing things such as
Ethernet drivers it became obvious that it would be beneficial to add some
hardware elements too. None of these are necessary in order to use the
software, but may serve to help the software's development and use.
More details...
The Sourceforge Project Site
The sourceforge project page contains the
latest project status, released files and details of support (e.g. mailing
lists).
More
details...
Links
This project is hosted on Sourceforge.
Without this service it would be far more difficult to develop, support
and distribute the Liquorice files and web pages. Many thanks go to the
authors and admins :-)
This site is a member of the AVR web ring.
The ring is a collection of sites that all contain related to the Atmel
AVR microcontroller family. There are sites with a wide variety of projects,
information, source code, adverts, other links, etc.
[ Previous
| List
Sites | Next
| Random
Site]
[ Previous
5 Sites | Next
5 Sites | Join
]
Last updated:
18th October 2000 - Dave
Hudson