Company / developer | Mark Butcher |
---|---|
Programmed in | C |
OS family | embedded operating system |
Latest stable release | V1.4 / August 2009 |
Marketing target | Embedded systems |
Supported platforms | Coldfire, Kinetis, ARM7, ARM9, ARM Cortex-M3 / M4, AVR32, HCS12 |
Kernel type | Scheduler |
License | Free for non-commercial use/µTasker support license for commercial use |
Official website | µTasker |
µTasker is an embedded operating system (with simulation environment) specifically targeting smaller single-chip Internet-enabled embedded processors (with internal Ethernet controller, internal SRAM and FLASH). It is small footprint but still offers comfortable development and powerful features as typically required in control type applications.
Contents |
Work started on the µTasker project in November 2004. The main impetus was the introduction of the new Freescale 68HC12 16 bit processor MC9S12NE64, which includes an integrated Ethernet MAC and PHY. The idea was to use this as test vehicle for a bottom-up development project starting with an MC9S12NE64 demo board and data sheet, and ending with a fully understood project suitable for use in embedded development projects for typical real-world embedded Internet applications.
The exact development started with getting to know the instruction set of the HCS12 and its debugging possibilities. Fortunately the MC9S12NE64 demo board included a pre-installed serial loader, allowing also some debugging capabilities based on a simple serial protocol, as well as a one-wire debug-module (BDM) built into the chip. After programming an experimental assembler and disassembler for the CPU, the tasks of programming the device via the serial interface, setting break points, reading registers and stepping code was achieved by developing a simple Windows program called NE64_Deb.exe.
These first steps were educational and encouraging but did not represent the main project goal; they were rather necessary tools to start more serious developments. Assembly language was not an alternative for project development since the HCS12 was just a test vehicle for what was envisaged as being a more universal, processor independent solution, and so the GNU compiler from the GNU Compiler Collection was used to start project programming work. Working with the linker map file, the NE64_Deb.exe was however still very useful for stepping through the instructions on the target - it is worth mentioning at this point that it was the only method used on the real target for debugging during development of the µTasker V1.0 project including TCP/IP stack with FTP, µFileSystem [1] and web server.
There were and are of course various quality tools available which would have enabled source level debugging but these were not used due to three main reasons:
The µTasker simulator was not designed with the goal of simulating the CPU of the used processor(s) but rather to allow the programmer to exercise the project code (application, drivers, interrupt routines) on a simulated target device. The simulator allows the code to interact with the peripherals and the real-world, enabling a very high degree of verification to be performed without the need to work on the hardware. Coupled with other various advantages of Microsoft Visual Studio C++, such as its quality editor and run-time checks (like stack verification and monitoring of uninitialized variables) it aided in increasing embedded development efficiency when testing, debugging and solving problems. The standardized development environment also meant that it is inherently processor independent, allowing much easier movement between target processors.
By adding the capability for the simulator to read Ethernet recordings from Ethereal (now Wireshark), the capacity to simulate Ethernet sequences through the entire code (from Ethernet interrupt, through driver, TCP/IP stack and up to the application brought the project closer to its design goals; it was already possible to efficiently develop Ethernet based protocols in a comfortable environment, requiring minimal tests on the final hardware and already with greatly reduced development times. By mid-2005 the µTasker V1.1 project was finding first use in NE64 based embedded Internet projects and a MC9S12NE64 DEMO could be converted to a web browser based BDM module, to achieve programming and assembler level debugging via the network.
The µTasker operating system used for the project is a simple but very efficient and reliable co-operative scheduler. Its features were extended to suit the types of projects that the µTasker was pre-destined for, and the TCP/IP stack functionality and NE64 device drivers were further enhanced over the next period of development. The use of the WinPCap library to hook in the PC's Ethernet controller (NIC) to the simulator extended its capabilities to simulating the NE64 device in real-time network operation.
The foundations for the further development of the µTasker project had thus been laid. The vision of creating a new development environment optimized for efficient embedded project development on small-footprint, single-chip Internet-enabled devices was becoming true - the project continues to be developed as shown by the following milestones:
The µTasker project is presently available for the following devices:
All devices can be simulated in the µTasker simulator. A µTasker project tutorial is available for each device family. The project is completely free for non-commercial use, including forum support. Royalty-free commercial licensing, including personal email support period is available at very attractive prices.
The µTasker project is suitable for commercial projects where reliability, small-footprint, simple design and efficient development is important.
It is also very suitable for use by educational establishments (teaching of processor and protocol stacks) because the µTasker simulator allows students to comfortably test and analyze the involved software without the need for dedicated hardware platforms. It is also popular for use in senior project work.[1]
Since the µTasker project is open-code based and is also free for non-commercial use it has also found use in semiconductor manufacturers' application notes. The fact that the project can be optionally licensed and is fully supported for commercial work also doesn't restrict such project evolution to products where this then becomes an important aspect. A notable example is the choice by the MCU Wireless Systems Solutions Group at Atmel Corp., Colorado Springs to base their Route Under MAC (RUM) stack on the µTasker project.[2]
The µTasker project is recognized by Freescale as resource for working with their ColdFire devices[3], by Luminary Micro for their Stellaris micro-controllers[4], and by ATMEL for their SAM7X and AVR32 products.[5]
Various suppliers of demo boards reference the µTasker project resources as complimentary project sources.[6]
Short-term: Integration of IPv6, extension of USB to include host and USB On-The-Go, with particular emphasis on mass-storage.
Mod-term: Additional ARM Cortex-M3 processors support
Long-term: To be decided based on user feedback