This is a hard-realtime message passing kernel withand not much else.
- preemptive multitasking
- multiple priorities (round-robin within a single priority)
- timers
- dynamic memory manager
- a low-priority memory compacting task
- a cblock-based character device driver interface
It's written in C++ (g++) for the TMS34010. There's also infrastructure for the Motorola 68000, although I haven't used that for a while. This kernel should be quite portable, given that the 34010 is little-endian and the 68k is big-endian. The 68k-specific code is only 130 lines.
The realtime kernel source is in the lib/libk/ directory of the 34010 source tree, available here.
The Texas Instruments 34010 is a discontinued 32 bit CISC microprocessor with an on-board graphics engine.The 34010 is quite bizarre in that it is bit addressable: to advance a pointer by a byte you must add eight to it. When I discussed this with Richard Stallman he said that gcc would cope with it easily. He was wrong - at all levels gcc is littered with the assumption that
char *p;and
p = p + 1;char *pare equivalent.
p = (char *)((long)p + 1);This development system includes a port of gcc and g++ (2.5.8), a YACC-based assembler, a linker, an archiver, an nm equivalent, a disassembler, a download utility and various other bits and pieces.
The 34k development system may be accessed here.