Все это сперва тестируется на двойнике прибора и только потом происходит обновление. Но на случай прокравшихся багов я подумываю сделать защиту, например, такую: если после трех включений прибор не получал определенных команд, то при следующей загрузке он игнорирует заплатки и грузит исходную версию. А исходная версия гарантированно позволяет как накатить новые заплатки, так и стереть старые.
Здесь Вы сильно ошибаетесь -- это "раз". Те кто пишет ТЗ так же ошибаются, что приводит к ошибкам в "логике". Но в первую очередь могут ошибиться те, кто пишет требования, на основе, которых составляется ТЗ. Как Вы думаете, спецы из Airbus'a, Сухого, а так же автопромошленности Германии (перечислил то с чем сталкиваюсь), зря что ли тратятся на инструменты, которые тестируют именно логику бортового оборудования? При чём тратятся не малые деньги на создание таких инструментов. Здесь ошибаетесь -- "два". Речь веду не про динамическое выделение памяти при работе программы (прошивки), а про заполнение памяти обновлениями. После того как залили обновление функции в специально отведенное место (4 кб) освобождается память, которую занимала старая версия функции -- вот Вам и дефрагментация. Зальёте обновление ещё одной функции -- ещё один участок бесполезно простаивающей памяти. И так получается, что памяти "море", а реально нет "ни капли".
А с чего вы взяли, что мы не тратимся? Проверочная аппаратура стоит не меньше прибора, а тесты гоняют неделями, а иногда и месяцами. Причем прибор проверяется сперва в окружении имитаторов, а потом в составе реальной системы. На этих этапах вылавливаются все ошибки, но иногда какая-то мелочь упускается. Причем ни разу не было такого, чтобы из-за этой мелочи прибор не мог выполнять свою задачу. Ничего не освобождается, код старой функции остается там же, где он и был. Повторюсь: задачи установки кучи заплаток просто не стоит. Максимум - замена одной-двух функций. Для этого памяти вполне достаточно.
Оставаться-то остаётся, но не используется по причине наличия исправленной версии функции, поэтому и считается этот участок памяти свободным. Вы владеете полной информацией и поэтому лучше понимаете, что нужно, а что можно оставить без внимания. Поэтому считаю, что дискуссию можно завершить, т.к. она рискует перерасти в бесполезный спор.
Есть такое дело. Но ради простоты было решено этим пренебречь. Всегда полезно узнать мнение со стороны Спасибо за интересную дискуссию.