What is middleware?
Middleware is the enabling technology of Enterprise application integration. It describes a piece of software that connects two or more software applications, allowing them to exchange data. Originally middleware is a word for large scale enterprise computing application.
In embedded system, middleware is the software components running on top of operation system and offering services for applications. Embedded system is dedicated for a special prupose, therefore different embedded systems have different middleware components. Meanwhile, middleware has close relationship with the operation systems. Most of the middleware is tailor-made for specific OS.
For example, uC/OS-II is popular in embedded applications. This OS has many middleware for embedded systems, such as uC/TCP-IP, uC/FS, uC/GUI, uC/USB-device, uC/USB-host, uC/FL, uC/Modbus, uC/CAN, uC/Probe and uC/BuildingBlocks, its OS components tool.
I don't want to duplicate all middleware suites for mentioned OSes individually. I only list some important open source middleware for your reference.
GUI
Embedded Wizard (EmWi) is a PC tool for developing and prototyping platform independent Graphical User Interfaces (GUI) for embedded systems, consumer electronic devices, automotive and industry appliances.
It's sophisticated and user-friendly authoring tool facilitates the design of the GUI appearance as well as the coding of the GUI behavior. It can solve almost any given 2D GUI task and enables you to develop, customize and adapt your GUI across various product platforms with minimum effort.
Meanwhile Tara Systems also offers middleware like DBS/EPG/Service Manager/Subtitle Decoder/Teletext Decoder/Close Caption/HTML 3.2 Browser for embedded visual systems.
MiniGUI is a cross-operating-system graphics user interface support system for embedded devices, and is an embedded graphics middleware. It aims to provide a compact, fast, stable, lightweight, and cross-OS GUI support system, which is especially fit for real-time embedded systems based-on Linux/uClinux, eCos, uC/OS-II, and other traditional RTOSes, such as VxWorks, ThreadX, and Nucleus.
PicoGUI is an Open Source project to create a new GUI architecture designed to be usable on systems ranging from embedded to desktops.
QT Embedded and QPE (Qt Palmtop Environment) for Palm size handheld device from Trolltech.
br>
br>
br>
br>
br>
br>
br>
br>
br>
br>
Microwindows/Nano-X. The Nano-X Window System is an Open Source project aimed at bringing the features of modern graphical windowing environments to smaller devices and platforms. Nano-X allows applications to be built and tested on the Linux desktop, as well as cross-compiled for the target device. The Nano-X Window System was previously named Microwindows, but has been renamed due to conflicts with Microsoft's Windows trademark.
File System
Most of the embedded File systems are ported from Linux distribution. Other file systems are tailor-made for specific RTOS.
ScalingWeb is a software development team based in Ukraine. Embedded File System (EFS) is a library that allows you to create virtual file system in a single file. It can be useful when you need to create really big number of small files. It will still be blazing fast even when you have millions of files. Encryption layer could be easily added if you want security.
The Prex project is an open source initiative to provide a portable real-time operating system for embedded systems. Prex is designed specifically for small memory footprint platforms. It is written mainly in C language based on traditional microkernel architecture. File system is availale for download as well.
USB
HCC embedded offers storage solution for embedded systems. From flash file system to USB desive and host.
libusb-win32 is an open-source driver library that enables Windows applications to access USB devices (under development).
PORUS, Portable USB Periperal Stack, an open source USB stack for TMS320VC5507 DSP.
TCP/IP
It is interesting to know there are two TCP/IP stacks for embedded systems available from Swedish Institute of Computer Science.
The open-source uIP TCP/IP stack provides TCP/IP connectivity to tiny embedded 8-bit microcontrollers, with maintained interoperability and RFC standards compliance. uIP was developed by Adam Dunkels of the Networked Embedded Systems group at the Swedish Institute of Computer Science but is further developed by a world-wide team of developers.
lwIP is a light-weight implementation of the TCP/IP protocol suite that was originally written by Adam Dunkels of the Swedish Institute of Computer Science but now is being actively developed by a team of developers distributed world-wide headed by Leon Woestenberg.
uC/IP (pronounced mew-kip) is a project to develop a TCP/IP protocol stack for microcontrollers. The code is based on BSD code and therefore carries the BSD licence. We do not require that you contribute changes back to us but we would sure appreciate it.
A small implementation of TCP/IP, includes FTP client. It has been ported to 68K, x86, 8051.
Database System
Metakit is an efficient embedded database library with a small footprint. It fills the gap between flat-file, relational, object-oriented, and tree-structured databases, supporting relational joins, serialization, nested structures, and instant schema evolution. There is a C++ API, a Python binding called Mk4py, and a Tcl binding called Mk4tcl. You can manipulate and exchange data between any of these.
Others
ezHomeTech SoC Software Platform
Rockbox is an open source firmware for MP3 players.
Mozilla Developer Center, developer can find source for JavaScript and XUL for system scripting and UI design. JavaScript is powerful in embedded systems as well. Although most of the embedded systems have not used that feature so far.
|