UTasker

µTasker
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

History

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:

  • although an improvement on assembler level debugging - they still represented a bottle-neck in embedded development work (the tedious download procedures with additional disadvantages when breaking during protocol development work - causing TCP connections to timeout, etc.).
  • the fact that the various solutions usually require a new learning curve for each new processor used.
  • the vision was to develop something new to allow the majority of this work to be performed in a simulator based on a world-class software development environment (Microsoft Visual Studio C++). This part of the development stood in the foreground and was to be used to solve main weaknesses in traditional embedded development work.

Simulator

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.

Operating System

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:

  • In early 2006 the µTasker project and its simulator were made available for free non-commercial use in the version V1.2 - at the time still only for the MC9S12NE64. Commercial licensing was offered at an attractive price (royalty-free with personal email support during the support period).
  • In mid-2006 ports for the ATMEL AT91SAM and the Freescale Coldfire M5223X (effectively the replacement of the one-off MC9S12NE64 with internal EMAC and EPHY) were made available and the µTasker V1.3 was released.
  • Late 2006 the µTasker 'Bare-minimum' boot loader [2] was added to the project, allowing firmware uploads via Ethernet/Internet from a standard browser - optionally encrypted.
  • In 2007 a Beta port for the STR91XF was introduced. In July 2007 the µTasker forum support was taken into operation.
  • In 2008 Beta ports for the NXP Semiconductors LPC2000 (including LPC21XX and LPC23XX) and the Luminary Micro LM3Sxxxx were released and USB device was add to the project.
  • In 2009 µTasker V1.4 and a new AVR32 port were released, with new uGLCDLIB graphical library/simulator (presently V1.1). A powerful Modbus extension pack was added for industrial users including multiple serial ASCII/RTU/RS-485 and MODBUS/TCP with flexible bridging, gateway and routing capabilities.
  • 2010 utFAT (FAT32 File Allocation Table compatible module specifically for SD and HCSD cards) added to packages.
  • 2011 Freescale KINETIS port released. USB mass-storage device class support added, including a boot loader mode based on this.

Present state

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.

Uses

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]

Goals for 2011

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

References

  1. ^ Systemeinbindung eines MMI-Panels Senior project at the Technical High School - North-West Switzerland - german
  2. ^ RUM is a highly flexible stack solution with support for IPv6 and 6LoWPAN for low power and low cost wireless sensor network applications. See ATMEL application note AVR2070
  3. ^ Coldfire 3rd Party Tool Vendors
  4. ^ Stellaris 3rd Party Products
  5. ^ AVR32 3rd Party
  6. ^ Adapt9S12NE64 Module

External links