Elchinator / pixabay.com

Open Source Software

Having earned a living from managing commercial projects in the embedded world, someday I started to get involved in several open source software projects. What a different world it is to develop software without schedule and budget restrictions imposed by customers and managers, who may not always understand, what you are doing, but definitely know that it takes too long and is too expensive. . .

I enjoyed these projects, because they allowed and allow me to learn new technologies and development methodologies. And of course, to keep up my confidence that I cannot only teach students and consult others, but get some real work done . . .

Open software users too may have demanding requirements and urge you to support them, even if they don't pay you for your work . . . Now, after nearly 20 years and more than 300.000 downloads I finally decided, that life is too short to further maintain these open software projects and answer all these "how do I . . ." questions and new feature requests.

Some of these projects were:

Linux Kernel Module AZTCD for CDROM Drives

My first open source project was a Linux kernel driver for a CDROM drive. Back in 1994 when I tried to install the 0.9.x (!) version of Linux on my PC I had to learn, that my CDROM drive was not supported. In the first half of the 1990s CDROM drives used proprietary hardware and software. Guided by E. Mönkeberg (GWDG) I wrote aztcd.c, which Linus Torvalds himself approved to integrate into the Linux kernel. After some more years of development my software not only supported my own Aztech drive but also those from Orchid, Okano, Wearnes, TXC and CyCDROM. Fortunately, by the end of the 1990s the CDROM drive industry stopped using proprietary solutions and moved on to the harddisk compatible IDE interface. Thus, aztcd.c was no longer needed and now peacefully rests in the graveyards of ftp.kernel.org.

LTOOLS

The LTOOLS are a set of tools to read and write Linux Extended filesystem partitions from within Windows without booting into Linux. They were one of the first tools to allow interoperability between Windows and Linux. The LTOOLS started as a bundle of command line tools and were extended by a Java, a .NET and web browser-based Graphical User Interfaces. A server component even allowed remote access. The LTOOLS were featured in the Linux Journal, in the Linux User magazine and here.

IOlib for Matlab/Simulink and CrackNT

The IOlib library allows access to ports, kernel memory, timers and interrupts to control lab hardware and implement soft real-time applications in Matlab/Simulink. Additionally I had to develop Windows kernel driver crackNT.sys, as the Windows operating system restricts such functions in user mode to a large extend. Fortunately, newer Matlab/Simulink releases provide similar functions out of the box or via a toolbox (however not for free ...), so IOlib no longer is required. 

Real-time OS HEOsek

To support lab experiments, I wrote real-time operating system HEOsek, which uses a subset of the OSEK/OS and AUTOSAR OS application programming interface. Besides a port for Freescale's HCS12 microcontrollers and the Dragon12 evaluation board, a Windows and a Linux version was developed to allow more flexible debugging of applications than an embedded microcontroller environment would provide. Additionally, a Hardware Abstraction Library HAL12 for the HCS12 was implemented. HEOsek profited from experience from my previous Windows and Linux ports of uCOS-II.

Windows Class Library ZWinLib

As I frequently needed small tools for my students' lab projects and didn't like solutions like MFC, wxWidgets or gtk available back then, I developed a set of lightweight class libraries for the Windows WIN32 API. ZWinLib allows to build graphical user interfaces and helps with TCP/IP and serial communication, while ZWinSQL provides C++ classes to deal with SQLite databases, ZWinXML encapsulates libXML and ZWinCrypt implements some crypto algorithms like RSA, AES and hash functions. The latter definitely is not encouraged, you should always use established and well-tested Crypto libraries like OpenSSL!

Because we have powerful cross-platform solutions like QT and others today, none of my libraries is really needed, but you can learn a lot when implementing it yourself - and my solutions are much more lightweight, think Kilobytes rather than Mega- or even Gigabytes ...


Interested in my projects? Well, please remember, none of the software packages is available for download any more. So use my projects as an inspiration, but do as I did with AZTCD, the LTOOLS or IOlib: As there was no solution available, I developed my own. That is what engineering is all about ...