16 thread user programmable controller
This system is built upon a micro kernel and features 16 virtual processing units. Each thread execute one token, or part of a sequence in a round robin fashion in the background while the CLI is also operating.
Since true multi-tasking (aside from dual core) does not exists, the main cli is broken down into several pieces (states) and the virtual threads run between these states. Each thread is also broken into several states and a single operation on one thread may occurring while other threads are also processing.
The layers of the system, from the top down.
CLI - Command line interface. The CLI is known as IceCap, it is a CLI that was developed independently from this project, and thus has its own version number.
Background Task Manager - Background task processing handles management of any system FIFO buffers, long, or timing critical portions of the user program, such as the statement 'waitHigh'. (see statement waitHigh for more info)
Thread Interpreter - This is the virtual cpu/program interpreter that handles the execution of the 16 virtual threads.
dmalloc - Memory manager was developed for this project to simplify using external ram in the core system program. To fit the entire system within the limits of the internal flash of the microcontroller, it was beneficial to unify one piece of code (dmalloc) instead of writing several pieces to handle different areas in the system.
Kernel - The Kernel handles all i/o to the hardware was also developed independently from this project, and also has its own version number. For the techies, this is a very similar type of kernel to a linux /dev device manager.
Drivers - The hardware drivers were written for each type of hardware attached, ex: external RAM, external EEPROM.
Hardware, this is the physical hardware in the system.
This system will store user programs on an External EEPROM, there is tiny block file system, very similar to FAT. Programs are stored as standard ASCII text.
When a program is loaded into RAM, it is at that time semi lexed, parsed and tokenized, to allow faster execution at run time.
Note: Stored programs are not tokenized, thus allowing flash upgrades to the microcontroller itself without affecting the stored programs. Thus a new tokenizer, token changes, more optimizations can be implemented and existing programs will continue to run.
| Project Specs|
|sw ver: ||1.10|
|All Caps: ||.01uF|