Hacker News new | ask | show | jobs
by sho_hn 971 days ago
The main CCS computers are a custom 18-bit (not all registers are 18 bit) design from General Electric, used on both the Viking and Voyager missions. The onboard software is mostly in assembly.

There's two of them.

They send software updates fairly regularly (including a nearly full rewrite in 1990) and this is a common question. You can find some statements in older reporting on other updates..

It's in some sense not very exciting. Basically, it's an interrupt-driven system and you can, by radio command, invoke handlers that will rewrite some memory holding the program with new contents and hand control back to other routines. Of course with the expected error handling and failover protections in place. NASA got quite good at it during the Mariner missions, which saw the first remote updates for their programmable sequencers, and by the time of Viking and the CCS, it was a routine part of the requirements.

There's tooling written in Fortran (and later partially ported with C) that supports the Earth-based team in preparing the updates.

The patches discussed in the article are actually for a different type of computer in the system, the AACS (Attitude and Articulation Control Subsystem). But it's similar there: There's redundancy (there's two) and you patch memory contents, do a memory read-out to double check and kick things into gear.

1 comments

>It's in some sense not very exciting.

Well, neither is the Doom source code for most people, but for others it could be pretty cool to read, especially that the moon lander's source code is already public.

Don't get me wrong, it's a space ship so of course it's incredibly exciting and no doubt also a career highlight to work on! :)

Just sayin', the OTA part is fairly mundane implementation-wise, flipping bits. The decision to engineer a system around it and have it in the requirements is maybe more audacious. Also, the technology involved with us still being able to radio into these remore devices at all is amazing and the unsung hero here.

Edit: If you go to the FSW section here, you can read a little bit of what amounts to release notes for the onboard software changes:

https://csclub.uwaterloo.ca/~pbarfuss/VIMChallenges.pdf

Includes a cute anecdote about dealing with a randomly flipped bit in memory.

My favorite bit:

"A CCS FSW patch was developed and implemented in 1995, and linked on the spacecraft in 2006 for V1 and 2005 for V2 to automatically restart some of the critical functions in the event of an Error entry. This patch was exercised in flight in 2014, nearly 20 years after it was installed, when one of the CCS processors went into an error entry on V1; the patch worked as designed."

But hey, the Pixel gets 7 years now! :-)