Mishka> Нет, конечно. Проблема в чистой воде в перекладывании всё на программистов в очередной раз.Mishka> Дело не в считалке. Дело в тех самых железячниках, которые не могут кучу сделать. А огрехи приходится чинить за счёт программистов. Хотя и программисты виноваты — спору нет.
Ты не прав. Только программисты и виноваты по одной простой причине. Железо делалось под спецификацию, и соответствие спецификации проверяется на испытаниях. Ниасилили — переделают, но до тех пор изделие не примут. А программисты лазят в своё хозяйство всю дорогу, вплоть до ковыряния работающего КА. Всё что сломали после запуска — сломали программисты, больше ни у кого такой физической возможности нет.
Mishka> Проблема состоит в том, что любые обновления и поправки на время полёта оставляют на программёров. Как правильно сказал Тика — больно легко. И в этом примере очевидно, что произошло рассогласование параллельно работающих частей — пришла важная команда в момент апдейта. А предусмотреть вариант, когда можно нахрен всё закрыть, чтобы никакого прерывания — инженеры не захотели — отложили на программёров. Более того, не захотели сделать специальную команду, которая закроет на время, а потом откроет, даже, если софт глюкнет (основная причина инженеров не делать команду, которая закрывает всё и вся), чтобы через 20 секунд всё открылось и стало бы работать.
Оставляют. Но либо программеры не способны ответить "учёным" (в кавычках, потому что какой-то сенайл планетолог может погонять проект, в котором лыка не вяжет, тот же бортовой комп) что "делать то-то не рекомендуем, успех операции не гарантирован", и потом с чувством выполненного долга показать пальцем на виновника всех бед. Либо программеры сами виноваты, потому что не отдают себе отчёт в возможных последствиях своих действий. Это скорее свойственно молодёжи.
Так вот, я думаю там всё получилось просто. Комп там на уровне старого контроллера, сильно он давний и радхард и квалифаед — не может там быть другого. Пока туда сливалось сообщение, возникло прерывание, и сообщение ни в каком-то буфере, ни где ещё не осталось. Просто тупо прервалось. Поскольку это не заумная РТОС, а простой контроллер, эти вещи понимаются интуитивно, и в любом нормальном контроллере есть команда запрета прерываний. А немаскируемое аппаратное прерывание (ножка проца) — это для вещей, важнее которых ничего быть не может, в том числе и важнее залива софта. Что может быть важнее чем залив софта в фактически дистанционно управляемый КА — я плохо представляю. К железу претензий не может быть лишь по указанной причине: сделано как заказали. Программеры должны были быть аккуратными, а скорее всего подумали что пронесёт (указано что "время передачи было миллисекунды"), а не пронесло.
Mishka> Я бы на месте программёров послал бы всех в НАСА к инженерам со словами — патч культура кончилась. Никаких программных обновлений. Пусть железячники думают, как они собираются обновлять зонд.
Не к инженерам, а к администратору НАСА, с вопросом: а ничего что мы поковыряемся в мозгах нашего флагшипа и супер сайнс вихикла без гарантий успеха? И если вдруг нельзя, то либо сделать аккуратно с гарантией, либо "под вашу ответственность, сэр".
Mishka> Старая гвардия косячила не меньше. Только про это не любят говорить. Тогда это называли — опытом.
Всё же народ был аккуратнее и знал свою матчасть лучше, и при этом возможностей что-то исправить было меньше. Пионер-6 (вроде) до сих пор летает — 40 лет в космосе, и что-то там до сих пор работает, отвечает на запросы. Сейчас возможностей куча, а всё равно не сильно помогает.
з.ы. Кстати про кучу. У Кассини двухгиговый твердотельный накопитель, насколько я помню, так что с памятью там не жмотились. Если там нет буфера для радиокоманд, значит так заказано — все претензии к заказчику.