АВТОМАТИЧЕСКОЕ РЕЗЕРВНОЕ СОХРАНЕНИЕ ПРИ МОДИФИКАЦИЯХ ВСТРОЕННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
AUTOMATIC BACK UP SAVING IN MODIFICATIONS OF EMBEDDED SOFTWARE

Область техники, к которой относится изобретение
Настоящее изобретение определяет способы для применения в компьютерах и микропроцессорных системах для модифицирования программного обеспечения с помощью приема и исполнения дельта-файлов для модификации объекта назначения. В частности, настоящее изобретение имеет отношение к улучшенным решениям для того, чтобы справляться с возможной потерей энергоснабжения во время модификации объекта назначения.
Предшествующий уровень техники
Существует несколько технологий, которые предоставляют возможность модификации двоичных файлов программного обеспечения, посылая только отличия между текущей версией программного обеспечения и обновленной версией программного обеспечения. Отличие в новой версии конкретной части программного обеспечения обычно представляет собой приблизительно 1-10% от исходных двоичных файлов. Процедура использования файла отличий, обычно называемого дельта-файлом, особенно выгодна, когда обновления посылаются по однонаправленным каналам передачи данных с низкой пропускной способностью, таким как GPRS (пакетная радиосвязь общего назначения). Эта технология называется эфирной модификацией встроенного программного обеспечения и в настоящее время стандартизирована в стандарте OMA. Один пример того, как этот вид модификации работает, может быть обрисован следующим образом.
Мобильный телефон, являющийся устройством с микропроцессорным управлением, которое нужно модифицировать, в настоящее время имеет программное обеспечение V1. Цель состоит в том, чтобы обновить программное обеспечение до самой последней рабочей версии V2. Для обновления программного обеспечения в мобильном телефоне выполняется следующая процедура:
1) компилируется и компонуется конечное программное обеспечение, V2;
2) вычисляется разность D12 двоичных файлов V1 и двоичных файлов V2. D12 содержит всю информацию, необходимую для создания V2 из V1;
3) D12 доставляется к объекту назначения, например, посредством GPRS;
4) допускается автоматическое перезаписывание на флэш-память, то есть модификация, целевого устройства посредством использования текущего двоичного файла V1 и D12 для создания V2 на объекте назначения.
Целевое устройство теперь обновлено до V2 всего лишь с помощью отправки небольшого пакета D12 обновления на устройство.
Критическим этапом в вышеописанном процессе обновления является модификация объекта назначения. Вследствие того что конечное программное обеспечение, например RTOS (операционная система реального времени) и приложения, перезаписывается, потеря энергоснабжения может быть губительной для устройства. Процесс обновления должен на 100% обеспечивать восстановление при сбоях, подразумевается, что процесс обновления должен обладать способностью продолжаться после непредвиденного нарушения энергоснабжения. Способ для реализации способности к отказоустойчивости на существующем уровне техники называется двухфазным контролем транзакции, который уже используется во множестве приложений, таких как базы данных. Идея состоит в том, чтобы сохранять копию старой информации во время обновления. Только когда обновление завершено, старая информация удаляется. Таким образом, всегда есть возможность возвратиться к последнему состоянию, если обновление было сорвано во время обновления.
Для устройств, использующих флэш-память NOR-типа, память разделяется на блоки одинакового размера, обычно 64 кБ. Существуют особые ограничения при записи на NOR-устройство. Могут стираться сразу только целые блоки, при этом все биты в блоке устанавливаются в значение 1. Запись может быть выполнена на уровне байта, но это возможно только для изменения состояния бита от 1 к 0. Модификация NOR-устройства выполняется блок за блоком. Для обеспечения возможности восстановления при сбоях каждый блок сначала копируется в специальный резервный блок, перед тем как обновленный блок будет записан в исходный блок. Эта процедура на существующем уровне техники приведена в настоящем описании со ссылкой на Фиг. 1.
Программное обеспечение конкретного устройства состоит из четырех программных блоков 1-4, хранящихся в четырех блоках 101-104 памяти. Блоки 101-104 памяти заданы в области 111 памяти на физической памяти устройства. Блоки 101-104 памяти изображены вертикально, что представлено для отдельных состояний 106-110 во время процесса обновления. Каждый столбец представляет новое состояние в процессе обновления, выполняющемся слева направо, как обозначено стрелками на чертеже. Процесс также сопоставляется с дельта-пакетом, информацией о состоянии и приложением обновления, но они не проиллюстрированы здесь ради разъяснения общего процесса как такового. В течение процесса обновления уже были обновлены два программных блока 1 и 2, что является состоянием, изображенным в столбце 106. Следующим должен быть обновлен блок 3. Чтобы иметь возможность восстановления при возможной потере энергоснабжения, информация должна постоянно сохраняться. Информация состояния используется, чтобы отслеживать, какой блок обрабатывается и в каком состоянии обновления вы в настоящее время. Кроме того, старый блок должен сохраняться, пока новый блок не сгенерирован. Процесс обновления блока 3 осуществляется путем предварительного стирания резервного блока 105, который также задается в области 111 памяти, при переходе в состояние 107. Затем данные блока 3 копируются из блока 103 в резервный блок 105 при переходе в состояние 108. Потом блок 103 стирается при переходе в состояние 109, оставляя пустой блок 103. В заключение при переходе в состояние 110 выполняется процесс записи в блок 103, модифицируя в нем данные до нового блока 3. В качестве альтернативы, новый блок 3 создается в резервном блоке 105, вместо того чтобы копировать старый блок 3 в резервный блок 105.
Без использования резервного блока 105 потеря энергоснабжения после стирания блока и прежде чем новый блок будет полностью записан, была бы непоправима, поскольку ни исходный блок, ни целевой блок не будут доступны. При использовании вышеуказанной процедуры всегда есть возможность возобновить обновление с того места, где оно было прервано, путем перезаписи последнего блока и продолжения обновления.
Проблемой этой процедуры существующего уровня техники является то, что время записи в течение обновления на флэш-памяти удваивается, потому что каждый блок должен быть записан дважды для каждого блока для обеспечения восстановления при потере энергоснабжения. Для флэш-памяти NOR-типа обычная скорость записи составляет приблизительно 200 килобайт в секунду. Тогда время записи блоков при обновлении 16-мегабайтного образа составляет примерно 16 МБ * 2/0,2=160 с, если все блоки должны быть обновлены. В течение обновления устройство совершенно непригодно для использования, поэтому важно удерживать это время настолько малым, насколько возможно. В зависимости от размера обновления и от того, как изменения кода распределены в новом двоичном образе, число блоков, которые должны быть обновлены, может быть различным. Опыт показывает, что большинство обновлений требуют обновления большинства всех доступных блоков. Существуют способы уменьшить число блоков, которые должны быть обновлены, структурируя двоичный образ таким образом, что обновления концентрируются в меньших частях образа. Однако эти методики довольно сложные.
Раскрытие изобретения
Основной задачей настоящего изобретения является предоставить улучшенное решение для того, чтобы гарантировать, что процесс обновления программного обеспечения восстанавливаем после прерывания, например, в результате потери энергоснабжения. В частности, задачей является предоставить решение для модифицирования программных двоичных файлов при помощи дельта-файлов, что минимизирует время обновления объекта назначения.
Согласно первому аспекту настоящего изобретения, эта задача выполняется способом обновления программного обеспечения, представленного в первой версии на устройстве, путем приема и исполнения дельта-файла для модифицирования упомянутой первой версии до второй версии, причем данное программное обеспечение разделено и сохранено во множестве блоков памяти, определенных в адресном пространстве физической памяти в устройстве, при этом способ содержит этапы, на которых:
- определяют дополнительный блок памяти, ассоциированный с упомянутым множеством блоков памяти;
- стирают упомянутый дополнительный блок памяти, чтобы определить область дополнительного блока памяти;
- записывают обновленные данные для первого из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый дополнительный блок памяти;
- стирают упомянутый первый блок памяти, тем самым перемещая упомянутую область дополнительного блока памяти на один блок; и
- записывают обновленные данные для второго из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый первый блок памяти.
В предпочтительном варианте осуществления упомянутый дополнительный блок памяти определяется как соседний блок памяти для упомянутого первого блока памяти в упомянутом адресном пространстве.
Полезно, если способ содержит этап, на котором обрабатывают все из упомянутого множества блоков памяти один за другим, начиная с упомянутого дополнительного блока памяти, путем записи данных в один из упомянутого множества блоков памяти из следующего блока памяти в упомянутом адресном пространстве во время модифицирования, как задано упомянутым дельта-файлом, пока все из упомянутого множества блоков памяти не будут сдвинуты на один интервал в адресном пространстве.
В одном варианте осуществления способ содержит этап, на котором изменяют порядок записи блоков памяти в адресном пространстве с упомянутой модификации от первой версии до второй версии на другую модификацию от упомянутой второй версии до третьей версии.
Предпочтительно, способ содержит этапы, на которых:
- посредством упомянутого устройства перед приемом и исполнением дельта-файла соединяются с сервером и передают информацию, относящуюся к состоянию текущего адресного пространства, определяющую, какого типа дельта-файл применим для модифицирования упомянутого программного обеспечения, в зависимости от имеющегося положения упомянутого дополнительного блока в упомянутом адресном пространстве, причем первый тип дельта-файла предназначен для модификации программного обеспечения, представленного в упомянутых блоках памяти в одном порядке в адресном пространстве, а второй тип дельта-файла предназначен для модификации программного обеспечения, представленного в упомянутых блоках памяти в обратном порядке в адресном пространстве;
- загружают дельта-файл подходящего типа дельта-файла с упомянутого сервера на упомянутое устройство; и
- модифицируют упомянутое программное обеспечение, используя подходящий дельта-файл.
В одном варианте осуществления способ содержит этап, на котором преобразуют начальный адрес в пределах упомянутого адресного пространства в загрузочном коде для упомянутого программного обеспечения в зависимости от перемещения данных между упомянутыми блоками памяти во время записи, как задано упомянутым дельта-файлом.
Согласно второму аспекту настоящего изобретения, поставленная задача решается с помощью компьютерного программного продукта, предназначенного для использования в электронном устройстве с компьютерным управлением для обновления программного обеспечения, представленного в первой версии на этом устройстве, причем данное устройство содержит средство для приема и исполнения дельта-файла для модифицирования упомянутой первой версии до второй версии, причем данное программное обеспечение разделено и сохранено во множестве блоков памяти, определенных в адресном пространстве физической памяти в устройстве, при этом упомянутый компьютерный программный продукт содержит исполняемый компьютерный программный код, разработанный для предписания устройству выполнять этапы:
- определения дополнительного блока памяти, ассоциированного с упомянутым множеством блоков памяти;
- стирания упомянутого дополнительного блока памяти, чтобы определить область дополнительного блока памяти;
- записи обновленных данных для первого из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый дополнительный блок памяти;
- стирания упомянутого первого блока памяти, тем самым перемещая упомянутую область дополнительного блока памяти на один блок; и
- записи обновленных данных для второго из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый первый блок памяти.
В одном варианте осуществления, компьютерный программный продукт содержит исполняемый компьютерный программный код, разработанный для предписания устройству выполнять этапы каждого из вышеупомянутых этапов способа.
Согласно третьему аспекту настоящего изобретения, поставленная задача решается с помощью терминала радиосвязи, содержащего компьютерную систему с соответствующим компьютерным кодом для обновления программного обеспечения, представленного в первой версии на терминале, и средство для приема и исполнения дельта-файла для модифицирования упомянутой первой версии до второй версии, причем данное программное обеспечение разделено и сохранено во множестве блоков памяти, определенных в адресном пространстве физической памяти в терминале, при этом дополнительный блок памяти, соответствующий упомянутому множеству блоков памяти, определен в упомянутом адресном пространстве, упомянутый терминал дополнительно содержит средство для стирания упомянутого дополнительного блока памяти для определения области дополнительного блока памяти; средство записи данных для записи обновленных данных для первого из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый дополнительный блок памяти; средство стирания данных для стирания упомянутого первого блока памяти для перемещения упомянутой области дополнительного блока памяти на один блок; при этом упомянутое средство записи данных выполнено с возможностью записи обновленных данных для второго из упомянутого множества блоков памяти, как задано упомянутым дельта-файлом, в упомянутый первый блок памяти.
В одном варианте осуществления, упомянутый дополнительный блок памяти является соседним для упомянутого первого блока памяти в упомянутом адресном пространстве.
Предпочтительно, чтобы упомянутое средство записи данных было выполнено с возможностью обработки всех из упомянутого множества блоков памяти, один за другим, начиная с упомянутого дополнительного блока памяти, путем записи данных в один из упомянутого множества блоков памяти из следующего блока памяти в упомянутом адресном пространстве, во время модифицирования, как задано упомянутым дельта-файлом, пока все из упомянутого множества блоков памяти не будут сдвинуты на один интервал в адресном пространстве.
Полезно, чтобы терминал радиосвязи содержал средство для изменения порядка записи блоков памяти в адресном пространстве с упомянутой модификации от первой версии до второй версии на вторую модификацию от упомянутой второй версии до третьей версии.
В предпочтительном варианте осуществления, упомянутый терминал выполнен с возможностью соединения с сервером перед приемом и исполнением дельта-файла для передачи информации, относящейся к состоянию текущего адресного пространства, определяющей, какого типа дельта-файл применим для модифицирования упомянутого программного обеспечения, в зависимости от имеющегося положения упомянутого дополнительного блока в упомянутом адресном пространстве, причем первый тип дельта-файла предназначен для модификации программного обеспечения, представленного в упомянутых блоках памяти в одном порядке в адресном пространстве, а второй тип дельта-файла предназначен для модификации программного обеспечения, представленного в упомянутых блоках памяти в обратном порядке в адресном пространстве, упомянутый терминал содержит средство для загрузки дельта-файла подходящего типа дельта-файла с упомянутого сервера на упомянутый терминал и средство для модифицирования упомянутого программного обеспечения, используя подходящий дельта-файл.
Предпочтительно, чтобы терминал радиосвязи содержал средство для преобразования начального адреса в пределах упомянутого адресного пространства в загрузочном коде для упомянутого программного обеспечения в зависимости от перемещения данных между упомянутыми блоками памяти во время записи, как задано упомянутым дельта-файлом.
Краткое описание чертежей
Признаки и преимущества настоящего изобретения будут лучше видны из следующего описания предпочтительных вариантов осуществления со ссылками на прилагаемые чертежи.
Фиг. 1 - схематическая иллюстрация соответствующего предшествующему уровню техники процесса обновления программного обеспечения путем модификации объекта назначения.
Фиг. 2 - схематическая иллюстрация процесса согласно варианту осуществления настоящего изобретения для обновления программного обеспечения путем модификации объекта назначения.
Фиг. 3 - схематическая иллюстрация двух различных вариантов общего процесса по Фиг. 2.
Фиг. 4 - схематическое изображение иллюстративного терминала радиосвязи, реализующего компьютерный программный продукт для исполнения этапов процесса согласно настоящему изобретению.
Фиг. 5 - схематическая иллюстрация терминала по Фиг. 4 с его встроенной компьютерной системой во время осуществления связи с базовой станцией для приема дельта-файлов обновления для модификации объекта назначения в терминале.
Осуществление изобретения
Настоящее описание имеет отношение к средству и способам для использования при модификации встроенного программного обеспечения, использующей дельта-файлы, и модификации объекта назначения. Настоящее изобретение особенно полезно для использования в системах с относительно малой шириной полосы пропускания, но не ограничивается такими областями. Предпочтительный вариант осуществления, описанный ниже, относится к области мобильной телефонии, и в частности к реализации в терминалах радиосвязи. Термин «терминал радиосвязи» включает в себя все оборудование мобильной связи, разработанное для радиосвязи с радиостанцией, причем данная радиостанция может быть также мобильным терминалом или, например, стационарной базовой станцией. Таким образом, термин «радиотерминал» включает в себя мобильные телефоны, коммуникаторы, электронные записные книжки, смартфоны, PDA (персональные цифровые секретари), установленные на транспортном средстве устройства радиосвязи, или тому подобное, а также портативные переносные компьютеры, выполненные с возможностью беспроводной связи в, например, беспроводной локальной сети (WLAN). Кроме того, нужно подчеркнуть, что термины “содержащий” или “содержит” при использовании в настоящем описании и в прилагаемой формуле изобретения для обозначения имеющихся в них признаков, элементов или этапов никоим образом не должны толковаться как исключающие присутствие других признаков, элементов или этапов, нежели явно сформулированные.
Следующее описание относится к предпочтительным вариантам осуществления настоящего изобретения, в которых адресное пространство содержит четыре блока памяти. Тем не менее, необходимо заметить, что настоящее изобретение применимо к адресному пространству, содержащему любое число блоков памяти.
Фиг. 2 изображает предпочтительный вариант осуществления алгоритма способа согласно настоящему изобретению для автоматического резервного сохранения при модификации встроенного программного обеспечения. При использовании этого алгоритма обновления может быть исключена необходимость резервирования каждого блока перед его обновлением. В иллюстративном варианте осуществления по Фиг. 2, устройство содержит память, определяющую память или адресное пространство 211, содержащее четыре блока 201-204 памяти, каждый из которых вмещает один программный блок 1-4, соответственно. В состоянии, изображенном в столбце 206, нет блоков, обновленных до этого, и программное обеспечение представлено в первой версии. Как и в случае существующего уровня техники, описанного выше, область 211 памяти содержит, по меньшей мере, на один блок больше, чем четыре блока 201-204. Однако, вместо того чтобы использовать специальный резервный блок, дополнительный блок перед двоичным образом, представленным блоками 201-204, используется для перемещения образа программного обеспечения целиком на один блок назад или вперед в адресном пространстве 211. В альтернативных вариантах осуществления могут использоваться больше чем один, например два дополнительных блока.
Когда программное обеспечение должно быть обновлено, устройство, обладающее физической памятью, к которой относится адресное пространство 211, принимает дельта-файл или файл отличий, включающий в себя всю информацию, необходимую для обновления программного обеспечения от первой версии до второй версии. На этапе от состояния 206 до состояния 207 дополнительный блок 212 стирается. Затем программный блок 1 обновляется в соответствии с дельта-файлом, соответствующим представленному программному обеспечению. При использовании этого алгоритма нет необходимости резервировать каждый блок, потому что обновленный блок всегда записывается непосредственно перед старым блоком. Старый блок не перезаписывается, пока запись обновленного блока не выполнена. Вместо двух операций стирания/записи требуется только одна операция стирания/записи.
Предложенное решение имеет очевидные выгоды, но также и приводит к проблеме, которую нужно преодолеть. Когда прошло одно обновление, больше не существует одного дополнительного блока в начале образа, так как весь образ был сдвинут в адресном пространстве. Однако предпочтительный вариант осуществления настоящего изобретения предоставляет решение этой проблемы. После первой операции обновления вместо этого появится один дополнительный блок в конце образа, блок 204 в варианте осуществления по Фиг. 2. При этом, изменяя направление процесса обновления, то есть записывая блоки в обратном порядке, при следующем обновлении можно использовать тот же самый алгоритм. Другой проблемой является то, что фактический двоичный код сопряжен с определенным базовым адресом. Если базовый адрес перемещен, код не выполнится, так как абсолютные адреса для ячеек памяти внутри двоичного образа будут указывать на неверный адрес. Так или иначе, абсолютные адреса, используемые в образе, должны быть перемещены на один блок после обновления. Согласно одному варианту осуществления, эта проблема решается путем генерирования двух дельта-файлов для каждого обновления, что схематично продемонстрировано на Фиг. 3.
На Фиг. 3 D12(ВВЕРХ) символизирует первый дельта-файл для осуществления преобразования программного обеспечения версии V1 типа A, которое изображено в столбце 306, к V2 типа B, которое изображено в столбце 307. Образ типа A является, следовательно, определенным адресным пространством с дополнительным блоком, расположенным после блоков 1-4, тогда как образ типа B является определенным адресным пространством с дополнительным блоком, расположенным перед блоками 1-4. Dl2(ВНИЗ) символизирует второй дельта-файл для осуществления преобразования программного обеспечения версии V1 типа B, которое изображено в столбце 308, к V2 типа B, которое изображено в столбце 309. Предпочтительно, чтобы два дельта-файла генерировались с помощью преобразования процесса компоновки для получения образов типов A и B перед генерированием фактических дельта-файлов. В заключение, начальный адрес, находящийся в загрузочном коде, должен быть преобразован, чтобы указывать правильный начальный адрес, такой, при котором исполнение программного обеспечения будет происходить, как предназначено. Это может быть сделано как последний этап процедуры обновления.
Время обновления, в лучшем случае, уменьшается вдвое при новом алгоритме резервирования, предоставленном в соответствии с настоящим изобретением. Это имеет место, когда все блоки обновлены. С предложенным решением все блоки должны быть перезаписаны однократно. С существующим сегодня решением только измененные блоки должны быть обновлены, но они должны быть записаны дважды. Для обновления с изменением больше, чем половины блоков, новое решение является более быстрым. Обычно во время обновления должно быть изменено большинство блоков.
В предпочтительном варианте осуществления, настоящее изобретение используется для эфирной модификации встроенного программного обеспечения и, в особенности, применяется в области мобильной радиосвязи с терминалами радиосвязи в качестве целевых устройств. Фиг. 4 изображает в качестве примера устройства, в котором настоящее изобретение может быть использовано, терминал радиосвязи в варианте осуществления сотового мобильного телефона 40. Терминал 40 содержит шасси или корпус 45, несущий в себе вход звукового сигнала от пользователя в форме микрофона 41 и выход звукового сигнала для пользователя в форме динамика 42 или разъема для наушника (не показано). Набор клавиш, кнопок или тому подобного составляет интерфейс 43 ввода данных, применяемый, например, для набора телефонного номера общепринятым способом. Дополнительно в состав включается интерфейс вывода данных, содержащий устройство 44 отображения, выполненный с возможностью отображения информации о связи, списка адресов и т.д. способом, хорошо известным специалисту в данной области техники. Терминал 40 радиосвязи включает в себя электронное оборудование для радиопередачи и приема (не показано) и выполнен с возможностью размещения внутри корпуса 45 встроенной антенны 46, эта антенна обозначена на чертеже пунктирной линией как по существу плоский объект. Фиг. 5 упрощенно изображает терминал 40 по Фиг. 4. Терминал 40 может обычным способом соединяться с использованием средств коммуникации с помощью своей антенны 46 с базовой станцией 50, включенной в состав сети радиосвязи. Терминал 40 дополнительно включает в себя компьютерную систему, содержащую микропроцессорное устройство 47 управления (контроллер) с ассоциированной физической памятью 48. При связи с базовой станцией 50 терминал 40 способен принимать дельта-файлы для модификации программного обеспечения, представленного в памяти 48, в частности программных двоичных файлов, согласно изобретению. Кроме того, компьютерная система, включающая в себя процессор 47, выполнена с возможностью сохранять и осуществлять доступ к программному обеспечению, сохраненному в памяти 48, используя адресное пространство, как определено на Фиг. 2 и 3, и выполнять этапы процесса, определенные выше в связи с Фиг. 2 и 3. В частности, компьютерная система, управляемая процессором 47, содержит средство для стирания и записи в блоках памяти, как задано содержимым дельта-файлов, для обновления упомянутого программного обеспечения, тем самым сдвигая содержимое блоков памяти, обновленных или нет, на интервал, соответствующий размеру одного блока в адресном пространстве.
Вышеизложенное описывает основные требования, предпочтительные варианты осуществления и режимы работы настоящего изобретения. Впрочем, для специалистов в данной области техники должно быть понятно, что могут быть внесены изменения в этих вариантах осуществления без отклонений от объема настоящего изобретения, который определен в прилагаемой формуле изобретения.