|
|
|
|
|
by FirmwareBurner
971 days ago
|
|
>NASA engineers are working on a software patch that will order the Voyagers to fire their thrusters less often but for longer periods to maintain their attitude Anyone got any detailed info on what CPU, software and programming language is used on the Voyager that can support something as "advanced" as OTA software patches? It was launched in 1977 and since aerospace uses tech older than consumer tech, it probably isn't running anything remotely as advanced as a Z80, 6800 or 6502 which came out only a few years before Voyager was launched. Any info I found point to a custom 18 bit CPU built out of discrete TTL 7400 series parts which would be period correct, but not much details on how the SW, programming and OTA updates work. I assume NASA has the full HW-SW stack, compiler, toolchain, version control, plus HW and SW simulators for it so making some of them public would be really cool considering the source code of the moon lander is already public. What do they have to loose? |
|
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.