| ▲ | peteforde 2 days ago | |||||||||||||||||||||||||||||||||||||
I would love to better understand how a device launched the year before I was born could be so flexible in its configuration and operation. I can't update the code running on a microcontroller on my desk in front of me without it triggering a reboot. When they talk about rerouting power and performing a "big bang" reconfiguration with a 23 hour lag on equipment that was underpowered when the 8088 came out... it kind of melts my brain. Apparently it still has ten years worth of fuel left! | ||||||||||||||||||||||||||||||||||||||
| ▲ | tavavex 2 days ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||
NASA pioneered a lot of what underpins modern design of critical computer systems. Voyager's systems are impressively robust. As far as I know, they can patch it by directly sending up new assembly instructions that are written into its memory, and doing a warm reboot to get it to start executing new instructions without powering down anything. They had the foresight to make their software highly editable, while also having multiple redundancy and emergency systems. Despite this, I wonder how much pressure the people writing this software feel. Even with all the simulators and months of rigorous testing, sending up something that can (in the worst case) break the probe has to be terrifying. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | ndiddy 2 days ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
Here's a talk about how the Voyager team fixed the flight data computer on Voyager 1 when a memory chip went bad on it a few years ago. It goes over how the flight computer works and he walks through a few assembly routines. https://www.youtube.com/watch?v=YcUycQoz0zg Some of the challenges they had to deal with while developing the fix: - The only source code they had for the flight data software was an OCR'd Microsoft Word document (with typos) that was likely scanned from a hard copy assembler listing printout. - The processor runs a custom instruction set developed by JPL for the Voyager mission. The documentation they had on the processor was incomplete. - Everybody who had designed the flight software was dead. - They had no assembler, no debugger, and no processor simulator. They had no testbed, the only two FDS processors were in space. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | Evidlo 2 days ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
> microcontroller on my desk in front of me without it triggering a reboot Most microcontrollers can update their own flash while running, either with a built-in bootloader or a user-programmed bootloader that takes up a little bit of the flash. What makes you think that Voyager isn't "rebooted" though? | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | estimator7292 2 days ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||
With sufficient motivation and effort, you could have a self-updating microcontroller. You could, if you really wanted to, write firmware just as robust, reliable, and flexible as the Voyager system. It's just that in most cases, the amount of effort required is orders of magnitude higher than is really justifiable. | ||||||||||||||||||||||||||||||||||||||