The Mars Curiosity Rover has recently landed on Mars! Here’s some info on the hardware and software:
Hardware:
• A BAE RAD 750 single-board computer with a 750Mhz Power PC CPU;
• Two gigabytes of flash memory;
• 256 megabytes of DRAM;
• 256 kilobytes of electrically erasable programmable read-only memory.
• 5 megabits per second from earth until it puts up the main antennae, then it’ll get to 40 megabits.
• If I’ve done my maths right that’s 5 meg a second, not bad for a connection to Mars!
• 14 minute latency. That’s 28 minutes round trip!! Bit slower than your usual 200ms to google!
• Modern CPU’s will not work properly because of radiation! At the processor is smaller they are more suspectable to protons causing upsets (errors)!
• So they have multiple CPU’s all running the same code on them.
Operating system is named “VxWorks” :
- Has no memory paging to disk, so that the application is completely deterministic.
- So your app code and data must fit inside the RAM on the machine
- Has no processes, but it has tasks, which are similar to threads, but switching between threads has very little overhead compared to linux/windows
- If you give a task priority #1, then all other tasks will be completely on hold
Software:
- Written in C (assembly would be much more error prone)
- 3.5 million lines of code of which 1 million lines hand-coded and 2.5 million generated
- every function call is wrapped around a “reliability library” – if it needs to be super reliable then it’s tested multiple times, if it needs to be fast but not super reliable (eg image
capturing) then there’s a trade off.
Other Cool Stuff
The OS is about to be upgraded, and it’s a big risk!! The current version of the OS has all the code for the entry and landing, and now it needs all the code for roving and research (and instruments etc):
http://www.theregister.co.uk/2012/08/07/curiosity_software_upgrade/
That is one massively awesome project.