RU2388045C2 - Система и способ обновления программы для переносного устройства с поддержкой ота - Google Patents

Система и способ обновления программы для переносного устройства с поддержкой ота Download PDF

Info

Publication number
RU2388045C2
RU2388045C2 RU2008114331/09A RU2008114331A RU2388045C2 RU 2388045 C2 RU2388045 C2 RU 2388045C2 RU 2008114331/09 A RU2008114331/09 A RU 2008114331/09A RU 2008114331 A RU2008114331 A RU 2008114331A RU 2388045 C2 RU2388045 C2 RU 2388045C2
Authority
RU
Russia
Prior art keywords
version
program
update
data
blocks
Prior art date
Application number
RU2008114331/09A
Other languages
English (en)
Other versions
RU2008114331A (ru
Inventor
Сунг Дзо ОХ (KR)
Сунг Дзо ОХ
Original Assignee
Самсунг Электроникс Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Самсунг Электроникс Ко., Лтд. filed Critical Самсунг Электроникс Ко., Лтд.
Publication of RU2008114331A publication Critical patent/RU2008114331A/ru
Application granted granted Critical
Publication of RU2388045C2 publication Critical patent/RU2388045C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Изобретение относится к системе и способу обновления программы. Техническим результатом является повышение стабильности работы переносного устройства с поддержкой передачи данных по радиоканалу. Система включает в себя процессор пакетов обновлений для формирования пакета обновления программы и сервер пакетов обновлений, позволяющий устройству-получателю загружать пакет обновления. Способ включает в себя формирование пакета обновления на основе различий между первой и второй версиями программы в процессоре пакетов обновлений, уведомление устройства-получателя о выходе пакета обновления на сервере пакетов обновлений, загрузку пакета обновления с сервера пакетов обновлений в устройство-получатель, установку пакета обновления в первом запоминающем устройстве; и объединение пакета обновления и первой версии, которое должно быть загружено в качестве второй версии программы в энергозависимую память в ответ на команду обновления. 5 н. и 36 з.п. ф-лы, 38 ил., 5 табл.

Description

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу обновления системы и, в частности, к системе и способу для обновления программы (включающей в себя работающие микропрограммное обеспечение и прикладное программное обеспечение) переносного устройства с использованием механизма программирования "по воздуху" (технологии передачи данных по радиоканалу).
Уровень техники
Электронные устройства, такие как мобильные телефоны и персональные цифровые помощники (PDA), содержат микропрограммное обеспечение и прикладное программное обеспечение, которые предоставлены производителями электронных устройств, телекоммуникационными компаниями или третьими сторонами. Такие микропрограммное обеспечение и прикладное программное обеспечение могут содержать ошибки в программном обеспечении, которые требуют обновлений версии. Чтобы исправить и обновить микропрограммное обеспечение и прикладное программное обеспечение, пользователь посещает центр обслуживания клиентов под управлением производителя или телекоммуникационной компании. В случае устройства с поддержкой передачи данных по радиоканалу (OTA) обновление микропрограммного обеспечения или программного обеспечения может быть выполнено механизмом OTA, в котором обновления микропрограммного обеспечения или программного обеспечения распространяются устройству по радиоканалу.
Раскрытие
Техническая задача
Чтобы использовать процесс OTA-обновления, электронное устройство включает в себя модуль загрузки для загрузки пакета обновления и модуль обработки обновления для выполнения обновления целевого микропрограммного обеспечения или программного обеспечения с помощью загруженного пакета обновления. Однако большинство традиционных устройств с поддержкой OTA ограничены стабильностью работы OTA.
Техническое решение
Настоящее изобретение было представлено в попытке разрешить, по меньшей мере, вышеуказанные проблемы, и настоящее изобретение предоставляет систему и способ обновления программы для мобильного телефона с поддержкой OTA, которые предоставляют возможность обновления микропрограммного обеспечения с помощью пакета обновлений, принятого по радиоканалу.
Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые допускают обновление микропрограммного обеспечения переносного устройства посредством объединения пакета обновления, который сформирован на основе различий между старой версией микропрограммного обеспечения и новой версией микропрограммного обеспечения, по радиоканалу со старой версией микропрограммного обеспечения, установленного в переносном устройстве.
Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые предоставляют возможность обновления микропрограммного обеспечения с помощью пакета обновления, принятого по радиоканалу, пакет обновления содержит исторические данные, данные отображения, имеющие индексную информацию для указания связи пакета обновления и обновленной целевой версии программы, и данные обновления, представляющие различия между двумя версиями программы.
Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые допускают создание пакета обновления, содержащего данные обновления, созданные на основе различия между новой и контрольной версиями микропрограммного обеспечения, исторические данные для указания связи пакета обновления и целевой версии обновления программы микропрограммного обеспечения, и данные отображения для сопоставления блоков двух версий. Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые разрешают создание пакета обновления, содержащего данные обновления, созданные на основе различия между новой и старой версиями микропрограммного обеспечения, исторические данные для указания связи пакета обновления и целевой версии обновления программы микропрограммного обеспечения, и данные отображения для сопоставления блоков двух версий. Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые предоставляют возможность обновления микропрограммного обеспечения переносного устройства посредством объединения контрольного микропрограммного обеспечения, установленного в переносном устройстве, и пакета обновления, загруженного по радиоканалу.
Настоящее изобретение предоставляет систему и способ обновления программы для переносного устройства с поддержкой OTA, которые предоставляют возможность обновления микропрограммного обеспечения переносного устройства посредством объединения контрольного микропрограммного обеспечения, установленного в переносном устройстве, и, по меньшей мере, одного пакета обновления, загруженного по радиоканалу.
Описание чертежей
Вышеописанные и другие цели, признаки и преимущества настоящего изобретения будут более понятны из следующего подробного описания, данного в сочетании с сопровождающими чертежами, на которых:
Фиг.1 является схемой, иллюстрирующей систему обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.2 является блок-схемой, иллюстрирующей работу процессора 10 пакета обновления системы обновления программы на Фиг.1;
Фиг. 3-8 являются схемами, иллюстрирующими форматы данных пакетов обновлений, сформированных процессором пакетов обновлений на Фиг.2;
Фиг.9 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с примерным осуществлением настоящего изобретения;
Фиг.10 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с другим примерным осуществлением настоящего изобретения;
Фиг.11 является блок-схемой, иллюстрирующей формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.9;
Фиг.12 является блок-схемой, иллюстрирующей формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.10;
Фиг.13 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с другим примерным осуществлением настоящего изобретения;
Фиг.14 является блок-схемой, иллюстрирующей конфигурацию устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.15 является блок-схемой, иллюстрирующей конфигурацию первого запоминающего устройства устройства-получателя на Фиг.14;
Фиг.16 является схемой, иллюстрирующей структуру второй области хранения первого запоминающего устройства 250 на Фиг.15;
Фиг.17 является схемой, иллюстрирующей формат исторических данных каждого пакета обновления, сохраненного во второй области хранения на Фиг.16;
Фиг.18 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.19 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения;
Фиг.20 и 21 являются блок-схемами, иллюстрирующими операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения;
Фиг.22 является блок-схемой, иллюстрирующей операцию обновления устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.23 - это блок-схема, иллюстрирующая способ обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг. 24-26 являются блок-схемами, иллюстрирующими процедуру формирования пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.27 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.28 является блок-схемой, иллюстрирующей процедуру тестирования надежности сжатия на Фиг.27;
Фиг.29 является блок-схемой, иллюстрирующей процедуру формирования данных установки на Фиг.27;
Фиг.30 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления на Фиг.27;
Фиг.31 является схемой потока сообщений, иллюстрирующей процедуру загрузки программы способа обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.32 является блок-схемой, иллюстрирующей процедуру обработки загруженного пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.33 является блок-схемой, иллюстрирующей процедуру установки пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.34 является блок-схемой, иллюстрирующей процедуру запуска обновленной программы способа обновления программы согласно примерному варианту осуществления настоящего изобретения; и
Фиг. 35-38 являются блок-схемами, иллюстрирующими процедуру запуска программы обновления способа обновления программы согласно другому примерному варианту осуществления настоящего изобретения.
Оптимальный режим осуществления изобретения
В соответствии с аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством способа обновления программы в сети, включающей в себя процессор пакетов обновлений для формирования пакета обновления для программы и сервер пакетов обновлений, позволяющий устройству-получателю загрузить пакет обновления. Способ обновления программы включает в себя формирование, в процессоре пакетов обновлений, пакета обновления на основе различий между первой версией и второй версией программы; уведомление, на сервере пакетов обновлений, более чем одного устройства-получателя о выходе пакета обновления; загрузку, в устройстве-получателе, пакета обновления с сервера пакетов обновлений; установку пакета обновления в энергонезависимую память; и объединение пакета обновления и первой версии, которое должно быть загружено в качестве второй версии в энергозависимую память в ответ на команду обновления.
В соответствии с другим аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством способа обновления программы в сети, включающей в себя процессор пакетов обновлений для формирования пакета обновления для программы и сервер пакетов обновлений, позволяющий устройству-получателю загрузить пакет обновления. Способ обновления программы включает в себя формирование, в процессоре пакетов обновлений, пакета обновления на основе различий между первой версией и второй версией программы; уведомление, на сервере пакетов обновлений, устройства-получателя о выпуске пакета обновления; загрузку, в устройстве-получателе, пакета обновления с сервера пакетов обновлений; установку пакета обновления в область пакета обновления первого запоминающего устройства, в котором установлена первая версия; обновление первой версии до второй версии посредством объединения пакета обновления и первой версии в ответ на команду обновления; и загрузку второй версии во второе запоминающее устройство.
В соответствии с другим аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством способа обновления программы в сети, включающей в себя процессор пакетов обновлений для формирования пакета обновления для программы и сервер пакетов обновлений, позволяющий устройству-получателю загрузить пакет обновления. Способ обновления программы включает в себя сравнение, в процессоре пакетов обновлений, первой версии и второй версии программы на поблочной основе, формирование данных установки, содержащих данные отображения для отображения блоков второй версии на блоки первой версии на основе результата сравнения; формирование пакета обновления посредством объединения данных установки и данных обновления; загрузку, в устройстве-получателе, пакета обновления; и обновление первой версии, установленной в устройстве-получателе, до второй версии посредством применения пакета обновления к первой версии.
В соответствии с другим аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством системы обновления программы. Система обновления программы включает в себя процессор пакетов обновлений для формирования пакета обновления с помощью первой версии и второй версии программы; сервер пакетов обновлений для хранения пакета обновления и извещения о выходе пакета обновления; и, по меньшей мере, одно устройство-получатель для загрузки пакета обновления и обновления программы с помощью загруженного пакета, устройство-получатель содержит первое запоминающее устройство для отдельной установки первой версии и пакета обновления и второе запоминающее устройство для загрузки второй версии, обновленной посредством объединения первой версии и пакета обновления.
Режим осуществления изобретения
Варианты осуществления настоящего изобретения описаны подробно со ссылкой на сопровождающие чертежи. Одинаковые номера ссылок используются на чертежах, чтобы ссылаться на одни и те же или подобные части. Подробные описания хорошо известных функций и структур, содержащихся в данном документе, могут быть опущены, чтобы избежать неясности в предмете изучения настоящего изобретения.
В последующих вариантах осуществления число блоков версий обновления и размер макроопределения/блока определены, только чтобы помочь в понимании настоящего изобретения. Однако специалистам в области техники очевидно, что настоящее изобретение может быть осуществлено без конкретного определения числа и размера макроблоков или их модификации.
В последующих вариантах осуществления "обновление" - это процесс, модифицирующий исходные коды микропрограммного обеспечения или программного обеспечения системы с помощью пакета обновления для исправления ошибок и улучшения практичности или производительности.
"Пакет обновления" - это совокупность информации о старой и новой версиях целевой программы. "Данные обновления" - это модификации существующих кодов целевой программы. "Данные установки" - это набор информации для обновления старой версии до новой версии программы. Данные установки могут включать в себя исторические данные для указания связи пакета обновления и первой версии и данные отображения для отображения блоков второй версии на первую версию. Данные отображения могут включать в себя команды, такие как "копирование", "сдвиг", "модификация" и т.д., для создания новой версии программы и данные о местоположении блока для выполнения команд. "Первая версия" означает старую версию целевой программы и взаимозаменяемо называется "контрольной версией". "Вторая версия" - это обновленная версия первой версии программы. Вторая версия программы может быть пакетом обновления, созданным на основе различий между первой и второй версиями программы. Устройство-получатель установлено с первой версией программного обеспечения на стадии производства и может загружать и хранить, по меньшей мере, один пакет обновления, когда происходит событие обновления. Пакет обновления включает в себя данные установки и данные обновления, требуемые для обновления программы с первой версии до второй версии, и, в особенности, может включать в себя команды "копирование", "сдвиг" и "модификация" и данные о местоположении блока для выполнения команд. "Программа" может быть функционирующим микропрограммным обеспечением и прикладным программным обеспечением.
"Первое запоминающее устройство" - это запоминающее устройство для хранения первой и второй версии программы. "Второе запоминающее устройство" - это запоминающее устройство для загрузки программы, обновленной из первой версии с помощью пакета обновления, представленного второй версией. Первое и второе запоминающие устройства могут быть осуществлены посредством первой и второй областей запоминающего устройства в одном устройстве памяти или могут быть осуществлены как физически разделенные модули памяти. В последующих вариантах осуществления первое и второе запоминающие устройства являются индивидуальными модулями памяти. Первое запоминающее устройство является флэш-памятью в качестве энергонезависимой памяти, а второе запоминающее устройство является синхронным динамическим оперативным запоминающим устройством (SDRAM) в качестве энергозависимой памяти. Первое запоминающее устройство хранит первую версию программы и, по меньшей мере, один пакет обновления в качестве второй версии программы. Пакет обновлений включает в себя исторические данные для идентификации версий программы (включающие в себя данные отображения) и данные обновления. Если событие обновления происходит посредством инициализации системы или пользовательской команды, система загружает вторую версию программы, обновленной с помощью пакета обновления, во второе запоминающее устройство, так что система работает со второй версией программы. Первая версия программы может быть контрольной версией программы. Вторая версия программы может быть пакетом обновления, включающим в себя данные установки и данные обновления. Данные установки могут включать в себя исторические данные и/или данные отображения. Первая версия программы может быть первоначальной версией программы, а вторая версия программы включает в себя данные обновления, созданные на основе различия между первой и второй версиями программы, и данные установки для установки данных обновления. Программа, загруженная во второе запоминающее устройство, может быть программой, созданной посредством объединения первой и второй версий программы.
Система обновления программы может быть разделена на систему передачи для создания и передачи пакетов обновлений и устройство-получатель для получения пакетов обновлений и обновления целевой программы с помощью пакетов обновлений.
Фиг.1 является схемой, иллюстрирующей систему обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.1, система обновления программы включает в себя процессор 10 пакетов обновлений, сервер 20 пакетов обновлений и устройство-получатель 30, которые связываются друг с другом через сеть.
Если вводится новая версия (вторая версия) программы, процессор 10 пакетов обновлений формирует пакет обновлений из старой версии (первой версии) и новой версии (второй версии) программы и затем передает пакет обновления серверу 20 пакетов обновлений. Здесь, процессор 10 пакетов обновлений связывается с сервером 20 пакетов обновлений через беспроводной канал, установленный на основе стандарта беспроводной связи, такого как множественный доступ с кодовым разделением (CDMA), универсальная система мобильной связи (UMTS), беспроводная широкополосная передача (WiBro), беспроводная достоверность (Wi-Fi), широкополосный доступ в микроволновом диапазоне (WiMAX), Bluetooth (далее в данном документе "Bluetooth") и Zigbee, или на основе проводного стандарта, такого как универсальная последовательная шина (USB) и универсальный асинхронный приемопередатчик (UART). Сервер 20 пакетов обновлений может быть интегрирован в процессор 10 пакетов обновлений. Если пакет обновлений принимается от процессора 10 пакетов обновлений, сервер 20 пакетов обновлений передает уведомляющее сообщение множеству устройств-получателей 30, так что устройства-получатели загружают пакет обновления. Также сервер 20 пакетов обновлений и устройства-получатели 30 связываются друг с другом через беспроводной канал, установленный на основе стандарта беспроводной связи, такого как CDMA, UMTS, WiBro, Bluetooth и Zigbee, или стандарта проводной связи, такого как USB и UART.
Если пакет обновления успешно загружен, устройство-получатель 30 сохраняет пакет обновления в запоминающем устройстве для создания второй версии программы. Запоминающее устройство может быть осуществлено с помощью первого запоминающего устройства и второго запоминающего устройства. Первое и второе запоминающие устройства могут быть объединены в единое запоминающее устройство или могут быть отделены друг от друга. Первое запоминающее устройство хранит первую версию программы и пакет обновлений, а второе запоминающее устройство загружает вторую версию программы, созданную из первой версии программы и пакета обновления. Т.е. устройство-получатель 30 сохраняет пакет обновления, загруженный с сервера 20 пакетов обновлений, в первое запоминающее устройство в качестве информации для создания второй версии программы. Вторая версия программы формируется посредством объединения первой версии программы и пакета обновления и затем загружается во второе запоминающее устройство в ответ на команду обновления. После процесса обновления устройство-получатель 30 работает со второй версией программы, загруженной во второе запоминающее устройство. Работа процессора 10 пакетов обновлений описана далее в данном документе.
Фиг.2 является блок-схемой, иллюстрирующей работу процессора 10 пакетов обновлений системы обновления программы на Фиг.1.
Обращаясь к Фиг.2, процессор 10 пакетов обновлений принимает первую и вторую версию, 50 и 55, программы, введенной извне. Первая версия 50 программы может быть исходной версией, а вторая версия программы может быть обновленной версией из первой версии программы. Процессор 10 пакетов обновлений формирует пакет обновления из первой и второй версий программы. Процессор 10 пакетов обновлений сравнивает первую и вторую версии, 50 и 55, и создает пакет обновления на основе различия между первой и второй версиями, 50 и 55, и затем передает пакет обновления серверу 20 пакетов обновлений. Пакет обновления включает в себя данные обновления и данные установки. Данные обновления формируются в соответствии с разницей между первой и второй версиями программы, а данные установки включают в себя историческую информацию и данные отображения. Исторические данные - это данные, которые должны быть объединены со второй версией, а данные отображения включают в себя команды копирования, изменения и сдвига согласно результату сравнения версий и индексную информацию команд. Пакет обновления может включать в себя только исторические данные и данные отображения. В этом случае модифицированные данные включаются скорее в данные отображения, чем в данные обновления. Пакет обновления может быть передан серверу 20 пакетов обновлений через проводной или беспроводной канал связи.
Фиг. 3-8 являются схемами, иллюстрирующими форматы данных пакетов обновлений, сформированных в процессоре 10 пакетов обновлений на Фиг.2.
В этом варианте осуществления пакет обновления содержит данные обновления, исторические данные и данные отображения или содержит только исторические данные и данные отображения. По всему описанию настоящего изобретения термин "старая версия" взаимозаменяемо используется для ссылки на первую версию (V1), а термин "новая версия" существует для ссылки на вторую версию (V2). В случае когда вторая версия (V2) создается с помощью первой версии программы, промежуточная область может быть назначена для первой версии (V1) программы, чтобы уменьшить сдвиг в процессе обновления.
Обращаясь к Фиг. 3-8, процессор 10 пакетов обновлений сравнивает данные V1 и V2 на поблочной основе, имеющей предустановленный размер (этот блок в данном документе называется макроблоком или MB), отыскивает атрибут каждого блока (копирование(C), модификация (M), сдвиг (S)) и формирует пакет обновления на основе атрибутов. Пакет обновления включает в себя данные обновления, исторические данные и данные отображения. В некоторых случаях, данные обновления не включаются в пакет обновления. Макроблок - это элемент, сформированный разделением данных, а 16 инструкций равно 16 битам, и 32 инструкции - это 32 бита.
Данные отображения включают в себя командные строки, начинающиеся с команды, такой как C (копирование), M (модификация: вставка или замена, когда размер одинаков) и S (сдвиг). Каждая командная строка структурирована в следующем формате командной строки:
[Cmd][# начального блока, число блоков][флаг][дальность][различие], где "Cmd" может быть одной из C, M и S, "# начального блока" означает номер начального блока соответствующей команды, а "число блоков" означает число блоков, соответствующих команде, "флаг" имеет значения 0, 1 или 2. Флаг устанавливается в 0, когда Cmd - это "C" (только копирование) или S (только сдвиг), в 1, когда данные блока могут быть сформированы из V1 (формирование данных из V1) с помощью Cmd "M", и в 2, когда данные блока не могут быть сформированы из V1, но находятся в дельта-пакете (не использующем V1) с помощью Cmd "M". Дельта-пакет может быть данными обновления. "Дальность" означает информацию об индексе блока, указывающую местоположение блока V2 в V1.
Если блок V2, данные которого отличаются от данных соответствующего блока V1, обнаруживается при сравнении V1 и V2, процессор 10 пакетов обновлений снабжает блок меткой M для указания модифицированного блока данных. Если модифицированный блок данных обнаружен, процессор 10 пакетов обновлений исследует предварительно определенное число блоков от блока V1, соответствующего модифицированному блоку, в обоих направлениях для поиска блока, имеющего данные модифицированного блока.
В примерах на Фиг.3-5, 15 блоков исследуются в обоих направлениях от модифицированного блока. Если блок, имеющий идентичные данные, найден в диапазоне поиска, процессор 10 пакетов обновлений собирает индекс блока, имеющего идентичные данные. Диапазон поиска может быть установлен в любое число блоков, например 2, 4, 8, 16 или 32. В этом варианте осуществления число блоков диапазона поиска равно 16. Процессор 10 пакетов обновлений исследует 16 блоков в соответствующих направлениях от текущего блока. Соответственно, 32 блока сравниваются с блоком второй версии. На Фиг. 3-5 четыре блока 16-19 версии V2, которые модифицированы по сравнению с V1, найдены в качестве блоков, имеющих данные, идентичные модифицированным данным. Соответственно, процессор 10 пакетов обновлений формирует пакет обновления предпочтительнее с данными отображения, содержащими индексы блоков 6, 7, 12 и 13, чем упаковывает сами модифицированные данные. Данные отображения модифицированных блоков формируются посредством сравнения в единицах блоков или наборе блоков. В типичном варианте, модифицированные данные второй версии могут быть сформированы как множество блоков. Т.е., когда программа обновляется до новой версии, обновленная программа (V2) может быть сформирована посредством вставки и/или замены данных в форме модифицированных блоков. В этом случае, данные модифицированного блока могут быть идентичны или похожи на данные блока контрольной программы (V1). В этом варианте осуществления данные отображения формируются посредством сравнения в единицах набора блоков при поиске модифицированных блоков. В этом случае число блоков, включенных в набор, может быть 2, 4, 8, 16 и т.д. Число блоков устанавливается кратным 2 для увеличения скорости вычисления. Блоки второй версии (V2) сравниваются с блоками первой версии (V1). Если блоки являются скопированными или смещенными блоками, индексы блоков включаются в данные отображения. Если блоки являются модифицированными блоками, процессор 10 пакетов обновлений сравнивает данные блока, определяет команду для блоков второй версии как "модификацию" и формирует данные отображения с индексами блоков. В случае 2-блокового поиска поиск начинается в индексах блоков 0, 2, 4, 6 и т.д. В случае 4-блокового поиска поиск начинается в индексах блоков 0, 4, 8. В случае поиска 8 блоков поиск начинается в индексах блоков 0, 8, 16. Это сделано для уменьшения сложности вычисления процессора 10 пакетов обновлений.
На Фиг. 3-5 диапазон поиска установлен в 32 блока (16 блоков в обоих направлениях), и поиск модифицированного блока выполняется в единицах из нескольких блоков. Фиг.3 показывает пример, когда блоки, идентичные модифицированным блокам второй версии (V2), существуют в диапазоне поиска первой версии (V1). Фиг. 4 показывает пример, когда блоки, похожие на модифицированные блоки второй версии (V2), существуют в диапазоне поиска первой версии (V1). Фиг.5 показывает пример, когда блоки, идентичные или похожие на модифицированные блоки второй версии (V2), не существуют в диапазоне поиска первой версии (V1).
В случае когда блоки, идентичные модифицированным блокам V2, найдены в диапазоне поиска в V1, процессор 10 пакетов обновлений формирует данные отображения, имеющие информацию об индексах блоков.
Как показано на Фиг.3, процессор 10 пакетов обновлений сравнивает V1 и V2 в единицах блоков. Если, по меньшей мере, один модифицированный блок обнаружен, процессор 10 пакетов обновлений отыскивает идентичный блок в диапазоне поиска в V1. Если идентичный блок найден, процессор 10 пакетов обновлений предпочтительно создает данные отображения, содержащие индекс блока в V1, чем формирует данные обновления модифицированного блока в V2.
В Примере на Фиг.3 с 16-го по 19-й блоки в V1 смещены вправо так, чтобы занять с 20-го по 24-й блоки в V2. Соответственно, процессор 10 пакетов обновлений отыскивает блоки, идентичные модифицированным 16-19-ми блоками в V2, и обнаруживает, что 12-й, 13-й, 8-й и 9-й блоки в V1 идентичны модифицированным 16-19-м блокам. Как показано на Фиг.3, 16-й и 17-й блоки в V2 идентичны 12-м и 13-м блокам в V1, а 18-й и 19-й блоки в V1 идентичны 8-м и 9-м блокам. Таблица 1 показывает данные отображения, которые должны содержаться в пакете обновления, сформированном таким образом, который изображен на Фиг.3.
Таблица 1
C:0,15,F:0, null, null
M:16,4 F:l, (16-12), (17-13), (18-8), (19-9), 0,0,0,0
S:20,5 F:0, (20-4), 0
ИЛИ
C:0,15,F:0, null, null
M:16,4 F:l, (16-12), (17-13), (18-8), (19-9), 0,0,0,0
S:20,5 F:0, (20-16), 0
В Таблице 1 данные отображения информируют о том, что блоки с 0-го по 15-й в V2 идентичны блокам в V1, блоки с 16-го по 19-й в V2 идентичны 12-м, 13-м, 8-м и 9-м блокам в V1, а блоки с 20-го по 24-й в V2 идентичны блокам с 16-го по 20-й в V1. Т.е., когда модифицированные блоки в V2 найдены в диапазоне поиска в V1, процессор 10 пакетов обновлений формирует данные отображения, отображающие модифицированные блоки в V2 в блоки, найденные в диапазоне поиска в V1. В этом случае пакет обновлений формируется с историческими данными и данными отображения, показанными в Таблице 1.
Фиг.4 показывает другой пример технологии формирования пакета обновления, когда блоки, идентичные некоторым модифицированным блокам в V2, не существуют, но похожие блоки существуют в диапазоне поиска в V1. Как показано на Фиг.4, блоки с 16-го по 19-й в V2 являются вновь вставленными, а исходные блоки с 16-го по 19-й в V1 смещаются вправо, чтобы стать с 20-го по 24-й блоками в V2.
Как показано на Фиг.4, не существует блоков, идентичных 17-м и 18-м блокам в V2, в диапазоне поиска в V1. В этом случае процессор 10 пакетов обновлений формирует данные отображения, показанные в Таблице 2, с помощью данных из V1 и V2.
Таблица 2
C:0,15, F:0, null, null
M:16,4 F:l, (16-12), (17-13), (18-6), (19-7), 0, code (B,K),code (B,C), 0
S:20,5 F:0, (20-4), 0
В Таблице 2 данные отображения информируют о том, что блоки с 0-го по 15-й в V2 идентичны таковым в V1, а блоки с 20-го по 24-й в V2 идентичны с 16-го по 20-й блокам в V1. Также, данные отображения информируют о том, что 16-й и 19-й блоки в V2 идентичны с 12-м и 7-м, 17-й блок в V2 энтропически закодирован (код (B,K)) посредством различия с 13-м блоком в V1, а 18-й блок в V2 является энтропически закодированным (код (B,C)) посредством разницы с 8-м блоком в V1. В случае когда блок, идентичный модифицированному блоку в V2, не найден в диапазоне поиска в V1, как на Фиг.6, процессор 10 пакетов обновлений отображает модифицированные блоки в V2 на соответствующие блоки в V1 и выполняет энтропийное кодирование на основе различия блоков в V1 и V2.
Фиг.5 показывает другой пример технологии формирования пакета обновления, когда блоки, идентичные или подобные некоторым модифицированным блокам в V2, не существуют в диапазоне поиска в V1.
Процессор 10 пакетов обновлений сравнивает V1 и V2 в единицах блоков, проверяет атрибуты (C, M или S) блоков в V2 и формирует данные обновления на основе атрибутов блоков. Данные модифицированных блоков упаковываются в пакет обновления. Как описано выше, процессор 10 пакетов обновлений проверяет, существует ли блок, идентичный модифицированному блоку в V2, в диапазоне поиска в V1. Если идентичный блок не найден, процессор 10 пакетов обновлений выполняет энтропийное кодирование с помощью разницы блоков в V1 и V2, чтобы сформировать данные обновления.
На Фиг.5 с 16-го по 19-й блоки в V2 вставлены в сравнение так, что блоки с 16-го по 19-й в V1 смещаются вправо. Процессор 10 пакетов обновлений пытается отыскивать блоки, идентичные вновь вставленным блокам из V2, в диапазоне поиска в V1. Так как нет идентичных блоков в диапазоне поиска, процессор 10 пакетов обновлений назначает атрибут M вставленным блокам и устанавливает блоки в качестве данных обновления.
Как показано на Фиг.5, не существует блоков, идентичных блокам с 16-го по 19-й из V2, в диапазоне поиска в V1. В этом случае процессор 10 пакетов обновлений формирует данные отображения, как показано в Таблице 3, и данные обновления с помощью энтропийного кодирования.
Таблица 3
C:0,15, F:0, null, null
M:16,4 F:2, null, null
S:20,5, F:0, (20-4), 0
В Таблице 3 данные отображения информируют о том, что блоки с 0-го по 15-й в V2 идентичны таковым в V1, блоки с 20-го по 24-й в V2 идентичны блокам с 16-го по 20-й в V1, и блоки с 16-го по 19-й в V2 энтропически закодированы в Z, W, P и X (код (E, C)). Когда модифицированный блок не найден в диапазоне поиска, как на Фиг. 5, процессор 10 пакетов обновлений устанавливает флаг блока в 2 (F=2) и формирует отдельные данные обновления. В этом случае пакет обновления включает в себя исторические данные, данные отображения и данные обновления.
В случае на Фиг.5 процессор 10 пакетов обновлений также может сформировать пакет обновления без дополнительных данных обновления. Таблица 4 показывает данные отображения, когда данные обновления исключены из пакета обновления.
Таблица 4
C:0,15,F:0, null, null
M:16,4 F:2, null, Z,W,P,X
S:20,5, F:0, (20-4), 0
В случае когда модифицированные блоки не найдены в диапазоне поиска в V1 (см. Фиг.5), процессор пакетов обновлений создает данные отображения посредством энтропийного кодирования данных модифицированных блоков. Если данные отображения сформированы в форме Таблицы 4, процессор 10 пакетов обновлений не создает дополнительные данные обновления и формирует пакет обновления с историческими данными и данными отображения.
Фиг.6 показывает пример улучшенной технологии формирования пакета обновления посредством предоставления промежуточной области в V1, а Фиг.7 показывает пример технологии формирования пакета обновления, главным образом, когда блок в V1 удаляется из V2.
Обращаясь к Фиг.6, если новые данные добавляются или некоторые данные удаляются из V2 по сравнению с V1, процессор 10 пакетов обновлений сдвигает блоки, следующие за добавленными или удаленными блоками. Если блоки сдвигаются влево, процессор 10 пакетов обновлений отыскивает блок, идентичный каждому модифицированному блоку, в диапазоне поиска в V1. Если идентичный блок найден, процессор 10 пакетов обновлений отображает индекс блока в V1 на модифицированный блок в V2. Наоборот, если идентичный макроблок не найден, процессор 10 пакетов обновлений выполняет энтропийное кодирование по данным модифицированного блока в V2, чтобы сформировать данные обновления.
При обновлении V1 до V2 может быть выполнено множество операций сдвига. V1 может быть запрограммирована с промежуточной областью, зарезервированной для операций сдвига. Промежуточная область может быть сконфигурирована, принимая во внимание данные обновления для V2. Предпочтительно, операции сдвига выполняются без воздействия на следующий компонент, используя промежуточную область, как показано на Фиг.6. В примере на Фиг.6 V2 запрограммирована посредством удаления блоков с 6-го по 10-й V1, добавления 3-го, 4-го, 8-го, 9-го, 13-го и с 17-го по 19-й блоков к V1 и замены 15-го блока. В этом случае 5 блоков удаляются и 8 блоков добавляются, так что последние 3 блока сдвигаются. Так как последние 3 блока сдвигаются в промежуточную область, следующий компонент в V2 может быть сравнен с соответствующим компонентом в V1 без затрагивания операций сдвига.
Обращаясь к Фиг.7, бинарные данные с возможностью передачи микропрограммного обеспечения по радиоканалу (FOTA) предоставлены с промежуточными областями, так что компоненты защищены друг от друга. Программа имеет структуру как на Фиг.7. Т.е. V1 составлена посредством множества компонентов (на Фиг.7 5 компонентов), и каждый компонент имеет промежуточную область. Когда V2 вводится в качестве обновленной программы версии V1 с дополнительными блоками данных, процессор 10 пакетов обновлений может выполнить операции сдвига с помощью промежуточной области. Т.е. процессор 10 пакетов обновлений выполняет процесс обновления в единицах компонентов, так что пакет обновления может быть сформирован по компонентам.
Как описано выше, пакет обновления формируется с историческими данными, данными отображения и данными обновления. В этом случае данные отображения включают в себя атрибуты (копия, модификация и сдвиг) блоков с индексами блоков, и данные обновления представляют модифицированные блоки. Также пакет обновления может быть сформирован с данными отображения и историческими данными, но без данных обновления. В этом случае данные отображения могут включать в себя информацию о модифицированных блоках в дополнение к атрибутам блоков и их индексам.
Фиг.8 показывает пример технологии формирования пакета обновления с помощью исторических данных и данных обновления. В случае формирования пакета обновления с помощью исторических данных и данных обновления процессор 10 пакетов обновлений формирует данные обновления, как показано на Фиг.8, без создания данных отображения. Здесь, данные обновления имеют структуру, содержащую данные блоков вместе с индексами блоков в V2.
Обращаясь к Фиг.8, V2 запрограммирована посредством добавления 6-го и 7-го блоков между 5-м и 6-м блоками в V1, добавлением новых блоков с 13-го по 17-й между 14-м и 15-м блоками в V1 и удалением блоков с 9-го по 12-й в V1. В этом случае процессор 10 пакетов обновлений объединяет индексы блоков и информацию о данных блоков в пакет обновления. Данные обновления имеют структуру, подобную структуре данных отображения. Т.е. данные обновления включают в себя командные строки, начинающиеся с одной из команд C (копирование), M (модификация, вставка или замена таким же по размеру) и S (сдвиг), и структурированы в следующие строковые форматы.
Строка команды копирования
[cmd][# начального блока][число блоков]
Строка команды модификации
[cmd][# начального блока][число блоков][данные]
Строка команды сдвига
[cmd][# начального блока][число блоков][позиция предыдущей версии]
Строка команды копирования включает в себя индекс начального блока и число блоков, которые должны быть скопированы; строка команды модификации включает в себя индекс начального блока и сцепление информации блоков; и строка команды сдвига включает в себя индекс начального блока и индекс соответствующего блока в V1.
В примере на Фиг.8 информация обновления для указания блоков, которые должны быть скопированы в V2, может быть выражена посредством "C:0,6": информация обновления для указания блоков, которые должны быть модифицированы, может быть выражена посредством "M:6,2,X,Y" и "M:13,5,A,B,C,D,E", и информация обновления для указания блоков, которые должны быть смещены, может быть выражена посредством "S:8,3,6,S:11,2,13" и "S:18,7,15".
В случае когда пакет обновления сформирован, как показано на Фиг.8, устройство-получатель, принявшее пакет обновления, копирует блоки с 0-го по 5-й в V2 из V1, добавляет X и Y для 6-го и 7-го блоков, сдвигает блоки с 6-го по 8-й V1 для блоков с 8-го по 10-й V2, отбрасывает блоки с 9-го по 12-й в V1, сдвигает 13-й и 14-й блоки V1 для 11-го и 12-го блоков в V2, добавляет A, B, C, D и E для блоков с 13-го по 17-й V2 и сдвигает блоки с 15-го по 21-й в V1 для блоков с 18-го по 24-й в V2. Данные обновления пакета обновления (дельта-пакет), сформированные процессором 10 пакетов обновлений, могут быть выражены в качестве Таблицы 5.
Таблица 5
C:0,6
M:6,2,X,Y
S:8,3,6
S:l 1,2,13
M:13,5AB,C,D,E
S:18,7,15
Процессор 10 пакетов обновлений формирует пакет обновления посредством объединения данных обновления и исторических данных и передает пакет обновления серверу 20 пакетов обновлений. В это время пакет обновления, сформированный процессором 10 пакетов обновлений, сжимается до сервера 20 пакетов обновлений. Посредством формирования пакета обновления с помощью данных обновления без данных отображения скорость формирования пакета обновления может быть увеличена. Пакет обновления может быть сформирован без процесса сжатия.
Технологии формирования пакета обновления описаны со ссылкой на Фиг. 9-13 более подробно при использовании исторических данных, данных отображения и данных обновления и использовании исторических данных и данных обновления.
Фиг.9 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с примерным осуществлением настоящего изобретения. Процессор 10 пакетов обновлений сжимает V1 и V2, создает данные обновления и данные отображения посредством анализа сравнения, формирует пакет обновления, объединяя данные установки, включающие в себя данные отображения, и данные обновления.
Фиг.10 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с другим примерным вариантом осуществления настоящего изобретения. Процессор 10 пакетов обновлений сжимает V1 и V2, создает данные обновления и формирует пакет обновления, объединяя данные установки и данные обновления. В этом варианте осуществления данные установки не включают в себя данные отображения.
Фиг.11 является схемой, иллюстрирующей формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.9, а Фиг.12 является схемой, иллюстрирующей формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.10.
Фиг.13 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с другим примерным вариантом осуществления настоящего изобретения. Процессор 10 пакетов обновлений сравнивает исходные данные V1 и V2, чтобы создать данные обновления посредством анализа сравнения, и формирует пакет обновления, объединяя данные установки, включая данные отображения, и данные обновления. В этом случае данные установки могут быть сформированы без данных отображения.
Обращаясь к Фиг. 9-12, процессор 10 пакетов обновлений включает в себя первый механизм 160 сжатия, первый механизм 165 восстановления, компаратор (блок сравнения) 110 и формирователь 180 данных установки, включающий в себя формирователь 120 исторических данных и формирователь 150 данных отображения, формирователь 130 пакета, второй механизм 140 сжатия и второй механизм 145 восстановления. Первая версия (V1) 50 и вторая версия (V2) 55 программы вводятся после сжатия, как показано на Фиг.4 и 5, или вводятся в форме исходных данных без процесса сжатия, как показано на Фиг.13. Компаратор 110 сравнивает V1 и V2 в единицах блоков и проверяет, чтобы определить, идентичны ли соответствующие блоки в V1 и V2 друг с другом. Компаратор 110 может использовать схему операции исключающего ИЛИ. Если сравненные блоки не идентичны друг другу, компаратор 110 отыскивает блок, идентичный соответствующему блоку в V2, в диапазоне поиска в V1. Если блок, идентичный соответствующему блоку в V2, найден в диапазоне поиска в V1, компаратор 110 доставляет информацию о результате сравнения и индекс блока, найденного для соответствующего блока в V2, формирователю 180 данных установки.
Т.е. компаратор 110 сравнивает блоки V1 и V2, имеющие одинаковый индекс блока, и если два блока, имеющие одинаковый индекс блока, идентичны друг другу, доставляет результат сравнения с информацией идентичности. Наоборот, если два блока не идентичны друг другу, компаратор 110 пытается отыскать блок, идентичный текущему блоку в V2, в диапазоне поиска в V1. Диапазон поиска определяется числом блоков от целевого блока в обратном и прямом направлениях процесса сжатия (в примерах на Фиг. 3-8 всего 30 блоков, 15 блоков в каждом из обратного и прямого направлений). Поиск может быть выполнен посредством колебания целевого блока V2 в диапазоне поиска в V1. Если идентичный блок найден в диапазоне поиска в V1, компаратор 110 доставляет результат сравнения с индексом идентичного блока формирователю 180 данных установки. Если идентичный блок не найден, компаратор 110 доставляет результат сравнения с индексом соседнего блока в V1 (в случае модифицированного блока индекс блока, следующего за тем, который должен быть скопирован, или смещенного блока) формирователю 180 данных установки.
Возвращаясь к Фиг. 3-5, если блоки с 0-го по 15-й в V2 сравниваются с соответствующими блоками V1, компаратор 110 доставляет результаты сравнения с их идентичностями формирователю 180 данных установки. В случае блоков с 16-го по 19-й V2 компаратор 110 распознает, что эти блоки не идентичны таковым блоками в V1, так что надо искать блоки, идентичные соответствующим целевым блокам V2, в диапазоне поиска в V1. Если диапазон поиска равен 15-ти блокам, компаратор 110 исследует блоки с 1-го по 15-й и затем исследует опять блоки с 17-го по 31-й в V1. В случае на Фиг.3 компаратор 110 узнает, что блоки с 16-го по 19-й в V2 идентичны с 12-м, 13-м, 8-м и 9-м блоками в V1 соответственно. Соответственно, компаратор 110 доставляет результат сравнения, имеющий индексы блоков с 16-го по 19-й в V2 и индексы 12-го, 13-го, 8-го и 9-го блоков в V1 с их связями, формирователю 180 данных установки.
В случае на Фиг.4 компаратор 110 узнает, что блоки с 16-го по 19-й в V2 похожи на 12-й, 13-й, 6-й и 7-й блоки в V1, так что компаратор 110 доставляет результат сравнения, имеющий индексы блоков с 16-го по 19-й в V2 и индексы блоков 12-го, 13-го, 6-го и 7-го блоков в V1 с их связями, формирователю 180 установки. В это время результат сравнения информирует о различии между данными K 17-го блока в V2 и данными B 13-го блока в V1 и различии между данными C 18-го блока в V2 и данными B 6-го блока в V1. Т.е., когда предыдущий блок из двух последовательных блоков в V2 идентичен предыдущему блоку из двух последовательных блоков в V1, а последующий блок из двух последовательных блоков V2 не идентичен последующему блоку из двух последовательных блоков в V1, компаратор 110 доставляет результат сравнения, имеющий индексы блоков с их связями.
В случае на Фиг.5, где блоки, идентичные с, или последовательность блоков, похожих на 16-й по 19-й блоки в V2, не найдены в диапазоне поиска в V1, компаратор 110 доставляет результат сравнения, указывающий то, что блоки с 16-й по 19-й в V2 не могут быть получены из V1.
Формирователь 180 данных установки может быть осуществлен с формирователем 120 исторических данных и формирователем 120 данных отображения, как показано на Фиг.9, или может быть осуществлен только с формирователем 120 исторических данных, как показано на Фиг.10. Формирователь 120 исторических данных сохраняет номер версии второй версии программы. Например, номер версии, сохраненный в формирователе 120 исторических данных, равен 5, версия второй программы V2 равна 5, так что первая версия V1 обновляется посредством объединения со второй версией V2, имеющей номер версии, равный 5. Формирователь 150 данных отображения создает данные отображения для формирования пакета обновления посредством анализа результата сравнения, имеющего индексы блоков первой и второй версий. Данные отображения создаются в формате [Cmd][# начального блока, число блоков][флаг][дальность][различие]. Если блоки первой и второй версий, имеющие одинаковые индексы блоков, идентичны друг другу, формирователь 150 данных отображения устанавливает поле команды данных отображения в C и перечисляет индексы блоков. Операция повторяется до тех пор, пока модифицированный блок или удаленный блок не будет обнаружен во второй версии.
Если блоки, имеющие одинаковый индекс блока, отличаются друг от друга, формирователь 150 данных отображения устанавливает поле команды данных отображения в M или S. Команда M может подразумевать команду вставки или команду замены. Формирователь 150 данных отображения анализирует результат сравнения в ассоциативной связи с индексами блоков. Если определено, что вторая версия V2 включает в себя дополнительные блоки по сравнению с первой версией V1, формирователь 150 данных отображения устанавливает поле команды данных отображения в M. После установки поля команды в M формирователь 150 данных отображения отыскивает блоки, идентичные добавленным блокам, в диапазоне поиска в V1.
Формирователь 150 данных отображения формирует данные отображения модификации в зависимости от того, найдены ли идентичные блоки, как в примере на Фиг.3, найдены ли похожие образцы блоков, как в примере на Фиг.4, или ни идентичные блоки, ни похожие образцы блоков не найдены, как в примере на Фиг.5, в диапазоне поиска на Фиг.1. В случае на Фиг.5 данные отображения и данные обновления формируются отдельно, как в Таблице 3, или данные обновления могут быть объединены в данные отображения, как в Таблице 4. В последующем варианте осуществления описывается, как сформировать данные отображения и данные обновления отдельно.
Когда модифицированный блок заменяет оригинальный блок того же размера, формирователь 150 данных отображения выполняет энтропийное кодирование на основе различия между двумя блоками и формирует данные отображения с помощью результата энтропийного кодирования. В этом случае блоки, следующие за замененным блоком, не сдвигаются. Когда некоторые блоки первой версии V1 удаляются во второй версии V2, формирователь 150 данных отображения формирует данные отображения для сдвига блоков, следующих за удаленным блоком, так что пустые пространства заполняются сдвинутыми блоками.
Если вставляются модифицированные блоки, оригинальные блоки сдвигаются вправо. После формирования данных отображения вставки для вставки модифицированных блоков формирователь 150 данных отображения анализирует выходные данные компаратора 110, т.е. индексы блоков первой и второй версий. Далее формирователь 150 данных отображения формирует данные отображения, объединяющие в себе индексы блоков, число блоков, которые должны быть сдвинуты, и число сдвинутых блоков первой и второй версий.
Если вводится вторая версия, показанная на Фиг.3, формирователь 150 данных отображения формирует данные отображения, как показано в Таблице 1. Если вводится вторая версия, показанная на Фиг.4, формирователь 150 данных отображения формирует данные отображения, как показано в Таблице 2. Если вводится вторая версия, показанная на Фиг.5, формирователь 150 данных отображения формирует данные отображения, как показано в Таблице 3 или 4. В последующем описании формирование данных отображения описывается с помощью примера на Фиг.5 и Таблицы 3.
Формирователь 130 пакетов анализирует сжатые данные блока второй версии, выведенные из первого механизма 160 сжатия, и данные отображения, выведенные из формирователя 150 данных отображения, и формирует пакет обновления на основе результата анализа. Формирователь 130 пакетов определяет, формировать ли данные обновления на основе данных отображения, принятых от формирователя 150 данных отображения. Более подробно, формирователь 130 пакетов анализирует поле команды данных отображения. Формирователь 130 пакетов не формирует данные обновления, если поле команд данных отображения блока установлено в C или S. Если данные отображения содержат данные для соответствующего блока или индекс блока для индексирования блока первой версии, даже если поле команды данных отображения установлено в M, формирователь 130 пакетов не формирует данные обновления. Наоборот, если данные отображения имеют поле команды, установленное в M, но не имеют индекса блока первой версии или энтропийных данных, формирователь 130 пакетов создает данные обновления с помощью сжатых данных блока второй версии. Т.е. формирователь 130 пакетов не формирует данные, если флаг установлен в F=1, хотя поле команды установлено в M, но формирует данные, когда поле команды установлено в M, а флаг установлен в 2.
Затем формирователь 130 пакетов формирует пакет обновления, объединяя данные обновления, если они предоставлены, и данные установки, сформированные формирователем 180 данных установки. Данные установки могут быть составлены только из исторических данных или исторических данных и данных отображения. Т.е. формирователь 180 данных установки может быть осуществлен с формирователем 120 исторических данных и формирователем 150 данных отображения, как показано на Фиг.9, или только с формирователем 120 исторических данных, как показано на Фиг.10.
Обращаясь к Фиг.10, формирователь 180 данных установки осуществлен без формирователя 150 данных отображения в отличие от Фиг.9. В этом случае формирователь 130 пакетов формирует данные обновления, включающие в себя индексы блоков первой версии, отображенные на индексы соответствующих блоков второй версии, и информацию о блоках данных. В это время данные обновления предоставляются с помощью команд, подобных предоставленным формирователем 150 данных отображения на Фиг.9. Данные обновления в каждом блоке могут быть выражены в таком формате, как C:[# начального блока][число блоков], M: [# начального блока][число блоков][данные] и S:[# начального блока][число блоков][позиция предыдущей версии]. Т.е. данные обновления для копирования блока из V1 включают в себя индекс начального блока и число блоков, которые должны быть скопированы; данные обновления для добавления или модификации блоков в V1 включают в себя индекс начального блока, число блоков, которые должны быть вставлены или модифицированы, и соединенные данные блока для блоков, которые должны быть вставлены или модифицированы; и данные обновления для сдвига блоков в V1 включают в себя блоки, которые должны быть смещены и индекс первого блока, который должен быть смещен.
Далее формирователь 130 пакетов формирует пакет обновления, объединяя данные обновления и исторические данные, и передает пакет обновления серверу 20 пакетов обновлений. Пакет обновлений может быть сжат вторым механизмом 140 сжатия перед передачей серверу 20 пакетов обновлений. В случае когда пакет обновления формируется без данных отображения, пакет обновления может быть сформирован быстро.
Как описано выше, пакет обновления может быть составлен из исторических данных, данных отображения и данных обновления или составлен только из исторических данных и данных обновления. Фиг.11 показывает формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.9, а Фиг.12 показывает формат данных пакета обновления, сформированного процессором пакетов обновлений на Фиг.10.
Пакет обновлений, выведенный из формирователя 130 пакетов, сжимается вторым механизмом 140 сжатия, и сжатый пакет обновления передается серверу 20 пакетов обновлений. Второй механизм 140 сжатия может не использоваться. Однако предпочтительно сжимать пакет обновления для улучшения эффективности передачи. В случае когда первая и вторая версии программ сжаты первым механизмом 160 сжатия, первый блок 165 восстановления восстанавливает сжатые первую и вторую версии для тестирования того, было ли правильно выполнено сжатие первой и второй версий. Если определено, что при сжатии первой и второй версий произошла ошибка, первый механизм 160 сжатия управляется так, чтобы повторить сжатие. Процессор 10 пакетов обновлений структурирован так, что первая и вторая версии программы сравниваются в формах сжатых программных данных на Фиг.4 и 5. В этом случае компаратор 110 сравнивает сжатые первую и вторую версии программы. Однако компаратор 110 может быть сконфигурирован, чтобы сравнивать исходные данные первой и второй версий.
Фиг.13 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений системы обновления программы в соответствии с другим примерным вариантом осуществления настоящего изобретения. Как показано на Фиг.13, процессор 10 пакетов обновлений осуществлен без первого механизма сжатия в отличие от процессоров пакетов обновлений на Фиг.4 и 5. Соответственно, компаратор 110 делит первую и вторую версии программы на блоки и сравнивает данные первой и второй версий программы в единицах блоков. Структура и работа процессора пакетов обновлений на Фиг.13 идентичны тем, что на Фиг.9, кроме того, что процессор пакетов обновлений на Фиг.13 не имеет первого механизма сжатия. Хотя формирователь 180 данных установки включает в себя формирователь 120 исторических данных и формирователь данных отображения, данные установки в формирователе 180 могут быть осуществлены только с помощью формирователя 120 исторических данных, как в формирователе пакетов обновлений на Фиг.10.
Как описано выше, процессор 10 пакетов обновлений сравнивает данные второй версии с соответствующими данными первой версии и формирует пакет обновления с или без данных установки в зависимости от результата сравнения. Если вторая версия запрограммирована так, что некоторые блоки данных удалены из или добавлены к первой версии, оригинальные блоки данных сдвигаются. В случае когда некоторые блоки удалены, блоки, следующие за удаленными блоками, сдвигаются влево. Наоборот, если некоторые блоки добавляются, занятые блоками позиции, в которые добавляются новые блоки, сдвигаются вправо. Когда вторая версия включает в себя модифицированные блоки, процессор 10 пакетов обновлений отыскивает блоки, идентичные модифицированным блокам, в диапазоне поиска первой версии и совпадения индексов блоков искомых блоков в V1 с индексами блоков модифицированных блоков в V2 или выполняет энтропийное кодирование на основе сходства некоторых последовательностей блоков в зависимости от результата поиска. Блоки в V1, замененные модифицированными блоками, сдвигаются вправо в V2 на такую величину, каково число модифицированных блоков. Процессор 10 пакетов обновлений создает данные отображения, имеющие поле команды, установленное в C (копирование), M (модификация) и S (сдвиг), на основе результата сравнения и формирует пакет обновления, составленный из данных отображения, исторических данных и данных обновления. Данные отображения могут быть объединены в данные обновления. Пакет обновления передается серверу 20 пакетов обновлений через проводной или беспроводной канал связи.
Если пакет обновления принимается от процессора 10 пакетов обновлений, сервер 20 пакетов обновлений уведомляет устройства-получатели 30 о выходе нового пакета обновления, так что получатели 30 могут загрузить пакет обновления с сервера 20 пакетов обновлений. Сервер пакетов обновлений может включать в себя сервер уведомлений для уведомления о выходе нового пакета обновления.
Если сообщение-уведомление об обновлении принимается от сервера 20 пакетов обновлений, устройство-получатель 30 запускает загрузку пакета обновления, отвечая на сообщение-уведомление об обновлении.
Фиг.14 является блок-схемой, иллюстрирующей конфигурацию устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.14, устройство-получатель 30 включает в себя загрузчик 220, установщик 230, транслятор 240, первое запоминающее устройство 250 и второе запоминающее устройство 260.
Загрузчик 220 принимает пакет обновления, загруженный с сервера 20 пакетов обновлений, установщик 230 извлекает данные установки и данные обновления и сохраняет извлеченные данные установки и данные обновления в первом запоминающем устройстве 250. Данные установки составлены из исторических данных и данных отображения. Однако данные установки могут включать в себя только исторические данные. В случае когда данные установки не имеют данных отображения, информация об отображении блоков может содержаться в данных обновления. Если принимаются данные установки, не имеющие данных отображения, установщик 230 выполняет сравнительный анализ по первой версии и данным обновления и определяет, формировать ли данные отображения, в зависимости от результата анализа. В случае когда данные отображения не формируются установщиком 230, транслятор 240 может объединить пакет обновления и первую версию программы с помощью информации отображения, содержащейся в данных обновления. Установщик 230 сохраняет исторические данные, данные отображения и данные обновления в области первого запоминающего устройства 250, подготовленного для пакета обновления. Первое запоминающее устройство 250 может хранить первую версию программы и, по меньшей мере, один пакет обновления для обновления первой версии до второй версии программы. Число N пакетов обновлений, которые могут быть сохранены в первом запоминающем устройстве 250, может быть предварительно установлено. В этом варианте осуществления N установлено в 6.
Если загружается пакет обновления для новой версии программы, устройство-получатель 30 выводит предупреждение для уведомления пользователя о том, что подготовлено обновление программы. В это время транслятор 240 считывает данные первой версии программы и пакет обновления для второй версии и объединяет данные первой версии и пакет обновления так, чтобы создать вторую версию. Вторая версия программы загружается во второе запоминающее устройство 260. В это время транслятор 240 анализирует данные установки пакета обновления, чтобы проверить номер версии и целевую версию, которая должна быть обновлена. Также транслятор 240 анализирует данные отображения и обновляет данные блоков целевой версии (в этом варианте осуществления первая версия) с соответствующими данными обновления со ссылкой на данные отображения. В случае когда данные установки не имеют данных отображения, транслятор 240 анализирует исторические данные и определяет целевую версию программы, которая должна быть обновлена, на основе результата анализа исторических данных. Вторая версия может быть сформирована посредством объединения данных обновления пакета обновления и первой версии. Транслятор 240 загружает данные второй версии во второе запоминающее устройство 260, пока первая версия обновляется до второй версии. После завершения процесса обновления устройство-получатель 30 работает со второй версией программы, загруженной во второе запоминающее устройство 260.
Как описано выше, первое запоминающее устройство 250 хранит первую версию программы и, по меньшей мере, один пакет обновления для обновления первой версии до второй версии. Пакет обновления включает в себя данные установки (исторические и данные отображения) и данные обновления. Данные установки могут быть составлены только из исторических данных. Также, пакет обновления может быть составлен только из данных установки. Данные установки составляются из данных отображения, содержащих информацию об отображении исторических данных и данных обновления пакета обновления. Данные отображения предоставляют связь между двумя версиями, используя 3 типа команд, т.е. копирование, модификация и сдвиг. Данные отображения используются для быстрого вычисления адреса для обновления данных первой версии до данных второй версии. Со ссылкой на данные первой версии, сохраненные в первом запоминающем устройстве 250 и с помощью данных отображения, вторая версия программы может быть быстро сформирована и загружена во второе запоминающее устройство 260.
Данные установки пакета обновления могут быть созданы с или без данных отображения в формирователе 10 пакетов обновлений. Соответственно, пакет обновления, загруженный с сервера 20 пакетов обновлений, может включать в себя или не включать данные отображения. В случае когда пакет обновления не имеет данных отображения, установщик 230 может создать данные отображения посредством сравнения данных первой версии, сохраненных в первом запоминающем устройстве 250, и пакета обновления и анализа результата сравнения для отображения данных обновления, содержащихся в пакете обновления, в данные первой версии. Данные обновления могут быть структурированы, как показано на Фиг.8. Причиной, почему данные формируются установщиком 230, является увеличение скорости формирования второй версии транслятором 240. В случае когда данные обновления содержат информацию отображения для отображения данных обновления на данные первой версии, данные обновления могут быть непосредственно заменены или заменены со ссылкой на данные отображения, сформированные позже.
Хотя предпочтительно обновить первую версию с помощью самого последнего пакета обновления, первая версия может быть обновлена с помощью пакета обновления для другой версии программы. Это возможно, так как устройство-получатель 30 предоставляет для хранения различные версии пакетов обновлений. Соответственно, если формирование второй версии заканчивается неудачей с отдельным пакетом обновления, возможно попытаться сформировать вторую версию с помощью другого пакета обновления, сохраненного в первом запоминающем устройстве 250.
Первое запоминающее устройство 250 может быть осуществлено с несколькими областями хранения для хранения пакетов обновлений соответственно (в этом варианте могут быть сохранены 6 пакетов обновлений). Соответственно, даже если новый пакет обновления загружается для сервера 20 пакетов обновлений, ранее загруженный пакет обновления не удаляется. Записи об обновлениях хранятся в качестве истории обновлений, сохраняя в это время данные установки и данные обновления для первой версии программы. Так как информация о первой и второй версиях сохраняется с историей обновлений, обновление может быть выполнено с высокой отказоустойчивостью. Например, когда последний пакет обновления не сработал, другой пакет обновления может быть использован пользовательским приложением. Даже в наихудшем случае, когда все пакеты обновлений не работают, может быть восстановлена исходная версия программы.
Фиг.15 является блок-схемой, иллюстрирующей конфигурацию первого запоминающего устройства устройства-получателя на Фиг.14. Обращаясь к Фиг.15, первое запоминающее устройство включает в себя первую область 310 хранения, вторую область 320 хранения и третью область 330 хранения.
Первая область 310 хранения хранит первую версию программы в форме исходных данных или сжатых данных. Вторая область 320 хранения хранит, по меньшей мере, один пакет обновления для формирования новой версии программы. Каждый пакет обновления включает в себя данные обновления и данные установки. Данные обновления могут включать в себя команды с индексами блоков для обновления данных старой версии, или данных, которые должны быть добавлены для новой версии. Соответственно, размер второй области 320 хранения определяется на основе числа пакетов обновлений, сохраненных в ней. Третья область 330 хранения является пользовательским пространством для хранения пользовательских данных с файловой системой.
Фиг.16 является схемой, иллюстрирующей структуру второй области 320 хранения первого запоминающего устройства 250 на Фиг.15, а Фиг.17 является схемой, иллюстрирующей формат исторических данных каждого пакета обновления, сохраненного во второй области 320 хранения на Фиг.16.
Обращаясь к Фиг.16, вторая область 320 хранения предоставлена с предварительно определенным числом областей хранения для хранения пакетов обновлений (в этом варианте осуществления 6 пакетов обновлений). Каждая область хранения структурирована, чтобы хранить исторические данные, данные отображения и данные обновления, составляющие пакет обновления. В типичном варианте, пакет обновления включает в себя данные установки и данные обновления, а данные установки составлены из исторических данных или исторических данных и данных отображения. Вторая область 320 хранения может быть сконфигурирована, чтобы отдельно хранить исторические данные и данные отображения. Исторические данные сохранены для сохранения ссылки на первую версию, сохраненную в первой области 310 хранения. Данные отображения и данные обновления первой версии могут быть не сохранены или могут существовать как отсутствие данных. Фиг.16 показывает пример пакета обновления, составленного из исторических данных, данных отображения и данных обновления. В случае когда процессор 10 пакетов обновлений формирует пакет обновления с историческими данными и данными отображения, вторая область 320 хранения может быть структурирована с областями хранения для хранения исторических данных и данных отображения соответствующей версии.
Обращаясь к Фиг.17, исторические данные включают в себя поле версии, поле размера, поле объединенного флага и поле флага неудачи. Здесь поле версии содержит номер версии пакета обновления (одно из #2 по #7 на Фиг.16), поле размера содержит значение размера исторических данных, поле объединенного флага содержит номер версии целевой версии, которая должна быть обновлена (в этом примере номер версии #1 первой версии), и поле флага неудачи содержит информацию, указывающую случай неудачи загрузки. Номер версии #1 первой версии может содержаться в поле версии и связан с полем объединенного флага. Например, если поле версии и поле объединенного флага исторических данных пакета обновления соответственно содержат #5 и V#1, устройство-получатель 30 обновляет первую версию #1 посредством объединения второй версии #5 и первой версии #1. Загруженный пакет обновления сохраняется во второй области 320 хранения первого запоминающего устройства 310, как показано на Фиг.15 в структуре на Фиг.10. Когда запрашивается пакет обновления, сохраненный во второй области 320 хранения, запрошенный пакет объединяется с первой версией, сохраненной в первой области 310 хранения, так что первая версия обновляется до второй версии.
Фиг.18 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно примерному варианту осуществления настоящего изобретения. В примере, показанном на Фиг.18, первое запоминающее устройство является энергонезависимой памятью, такой как флэш-память, а второе запоминающее устройство является энергозависимой памятью, такой как оперативное запоминающее устройство (RAM).
Обращаясь к Фиг.18, если введен запрос обновления, загрузчик (не показан) загружает пакет обновления запрошенной версии из второй области 320 хранения первого запоминающего устройства 250, и транслятор 240 формирует вторую версию программы посредством объединения загруженного пакета обновления и первой версии программы, сохраненной в первой области 310 хранения, и затем загружает вторую версию во второе запоминающее устройство 260. Запрос обновления формируется в ответ на пользовательскую команду. Т.е. устройство-получатель 30 выводит предупреждение для уведомления пользователя о выходе пакета обновления, когда пакет обновления загружается, или существует загруженный пакет, который не применяется, так что пользователь может запустить обновление целевой программы. Если запрос обновления вводится пользователем в ответ на предупреждение об обновлении, устройство-получатель 30 выполняет процесс обновления, как описано выше, и загружает обновленную версию программы во второе запоминающее устройство 260. Соответственно, устройство-получатель 30 работает впоследствии со второй версией.
Процесс обновления может быть выполнен после того, как устройство получателя инициализируется. Как показано на Фиг.15, первая версия и пакеты обновления программы отдельно хранятся в первом запоминающем устройстве 250, и обновление программы выполняется посредством объединения первой версии и одного из пакетов обновлений, так что вторая версия программы формируется и загружается во второе запоминающее устройство 260.
Фиг.19 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения. В этом варианте осуществления первое запоминающее устройство 250 не хранит пакет обновления для второй версии.
Обращаясь к Фиг.19, первое запоминающее устройство 250 хранит первую версию программы. Здесь первая версия может быть начальной версией программы. Первая версия программы составлена из n блоков B#1 по B#n. Данные установки первой версии включают в себя исторические данные и данные отображения. Исторические данные имеют поле версии, установленное в #1, и поле объединенного флага, установленное в #1. Данные отображения могут быть структурированы в форме одной из Таблиц 1 по 3.
Если вводится команда запроса обновления, транслятор 240 анализирует данные установки. В случае когда пакет обновления не существует в первом запоминающем устройстве 250, область данных отображения находится в состоянии отсутствия или предоставлена с данными отображения {C:0,n,F:0,null,null}. Такие данные отображения применяют команду, чтобы загрузить первую версию программы, сохраненную в первом запоминающем устройстве 250, во второе запоминающее устройство, таким образом, транслятор 240 копирует первую версию из первого запоминающего устройства 250 и загружает скопированную первую версию во второе запоминающее устройство 260. Соответственно, устройство-получатель 30 управляется первой версией, загруженной во второе запоминающее устройство 260. Первая версия может быть сохранена в первом запоминающем устройстве 250 в сжатом состоянии. В этом случае транслятор 240 восстанавливает сжатую первую версию с помощью механизма 270 восстановления и затем загружает ее во второе запоминающее устройство 260. Также, когда загружается пакет обновления, сжатый вторым механизмом 140 сжатия процессора 10 пакетов обновлений, транслятор 240 выполняет трансляцию после того, как сжатый пакет обновления восстанавливается механизмом 270 восстановления, перед загрузкой во второе запоминающее устройство 260.
Фиг.20 и 21 являются блок-схемами, иллюстрирующими операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения. В этом варианте осуществления первая версия V1 сохранена в первой области 310 хранения первого запоминающего устройства 250, а пакеты обновления сохранены во второй области 320 хранения первого запоминающего устройства 250. Первая версия может быть первоначальной версией или предварительно установленной контрольной версией, а каждый пакет обновления составлен из данных обновления и данных установки. Данные установки включают в себя исторические данные, содержащие номера версий второй версии и целевой версии, которая должна быть обновлена (в примере первая версия), и данных отображения. Первая версия составлена из n блоков с B#1 по B#n, как на Фиг.20 и 21. Поле объединенного флага исторических данных установлено в #0, и данные отображения могут быть сконструированы в форме одной из Таблиц 1 по 3.
Обращаясь к Фиг.20, первая область 310 хранения первого запоминающего устройства 250 хранит первую версию программы, а конкретный пакет обновления, сохраненный во второй области 320 хранения первого запоминающего устройства 250, имеет данные отображения в форме Таблицы 1. Исторические данные пакета обновления имеют флаг для объединения пакета обновления с первой версией. В этом случае транслятор 240 обновляет первую версию до второй версии со ссылкой на данные отображения и загружает вторую версию во второе запоминающее устройство 260. Данные отображения включают в себя информацию для копирования с 0-го по 15-й блоков первой версии, копирования 12-го, 13-го, 8-го и 9-го блоков первой версии для с 16-го по 19-й блоков второй версии и сдвига вправо блоков, следующих за 15-м блоком первой версии. Соответственно, транслятор 240 обновляет первую версию со ссылкой на данные отображения и загружает обновленную программу, т.е. вторую версию, во второе запоминающее устройство 260, как показано на Фиг.21.
В случае когда существует промежуток между блоками, блоки сдвигаются в промежуток.
Обращаясь к Фиг.21, первая область 310 хранения первого запоминающего устройства хранит первую версию программы, а вторая область 320 хранения первого запоминающего устройства 250 хранит пакеты обновления. Предполагается, что конкретный пакет обновления имеет свои данные отображения, структурированные в форме Таблицы 3. Исторические данные пакета обновления имеют флаг для указания объединения первой версии и пакета обновления. Данные отображения имеют информацию для копирования блоков с 0-го по 15-й первой версии, вставки данных обновления {Z, W, P, X} для блоков с 16-го по 19-й второй версии и сдвига вправо блоков, следующих за 15-м блоком первой версии. Таким образом, транслятор 250 обновляет первую версию со ссылкой на данные отображения.
После того как программа обновлена, устройство-получатель 30 управляется второй версией программы, которая обновляется в соответствии с примерами на Фиг.20 и 21. Первая версия и пакеты обновлений могут быть сохранены в сжатых состояниях. Пакеты обновлений могут быть загружены как сжатый пакет или сжаты после загрузки. В случае когда первая версия и пакеты обновлений сохранены в сжатых состояниях, транслятор 240 восстанавливает сжатые первую версию и пакеты обновлений с помощью механизма 270 восстановления для использования в процессе обновления. В случае когда первая и вторая версии сравниваются в сжатых состояниях (когда первая и вторая версии сжаты первым механизмом 160 сжатия процессора 10 пакетов обновлений), блоки, введенные в транслятор 240, могут быть в сжатых состояниях. В этом случае транслятор 240 восстанавливает сжатые данные первой версии и пакет обновления с помощью механизма 270 восстановления и загружает восстановленные данные во второе запоминающее устройство 260.
Фиг.22 является блок-схемой, иллюстрирующей операцию обновления устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.22, первое запоминающее устройство 250 хранит первую версию программы и пакеты обновления для второй версии. Транслятор 240 объединяет пакет обновления и первую версию в ответ на команду обновления, так что вторая версия формируется и загружается во второе запоминающее устройство 260. После того, как вторая версия программы загружается во второе запоминающее устройство 260, устройство-получатель 30 управляется второй версией программы. Процесс обновления может выполняться повторно, когда устройство-получатель 30 инициализируется, или вводится команда обновления.
Как описано выше, способ обновления программы согласно варианту осуществления настоящего изобретения загружает пакет обновления по предварительно определенному стандартному каналу связи, сохраняет загруженный пакет обновления, выполняет обновление программы с помощью сохраненного пакета обновления, загружает обновленную программу и оперирует устройством-получателем под управлением обновленной программы.
Способ обновления программы настоящего изобретения может быть процедурой формирования пакета обновления, процедурой обработки загруженных данных установки, процедурой управления загруженным пакетом обновления и процедурой выполнения обновления.
В процедуре формирования пакета обновления первая и вторая версии программы вводятся в процессор 10 пакетов обновлений. Первая и вторая версии могут быть введены в исходном или в сжатом состоянии. Далее, первая и вторая версии сравниваются так, что определяются различия между двумя версиями.
На основе различий формируются данные установки, включающие в себя данные отображения для объединения пакета обновления с первой версией, установленной в устройстве получателя. Данные установки упаковываются в пакет обновления вместе с данными обновления, и пакет обновления передается серверу пакетов обновлений.
В процедуре обработки загруженных данных установки пакет обновления, переданный серверу пакетов обновлений, загружается в устройство получателя. Устройство-получатель может получить данные установки, содержащиеся в пакете обновления, сравнивая пакет обновления с контрольной версией (здесь, первой версией), и данные установки существуют, чтобы облегчить вычисление адреса. Т.е. при объединении первой версии, сохраненной в первом запоминающем устройстве 250, и пакета обновления во второе запоминающее устройство 260 данные первой версии и пакет обновления могут быть быстро обработаны на блочной основе с помощью данных установки.
В процедуре управления пакетом обновления данные установки используются для быстрого вычисления адреса относительно данных отображения, которые получаются посредством сравнения пакета обновления и первой версии, и для облегчения объединения первой версии и пакета обновления во втором запоминающем устройстве 260.
Установка пакета обновления может быть выполнена в зависимости от того, упакованы или нет данные отображения в пакет обновления. В случае когда данные отображения упакованы в пакет обновления, устройство-получатель 30 извлекает исторические данные, данные отображения и данные обновления из пакета обновления и независимо сохраняет извлеченные данные в областях пакета обновления первого запоминающего устройства 250.
С другой стороны, если данные отображения не содержатся в пакете обновления, устройство-получатель 30 может получить данные отображения посредством сравнения первой версии, сохраненной в первом запоминающем устройстве 250, и загруженного пакета обновления. В это время данные отображения могут быть объединены в данные обновления, как показано на Фиг.8. В этом случае устройство-получатель извлекает данные отображения из данных обновления во время процесса установки и устанавливает данные отображения в области данных отображения. Устройство-получатель также извлекает данные обновления и устанавливает их в области хранения пакета обновления. Соответственно, устройство-получатель может установить пакет обновления тем же образом, что и когда данные отображения упакованы в пакет обновления. Данные установки также включают в себя исторические данные пакета обновления. Исторические данные указывают версии пакетов обновлений и целевую программу. В этом варианте осуществления 6 пакетов обновлений могут быть сохранены в первой памяти 250. Когда возникает сбой при объединении с использованием конкретного пакета обновления, устройство-получатель позволяет пользователю выбрать другой пакет обновления, путем отображения списка пакетов обновлений.
В процедуре выполнения обновлений, пакеты обновлений сохраняются в соответствующих областях хранения, подготовленных в первой памяти 250. Соответственно, когда загружается новый пакет обновления, ранее загруженный пакет обновления не стирается. Соответственно, когда конкретный пакет обновления не загружается, устройство-получатель 30 позволяет пользователю выбрать другой пакет обновления для обновления программы путем отображения списка пакетов обновлений. Даже в наихудшем случае, когда все пакеты обновлений не загружаются, первая версия программы может быть загружена.
Фиг.23 является блок-схемой, иллюстрирующей способ обновления программы согласно примерному варианту осуществления настоящего изобретения. Этапы способа обновления программы изображены относительно операций процессора 10 пакетов обновлений и устройства-получателя 30 системы обновлений программы на Фиг.1.
Обращаясь к Фиг.23, процессор 10 пакетов обновлений принимает первую и вторую версию программы на этапе S411. Пакет обновления формируется, когда вводится новая версия программы, посредством сравнения старой версии, т.е. первой версии, и новой версии, т.е. второй версии. Пакет обновления составляется из данных обновления и данных установки. Первая версия может быть исходной версией или контрольной версией, которая запрограммирована, чтобы объединяться с обновленными пакетами. Пакет обновления является информационным пакетом для обновления первой версии программы, установленной в устройстве-получателе, до второй версии. Устройство-получатель может хранить, по меньшей мере, один пакет обновления.
Если принимаются первая и вторая версии программы, процессор 10 пакетов обновлений анализирует различия между первой и второй версиями на этапе S413 и формирует пакет обновления на основе результата анализа на этапе S415. Пакет обновления может включать в себя данные обновления и данные установки, содержащие информацию для объединения данных обновления с первой версией. Данные установки включают в себя исторические данные, предоставляющие историю второй версии, и данные отображения, предоставляющие информацию для установления соответствия между блоками первой и второй версий программы. Данные отображения не должны содержаться в данных установки. В этом случае устройство-получатель может формировать данные отображения в процессе обновления программы. Данные установки предусмотрены для облегчения процесса обновления программы. Если пакет обновления успешно сформирован, процессор 10 пакетов обновлений передает пакет обновления серверу 20 пакетов обновлений. По приеме пакета обновления сервер 20 пакетов обновлений передает уведомляющее сообщение об обновлении устройству-получателю 30. Если уведомляющее сообщение об обновлении принято, устройство-получатель 30 начинает загрузку пакета обновления в ответ на команду пользователя. Процедура загрузки может быть определена на основе стандарта связи, поддерживаемого устройством-получателем 30. Стандарты связи включают в себя CDMA, UMTS, GSM, WiBro, Wi-Fi, WiMAX, Bluetooth, UWB, Zigbee и USB.
Если загрузка пакета обновления началась, устройство-получатель 30 принимает пакет обновления на этапе S451 и сохраняет загруженный пакет обновления в первое запоминающее устройство 250. Первое запоминающее устройство 250 снабжено первой областью 310 хранения для хранения первой версии программы и второй областью 320 хранения для хранения пакетов обновлений. Вторая область 320 хранения может быть структурирована в форме множественных областей хранения для хранения соответствующих пакетов обновлений. В этом варианте осуществления вторая область 320 хранения имеет 6 областей хранения. Каждая область хранения может отдельно хранить исторические данные, данные отображения и данные обновления.
В случае когда данные отображения не содержатся в данных установки загруженного пакета обновления, установщик 230 устройства-получателя 30 формирует данные отображения со ссылкой на пакет обновления и первую версию программы. После того как пакет обновления сохраняется в первом запоминающем устройстве 250, устройство-получатель 30 обновляет, в ответ на команду пользователя, или перезагружает программу до второй версии посредством объединения пакета обновления и первой версии и затем загружает вторую версию программы во второе запоминающее устройство 260 на этапе S455. Соответственно, устройство-получатель 30 впоследствии работает под управлением второй версии программы. Второе запоминающее устройство 260 может быть работающей памятью, такой как энергозависимая память. Таким образом, устройство-получатель 30 формирует вторую версию программы посредством объединения первой версии, сохраненной в первом запоминающем устройстве 250, и недавно загруженного пакета обновления в процессе инициализации системы и загружает вторую версию во второе запоминающее устройство 260 для управления операциями устройства-получателя 30. Когда обновление программы заканчивается неудачей относительно конкретного пакета обновления, устройство-получатель 30 может автоматически попытаться обновить программу с помощью другого пакета обновления, сохраненного в первом запоминающем устройстве 250. Также, устройство-получатель 30 позволяет пользователю выбрать пакет обновления, предоставляя список пакетов обновлений, так что первая версия обновляется с помощью выбранного пакета обновления.
Процедура формирования пакета обновления описывается далее в данном документе более подробно.
Фиг. 24-26 являются блок-схемами, иллюстрирующими процедуру формирования пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.24, процессор 10 пакетов обновлений загружает первую и вторую версии программы в память на этапе S501 и сравнивает две версии друг с другом, чтобы определить различия между двумя версиями на этапе S503. После определения различий между первой и второй версиями процессор 10 пакетов обновлений формирует данные анализа сравнения. Далее, процессор 10 пакетов обновлений формирует данные обновления на этапе S505 и данные установки на этапе S507 на основе анализа сравнения. Процессор 10 пакетов обновлений может быть осуществлен с формирователем 130 пакетов и формирователем 180 данных установки. В этом случае данные обновления и данные установки могут быть сформированы в параллельных процессах. Формирователь 130 пакетов также может быть осуществлен, чтобы формировать данные обновления и данные установки последовательно. В этом случае данные обновления могут быть сформированы перед или после формирования данных установки.
Данные установки предоставляют информацию для объединения пакета обновления с первой версией программы в форме, указывающей исторические данные и данные отображения. Исторические данные содержат информацию о версиях первой и второй версий программы и размере версий. Данные отображения включают в себя информацию для сопоставления блоков первой и второй версий программы. Данные отображения могут быть сформированы в процессоре 10 пакетов обновлений или в устройстве-получателе 30. Соответственно, данные отображения не должны быть упакованы в пакет обновления.
Фиг.25 является блок-схемой, иллюстрирующей процедуру формирования данных установки на этапе S507 на Фиг.24, а Фиг.26 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления этапа S509 на Фиг.24.
Соответственно, в процедуре формирования данных установки на Фиг.25 данные отображения могут быть или могут не быть сформированы. Также, в процедуре формирования пакета обновления на Фиг.26 данные отображения могут быть или могут не быть объединены. Обращаясь к Фиг.25, процессор 10 пакетов обновлений формирует исторические данные на этапе S521 и определяет, требуются ли данные отображения для пакета обновления, на этапе S523. Если требуются данные отображения, процессор 10 пакетов обновлений формирует данные отображения со ссылкой на анализ сравнения на этапе S525.
Обращаясь к Фиг.26, процессор 10 пакетов обновлений определяет, упаковывать ли данные отображения в пакет обновления на этапе S531. Если определено упаковывать данные отображения в пакет обновления, процессор 10 пакетов обновлений формирует пакет обновления с данными отображения на этапе S533, а иначе, процессор 10 пакетов обновлений формирует пакет обновления без данных отображения на этапе S535. Данные отображения могут быть структурированы, как показано в Таблицах 1-4 в ассоциативной связи с Фиг. 3-5.
На этапе S501 на Фиг.24 первая и вторая версии программы могут быть введены в состоянии исходных данных или сжатых данных (например, первая и вторая версии могут быть сжаты первым механизмом 160 сжатия). Также пакет обновления, сформированный на этапе S509, может быть сжат перед передачей серверу пакетов обновлений (например, пакет обновления может быть сжат вторым механизмом 140 сжатия процессора 10 пакетов обновлений). Посредством сжатия первой и второй версии может быть уменьшена обработка данных, необходимая для сравнения первой и второй версий. Сжатие пакета обновления может уменьшить объем передаваемых данных. Когда применяется сжатие данных, сжатые данные восстанавливаются, чтобы выполнить тест достоверности. Только когда сжатые данные проходят тест, может быть выполнен следующий процесс.
Фиг.27 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения. Фиг.28 является блок-схемой, иллюстрирующей процедуру теста достоверности сжатия на Фиг.27. Фиг.29 является блок-схемой, иллюстрирующей процедуру формирования данных установки на Фиг.27. Фиг.30 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления на Фиг.27.
Обращаясь к Фиг. 17-20, конфигурационный файл вводится в процессор 10 пакетов обновлений на этапе S551. Конфигурационный файл включает в себя флаги для определения операций процессора 10 пакетов обновлений. Среди флагов C_FLAG является флагом сжатия для конфигурирования того, применять или нет сжатие данных, M_FLAG является флагом формирования отображения для конфигурирования того, формировать или нет данные отображения, и V_FLAG является флагом верификации для проверки того, нормально или нет выполнено сжатие, посредством восстановления сжатой информации. Далее, процессор 10 пакетов обновлений загружает первую и вторую версии программы на этапе S553. Первая версия может быть первоначальной версией или контрольной версией для обновления программы, а вторая версия является последней версией программы.
После загрузки двух версий процессор 10 пакетов обновлений определяет, сжимать ли обе версии, обращаясь к C_FLAG на этапе S555. Если сжатие не требуется, процессор 10 пакетов обновлений конфигурирует две версии для формирования отображения на этапе S561. Если C_FLAG установлен в 1 (C_FLAG=1), т.е. требуется сжатие данных, процессор 10 пакетов обновлений запускает механизм сжатия (механизм сжатия_1) на этапе S557 и управляет механизмом сжатия, чтобы сжать первую и вторую версии программы на этапе S559. Далее, процессор 10 пакетов обновлений запускает компаратор, чтобы сравнить две сжатые версии на этапе S563.
Процедура сжатия на этапе S559 выполняется, как показано на Фиг.28. В случае когда флаг сжатия установлен, флаг верификации, как правило, установлен. Если флаг верификации (V_FLAG) установлен, процессор 10 пакетов обновлений восстанавливает сжатые данные и сравнивает восстановленные данные с оригинальными данными перед сжатием.
Обращаясь к Фиг.28, после сжатия первой и второй версий программы, процессор 10 пакетов обновлений определяет, установлен ли флаг верификации в 1 (V_FLAG=1) на этапе S601. Если флаг верификации установлен в 1, процессор 10 пакетов обновлений запускает механизм восстановления (Механизм восстановления_1), чтобы восстановить сжатые первую и вторую версии на этапе S603, и сравнивает данные до и после сжатия на этапе S605. Далее, процессор 10 пакетов обновлений проверяет успешность сжатия, определяя, идентичны ли друг другу данные до и после сжатия, на этапе S607. Если сжатие верифицировано, процессор 10 пакетов обновлений отправляет результаты верификации компаратору 110 на этапе S609, а иначе процессор 10 пакетов обновлений выполняет процесс обработки ошибки на этапе S611. В этом случае процессор 10 пакетов обновлений может опять выполнить сжатие первой и второй версий.
Возвращаясь к Фиг.27, после сравнения первой и второй версий на этапе S563 процессор 10 пакетов обновлений запускает формирователь 180 данных установки, чтобы сформировать данные установки на этапе S565. Формирователь 180 данных установки может формировать или может не формировать отображение в зависимости от значения M_FLAG. Соответственно, процессор 10 пакетов обновлений определяет, установлен ли флаг отображения в 1 (M_FLAG=1) на этапе S567. Если флаг отображения установлен в 1, процессор пакетов обновлений управляет компаратором 110, чтобы сравнить первую и вторую версии на этапе S569. Сравнение данных выполняется в единицах блоков предварительно определенного размера данных. Если блок, имеющий другие данные, найден в процессе сравнения, выполняется поиск идентичного блока в диапазоне поиска первой версии, как показано на Фиг. 3-5.
Первая и вторая версии сравниваются в состоянии исходных данных или в состоянии сжатых данных. После завершения сравнения процессор 10 пакетов обновлений управляет компаратором 110, чтобы передать результат сравнения формирователю 180 данных установки на этапе S571 и сохранить результат сравнения в области хранения на этапе S577. В случае когда флаг отображения установлен в 0 (M_FLAG=0), процессор 10 пакетов обновлений управляет компаратором, чтобы сравнить первую и вторую версии на этапе S575 и сохранить результат сравнения для использования в формировании данных установки в области хранения на этапе S577. Первая и вторая версии сравниваются в состоянии исходных данных или в состоянии сжатых данных. Когда требуются данные отображения, процессор 10 пакетов обновлений управляет передачей результата сравнения формирователю 180 данных установки и сохраняет результат сравнения в области хранения для использования в формировании данных отображения и данных обновления. Когда данные отображения не требуются, процессор 10 пакетов обновлений управляет сохранением результата сравнения в области хранения для использования в формировании данных обновления.
Далее, процессор 10 пакетов обновлений управляет формирователем 180 данных установки, чтобы сформировать данные установки на этапе S579. Процедура формирования данных установки выполняется, как показано на Фиг.29.
Обращаясь к Фиг.29, процессор 10 пакетов обновлений управляет формирователем 180 данных установки, чтобы начать формирование данных установки на этапе S651, и проверяет историческую информацию первой и второй версий на этапе S653. Далее, процессор 10 пакетов обновлений запускает формирователь 120 исторических данных на этапе S655, так что формирователь исторических данных формирует исторические данные на этапе S657. Исторические данные имеют формат, состоящий из заголовка, информации о первой введенной версии, информации о второй введенной версии и информации о памяти. Каждая из информации о первой и второй введенной версии состоит из идентификатора версии (SW VER), отметки времени (SW time stamp) и контрольной суммы (SW checksum). Т.е. исторические данные предоставляют информацию о номерах версий первой и второй версий.
После того, как исторические данные сформированы, процессор 10 пакетов обновлений определяет, установлен ли флаг отображения в 1 (M_FLAG=1) на этапе S659. Если флаг отображения установлен в 1, процессор 10 пакетов обновлений запускает формирователь 150 данных отображения на этапе S603, и формирователь 150 данных отображения формирует данные отображения (S665). Данные отображения включают в себя команды, такие как копирование (C), модификация (M) и сдвиг (S). Данные отображения устанавливаются по каждому блоку. Данные отображения формируются на основе результата сравнения первой и второй версий, так что блоки, данные которых идентичны данным предыдущей версии, устанавливаются с атрибутом C, блоки, дополнительно вставленные к предыдущей версии или модифицированные из блоков предыдущей версии, устанавливаются в M, а блоки, расположенные в позициях, которые должны быть заняты вставленными или модифицированными блоками устанавливаются с атрибутом S. Т.е. данные отображения состоят из индексов блоков и данных, указывающих различия между первыми и вторыми блоками. Как описано выше, данные отображения создаются в формате [Cmd][# начального блока, число блоков][флаг][дальность][различие]. Когда первая и вторая версии даны по Фиг.3-5, данные отображения структурированы, как показано в Таблицах 1-3. В этом случае данные обновления становятся блоками, ассоциативно связанными с командой M, т.е. модифицированными данными. После формирования данных отображения, процессор 10 пакетов обновлений объединяет исторические данные и данные отображения на этапе S667. Соответственно, данные установки формируются с или без данных отображения на этапе S661.
Возвращаясь к Фиг.27, после того, как данные установки сформированы, процессор 10 пакетов обновлений запускает формирователь 130 пакетов на этапе S581, и формирователь 130 пакетов формирует пакет обновления на этапе S583.
Фиг.30 является блок-схемой, иллюстрирующей процедуру формирования пакета обновления способа обновления программы согласно другому примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.30, процессор 10 пакетов обновлений управляет формирователем 130 пакетов, чтобы сформировать данные обновления на основе результата сравнения. Когда блоки, идентичные с модифицированными блоками второй версии, не найдены в первой версии, формирователь 130 пакетов устанавливает модифицированные блоки в качестве данных обновления. Местоположение данных обновления определяется в зависимости от данных отображения. Хотя предполагается, что пакет обновления включает в себя исторические данные, данные отображения и данные установки в этом варианте осуществления, пакет обновления может быть составлен без данных отображения. В случае когда пакет обновления составлен только из данных установки, процессор 10 пакетов обновлений формирует данные отображения, имеющие информацию об установлении соотношения по блокам второй версии, которые отличаются от первой версии, и сами отличающиеся блоки.
Когда данные установки не имеют данных отображения, формирователь 130 пакетов обновлений может формировать данные обновления, имеющие индексы блоков второй версии, которые не должны быть объединены с первой версией. В этом случае данные обновления могут быть структурированы в формате, имеющем команды C, M и S, как показано на Фиг.8. Т.е. данные обновления для копирования блока из первой версии включают в себя индекс начального блока и число блоков, которые должны быть скопированы, данные обновления для добавления или модификации блоков первой версии включают в себя индекс начального блока, число блоков, которые должны быть вставлены или модифицированы, и соединенные данные блока для блоков, которые должны быть вставлены или модифицированы, и данные обновления для сдвига блоков первой версии включают в себя число блоков, которые должны быть сдвинуты, и индекс первого блока, который должен быть сдвинут. Таким образом, данные обновления включают в себя информацию отображения.
Предпочтительно, данные обновления передаются в сжатом состоянии. Соответственно, процессор 10 пакетов обновлений запускает механизм сжатия (Механизм сжатия_2) на этапе S623 и управляет механизмом сжатия, чтобы сжать данные обновления на этапе S625. Последовательно процессор 10 пакетов обновлений запускает механизм восстановления (Механизм восстановления_2) для верификации сжатия на этапе S627 и управляет компаратором, чтобы сравнить данные до и после сжатия, на этапе S629. Если сжатие верифицируется на этапе S631, процессор 10 пакетов обновлений формирует пакет обновления посредством объединения данных обновления и данных установки на этапе S633 и передает пакет обновления серверу 20 пакетов обновлений на этапе S635. Если обнаруживается сбой при сжатии на этапе S631, процессор 10 пакетов обновлений выполняет процесс обработки ошибки на этапе S637.
Пакет обновления распространяется устройствам-получателям 30 в соответствии с процедурой загрузки. Пакет обновления составлен из данных обновления, сформированных на основе различия между первой и второй версиями, и данных установки для установки данных обновления.
Фиг.31 является схемой потока сообщений, иллюстрирующей процедуру загрузки программы способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.31, если пакет обновления принимается от процессора 10 пакетов обновлений, сервер 20 пакетов обновлений передает уведомляющее сообщение устройству-получателю 30 на этапе S711. Сервер 20 пакетов обновлений и устройство-получатель 30 соединены через канал связи, установленный на основе стандарта связи, такого как CDMA, UMTS, GSM, WiBro, Wi-Fi, WiMAX, Bluetooth, UWB, Zigbee и USB.
В ответ на уведомляющее сообщение устройство-получатель 30 передает сообщение о подтверждении приема (ACK) серверу 20 пакетов обновлений на этапе S713. По приеме ACK сервер 20 пакетов обновлений передает сообщение о разрешении загрузки устройству-получателю 30 на этапе S715. Если ACK принимается от устройства-получателя 30 в ответ на сообщение о разрешении загрузки, сервер 20 пакетов обновлений передает сообщение управляющей информации устройству-получателю 30 на этапе S719. Передавая ACK серверу 20 пакетов обновлений в ответ на сообщение управляющей информации, устройство-получатель 30 начинает загрузку пакета обновления с сервера 20 пакетов обновлений на этапе S723. Если пакет обновления успешно загружается, устройство-получатель 30 передает сообщение о завершении загрузки серверу 20 пакетов обновлений на этапе S725, и сервер 20 пакетов обновлений передает информационное сообщение о конце передачи (отравляет end_info) устройству-получателю 30 на этапе S727. Посредством приема, на сервере 20 пакетов обновлений, ACK от устройства-получателя 30 в ответ на информационное сообщение о конце передачи на этапе S729, процедура загрузки пакета обновления заканчивается.
Как описано выше, сервер 20 пакетов обновлений уведомляет устройства-получатели 30 о выходе пакета обновления, так что устройства-получатели 30 загружают пакет обновления. Устройство-получатель 30 сохраняет пакет обновления, загруженный с сервера 20 пакетов обновлений, в первом запоминающем устройстве 250 и начинает обновление целевой программы в ответ на команду пользователя, так что обновленная версия программы загружается во второе запоминающее устройство 260.
Фиг.32 является блок-схемой, иллюстрирующей процедуру обработки загруженного пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.32, устройство-получатель 30 сохраняет первую версию программы в первом запоминающем устройстве 250 на этапе S801. Первая версия может быть версией, установленной в первом запоминающем устройстве 250 во время фазы изготовления устройства-получателя 30, или контрольной версией, установленной позже. Если принимается уведомляющее сообщение о пакете обновления, устройство-получатель 30 загружает пакет обновления посредством процедуры, изображенной на Фиг.31. Устройство-получатель 30 загружает пакет обновления с сервера 20 пакетов обновлений и временно сохраняет загруженный пакет обновления посредством этапов S803-S807. Пакет обновления может быть немедленно установлен в первом запоминающем устройстве 250 или установлен после того, как обычная работа устройства-получателя 30 заканчивается. После того, как пакет обновления загружен, устройство-получатель 30 определяет, введена ли команда установки на этапе S809. Если команда установки не введена, устройство-получатель 30 возвращается к режиму обычной работы на этапе S811.
Если команда установки введена, устройство-получатель 30 устанавливает пакет обновления в первое запоминающее устройство 250 на этапе S813. Первое запоминающее устройство 250 является энергонезависимой памятью и содержит отдельные области для хранения первой версии и множественных пакетов обновлений. Т.е. первое запоминающее устройство 250 составлено из первой и второй областей хранения, как показано на Фиг.9, 16 и 17. Пакеты обновлений хранятся в порядке времени выпуска, так что обеспечивается история обновления.
После того, как пакет обновления установлен, устройство-получатель 30 определяет, введена ли команда перезагрузки системы, на этапе S815. Если команда перезагрузки системы не введена, устройство-получатель 30 возвращается к режиму обычной работы на этапе S817. В этом случае, так как программа еще не обновлена, устройство-получатель 30 работает с предыдущей версией.
Если ввод команды перезагрузки обнаруживается на этапе S813, устройство-получатель 30 перезагружается, чтобы инициализироваться на этапе S821, и запускает транслятор 240 для активирования второй версии из загруженного пакета обновления на этапе S823.
Транслятор 240 объединяет пакет обновления, установленный в первом запоминающем устройстве 250, и первую версию программы так, чтобы сформировать и загрузить вторую версию во второе запоминающее устройство 260. Соответственно, устройство-получатель 30 впоследствии работает под управлением второй версии программы. Далее, устройство-получатель 30 проверяет состояние пакета обновления, чтобы определить, успешно ли выполнено обновление или неудачно на этапе S825. Если обновление не удалось, устройство-получатель загружает первую версию программы на этапе S833. Если обновление выполнено успешно, устройство-получатель 30 загружает пакет обновления на этапе S827 и собирает пакет обновления и первую версию во втором запоминающем устройстве 260 на этапе S829 и затем работает под управлением второй версии во втором запоминающем устройстве на этапе S831.
Фиг.33 является блок-схемой, иллюстрирующей процедуру установки пакета обновления способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.33, когда вводится команда загрузки пакета обновления, устройство-получатель 30 запускает загрузчик на этапе S841 и управляет загрузчиком, чтобы загрузить пакет обновления с сервера 20 пакетов обновлений на этапе S843. Загруженный пакет обновления может быть выполнен другим образом, в зависимости от стандарта связи, принятого устройством-получателем 30. Т.е. устройство-получатель 30 может быть одним из терминалов с поддержкой CMDA, UMTS, GSM, WiBro, Wi-Fi, WiMAX, Bluetooth, UWB и Zigbee или может быть соединено с сервером 20 пакетов обновлений через USB.
Во время сеанса загрузки устройство-получатель 30 определяет, успешно ли загружен пакет обновления на этапе S845. Если обнаружена ошибка, устройство-получатель 30 выполняет процесс обработки ошибки на этапе S849 и затем пытается загрузить пакет обновления на этапе S849.
Если пакет обновления успешно загружен, устройство-получатель 30 запускает установщик на этапе S851. Далее, устройство-получатель 30 управляет установщиком, чтобы извлечь исторические данные из пакета обновления на этапе S853, собирает историческую информацию из исторических данных на этапе S855 и строит таблицу истории в первом запоминающем устройстве на этапе S857. Далее, устройство-получатель 30 определяет, упакованы ли данные отображения в пакет обновления, на этапе S859. Если данные отображения упакованы в пакет обновления, устройство-получатель 30 извлекает данные отображения из пакета обновления на этапе S875, сохраняет данные отображения и данные обновления в соответствующих областях хранения первого запоминающего устройства 250 на этапах S877 и S879. В результате, исторические данные, данные отображения и данные обновления, упакованные в пакет обновления, устанавливаются в первое запоминающее устройство 250 на этапе S881.
Если данные отображения не упакованы в пакет обновления, устройство-получатель 30 запускает механизм восстановления (механизм восстановления_2) на этапе S861. Далее, устройство-получатель 30 управляет механизмом восстановления, чтобы восстановить данные обновления, упакованные в пакет обновления, на этапе S863 и анализирует данные обновления на этапе S865. Далее, устройство-получатель 30 сравнивает данные обновления с первой версией в первом запоминающем устройстве 250 на этапе S867 и формирует данные отображения относительно результата сравнения на этапе S869. Далее, устройство-получатель 30 сохраняет данные отображения, сформированные в устройстве-получателе, и данные обновления, упакованные в пакет обновления, в области хранения пакета обновления первого запоминающего устройства на этапах S871 и S873. В результате, исторические данные, данные отображения и данные обновления, упакованные в пакет обновления, устанавливаются в первое запоминающее устройство 250 на этапе S881. В случае когда данные обновления включают в себя информацию о данных отображения, процесс формирования данных отображения может быть пропущен. Т.е. данные обновления могут быть структурированы с информацией о данных отображения, как показано на Фиг.8. В случае на Фиг.8 данные обновления предоставляются с помощью команд для обработки соответственных блоков и соответствующих индексов блоков, так что устройство-получатель 30 может независимо формировать данные отображения из данных обновления. Также, так как процесс формирования данных отображения не требуется, этапы S861-S873 могут быть пропущены. В этом случае транслятор объединяет данные обновления с первой версией, ссылаясь на информацию о данных отображения, содержащихся в данных обновления. В этом варианте осуществления, когда данные обновления содержат информацию по отображению, установщик формирует данные отображения из данных обновления, так что данные обновления и данные установки устанавливаются в области пакета обновления в одинаковом формате данных и обрабатываются транслятором в том же формате.
Как изображено на Фиг.33, устройство-получатель 30 загружает пакет обновления и устанавливает исторические данные, данные отображения и данные обновления, упакованные в пакет обновления, в соответствующие области хранения первого запоминающего устройства 250. В это же время данные отображения могут быть или могут не быть упакованы в пакет обновления. Когда данные отображения не упакованы в пакет обновления, устройство-получатель 30 сохраняет пакет обновления в первом запоминающем устройстве 250 и сравнивает пакет обновления с первой версией, с тем чтобы сформировать данные отображения на основе анализа сравнения, и сохраняет данные отображения в области хранения пакета обновления.
Фиг.34 является блок-схемой, иллюстрирующей процедуру запуска обновленной программы способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.34, обновленная программа активируется, когда устройство-получатель 30 включается или в ответ на команду пользователя. После того как устройство-получатель 30 инициализировано, вторая версия программы, обновленной посредством объединения первой версии и последнего загруженного пакета обновления, загружается во второе запоминающее устройство 260 для работы устройства-получателя 30. Информация, сохраненная во втором запоминающем устройстве 260, представляется программой, которая может работать в энергозависимой памяти.
Если устройство-получатель 30 включается на этапе S881, устройство-получатель 30 начинает загрузку системы и инициализирует коды на этапе S882 и запускает загрузчик на этапе S883. Далее, устройство-получатель 30 сканирует области хранения пакетов обновлений первого запоминающего устройства 250 и проверяет пакеты обновления на этапе S884. Если пакет обновления не существует, устройство-получатель 30 запускает транслятор 240 на этапе S885 и управляет транслятором, чтобы выполнить проверку безопасности и проверку действительности версии на этапе S886. Далее, устройство-получатель 30 определяет, сжата ли первая версия, сохраненная в первом запоминающем устройстве 250, на этапе S887. Если определяется, что первая версия сжата, устройство-получатель 30 запускает механизм 270 восстановления (механизм восстановления_1), чтобы восстановить первую версию на этапе S888, и управляет транслятором, чтобы транслировать первую версию во втором запоминающем устройстве 260 на этапе S889, так что первая версия программы запускается. Если определено, что первая версия не сжата, на этапе S887, устройство-получатель 30 пропускает этап S888 и выполняет этапы S889 и S890.
Возвращаясь к этапу S884, если, по меньшей мере, один пакет обновления существует в первом запоминающем устройстве 250, устройство-получатель 30 запускает транслятор 240 на этапе S891 и загружает недавно загруженный пакет обновления на этапе S892. Пакет обновления может быть составлен, по меньшей мере, из двух из исторических данных, данных отображения и данных обновления.
Далее, устройство-получатель 30 запускает механизм 270 восстановления (механизм восстановления_2), чтобы восстановить загруженный пакет обновления (только данные обновления могут быть сжаты), на этапе S893 и выполняет проверку безопасности и проверку действительности версии на этапе S894. Далее, устройство-получатель 30 определяет, сжата ли первая версия, сохраненная в первом запоминающем устройстве 250, на этапе S895. Если определяется, что первая версия сжата, устройство-получатель 30 запускает механизм 270 восстановления (механизм восстановления_1), чтобы восстановить первую версию на этапе S888, и управляет транслятором, чтобы транслировать первую версию во втором запоминающем устройстве 260 на этапе S889, так что первая версия программы запускается. Если определено, что первая версия не сжата, на этапе S895, устройство-получатель 30 пропускает этап S896 и выполняет этапы S897 и S890.
Фиг.35-38 являются блок-схемами, иллюстрирующими процедуру запуска программы обновления способа обновления программы согласно другому примерному варианту осуществления настоящего изобретения.
Обращаясь к Фиг.35-38, если устройство-получатель 30 включается на этапе S901, устройство-получатель начинает загрузку системы и инициализирует коды на этапе S903 и запускает загрузчик на этапе S905. Далее, устройство-получатель 30 определяет, доступен ли какой-либо пакет обновления, ссылаясь на историю пакетов обновлений, на этапе S907 и проверяет пакеты обновлений на этапе S909. Если пакет обновления не существует, устройство-получатель 30 запускает транслятор 240 на этапе S911 и выполняет проверку безопасности на этапе S921 (см. Фиг.36). Далее, устройство-получатель 30 определяет на этапе S9, сжата ли сохраненная первая версия. Если определяется, что первая версия сжата, устройство-получатель 30 запускает механизм 270 восстановления (механизм восстановления_1) и транслятор на этапах S923 и S9 и управляет механизмом восстановления и транслятором, чтобы совместно восстановить и транслировать первую версию на этапе S925. При восстановлении и транслировании данных первой версии устройство-получатель 30 наблюдает за процессами, чтобы обнаружить, полностью ли транслирована первая версия, с помощью счетчика (Count=EOD) на этапе S927. Процессы восстановления и трансляции повторяются до тех пор, пока счетчик не достигнет конца данных (EOD)(Count=EOD) во втором запоминающем устройстве 260. Если определяется, что первая версия программы не сжата, на этапе S9, устройство-получатель 30 управляет транслятором, чтобы транслировать первую версию во втором запоминающем устройстве 260 без восстановления на этапе S926, пока счетчик не достигнет конца данных. Если счетчик достигает EOD, устройство-получатель 30 проверяет полноту данных транслированной первой версии программы на этапе S928 и запускает первую версию для работы системы.
Возвращаясь к Фиг.35, если, по меньшей мере, один пакет обновления существует в первом запоминающем устройстве 250 на этапе S909, устройство-получатель изучает историческую информацию для всех пакетов обновлений на этапе S913 и проверяет флаги неудач в исторической информации на этапе S915. Флаг неудачи указывает, закончилась ли неудачей загрузка пакета обновления. Если флаг неудачи установлен в истинное значение (fail flag=true), пакет обновления является неудачным. По этой причине устройство-получатель 20 определяет, установлен ли флаг неудачи исторической информации пакетов обновлений в значение "истина", на этапе S917. Если флаг неудачи не установлен в значение "истина", устройство-получатель 30 выполняет процедуру обновления программы посредством этапов S931-S946 на Фиг.37. Наоборот, если флаг неудачи установлен в значение "истина", устройство-получатель 30 выполняет процедуру обновления программы посредством этапов S951-S969 на Фиг.38.
Как показано на Фиг.37, если флаг неудачи не установлен в значение "истина", устройство-получатель 30 проверяет исторические данные самых последних пакетов обновлений на этапе S321 и проверяет флаг неудачи исторических данных на этапе S932. Если флаг неудачи не установлен в значение "истина", устройство-получатель 30 загружает данные отображения и данные обновления пакета обновления на этапах S933 и S934. Далее, устройство-получатель 30 загружает транслятор на этапе S935, выполняет проверку безопасности на этапе S936 и загружает механизм восстановления (механизм восстановления_1) на этапе S937. Далее, устройство-получатель 30 определяет на этапе S938, сжата ли первая версия программы. Если первая версия сжата, устройство-получатель 30 запускает механизм восстановления и транслятор на этапах S939, S940 и S941. Далее, устройство-получатель 30 управляет первым и вторым блоками восстановления и транслятором, чтобы восстановить и транслировать первую версию и пакет обновления во втором запоминающем устройстве 260 на этапе S942. При распаковке и транслировании данных первой версии и пакета обновления устройство-получатель 30 наблюдает за процессами, чтобы обнаружить, завершен ли процесс, ссылаясь на счетчик (Count=EOD), на этапе S927. Процессы восстановления и транслирования повторяются до тех пор, пока счетчик не достигнет EOD. Если определяется на этапе S938, что первая версия не сжата, устройство-получатель 30 запускает транслятор на этапе S940 и управляет транслятором, чтобы транслировать данные первой версии и пакет обновления во втором запоминающем устройстве без процесса восстановления, на этапе S944 до тех пор, пока счетчик не достигнет EOD. Если счетчик достигает EOD, устройство-получатель 30 проверяет полноту данных транслированной первой версии и пакета обновления на этапе S945 и запускает обновленную версию программы для работы системы на этапе S946.
Данные отображения, содержащиеся в пакете обновления, могут быть структурированы, как показано в Таблицах 1-4. В случае Таблиц 1, 2 или 4 транслятор 0 устройства-получателя 30 формирует вторую версию посредством объединения первой версии программы и пакета обновления, ссылаясь на данные отображения.
Обращаясь к Таблице 1 данных отображения {C:0,15, F:0, null, null},{M:16,4 F:1, (16-12), (17-13), (18-8), (19-9), 0, 0, 0, 0}, {S:20, 5, F:0, (20-4), 0}, устройство-получатель 30 обрабатывает блоки, индексированные с помощью команд C, M и S, и обновляет первую версию в соответствии с данными отображения. Т.е. устройство-получатель 30 копирует с 0-го по 15-й блоки первой версии и вставляет скопированные блоки во вторую версию с теми же индексами блоков, копирует 12-й, 13-й, 8-й и 9-й блоки первой версии и вставляет скопированные блоки в блоки с 16-го по 19-й второй версии и копирует блоки с 16-го по 20-й первой версии и вставляет скопированные блоки в блоки с 20-го по 24-й второй версии.
Обращаясь к Таблице 2 данных отображения {C:0,15, F:0, null, null},{M:16,4 F:1, (16-12), (17-13), (18-8), (19-9), 0, код (B,K), код (E,C), 0}, {S:20, 5, F:0, (20-4), 0}, устройство-получатель 30 копирует блоки первой версии и помещает скопированные блоки для второй версии в соответствии с отображением индексов, следуя командам
C и S, и формирует данные блоков с помощью индексов блоков и энтропически закодированных данных, следуя команде M. Т.е. устройство-получатель 30 копирует с 0-го по 15-й блоки первой версии и вставляет скопированные блоки во вторую версию с теми же индексами блоков, помещает 12-й блок, код (B, K), код (E, C) и 9-й блок первой версии в 16-19-й блоки второй версии и помещает с 16-го по 20-й блоки первой версии в 20-24-й блоки второй версии. Здесь, код (B,K) означает данные, полученные энтропийным кодированием различия между 13-м блоком первой версии и 17-м блоком второй версии, а код (E, C) означает данные, полученные энтропийным кодированием различия между 8-м блоком первой версии и 18-м блоком второй версии.
Обращаясь к Таблице 3 данных отображения {C:0, 15, F:0, null, null}, {M:16, 4, F:2, null, null}, {S:20, 5, F:0, (20-4), 0}, устройство-получатель 30 копирует блоки первой версии и помещает скопированные блоки для второй версии в соответствии с отображением индексов, за которой следует команда C и S, и формирует данные блока с помощью индексов блоков и данных обновления, за которыми следует команда M. Т.е. устройство-получатель 30 копирует блоки с 0-го по 15-й первой версии и помещает скопированные блоки во вторую версию с теми же индексами блоков и помещает блоки, содержащиеся в данных обновления в 16-19-м блоках второй версии. Соответственно, с блоки 16-го по 19-й второй версии имеют данные Z, W, P и X (см. Фиг.5).
В случае когда пакет обновления составлен из исторических данных и данных обновления без данных отображения, устройство-получатель 30 может сформировать данные отображения посредством сравнения первой версии программы и данных обновления и анализа результата сравнения. Процесс формирования данных отображения может быть пропущен. В этом варианте осуществления установщик формирует данные отображения с помощью информации отображения, объединенной в данные обновления. Обращаясь к Таблице 4 данных отображения {C:0, 6}, {M:6, 2, X, Y}, {S:8, 3, 6}, {S:11, 12, 13}, {M:13, 5, A, B, C, D, E}, {S:T8, 7, 15}, установщик 230 устройства-получателя 30 формирует данные отображения в ассоциативной связи с командами C и S. В ассоциативной связи с командой M, однако, установщик 230 формирует данные отображения и/или данные обновления на основе информации отображения, заключенной в пакет обновления. Данные отображения и данные обновления отдельно хранятся в области пакета обновления.
Как показано на Фиг.38, если флаг неудачи установлен в значение "истина" на этапе S917 на Фиг.35, устройство-получатель 30 проверяет, все ли флаги неудачи пакетов обновлений установлены в значение "истина", на этапе S951. Если все флаги неудачи установлены в значение "истина", устройство-получатель 30 загружает транслятор на этапе S925 и выполняет этап S921. Т.е. если все пакеты обновлений имеют ошибки, устройство-получатель 30 загружает первую версию программы во второе запоминающее устройство 260, так что устройство-получатель 30 работает под управлением первой версии. Первая версия может быть оригинальной версией программы, установленной во время фазы изготовления.
Если не все флаги неудачи пакета обновления установлены в значение "истина", устройство-получатель 30 проверяет пакеты обновлений, флаги неудачи которых не установлены в значение "истина", на этапе S953 и отображает доступные пакеты обновлений на этапе S954. Если команда выбора вводится на этапе S955 для выбора одного из доступных пакетов обновлений, устройство-получатель 30 загружает данные отображения и данные обновления выбранного пакета обновления в ассоциативной связи с исторической информацией на этапах S956 и S957. Далее, устройство-получатель 30 запускает транслятор на этапе S956 и выполняет проверку безопасности данных на этапе S959. Далее, устройство-получатель 30 запускает механизм восстановления (механизм восстановления_2) для распаковки данных обновления на этапе S960, если данные обновления сжаты. Далее, устройство-получатель 30 определяет на этапе S961, сжата ли первая версия программы. Если первая версия сжата, устройство-получатель 30 запускает механизм восстановления (механизм восстановления_1) и транслятор на этапах S963 и S964. Далее, устройство-получатель 30 управляет первым и вторым блоками восстановления и транслятором, чтобы восстановить и транслировать первую версию и пакет обновления во втором запоминающем устройстве 260 на этапе S965. При восстановлении и транслировании данных первой версии и пакета обновления устройство-получатель 30 наблюдает за процессами, чтобы обнаружить, завершен ли процесс, ссылаясь на EOD (Count=EOD), на этапе S966. Процессы восстановления и транслирования повторяются до тех пор, пока счетчик не достигнет EOD.
Как описано выше, в способе обновления программы согласно варианту осуществления настоящего изобретения поставщик пакета обновления формирует пакет обновления в соответствии с различиями между старой и новой версиями целевой программы, и устройство-получатель загружает и обновляет старую версию до новой версии, так что обновленная новая версия из энергонезависимой памяти загружается в энергозависимую память для работы устройства-получателя.
Механизм формирования пакета обновления имеет следующие характеристики.
Если вводятся две версии программы, процессор пакетов обновлений сравнивает две версии и формирует данные результата сравнения с помощью различий двух версий. Здесь, первая версия является контрольной версией, которая может быть программой, установленной во время фазы изготовления, или программой, определенной впоследствии. Вторая версия является обновленной версией программы, которая должна быть загружена устройством-получателем для обновления первой версии программы. Могут быть выпущены множественные версии обновления, таким образом, вторая версия может быть одной из версий обновления, в частности, самой последней версией.
Две версии могут сравниваться до или после сжатия. В случае сравнения после сжатия, процесс верификации сжатия может быть выполнен посредством восстановления каждой сжатой версии и сравнения данных до и после сжатия.
Данные установки формируются на основе данных результата сравнения. Данные установки являются данными, предоставляющими информацию о том, как установить данные обновления в первую версию.
Данные установки должны включать в себя исторические данные. Исторические данные также содержат идентификаторы версий первой и второй версий и флаг, указывающий историю неудачной загрузки. Данные установки могут включать в себя данные отображения в дополнение к историческим данным. Данные отображения являются данными, предоставляющими информацию о том, как установить соотношение данных обновления с первой версией. Данные отображения предоставляются с командами, такими как "копирование", "модификация" и "сдвиг", и индексами блоков для отображения блоков в первой версии программы. Если требуется, чтобы вторая версия создавалась посредством вставки неких блоков в первую версию, и блоки, которые должны быть вставлены, идентичны или, по меньшей мере, похожи, блоки могут быть сообщены скорее посредством данных отображения, чем упаковкой самих блоков.
Данные установки могут быть объединены в данные обновления. В этом случае процессор пакетов обновлений сравнивает первую и вторую версии программы в единицах блоков. Когда число блоков изменяется, т.е. некоторые блоки удаляются или добавляются, или данные каждого блока модифицируются, такая информация объединяется в данные обновления в качестве данных установки. В этом случае данные обновления включают в себя команду M модификации данных отображения. Данные установки также могут быть предоставлены без данных отображения. В этом случае данные отображения создаются в устройстве-получателе. Когда данные обновления предоставлены с данными отображения, процесс формирования данных отображения не требуется.
Данные обновления или пакет обновления могут быть предоставлены в сжатой форме. В этом случае процессор пакетов обновлений восстанавливает сжатые данные или пакет обновления и сравнивает данные до и после сжатия для верификации успешного сжатия.
Пакет обновления, сформированный процессором 10 пакетов обновлений, передается серверу 20 пакетов обновлений, а сервер 20 пакетов обновлений уведомляет устройство-получатель 30 о выходе пакета обновления, так что устройство-получатель загружает пакет обновления.
Устройство-получатель 30 устанавливает пакет обновления в первое запоминающее устройство в качестве энергонезависимой памяти и загружает вторую версию, обновленную из первой версии с помощью пакета обновления, во второе запоминающее устройство, такое как энергозависимая память, так что устройство-получатель работает под управлением второй версии программы.
Промышленная применимость
Как описано выше, в системе и способе обновления программы пакет обновления формируется на основе различий между контрольной версией и новой версией программы, имея в результате быстрое формирование пакета обновления. Так как первая версия и пакет обновления, загруженный из сети, отдельно устанавливаются в области энергонезависимого запоминающего устройства и загружаются в качестве обновленной версии в область энергозависимого запоминающего устройства, возможно обеспечить работоспособность даже в ситуации неудачи обновления. Также, так как система и способ обновления программы настоящего изобретения позволяют установку множества пакетов обновлений отдельно в области энергонезависимого устройства хранения, возможно управлять устройством-получателем с помощью предпочитаемой пользователем версии программы. Также, система и способ обновления программы являются полезными в том, что версия программы может выбираться пользователем.
Более того, так как обновление самой V1 не выполняется в первом запоминающем устройстве, может неявно ожидаться эффект отказоустойчивого управления. Это потому, что стабильность работы обеспечивается, даже когда обновление программы заканчивается неудачей с пакетом обновления, использующим V1 первой версии, сохраненной в первом запоминающем устройстве.
Хотя примерные варианты осуществления настоящего изобретения были описаны подробно выше в данном документе, должно быть ясно понято, что многие вариации и модификации основных изобретенных концепций, преподанных здесь, могут проявиться для специалистов в настоящей области техники, которые все еще подпадают под дух и цель настоящего изобретения, как определено в прилагаемой формуле изобретения.

Claims (41)

1. Способ обновления программы в сети, содержащий этапы, на которых:
формируют пакет обновления на основе различий между первой версией и второй версией программы, при этом пакет обновления включает в себя данные установки для объединения пакета обновления с первой версией программы и данные обновления, которые должны быть объединены с первой версией программы;
уведомляют, по меньшей мере, одно устройство-получатель о выпуске пакета обновления на сервере пакетов обновлений и
загружают пакет обновления с сервера пакетов обновлений в устройство-получатель;
устанавливают пакет обновления в первое запоминающее устройство и
объединяют пакет обновления и первую версию программы, которая должна быть загружена как вторая версия программы во второе запоминающее устройство в ответ на команду обновления;
при этом формирование пакета обновления содержит этапы, на которых:
сравнивают первую и вторую версии программы в единицах блоков;
формируют данные установки, содержащие данные отображения для отображения блоков второй версии программы на первую версию программы на основе результатов сравнения и
формируют пакет обновления посредством упаковки данных установки и данных обновления.
2. Способ обновления программы по п.1, в котором формирование данных установки дополнительно содержит этап, на котором
включают исторические данные для объединения первой версии программы и пакета обновления.
3. Способ обновления программы по п.1, в котором первая версия программы и, по меньшей мере, один пакет обновления отдельно сохранены в первом запоминающем устройстве.
4. Способ обновления программы по п.3, в котором команда обновления формируется с помощью выбора версии, когда устройство-получатель инициализируется, или посредством клавишного ввода.
5. Способ обновления программы по п.1, в котором формирование данных установки дополнительно содержит этап, на котором:
включают в данные отображения индексы блоков второй версии программы, ассоциативно связанные с обновлением программы, и команды обновления для применения упомянутых блоков к первой версии программы.
6. Способ обновления программы по п.5, в котором формирование данных установки дополнительно включает этап, на котором:
включают в данные отображения командные строки, каждая из которых структурирована в форме [Cmd] [# начального блока] [число блоков] [флаг] [дальность], где поле [Cmd] имеет значение, указывающее, по меньшей мере, одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока] имеет индекс начального блока, поле [число блоков] имеет значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, указывающее источник блоков, и поле [дальность] имеет значение, указывающее дальность от блока первой версии программы до блока второй версии программы, связанных друг с другом.
7. Способ обновления программы по п.6, дополнительно содержит этап, на котором
используют команду "модификация" для вставки нового блока или модификации блока первой версии программы.
8. Способ обновления программы по п.5, в котором формирование данных установки дополнительно содержит этап, на котором:
включают в данные отображения командные строки, каждая из которых структурирована в форме [Cmd] [# начального блока, число блоков] [флаг] [дальность] [различие], где поле [Cmd] имеет значение, указывающее одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока, число блоков] имеет индекс начального блока и значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, указывающее источник блоков, поле [дальность] имеет значение, указывающее дальность от блока первой версии программы до блока второй версии программы, отображенных друг на друга, и поле [различие] имеет значение, указывающее различие между блоками первой версии и второй версии программы.
9. Способ обновления программы по п.8, дополнительно содержит этап, на котором
устанавливают поле [различие] для отмены формирования данных обновления соответствующего блока.
10. Способ обновления программы по п.9, в котором первая версия программы является первоначальной версией программы, установленной во время фазы изготовления устройства-получателя, а вторая версия программы является программой, обновленной из первой версии программы, причем вторая версия программы представляет множество версий программы, выпущенных после первой версии программы.
11. Способ формирования пакета обновления программы, содержащий этапы, на которых:
сравнивают первую версию и вторую версию программы в единицах блоков;
формируют данные обновления, содержащие данные отображения для отображения блоков второй версии программы на блоки первой версии программы на основе результатов сравнения;
формируют пакет обновления посредством упаковки исторических данных для указания связи пакета обновления и первой версии программы и данных обновления, при этом пакет обновления включает в себя данные установки, имеющие исторические данные для указания связи пакета обновления и первой версии программы, чтобы поддерживать объединение пакета обновления и первой версии;
извещают о выпуске пакета обновления и
загружают пакет обновления, по меньшей мере, в одно устройство-получатель, устанавливают загруженный пакет обновления в энергонезависимую память, формируют вторую версию программы посредством объединения пакета обновления с первой версией в ответ на сигнал запроса обновления и эксплуатируют устройство-получатель с помощью второй версии программы.
12. Способ формирования пакета обновления программы по п.11, в котором первая версия программы и, по меньшей мере, один пакет обновления отдельно хранятся в энергонезависимой памяти.
13. Способ формирования пакета обновления программы по п.12, в котором команда обновления формируется, когда устройство-получатель инициализируется или посредством клавишного ввода и пакет обновления является выбираемым среди множества пакетов обновлений.
14. Способ формирования пакета обновления программы по п.11, в котором данные обновления формируют путем включения в них, по меньшей мере, одного из данных блока копирования, структурированных в строке [# начального блока] [число блоков], данных блока модификации, структурированных в строке [# начального блока] [число блоков] [данные] и данных блока сдвига [# начального блока] [число блоков] [позиция предыдущей версии], где поле [# начального блока] имеет индекс начального блока, поле [число блоков] имеет значение, указывающее число блоков от начального блока, поле [данные] содержит данные соответствующего блока, и поле [позиция предыдущей версии] имеет индекс начального блока для блоков, которые должны быть сдвинуты.
15. Способ формирования пакета обновления программы по п.14, в котором поле [позиция предыдущей версии] указывает один из номера блока второй версии программы ± число блоков или номера блока второй версии программы - номер блока первой версии программы.
16. Способ обновления программы в сети, включающей в себя процессор пакетов обновлений для формирования пакета обновления программы и сервер пакетов обновлений, позволяющий устройству-получателю загрузить пакет обновления, способ содержит этапы, на которых:
формируют пакет обновления на основе различий между первой версией и второй версией программы в процессоре пакетов обновлений;
уведомляют устройство-получатель о выпуске пакета обновления на сервере пакетов обновлений;
загружают пакет обновления с сервера пакетов обновлений в устройство-получатель;
устанавливают пакет обновления в область пакета обновления первого запоминающего устройства, в котором установлена первая версия программы;
обновляют первую версию до второй версии программы, объединяя пакет обновления и первую версию программы в ответ на команду обновления, при этом обновление первой версии до второй версии программы содержит этапы, на которых:
загружают пакет обновления самой последней версии программы из первого запоминающего устройства во второе запоминающее устройство; и
применяют данные обновления загруженного пакета обновления к первой версии программы, ссылаясь на данные отображения пакета обновления; и
загружают вторую версию программы во второе запоминающее устройство.
17. Способ обновления программы по п.16, в котором формирование пакета обновления содержит этапы, на которых:
сравнивают первую версию и вторую версию программы в единицах блоков;
формируют данные установки, содержащие данные отображения для отображения блоков второй версии программы на блоки первой версии на основе результатов сравнения и
формируют пакет обновления посредством упаковки данных установки и данных обновления.
18. Способ обновления программы по п.17, в котором первое запоминающее устройство содержит:
область хранения первой версии для хранения первой версии программы и
область хранения пакетов обновлений, имеющую, по меньшей мере, две области для хранения разных пакетов обновлений, данные установки и данные обновления, упакованные в пакет обновления, хранятся отдельно.
19. Способ обновления программы по п.18, в котором данные установки включают в себя исторические данные для указания связи пакета обновления и первой версии программы, чтобы поддержать объединение пакета обновления и первой версии программы, и установка пакета обновления содержит этапы, на которых:
извлекают исторические данные, данные отображения и данные обновления из пакета обновления;
сохраняют исторические данные в области исторических данных, соответствующей, области пакета обновления;
сохраняют данные отображения в области данных отображения, соответствующей, области пакета обновления; и
сохраняют данные обновления в области данных обновления, соответствующей, области пакета обновления.
20. Способ обновления программы по п.16, в котором первое запоминающее устройство является энергонезависимой памятью, а второе запоминающее устройство является энергозависимой памятью.
21. Способ обновления программы по п.20, в котором команда обновления формируется, когда устройство-получатель инициализируется, или посредством клавишного ввода, и последний выпущенный пакет обновления среди множественных пакетов обновлений выбирается для обновления программы.
22. Способ обновления программы в сети, включающей в себя процессор пакетов обновлений для формирования пакета обновления программы и сервер пакетов обновлений, позволяющий устройству-получателю загрузить пакет обновления, способ содержит этапы, на которых:
сравнивают первую версию и вторую версию программы в единицах блоков в процессоре пакетов обновлений;
формируют данные установки, содержащие данные отображения для отображения блоков второй версии программы на блоки первой версии программы на основе результатов сравнения; и
формируют пакет обновления, объединяя данные установки и данные обновления, при этом пакет обновления включает в себя данные установки, имеющие исторические данные для указания связи пакета обновления и первой версии программы, чтобы поддерживать объединение пакета обновления и первой версии;
загружают пакет обновления в устройстве-получателе и
обновляют первую версию программы, установленную в устройстве-получателе, до второй версии программы, применяя пакет обновления к первой версии.
23. Способ обновления программы по п.22, в котором формирование данных установки дополнительно содержит этап, на котором структурируют данные отображения как строку вида [Cmd][# начального блока] [число блоков] [флаг] [дальность], где поле [Cmd] имеет значение, указывающее одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока] имеет индекс начального блока, поле [число блоков] имеет значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, указывающее источник блоков, и поле [дальность] имеет значение, указывающее дальность от блока первой версии программы до блока второй версии программы, сопоставленных друг другу.
24. Способ обновления программы по п.23 дополнительно содержит этап, на котором используют команду "модификация" для вставки нового блока или модификации блока первой версии.
25. Способ обновления программы по п.22, в котором формирование данных установки дополнительно содержит этап, на котором включают данные отображения в командные строки, каждая из которых структурирована в форме [Cmd][# начального блока, число блоков] [флаг] [дальность] [различие], где поле [Cmd] имеет значение, указывающее одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока, число блоков] имеет индекс начального блока и значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, информирующее об источнике блоков, поле [дальность] имеет значение, указывающее дальность от блока второй версии до блока первой версии программы, связанных друг с другом, и поле [различие] имеет значение, указывающее различие между блоками первой и второй версий программы.
26. Способ обновления программы по п.25, дополнительно содержит этап, на котором устанавливают поле [различие] для отмены формирования данных обновления соответствующего блока.
27. Система обновления программы, содержащая:
процессор пакетов обновлений для формирования пакета обновления с помощью первой версии и второй версии программы, при этом процессор пакетов обновлений содержит компаратор для сравнения первой версии и второй версии программы в единицах блоков; формирователь данных установки для формирования данных установки, имеющих данные отображения для установления связи блоков второй версии с блоками первой версии программы; и формирователь пакетов для создания пакета обновления посредством объединения данных установки и данных обновления;
сервер пакетов обновлений для хранения пакета обновления и извещения о выпуске пакета обновления и,
по меньшей мере, одно устройство-получатель для загрузки пакета обновления и обновления программы с помощью загруженного пакета, устройство-получатель включает в себя первое запоминающее устройство для отдельной установки первой версии программы и пакета обновления и второе запоминающее устройство для загрузки второй версии программы, обновленной посредством объединения первой версии программы и пакета обновления.
28. Система обновления программы по п.27, в которой устройство-получатель содержит:
установщик для установки пакета обновления в области пакетов обновлений первого запоминающего устройства и
транслятор для загрузки первой версии программы и пакета обновления в первом запоминающем устройстве в ответ на команду обновления, формирования второй версии программы посредством применения пакета обновления к первой версии программы и загрузки второй версии программы во второе запоминающее устройство.
29. Система обновления программы по п.28, в которой команда обновления формируется, когда устройство-получатель инициализируется или посредством клавишного ввода, и последний выпущенный пакет обновления среди множества пакетов обновлений выбирается для обновления программы.
30. Система обновления программы по п.29, в которой формирование данных установки дополнительно содержит этап, на котором
включают исторические данные для указания связи между пакетом обновления и первой версией программы в данные установки.
31. Система обновления программы по п.30, в которой формирование данных отображения дополнительно содержит этап, на котором:
включают в данные отображения индексы блоков второй версии программы, ассоциативно связанных с обновлением программы, и команды для применения этих блоков к первой версии программы.
32. Система обновления программы по п.30, в которой формирование данных установки дополнительно содержит этап, на котором
включают в данные отображения командные строки, каждая из которых структурирована в форме [Cmd] [# начального блока] [число блоков] [флаг] [дальность], где поле [Cmd] имеет значение, указывающее одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока] имеет индекс начального блока, поле [число блоков] имеет значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, информирующее об источнике блоков, и поле [дальность] имеет значение, указывающее дальность от блока первой версии программы до блока второй версии программы, связанных друг с другом.
33. Система обновления программы по п.31, в которой используют команду "модификация" для вставки нового блока или модификации блока первой версии.
34. Система обновления программы по п.30, в которой формирование данных установки дополнительно содержит этап, на котором
включают в данные отображения командные строки, каждая из которых структурирована в форме [Cmd] [# начального блока, число блоков] [флаг] [дальность] [различие], где поле [Cmd] имеет значение, указывающее одну из команд "копирование", "модификация" и "сдвиг", поле [# начального блока, число блоков] имеет индекс начального блока и значение, указывающее число блоков от начального блока, поле [флаг] имеет значение, информирующее об источнике блоков, поле [дальность] имеет значение, указывающее дальность от блока второй версии программы до блока второй версии программы, сопоставленных друг другу, и поле [различие] имеет значение, указывающее различие между блоками первой и второй версий программы.
35. Система обновления программы по п.34, в которой устанавливают поле [различие] для отмены формирования данных обновления соответствующего блока.
36. Система обновления программы по п.35, в которой первая версия программы является первоначальной версией программы, установленной во время фазы изготовления устройства-получателя, а вторая версия программы является программой, обновленной из первой версии программы, вторая версия программы является любой из множества версий программы, выпущенных после первой версии программы.
37. Система обновления программы по п.27, в которой процессор пакетов обновлений содержит:
компаратор для сравнения первой версии и второй версии программы в единицах блоков;
формирователь данных установки для формирования данных установки, имеющих данные обновления для объединения блоков второй версии и блоков первой версии программы; и
формирователь пакетов для создания пакета обновления посредством объединения данных обновления, содержащих данные отображения для отображения блоков второй версии на блоки первой версии программы, и исторических данных для указания связи между пакетом обновления и первой версией программы.
38. Система обновления программы по п.37, в которой устройство-получатель содержит:
установщик для извлечения данных отображения из пакета обновления и установки пакета обновления, содержащего исторические данные, данные отображения и данные обновления, в области хранения пакета обновления первого запоминающего устройства на основе данных отображения; и
транслятор для формирования второй версии программы посредством объединения данных обновления и первой версии программы на основе данных отображения и загрузки второй версии программы во второе запоминающее устройство.
39. Система обновления программы по п.38, в которой команда обновления формируется, когда устройство-получатель инициализируется или посредством клавишного ввода, и последний выпущенный пакет обновления среди множества пакетов обновлений выбирается для обновления программы.
40. Система обновления программы по п.39, в которой формирование данных установки дополнительно содержит этап, на котором:
включают в данные обновления, по меньшей мере, одно из копии данных блока, структурированных в строке [# начального блока] [число блоков], модификации данных блока, структурированных в строке [# начального блока] [число блоков] [данные] и сдвига данных блока [# начального блока] [число блоков] [позиция предыдущей версии], где поле [# начального блока] имеет индекс начального блока, поле [число блоков] имеет значение, указывающее число блоков от начального блока, поле [данные] содержит данные соответствующего блока и поле [позиция предыдущей версии] имеет индекс начального блока для блоков, которые должны быть сдвинуты.
41. Система обновления программы по п.40, в которой указывают в поле [позиция предыдущей версии] одно из номера блока второй версии программы ± число блоков и номера блока второй версии программы - номер блока первой версии программы.
RU2008114331/09A 2006-06-19 2007-06-18 Система и способ обновления программы для переносного устройства с поддержкой ота RU2388045C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2006-0054746 2006-06-19
KR20060054746 2006-06-19

Publications (2)

Publication Number Publication Date
RU2008114331A RU2008114331A (ru) 2009-10-20
RU2388045C2 true RU2388045C2 (ru) 2010-04-27

Family

ID=38833605

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2008114331/09A RU2388045C2 (ru) 2006-06-19 2007-06-18 Система и способ обновления программы для переносного устройства с поддержкой ота

Country Status (7)

Country Link
US (2) US20070294685A1 (ru)
EP (2) EP2030120A4 (ru)
JP (3) JP2009536395A (ru)
KR (2) KR101417759B1 (ru)
CN (2) CN101361051B (ru)
RU (1) RU2388045C2 (ru)
WO (2) WO2007148900A1 (ru)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2628246C2 (ru) * 2014-10-16 2017-08-15 Сяоми Инк. Способ обновления и устройство и средство для него
RU2633151C2 (ru) * 2014-12-09 2017-10-11 Сяоми Инк. Способ и устройство для обновления микропрограммного обеспечения
US9886264B2 (en) 2014-12-09 2018-02-06 Xiaomi Inc. Method and device for upgrading firmware

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA965340B (en) 1995-06-30 1997-01-27 Interdigital Tech Corp Code division multiple access (cdma) communication system
WO2007094052A1 (ja) * 2006-02-14 2007-08-23 Fujitsu Limited パッチ適用装置およびプログラム
US8806472B2 (en) * 2007-09-27 2014-08-12 Ericsson Ab In-service software upgrade utilizing metadata-driven state translation
KR20090103637A (ko) * 2008-03-28 2009-10-01 삼성전자주식회사 방송 시스템에서 펌웨어를 업데이트하는 방법과 장치 및 그시스템
TWI376598B (en) * 2008-07-04 2012-11-11 Acer Inc Method for monitoring computer system performance and computer-readable medium thereof
US9354853B2 (en) * 2008-07-02 2016-05-31 Hewlett-Packard Development Company, L.P. Performing administrative tasks associated with a network-attached storage system at a client
US8832681B1 (en) * 2008-08-29 2014-09-09 Adobe Systems Incorporated Bundled mobile/desktop application package
GB2465193A (en) 2008-11-10 2010-05-12 Symbian Software Ltd Detecting updated files in a firmware over the air update using CRC values
JP5471883B2 (ja) * 2009-07-17 2014-04-16 株式会社リコー 情報処理装置、情報処理方法、情報処理プログラム
JP5563659B2 (ja) * 2009-07-30 2014-07-30 フレクストロニクス エイピー エルエルシー 遠隔機器の診断修復装置及び方法
JP5478986B2 (ja) * 2009-08-21 2014-04-23 株式会社日立ソリューションズ 情報機器及びプログラム
US8694985B2 (en) * 2009-10-30 2014-04-08 Apple Inc. Managing digital content in hierarchies
KR20110068098A (ko) * 2009-12-15 2011-06-22 삼성전자주식회사 가입자 댁내 장치의 소프트웨어 업그레이드 방법 및 장치
US8893112B2 (en) * 2009-12-21 2014-11-18 Intel Corporation Providing software distribution and update services regardless of the state or physical location of an end point machine
JP2013517565A (ja) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド オペレーティングシステム自動更新手順
CN101763269A (zh) * 2010-01-27 2010-06-30 中兴通讯股份有限公司 一种软件安装包的制作方法
KR101134116B1 (ko) * 2010-08-19 2012-04-09 주식회사 잉카인터넷 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
US9207928B2 (en) * 2011-01-17 2015-12-08 Bladelogic, Inc. Computer-readable medium, apparatus, and methods of automatic capability installation
KR20120115825A (ko) * 2011-04-11 2012-10-19 주식회사 케이티 이동 단말의 3d 객체 업데이트 방법
EP2523106B1 (en) * 2011-05-11 2015-12-30 Alcatel Lucent Upgrading of application processors
CN102215479B (zh) * 2011-06-22 2018-03-13 中兴通讯股份有限公司 升级包下载及安装的方法、服务器及系统
US8997085B2 (en) * 2011-06-24 2015-03-31 International Business Machines Corporation Image delta-based upgrade of complex stack in software appliance
CN102356394B (zh) * 2011-08-23 2013-09-11 华为技术有限公司 文档更新方法和装置
KR101843980B1 (ko) * 2011-09-01 2018-03-30 삼성전자주식회사 휴대단말기의 데이터 송수신 관리 장치 및 방법
KR101251626B1 (ko) * 2011-09-20 2013-04-08 (주)골든이어스 스마트 기기를 이용한 음향기기의 특성에 대한 보상 서비스 제공 방법
EP2590073A1 (en) * 2011-11-02 2013-05-08 Research In Motion Limited Method and system for on-demand patch generation and management
CN103136010A (zh) * 2011-11-25 2013-06-05 环旭电子股份有限公司 韧体更新方法及可供该方法使用的韧体更新装置
US20130166655A1 (en) * 2011-12-23 2013-06-27 Daryl Joseph Martin Cross-platform software distribution
US8914790B2 (en) * 2012-01-11 2014-12-16 Microsoft Corporation Contextual solicitation in a starter application
CN102722386B (zh) * 2012-05-28 2015-09-30 华为终端有限公司 生成无线固件升级包的方法和装置
EP2677719A1 (en) * 2012-06-19 2013-12-25 Alcatel Lucent A method for interfacing a communication terminal with networked objects
US8943489B1 (en) * 2012-06-29 2015-01-27 Juniper Networks, Inc. High availability in-service software upgrade using virtual machine instances in dual computing appliances
US9170804B2 (en) * 2012-07-05 2015-10-27 Nokia Technologies Oy Method and apparatus for modifying compressed files
CN102880495A (zh) * 2012-10-15 2013-01-16 华为终端有限公司 移动终端及其软件升级方法
CN103793238A (zh) * 2012-10-31 2014-05-14 英业达科技有限公司 机柜与其同时更新多个基本输入输出系统的方法
US9489188B1 (en) * 2012-11-14 2016-11-08 Amazon Technologies, Inc. Tag-based deployment
KR20140077435A (ko) * 2012-12-14 2014-06-24 삼성전자주식회사 모바일 단말의 소프트웨어 업데이트 서비스 방법 및 장치
CN103902309A (zh) * 2012-12-27 2014-07-02 龙尚智联通信科技(上海)有限公司 一种远程升级无线模块固件的方法
CN103123588A (zh) * 2013-02-05 2013-05-29 东莞宇龙通信科技有限公司 一种获取差分升级补丁的方法及系统
CN103412777A (zh) * 2013-08-13 2013-11-27 珠海金山网络游戏科技有限公司 一种将打包文件同步到指定版本的更新方法及系统
CN103473097A (zh) * 2013-09-09 2013-12-25 福州瑞芯微电子有限公司 Android系统固件升级系统、装置及升级方法
CN104602221A (zh) * 2013-11-01 2015-05-06 龙尚科技(上海)有限公司 一种基于gprs的远程升级设计方式的模块
US8725995B1 (en) * 2013-11-04 2014-05-13 Symantec Corporation Systems and methods for updating system-level services within read-only system images
CN103581331B (zh) * 2013-11-13 2018-04-03 中国科学院计算技术研究所 虚拟机在线迁移方法与系统
CN103701856B (zh) * 2013-11-29 2016-08-17 四川长虹电器股份有限公司 一种定义及终端设备获取升级包的方法
CN103840968A (zh) * 2014-01-02 2014-06-04 深圳市金立通信设备有限公司 一种版本更新方法、装置及终端设备
CN107193612B (zh) * 2014-06-27 2021-03-23 青岛海信移动通信技术股份有限公司 一种移动终端的版本升级方法及装置
US9351182B2 (en) * 2014-06-30 2016-05-24 At&T Intellectual Property I, Lp Method and apparatus for monitoring and adjusting multiple communication services at a venue
CN104077163B (zh) * 2014-07-01 2017-07-14 宇龙计算机通信科技(深圳)有限公司 一种安装包的安装方法、装置和终端
CN104133706B (zh) * 2014-08-01 2017-07-11 珠海全志科技股份有限公司 固件修改方法及固件修改装置
CN105335181A (zh) * 2014-08-06 2016-02-17 中兴通讯股份有限公司 一种实现ota升级的方法和终端
US20160080408A1 (en) * 2014-09-15 2016-03-17 Lookingglass Cyber Solutions Apparatuses, methods and systems for a cyber security assessment mechanism
CN104239110B (zh) * 2014-09-30 2017-06-16 广东欧珀移动通信有限公司 减少ota增量包大小的方法与装置
CN104391720A (zh) * 2014-11-29 2015-03-04 广东好帮手电子科技股份有限公司 基于Android系统后视镜盒子升级方法及后视镜盒子
US20160170739A1 (en) * 2014-12-15 2016-06-16 Dimitar Kapashikov Alter application behaviour during runtime
JP6216730B2 (ja) 2015-03-16 2017-10-18 日立オートモティブシステムズ株式会社 ソフト更新装置、ソフト更新方法
US9910664B2 (en) * 2015-05-04 2018-03-06 American Megatrends, Inc. System and method of online firmware update for baseboard management controller (BMC) devices
CN104991796B (zh) * 2015-06-19 2018-05-25 青岛海信移动通信技术股份有限公司 一种连续升级的方法及装置
JP2017033136A (ja) * 2015-07-30 2017-02-09 富士通株式会社 情報制御プログラム、情報制御装置及び情報制御方法
CN105208200A (zh) * 2015-08-25 2015-12-30 维沃移动通信有限公司 移动终端的系统升级方法及其移动终端
CN106484453B (zh) * 2015-09-02 2021-04-20 中兴通讯股份有限公司 一种实现系统升级的方法及装置
JP6512055B2 (ja) * 2015-09-30 2019-05-15 富士通株式会社 分析プログラム、分析装置および分析方法
CN106909404A (zh) * 2015-12-22 2017-06-30 博雅网络游戏开发(深圳)有限公司 软件更新方法和系统
CN107015821B (zh) * 2016-01-28 2021-05-11 腾讯科技(深圳)有限公司 增量更新的方法和装置
CN105843645B (zh) * 2016-03-24 2020-01-14 浙江风向标科技有限公司 zigbee设备的固件升级方法和装置
JP6609508B2 (ja) 2016-04-27 2019-11-20 日立オートモティブシステムズ株式会社 車両用電子制御装置、プログラム更新方法
CN106815051A (zh) * 2016-12-30 2017-06-09 深圳怡化电脑股份有限公司 一种嵌入式设备的固件升级方法、装置及验钞器
US9929748B1 (en) * 2017-03-31 2018-03-27 Intel Corporation Techniques for data compression verification
CN107066303B (zh) * 2017-05-04 2020-11-27 深圳市欧瑞博科技股份有限公司 固件比对方法和装置
US10915331B2 (en) * 2017-08-04 2021-02-09 Qualcomm Incorporated Partitioning flash and enabling flexible boot with image upgrade capabilities
CN108334356A (zh) * 2017-09-21 2018-07-27 安徽江淮汽车集团股份有限公司 一种远程程序升级方法及系统
KR102043075B1 (ko) * 2017-11-24 2019-11-11 슈어소프트테크주식회사 모델 변경 분석을 통한 모델 검증 방법 및 모델 검증 장치
US10642602B2 (en) * 2017-12-12 2020-05-05 Nxp Usa, Inc. NVM architecture with OTA support
WO2019159715A1 (ja) 2018-02-16 2019-08-22 日立オートモティブシステムズ株式会社 車両制御装置およびプログラム更新システム
CN110740154A (zh) * 2018-07-20 2020-01-31 视联动力信息技术股份有限公司 一种流媒体服务的升级方法、装置及设备
PL3617875T3 (pl) * 2018-08-27 2021-11-08 Ovh Sposób ulepszonej zautomatyzowanej aktualizacji oprogramowania przy zastosowaniu urządzenia sieciowego
KR102111449B1 (ko) * 2018-10-23 2020-05-15 주식회사 시옷 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법
US11070618B2 (en) 2019-01-30 2021-07-20 Valve Corporation Techniques for updating files
US11386233B2 (en) 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11106554B2 (en) 2019-04-30 2021-08-31 JFrog, Ltd. Active-active environment control
US11886390B2 (en) * 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
US11086757B1 (en) * 2019-06-12 2021-08-10 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments
US11720347B1 (en) 2019-06-12 2023-08-08 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments
WO2021014326A2 (en) 2019-07-19 2021-01-28 JFrog Ltd. Software release verification
US10999314B2 (en) 2019-07-19 2021-05-04 JFrog Ltd. Software release tracking and logging
CN114402286A (zh) * 2019-11-18 2022-04-26 深圳市欢太科技有限公司 一种文件处理方法、文件处理装置及终端设备
US11695829B2 (en) 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
TWI734370B (zh) * 2020-02-06 2021-07-21 大陸商合肥兆芯電子有限公司 快閃記憶體之資料合併方法、控制電路單元與儲存裝置
CN111782254A (zh) * 2020-07-02 2020-10-16 百度在线网络技术(北京)有限公司 用于升级对象的方法、装置、设备以及存储介质
CN111949293A (zh) * 2020-08-06 2020-11-17 曙光信息产业(北京)有限公司 固件升级方法、装置、计算机设备和存储介质
CN112218289B (zh) * 2020-09-18 2022-11-08 中煤科工集团重庆研究院有限公司 定位卡无线升级系统和方法
CN112152846B (zh) * 2020-09-18 2023-04-18 重庆神缘智能科技有限公司 一种基于物联网的计量仪表远程升级方法
US11860680B2 (en) 2020-11-24 2024-01-02 JFrog Ltd. Software pipeline and release validation
CN112383908A (zh) * 2020-11-24 2021-02-19 无锡寰芯微电子科技有限公司 一种蓝牙设备的升级方法及系统
CN112667266B (zh) * 2021-01-22 2024-02-06 百度在线网络技术(北京)有限公司 固件升级方法、装置、设备和存储介质
US20220377533A1 (en) * 2021-05-19 2022-11-24 Mehmood Zafarullahkhan System of mobile device operating system and apps delivery service
CN113721967A (zh) * 2021-08-30 2021-11-30 苏州磐联集成电路科技股份有限公司 差分包生成方法,差分包生成设备,及升级方法
CN113986277A (zh) * 2021-09-24 2022-01-28 成都市卡蛙科技有限公司 一种基于终端状态进行固件升级的方法
CN114168182A (zh) * 2021-11-15 2022-03-11 读书郎教育科技有限公司 一种Android终端应用升级的方法

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10576A (en) * 1854-02-28 lyman
US193386A (en) * 1877-07-24 Improvement in ozone-generators
US237081A (en) * 1881-01-25 Smoke-consuming furnace
US132382A (en) * 1872-10-22 Improvement in knitting-machine needles
US203968A (en) * 1878-05-21 Improvement in velocipedes
JPH04137136A (ja) * 1990-09-28 1992-05-12 Nec Corp プログラム記憶方式
JPH04362735A (ja) * 1991-06-10 1992-12-15 Mitsubishi Heavy Ind Ltd ソースプログラム照合システム
JPH05120067A (ja) * 1991-10-30 1993-05-18 Nec Software Ltd プログラムパツチ方式
KR100286008B1 (ko) * 1995-12-30 2001-04-16 윤종용 소프트웨어 프로그램 자동 갱신방법
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
KR100284430B1 (ko) * 1998-12-18 2001-04-02 구자홍 프로그램 갱신 방법 및 장치
US7469381B2 (en) * 2007-01-07 2008-12-23 Apple Inc. List scrolling and document translation, scaling, and rotation on a touch-screen display
US6751794B1 (en) * 2000-05-25 2004-06-15 Everdream Corporation Intelligent patch checker
JP2001350684A (ja) * 2000-06-05 2001-12-21 Nec Gumma Ltd ソフトウェア提供システム及びソフトウェア提供装置
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7058941B1 (en) * 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
US20030186689A1 (en) * 2001-08-06 2003-10-02 Samsung Electronics Co., Ltd System and method for IOTA software download notification for wireless communication devices
US20030074657A1 (en) * 2001-10-12 2003-04-17 Bramley Richard A. Limited time evaluation system for firmware
US7251812B1 (en) * 2001-10-31 2007-07-31 Microsoft Corporation Dynamic software update
JP2003143091A (ja) * 2001-11-01 2003-05-16 Matsushita Electric Ind Co Ltd 放送装置並びに受信装置
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
JP4205350B2 (ja) * 2002-02-28 2009-01-07 富士通株式会社 差分データ生成方法、プログラム、記録媒体及び装置
US7600021B2 (en) * 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
JP2004102379A (ja) * 2002-09-05 2004-04-02 Hitachi Ltd パッチ適用管理プログラム、方法、およびシステム
JP2004152136A (ja) * 2002-10-31 2004-05-27 Matsushita Electric Ind Co Ltd データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
JP2004227520A (ja) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
TWI229291B (en) * 2003-04-03 2005-03-11 Inventec Corp Device and method for updating contents of flash memory unit
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
US20040237081A1 (en) * 2003-05-19 2004-11-25 Homiller Daniel P. Methods and apparatus for generating upgraded software from initial software and software upgrade packages
JP3985737B2 (ja) * 2003-06-20 2007-10-03 ソニー株式会社 ソフトウェア更新システムと電子機器およびソフトウェア更新方法
CN100479372C (zh) * 2003-06-22 2009-04-15 华为技术有限公司 终端设备的软件自动升级方法
WO2004114130A2 (en) * 2003-06-23 2004-12-29 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7313792B2 (en) * 2003-09-08 2007-12-25 Microsoft Corporation Method and system for servicing software
JP2005092623A (ja) * 2003-09-18 2005-04-07 Nec Software Chubu Ltd パッケージソフトウェア更新方式,方法,およびプログラム
JP2005135187A (ja) * 2003-10-30 2005-05-26 Toshiba Corp 電子機器および組み込みソフトウェア更新方法
JP4467965B2 (ja) * 2003-12-08 2010-05-26 株式会社野村総合研究所 差分ファイル作成プログラム及び方法
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7509636B2 (en) * 2003-12-15 2009-03-24 Microsoft Corporation System and method for updating files utilizing delta compression patching
US7546594B2 (en) * 2003-12-15 2009-06-09 Microsoft Corporation System and method for updating installation components using an installation component delta patch in a networked environment
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US9213609B2 (en) * 2003-12-16 2015-12-15 Hewlett-Packard Development Company, L.P. Persistent memory device for backup process checkpoint states
US7197634B2 (en) * 2004-01-16 2007-03-27 Dell Products L.P. System and method for updating device firmware
WO2005085997A2 (en) * 2004-03-10 2005-09-15 Sony Ericsson Mobile Communications Ab Automatic backup store in firmware upgrades
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software
US7587433B2 (en) * 2004-06-01 2009-09-08 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
JP4036852B2 (ja) * 2004-09-13 2008-01-23 三菱電機株式会社 差分データ生成装置、差分データ生成方法および差分データ生成プログラム
JP4016025B2 (ja) * 2004-10-12 2007-12-05 富士通株式会社 無線端末装置
JP2008522254A (ja) * 2004-11-08 2008-06-26 イノパス・ソフトウェアー・インコーポレーテッド スタティック・ファイル・システムの差異検出および更新
EP1657638A1 (en) * 2004-11-12 2006-05-17 Research In Motion Limited System and method for downloading a program from a program store location to a mobile device
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
WO2007108127A1 (ja) * 2006-03-23 2007-09-27 Mitsubishi Denki Kabushiki Kaisha システムプログラムダウンロードシステム
US20070277167A1 (en) * 2006-05-23 2007-11-29 International Business Machines Corporation System and method for computer system maintenance

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2628246C2 (ru) * 2014-10-16 2017-08-15 Сяоми Инк. Способ обновления и устройство и средство для него
RU2633151C2 (ru) * 2014-12-09 2017-10-11 Сяоми Инк. Способ и устройство для обновления микропрограммного обеспечения
US9886264B2 (en) 2014-12-09 2018-02-06 Xiaomi Inc. Method and device for upgrading firmware

Also Published As

Publication number Publication date
WO2007148900A1 (en) 2007-12-27
EP2030119A4 (en) 2009-07-22
KR20070120447A (ko) 2007-12-24
JP2009536395A (ja) 2009-10-08
JP5508370B2 (ja) 2014-05-28
KR20070120446A (ko) 2007-12-24
US20070294685A1 (en) 2007-12-20
JP2012069131A (ja) 2012-04-05
EP2030120A4 (en) 2009-08-26
CN101356519B (zh) 2011-11-09
EP2030120A1 (en) 2009-03-04
WO2007148899A1 (en) 2007-12-27
RU2008114331A (ru) 2009-10-20
CN101361051A (zh) 2009-02-04
CN101361051B (zh) 2011-01-26
CN101356519A (zh) 2009-01-28
JP2009536396A (ja) 2009-10-08
KR101417759B1 (ko) 2014-07-14
EP2030119A1 (en) 2009-03-04
US20070294686A1 (en) 2007-12-20

Similar Documents

Publication Publication Date Title
RU2388045C2 (ru) Система и способ обновления программы для переносного устройства с поддержкой ота
CN102232304B (zh) 一种移动通信终端间进行系统升级的方法、系统及终端
EP2966566B1 (en) Driver program loading method and embedded device
RU2419839C2 (ru) Система и способ обновления программы для мобильного терминала с поддержкой ота
CN112328435B (zh) 目标数据备份和恢复的方法、装置、设备及存储介质
US11321079B2 (en) Method and device for updating firmware using a modified delta file
CN106021023B (zh) 应用程序恢复的方法、装置及终端
US20170315800A1 (en) Method and terminal for ota updating
CN101593119B (zh) 一种独占闪存组合设备空中固件升级方法及装置
CN110928483B (zh) 数据存储、数据获取方法及设备
CN102541595A (zh) 智能设备的升级方法、装置及智能设备
CN110333876A (zh) 一种数据清除方法及控制设备
CN112308716A (zh) 区块链智能合约执行方法、装置、设备及计算机存储介质
CN112579140A (zh) 一种软件升级方法及装置
CN113961226B (zh) 一种软件开发工具包修复方法、终端、服务器及设备
US8413132B2 (en) Techniques for resolving read-after-write (RAW) conflicts using backup area
US10078532B2 (en) Resource management method and device for terminal system among multiple operating systems
US20230022646A1 (en) Method for updating applications in cloud environments
CN113821222A (zh) 一种生成原ota包的方法及装置
CN113986312A (zh) 软件升级方法、装置、电子设备及计算机可读存储介质
CN111818511B (zh) 重复利用种子卡的方法及装置
JP2010066872A (ja) アプリケーション実行装置
CN116185948A (zh) 代码虚拟环境的迁移方法及装置、存储介质、电子设备
CN106528057A (zh) 实现运行环境适配的方法和装置
CN104580485A (zh) 应用程序的信息下载方法及装置

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190619