When NASA needs an operating system for a Mars lander does it go knocking on Bill Gates’ door? The answer is no. The newly arrived on the planet Phoenix Lander is powered by a variation of Linux running on a specially hardened CPU and motherboard produced by IBM.
The CPU may not sound very exciting, and certainly would not be of interest to the average computer gamer. The Rad6000 CPU is a RISC (Reduced Instruction Set CPU) that has been hardened to withstand the ravages of radiation in space. Built by IBM it clocks in at a screaming 33mhz. For those of you not familiar with the gobeldy —- that computer geeks espouse, 33mhz is about equivalent to the old and very obsolete Intel 386 processor that was all the rage a decade ago. You certainly could not run Microsoft Vista with this kind of speed.
As far as RAM is concerned NASA doesn’t need a lot, it is rumored that a scant 128 megabytes is all they need.
When it comes to software NASA need something that is bullet proof, and bullet proof software is what NASA is great at. It is not often that they make mistakes. At the heart of the Phoenix Lander is a variant of Linux, VxWorks, this is an embedded Operating System (that means it lives on a chip). It is designed in such a way that you don’t get the dreaded Microsoft ‘Blue Screen Of Death’, thats because it is pretty damn difficult to reach out to Mars and reboot the lander after the Operating System crashes. In the event of a serious problem VxWorks will reboot into a ‘safe mode’, and wait for the controllers on earth to reactivate it, or send a patch for the problem.
The Phoenix Lander is not autonomous, it needs to be told what to do, and when to do it, but because of the huge distances involved there is a 20 minute delay from the time a command is sent from Earth and the time it is received on Mars. For that reason alone it is necessary for the software to have inbuilt ‘self preservation’ tendencies.
NASA gets around the 20 minute time lag by sending a whole days worth of tasks at one time, I guess you could call it a daily ‘To Do’ list. This list is in the form of computer code written in a programming language called ‘C’. The NASA programmers and engineers sent approximately 1000 to 1500 instructions to the lander every day. One mistake in the code results in a day lost, or even worse damage to the equipment on the lander. I have been in the computer industry for over 30 years, and the industry standard for developing computer code is that the average programmer can write and test about 10 lines of code a day. In layman’s terms, if your computer program has 100 steps in it, it will take you 10 days to write and test it. NASA are doing what a regular programmer would take nearly 5 months to achieve in 24 hours!
I have nothing but respect for these people. Great job guys!
Article Update – Mike Deliman of Wind River was kind enough to grant me an interview. You can read it here.
Article Correction – WxWorks is a Unix derivative, not a Linux Derivative. My appologies for the connfusion – Simon