|
Before and during my years at Chalmers, I worked part time with
development of embedded real time systems for Contal AB,
a company specializing in security, alarm and control applications.
In the beginning, I did minor modifications to existing code. The trick was to understand both what the existing code did and what it actually was supposed to do. The embedded systems used Intel's I8051 processor and had a small multitasking real-time operating system, OS51. Most of the processes were written in C and reasonably straightforward, but everything that had to run fast used assembly code. I don't know the design criteria for the I8051, but with a MC68000 background I found the instruction set highly unintuitive. After a while the work got more complex and hence more interesting as well. Together with another university student, Håkan Åhlström, I rewrote all the code more or less from scratch. We spent a lot of time optimizing the assembly code. We would write each routine separately, then compare our results and merge them, counting clock cycles and code size to get the tightest code possible. Now that was programming! We also got to install and service the embedded systems in the field. I still count the installation of a door control system at one of Sweden's major airports as one of the high points in my professional life. To see the system go live after all those late nights was very satisfying. Unfortunately, Contal is no more, but the systems can still be found in everything from autonomous environment control stations to major airports and nuclear powerstations. |
![]()