СИСТЕМА И СПОСОБ ОБНОВЛЕНИЯ ПРОГРАММЫ ДЛЯ ПЕРЕНОСНОГО УСТРОЙСТВА С ПОДДЕРЖКОЙ ОТА
SOFTWARE UPDATE SYSTEM AND METHOD FOR PORTABLE DEVICE WITH OTA SUPPORT

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу обновления системы и, в частности, к системе и способу для обновления программы (включающей в себя работающие микропрограммное обеспечение и прикладное программное обеспечение) переносного устройства с использованием механизма программирования "по воздуху" (технологии передачи данных по радиоканалу).
Уровень техники
Электронные устройства, такие как мобильные телефоны и персональные цифровые помощники (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 первой версии, сохраненной в первом запоминающем устройстве.
Хотя примерные варианты осуществления настоящего изобретения были описаны подробно выше в данном документе, должно быть ясно понято, что многие вариации и модификации основных изобретенных концепций, преподанных здесь, могут проявиться для специалистов в настоящей области техники, которые все еще подпадают под дух и цель настоящего изобретения, как определено в прилагаемой формуле изобретения.