СИСТЕМА И СПОСОБ ОБНОВЛЕНИЯ ПРОГРАММЫ ДЛЯ МОБИЛЬНОГО ТЕРМИНАЛА С ПОДДЕРЖКОЙ ОТА
SOFTWARE UPDATE SYSTEM AND METHOD FOR PORTABLE OTA SUPPORTING MOBILE TERMINAL

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу обновления системы, в частности к устройству и способу обновления программы мобильного терминала с помощью беспроводного (Over-the-Air, OTA) механизма программирования.
Уровень техники
Электронные устройства, такие как мобильные телефоны и персональные цифровые помощники (PDA), содержат микропрограммное обеспечение и прикладное программное обеспечение, которые предоставлены производителями электронных устройств, телекоммуникационными компаниями или третьими сторонами. Такое микропрограммное обеспечение и прикладное программное обеспечение может содержать ошибки в программном обеспечении и зачастую требует обновления. Чтобы исправить и обновить микропрограммное обеспечение и прикладное программное обеспечение, пользователь посещает центр обслуживания клиентов под управлением производителя или телекоммуникационной компании. Для устройства с поддержкой OTA обновление микропрограммного обеспечения или программного обеспечения может выполняться через OTA-механизм, в котором обновления микропрограммного обеспечения или программного обеспечения доставляются беспроводным способом в устройство.
Раскрытие изобретения
Техническая задача
Технический результат, достигаемый при реализации настоящего изобретения, заключается в улучшении стабильности обновления программ для ОТА электронных устройств, а также в уменьшении времени загрузки и формирования пакета обновлений.
Чтобы использовать ОТА, электронное устройство включает в себя модуль загрузки для загрузки пакета обновлений и модуль обработки обновления для выполнения обновления целевого микропрограммного обеспечения или программного обеспечения с помощью загруженного пакета обновлений. Однако большинство традиционных устройств с поддержкой ОТА ограничены в стабильности работы ОТА.
Техническое решение
Настоящее изобретение создано в попытке разрешить вышеуказанные проблемы, и настоящее изобретение предоставляет устройство и способ обновления программы для устройства с поддержкой ОТА для обновления программы посредством объединения контрольной версии программы и пакета обновлений, принятого по беспроводному каналу.
Настоящее изобретение предоставляет устройство и способ обновления программы для портативного устройства с поддержкой ОТА для обновления микропрограммного обеспечения портативного устройства в такой последовательности сохранения пакета обновлений, принятого по беспроводному каналу, в первом запоминающем устройстве, обновления программы посредством соединения пакета обновлений с контрольной версией программы и загрузки обновленной программы во второе запоминающее устройство, чтобы управлять портативным устройством.
Краткое описание чертежей
Вышеописанные и другие цели, признаки и преимущества настоящего изобретения будут более понятны из следующего подробного описания, данного в сочетании с сопровождающими чертежами, на которых:
Фиг.1 является схемой, иллюстрирующей систему обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.2 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений в системе обновления программы в соответствии с примерным вариантом осуществления настоящего изобретения;
Фиг.3 является блок-схемой, иллюстрирующей конфигурацию процессора пакетов обновлений в системе обновления программы в соответствии с другим примерным вариантом осуществления настоящего изобретения;
Фиг.4-9 являются схемами, иллюстрирующими процессы формирования пакета обновлений в процессоре пакетов обновлений по фиг.2 и 3;
Фиг.10 является схемой, иллюстрирующей формат данных пакета обновлений, сформированного процессором пакетов обновлений на фиг.2;
Фиг.11 является блок-схемой, иллюстрирующей формат данных пакета обновлений, сформированного процессором пакетов обновлений на фиг.3;
Фиг.12 является блок-схемой, иллюстрирующей конфигурацию устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.13 является блок-схемой, иллюстрирующей конфигурацию первого запоминающего устройства устройства-получателя на фиг.12;
Фиг.14 является схемой, иллюстрирующей структуру второй области хранения первого запоминающего устройства на фиг.13;
Фиг.15 является схемой, иллюстрирующей формат архивных данных каждого пакета обновлений, сохраненного во второй области хранения на фиг.14;
Фиг.16 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.17 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения;
Фиг.18 и 19 являются блок-схемами, иллюстрирующими операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения;
Фиг.20 является блок-схемой, иллюстрирующей операцию обновления устройства-получателя в системе обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей способ обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ обновления программы устройства-получателя в системе обновления программы согласно примерному варианту осуществления настоящего изобретения;
Фиг.23 является блок-схемой последовательности операций, иллюстрирующей процедуру установки пакета обновлений в способе обновления программы по фиг.22;
Фиг.24 является процедурой обновлений версии способа обновления программы по фиг.22;
Фиг.25-31 являются блок-схемами последовательности операций, иллюстрирующими способ обновления программы согласно другому примерному варианту осуществления настоящего изобретения; и
Фиг.32 является блок-схемой, иллюстрирующей конфигурацию мобильного терминала согласно примерному варианту осуществления настоящего изобретения.
Оптимальный вариант осуществления изобретения
В соответствии с аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством устройства обновления программы для мобильного терминала, который работает под управлением программы. Устройство обновления программы включает в себя первое запоминающее устройство для сохранения контрольной версии программы и, по меньшей мере, одного пакета обновлений; второе запоминающее устройство для загрузки версии обновления программы; модуль связи для предоставления возможности мобильному терминалу обмениваться данными с внешней системой; и модуль управления для управления модулем связи так, чтобы загружать пакет обновлений в ответ на сообщение уведомления об обновлении от внешней системы, установки пакета обновлений в первом запоминающем устройстве, формирования версии обновления программы посредством объединения пакета обновлений и контрольной версии в ответ на команду установки и работы мобильного терминала под управлением обновленной версии программы. В соответствии с другим аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством способа обновления программы для мобильного терминала, работающего под управлением программы. Способ обновления программы включает в себя загрузку пакета обновлений программы из внешней системы; установку пакета обновлений в первом запоминающем устройстве; загрузку контрольной версии и пакета обновлений в ответ на запрос на обновление; формирование версии обновления посредством объединения контрольной версии и пакета обновлений; загрузку версии обновления во второе запоминающее устройство; и управление мобильным терминалом с помощью версии обновления.
В соответствии с другим аспектом настоящего изобретения вышеуказанные и другие цели достигаются посредством устройства обновления программы для мобильного терминала, работающего под управлением программы. Устройство обновления программы включает в себя первое запоминающее устройство, имеющее первую область для сохранения контрольной версии программы и, по меньшей мере, одну вторую область для сохранения, по меньшей мере, одного пакета обновлений; второе запоминающее устройство для сохранения обновленной версии программы; загрузчик для загрузки пакета обновлений из внешней системы; установщик для установки пакета обновлений, загружаемого посредством загрузчика во второй области первого запоминающего устройства; и транслятор для загрузки пакета обновлений и контрольной версии из первого запоминающего устройства, формирования обновленной версии посредством объединения пакета обновлений с контрольной версией и сохранения обновленной версии во втором запоминающем устройстве.
Вариант осуществления изобретения
Варианты осуществления настоящего изобретения описаны подробно со ссылкой на сопровождающие чертежи. Одинаковые номера ссылок используются на чертежах, чтобы ссылаться на одни и те же или подобные части. Подробные описания хорошо известных функций и структур, содержащихся в данном документе, могут быть опущены, чтобы избежать неясности в предмете изучения настоящего изобретения.
В последующих вариантах осуществления "обновление" - это процесс, модифицирующий исходные коды микропрограммного обеспечения или программного обеспечения системы с помощью пакета обновлений для исправления ошибок и повышения удобства работы или производительности. Пакет обновлений - это набор данных, сформированный в соответствии с различиями между старыми и новыми версиями целевой программы так, что пакет обновлений объединяется со старой версией для обновления программы до новой версии. Пакет обновлений включает в себя данные обновления и/или данные установки. Данные установки включают в себя архивные данные и данные соответствия. Данные обновления - это данные для того, чтобы заменять конкретные данные старой версии в процессе обновления. Данные установки - это набор информации для обновления старой версии до новой версии программы. Данные установки включают в себя архивные данные для сообщения взаимосвязи пакета обновлений и старой версии, чтобы быть обновленной, и данные соответствия для назначения блоков, представляющих новую версию, старой версии. Данные соответствия состоят из адресов макроблоков и команд, которые должны приводиться в исполнение для обработки макроблоков. Команды включают в себя C для "копирования", S для "сдвига" и M для "модификации", и адреса макроблоков могут представляться посредством индексов блоков контрольной версии программы. Устройство-получатель установлено с первой версией программного обеспечения на стадии производства и может загружать и хранить, по меньшей мере, один пакет обновлений, когда происходит событие обновления.
Первое запоминающее устройство - это устройство для хранения пакетов обновлений первой и второй версий программы. Второе запоминающее устройство - это запоминающее устройство для загрузки программы, обновленной объединением первой версии и пакетов обновлений, представленных второй версией. Первое и второе запоминающие устройства предпочтительно реализуются с первой и второй областями запоминающего устройства в одном устройстве памяти и также могут быть осуществлены как физически разделенные модули памяти. В последующих вариантах осуществления первое и второе запоминающие устройства описаны как индивидуальные модули памяти. Первое запоминающее устройство является флэш-памятью в качестве энергонезависимой памяти, а второе запоминающее устройство является синхронным динамическим оперативным запоминающим устройством (SDRAM) в качестве энергозависимой памяти. Первое запоминающее устройство хранит первую версию программы и, по меньшей мере, один пакет обновлений в качестве второй версии программы. Пакет обновлений включает в себя архивные данные для идентификации версий программы (включающие в себя данные соответствия) и данные обновления. Если событие обновления происходит посредством системной инициализации или пользовательской команды, система загружает вторую версию программы, обновленной посредством объединения первой версии и пакета обновлений, во второе запоминающее устройство, так что система работает со второй версией программы. Пакет обновлений включает в себя данные установки и данные обновления. Данные установки могут включать в себя архивные данные и/или данные соответствия. Первая версия программы может быть начальной версией программы, а вторая версия программы включает в себя данные обновления, созданные на основе различия между первой и второй версиями программы, и данные установки для установки данных обновления. Программой, загруженной во второе запоминающее устройство, может быть программа, созданная посредством соединения первой версии и пакета обновлений второй версии программы.
Система обновления программы предпочтительно может быть разделена на систему передачи для создания и передачи пакетов обновлений и, по меньшей мере, одно устройство-получатель для получения пакетов обновлений и обновления целевой программы с помощью пакетов обновлений. В последующих вариантах осуществления устройство-получатель представлено посредством мобильного терминала. Мобильный терминал - это устройство с поддержкой мультимедиа, такое как мобильный телефон, цифровая камера, портативный компьютер и портативный мультимедийный проигрыватель (PMP).
Со ссылкой на фиг.1, система обновления программы включает в себя процессор 10 пакетов обновлений, сервер 20 пакетов обновлений, сервер 25 уведомлений и устройство-получатель 30.
Если новая версия (вторая версия) программы введена, процессор 10 пакетов обновлений формирует пакет обновлений из пары старой версии (первой версии) и новой версии (второй версии) программы и затем передает пакет обновлений в сервер 20 пакетов обновлений. При этом процессор 10 пакетов обновлений обменивается данными с сервером 20 пакетов обновлений по беспроводному каналу с помощью стандарта беспроводной связи, такого как CDMA, UMTS, WiBro, Wi-Fi, WiMAX, Bluetooth, Zigbee, или стандарт проводной связи, такой как USB и UART.
Если пакет обновлений принимается от процессора 10 пакетов обновлений, сервер 20 пакетов обновлений сообщает серверу 25 уведомлений о выдаче пакета обновлений. Сервер 25 уведомлений передает в широковещательном режиме сообщение уведомления во множество устройств-получателей 20, так что устройства-получатели 30 загружают пакет обновлений. Также сервер 20 пакетов обновлений и устройства-получатели 20 связываются друг с другом через беспроводной канал, установленный на основе стандарта беспроводной связи, такого как CDMA, UMTS, WiBro, Wi-Fi, WiMAX, Bluetooth и Zigbee, или стандарта проводной связи, такого как USB и UART.
Если пакет обновлений успешно загружен, устройство-получатель 30 сохраняет пакет обновлений второй версии в модуле запоминающего устройства. Устройство-получатель 30 включает в себя первое и второе запоминающие устройства. Первое и второе запоминающие устройства предпочтительно реализуются как один модуль или два отдельных модуля. Первое запоминающее устройство сохраняет пакеты обновлений, загруженные из сервера 20 пакетов обновлений, для выгрузки программы в соответствующие версии, а второе запоминающее устройство сохраняет вторую версию, созданную посредством обновлений первой версии программы с помощью пакета обновлений. Устройство-получатель 30 сохраняет пакет обновлений, загруженный из сервера 20 пакетов обновлений, в первом запоминающем устройстве как вторую версию программы. Если обновление запрошено, устройство-получатель 30 формирует вторую версию посредством объединения первой версии и пакета обновлений и загружает вторую версию во второе запоминающее устройство для работы со второй версией.
Работа процессора 10 пакетов обновлений описана далее. В последующем описании процессор 10 пакетов обновлений сжимает первую и вторую версии программы, создает данные обновлений и данные соответствия через анализ сравнений и формирует пакет обновлений посредством упаковки данных обновлений и данных установки, включающих в себя данные соответствия. Например, на фиг.3 процессор 10 пакетов обновлений сжимает первую и вторую версии программы, создает данные обновлений и устанавливает данные, не имеющие каких-либо данных соответствия, через сравнительный анализ, и формирует пакет обновлений посредством упаковки данных обновлений и данных установки.
Со ссылкой на фиг.2-11, первый формирователь 50 версий формирует первую версию программы, а второй формирователь 55 версий формирует вторую версию программы. Первая версия - это начальная версия, установленная в устройстве-получателе 30, или контрольная версия, определенная далее. Первая версия устанавливается в первом запоминающем устройстве устройства-получателя. Вторая версия - это версия обновления для первой версии, и она может быть загружена из сервера 20 пакетов обновлений. Первый уплотнитель 160 разделяет данные первой и второй версий и сжимает разделенные данные в единицу макроблока. Посредством сжатия данных в макроблок первая и вторая версии могут быть сравнены в единице блока. Компаратор 110 сравнивает блоки первой и второй версий и определяет то, являются ли два блока каждой пары идентичными друг другу. Если блоки не идентичны друг другу, компаратор 110 отыскивает блок, идентичный соответствующему блоку второй версии, в диапазоне поиска первой версии. Далее компаратор 110 передает информацию по результату сравнения и индексы блоков для соответствующих блоков первой версии формирователю 180 данных установки.
Т.е. компаратор 110 сравнивает блок второй версии с блоком первой версии и передает, если два блока идентичны друг другу, результат сравнения формирователю 180 данных установки вместе с индексом блоков. С другой стороны, если два блока не идентичны друг другу, компаратор 110 отыскивает блок, идентичный текущему блоку второй версии, в диапазоне поиска первой версии. Если идентичный блок извлекается в диапазоне поиска, компаратор 110 передает результат сравнения в формирователь 180 данных установки вместе с идентичным блоком первой версии. Т.е. компаратор 110 сравнивает текущий блок с блоком в регрессивном и поступательном направлении в диапазоне поиска. Если идентичный блок не извлекается в диапазоне поиска, компаратор 110 передает результат поиска в данные установки вместе с индексом блока второй версии.
Формирователь 180 данных установки предпочтительно снабжается формирователем 120 архивных данных и формирователем 150 данных соответствия, как показано на фиг.2, или может снабжаться только формирователем 120 архивных данных, как показано на фиг.3. Формирователь 120 архивных данных имеет номер версии для второй версии. Т.е. если номер версии для второй версии - это 5, это означает, что первая версия обновляется до второй версии, номер версии которой равен 5. Формирователь 150 данных соответствия формирует вывод компаратора 110 и формирует данные соответствия, состоящие из инструкций и индексов блоков.
Со ссылкой на фиг.4-8, пакет обновлений включает в себя данные обновлений, архивные данные и данные соответствия в процессоре пакетов обновлений по фиг.2 или состоит из данных обновлений и архивных данных в процессоре пакетов обновлений по фиг.3. Когда вторая версия создана с помощью первой версии программы, области промежутков могут быть предусмотрены в первой версии программы, чтобы уменьшить число операций сдвига в процессе обновления.
Операция формирования пакета обновлений, содержащего данные соответствия, описана далее со ссылкой на фиг.4-8. Сначала процессор 10 пакетов обновлений сравнивает первую версию (V1) и вторую версию (V2) программы в единицах макроблоков (MB), определяет атрибуты (C для копирования, M для модификации и S для сдвига) блоков и формирует пакет обновлений в соответствии с атрибутами блоков. В случае пакета обновлений, имеющего данные соответствия, данные соответствия формируются с помощью формата командной строки, состоящего из команд C для копирования, M для модификации (чтобы вставить или заменить таким же по размеру) и S для сдвига в следующем формате:
[Cmd][# начального блока, число блоков][флаг][расстояние][различие]
где Cmd обозначает команду C, M или S, "номер начального блока" обозначает индекс начального блока, затрагиваемый командой, "число блоков" обозначает число блоков, затрагиваемых командой, "флаг" имеет значение 0, 1 или 2. Значение флага задается равным 0, когда Cmd - это C (просто для копирования) или S (просто сдвиг), 1 когда блоки могут быть получены из V при Cmd M, и 2, когда блок не может быть получен из V1, а в дельта-пакете при Cmd M. "Расстояние" означает индекс блока, указывающий местоположение блока V2 в V1. "Различие" означает различие между блоками V1 и V2.
В данном варианте осуществления, если блоки в V1 и V2 отличаются друг от друга, модифицированные блоки создаются. Если модифицированные блоки обнаружены, процессор 10 пакетов обновлений ищет модифицированные блоки в V2 в диапазоне поиска в V1. В примерах на фиг.4-6, в 15 блоках выполняется поиск на предмет модифицированных блоков в регрессивном и поступательном направлениях. Если идентичные блоки найдены в диапазоне поиска, процессор 10 пакетов обновлений формирует пакет обновлений с индексами блоков вместо формирования данных обновлений.
Фиг.4 иллюстрирует то, как формировать данные соответствия, когда модифицированные блоки в V2 извлечены в диапазоне поиска в V1.
Со ссылкой на фиг.4, процессор 10 пакетов обновлений сравнивает V1 и V2 в единицах макроблоков. Если модифицированные блоки в V2 извлекаются в диапазоне поиска в V1, процессор 10 пакетов обновлений формирует данные соответствия, включающие в себя индексы блоков в V1, идентичные модифицированным блокам в V2, вместо формирования данных обновления с самими модифицированными блоками.
Т.е. процессор 10 пакетов обновлений извлекает блоки, идентичные модифицированным блокам в V2 в диапазоне поиска в V1, и содержит индексы извлеченных блоков в данных соответствия.
Табл. 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
или
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-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.
Фиг.5 иллюстрирует то, как формировать данные соответствия, когда модифицированные блоки в V2 не извлечены, но аналогичные блоки существуют в диапазоне поиска в V1. Как показано на фиг.5, блоки с 16-го по 19-й в V2 являются модифицированными, а исходные блоки с 16-го по 19-й в V1 сдвигаются вправо, чтобы стать блоками с 20-го по 24-й в V2. В табл.1 "S20,5, F:0, (20-4), 0" указывает, что 5 блоков (блоки с 20-го по 24-й) в V2, в том числе 20-й блок, являются идентичными 5 блокам (блокам с 16-го по 20-й) в первой версии перед 4 блоками с 20-го блока (20-4=16). "S20,5, F:0, (20-4), 0" указывает то, что 20-й блок в V2 идентичен 16-му блоку в V1, а блоки с 20-го по 24-й в V2 идентичны блокам с 16-го по 20-й в V1. Блоки сдвига указаны в форме "S:20,5, F:0, (20-4), 0".
Со ссылкой на фиг.5, процессор 10 пакетов обновлений обнаруживает то, что 16-й блок в V2 идентичен 12-му блоку в диапазоне поиска в V1, но блока, идентичного 17-му блоку в V2, не существует в диапазоне поиска, и блока, идентичного 18-му блоку в V2, не существует, но 19-й блок в V2 идентичен 6-му блоку в диапазоне поиска. В этом случае процессор 10 пакетов обновлений определяет то, что 16-й и 17-й блоки аналогичны 12-му и 13-му блоку в V1 как модифицированные блоки, а 18-й 19-й блоки аналогичны 6-му и 7-му блокам как модифицированным блокам. Соответственно, процессор 10 пакетов обновлений формирует пакет обновлений с помощью V1 и V2, как показано на фиг.3B, с данными соответствия, как показано в табл.2.
Табл. 2
C:0,15,F:0, null, null
M:16,4 F:1, (16-12), (17-13), (18-6), (19-7), 0, код (B,K), код (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, как на фиг.5, процессор 10 пакетов обновлений формирует данные соответствия посредством соответствия модифицированных блоков в V2 на соответствующие блоки в V1 и выполняет энтропийное кодирование на основе различия блоков в V1 и V2.
Фиг.6 иллюстрирует то, как формировать данные соответствия, когда модифицированные блоки в V2 не извлечены в диапазоне поиска в V1.
Процессор 10 пакетов обновлений сравнивает V1 и V2 в единицах блоков, проверяет атрибуты (C, M или S) блоков в V2 и формирует данные обновления на основе атрибутов блоков. Данные модифицированных блоков упаковываются в пакет обновлений в качестве данных обновлений. Как описано выше, процессор 10 пакетов обновлений проверяет, существует ли блок, идентичный модифицированному блоку в V2, в диапазоне поиска в V1. Если идентичный блок не найден, процессор 10 пакетов обновлений выполняет энтропийное кодирование с различием блоков в V1 и V2, чтобы сформировать данные обновления.
На фиг.6 блоки с 16-го по 19-й, имеющие данные Z, W, P и X, вставляются в V2. Процессор 10 пакетов обновлений отыскивает блоки, идентичные вновь вставленным блокам из V2, в диапазоне поиска в V1. Так как нет блоков, идентичных вставленным блокам в V2, в диапазоне поиска в V1, процессор 10 пакетов обновлений задает атрибут M вставленным блокам и устанавливает блоки в качестве данных обновления.
Как показано на фиг.6, не существует блоков, идентичных блокам с 16-го по 19-й из V2, в диапазоне поиска в V1. В этом случае процессор 10 пакетов обновлений формирует данные соответствия, как показано в табл.3, посредством энтропийного кодирования данных Z, W, P и X.
Табл. 3
C:0,15,F:0, null, null
M:16,4F: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. Когда модифицированный блок не найден в диапазоне поиска, как на фиг.3, процессор 10 пакетов обновлений устанавливает флаг блока равным 2 (F=2) и формирует отдельные данные обновлений. В этом случае пакет обновлений включает в себя архивные данные, данные соответствия и данные обновления.
В случае на фиг.3 процессор 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 (см. фиг.6), процессор пакетов обновлений создает данные соответствия посредством энтропийного кодирования данных модифицированных блоков. Если данные соответствия сформированы в форме табл.4, процессор 10 пакетов обновлений не создает дополнительные данные обновления и формирует пакет обновлений с архивными данными и данными соответствия.
Фиг.7 иллюстрирует пример усовершенствованной техники формирования пакетов обновлений посредством предоставления областей промежутков в V1, а фиг.8 показывает пример методики формирования пакетов обновлений, особенно когда блок в V1 удален в V2.
Со ссылкой на фиг.7, если новые данные добавляются или некоторые данные удаляются из V2 по сравнению с V1, процессор 10 пакетов обновлений сдвигает блоки, следующие за добавленными или удаленными блоками. Если блоки сдвигаются влево, процессор 10 пакетов обновлений отыскивает блок, идентичный каждому модифицированному блоку, в диапазоне поиска в V1. Если идентичный блок найден, процессор 10 пакетов обновлений назначает индекс блока в V1 модифицированному блоку в V2. Наоборот, если идентичный макроблок не найден, процессор 10 пакетов обновлений выполняет энтропийное кодирование по данным модифицированного блока в V2, чтобы сформировать данные обновления.
При обновлении V1 до V2 может быть выполнено множество операций сдвига. V1 может быть запрограммирована с областью промежутка, зарезервированной для операций сдвига. Область промежутка может быть выполнена с учетом данных обновления для V2. Предпочтительно операции сдвига выполняются без влияния на следующий компонент с помощью области промежутка, как показано на фиг.7. В примере по фиг.7 V2 запрограммирована посредством удаления блоков с 6-го по 10-й в V1, добавления 3-го, 4-го, 8-го, 9-го, 13-го и блоков с 17-го по 19-й в V2 и замены 15-го блока. В этом случае 5 блоков удаляются и 8 блоков добавляются, так что последние 3 блока сдвигаются. Так как последние 3 блока сдвигаются в область промежутка, следующий компонент в V2 может быть сравнен с соответствующим компонентом в V1 без затрагивания операций сдвига.
Со ссылкой на фиг.8, бинарные данные с возможностью беспроводной передачи микропрограммного обеспечения (FOTA) предоставлены с областями промежутка, так что компоненты защищены друг от друга. Программа имеет структуру, как на фиг.8. Т.е. V1 имеет множество компонентов (на фиг.8-5 компонентов), и каждый компонент имеет область промежутка. Когда V2 вводится в качестве обновленной программы V1 с дополнительными блоками данных, процессор 10 пакетов обновлений выполняет операции сдвига с помощью области промежутка. Т.е. процессор 10 пакетов обновлений выполняет процесс обновления в единицах компонентов, так что пакет обновлений может быть сформирован по компонентам.
Как описано выше, пакет обновлений формируется с архивными данными, данными соответствия и данными обновления. В этом случае данные соответствия включают в себя атрибуты (копирование, модификация и сдвиг) блоков с индексами блоков, и данные обновления представляют модифицированные блоки. Также пакет обновлений может быть сформирован с данными соответствия и архивными данными, но без данных обновления. В этом случае данные соответствия могут включать в себя информацию о модифицированных блоках в дополнение к атрибутам блоков и их индексам.
После того как данные соответствия сформированы вышеуказанным способом, формирователь 130 пакетов (фиг.2) формирует пакет обновлений посредством анализа данных блоков второй версии, выводимых посредством первого уплотнителя 160, и данных соответствия, выводимых посредством формирователя 150 данных соответствия. В это время формирователь 130 пакетов определяет то, следует ли сформировать данные обновления, на основе данных соответствия, выводимых посредством формирователя данных соответствия. Т.е. формирователь 130 пакетов не формирует данные обновления, когда данные соответствия содержат командные строки C и S. Также в случае если данные соответствия содержат командную строку M и данные соответствия включают в себя данные соответствующего блока или индексы блоков в первой версии, формирователь пакетов не формирует данные обновления. Наоборот, если данные обновления имеют командную строку M, включающую в себя индексы модифицированных блоков или энтропийно кодированные данные, формирователь 130 пакетов устанавливает блоки второй версии в качестве данных обновления. Т.е. формирователь 130 пакетов не формирует для блоков, следующих командам C и S, а формирует для блоков, перечисленных в командной строке M, флаг которых задан как F=2.
Пакет обновлений передается в сервер 20 пакетов обновлений после сжатия посредством второго уплотнителя 140. Когда первая и вторая версии сжимаются в первом уплотнителе 160, первый распаковщик 165 распаковывает сжатую первую и вторую версию для проверки сжатий первой и второй версии. Если ошибка обнаружена в ходе процесса проверки, первая и вторая версии могут быть повторно сжаты. Когда пакет обновлений сжат, второй распаковщик 145 распаковывает сжатый пакет обновлений, чтобы проверить обычное сжатие.
Первый уплотнитель 160 может быть опущен. В этом случае первый и второй формирователи 50 и 55 программ вводят данные первой и второй версий уплотнителя 110 в единицах блоков так, что уплотнитель 110 сравнивает первую и вторую версии в единицах блоков. Когда данные первой и второй версии обработаны в сжатом состоянии, второй уплотнитель 140 может быть опущен для уменьшения задержки обработки. В данном варианте осуществления используется первый и второй уплотнители 160 и 140.
Кроме того, процессор 10 пакетов обновлений может быть выполнен с возможностью создавать пакет обновлений без данных соответствия, причем данные соответствия формируются в устройствах-получателях. Кроме того, формирователь 130 пакетов может формировать данные обновления вместе с командами и индексами блоков, следующими за командами, связанными с блоками первой версии. Соответственно, формирователь 150 данных соответствия может быть опущен в формирователе 180 данных установки.
Со ссылкой на фиг.3, формирователь 180 данных установки реализован без формирователя 150 данных соответствия в отличие от фиг.2. В этом случае формирователь 130 пакетов формирует данные обновления, включающие в себя индексы блоков первой версии, назначенные соответствующим индексам блоков второй версии, и информацию данных блоков.
Фиг.9 показывает пример формирования пакета обновлений с помощью архивных данных и данных обновления. В этом случае формирователь пакетов обновлений не оснащен формирователем данных соответствия и пакет формирует данные обновления, как показано на фиг.9. Данные обновления предпочтительно состоят из индексов блоков в V2 и информации по блокам.
Со ссылкой на фиг.9, V2 запрограммирована посредством добавления новых 6-го и 7-го блоков между 5-м и 6-м блоками в V1, добавления новых блоков с 13-го по 17-й между 14-м и 15-м блоками в V1 и удалением блоков с 9-го по 12-й в V1. В этом случае процессор 10 пакетов обновлений объединяет индексы блоков и информацию о данных блоков в пакет обновлений. Данные обновления имеют структуру, подобную структуре данных соответствия. Т.е. данные обновления включают в себя командные строки, начинающиеся с одной из команд C (копирование), M (модификация, вставка или замена таким же по размеру) и S (сдвиг), и структурированы в следующие строковые форматы.
Формат строки команды копирования
[cmd][# начального блока][число блоков]
Формат строки команды модификации
[cmd][# начального блока][число блоков][данные]
Формат строки команды сдвига
[cmd][# начального блока][число блоков][позиция предыдущей версии]
Строка команды копирования включает в себя индекс начального блока и число блоков, которые должны быть скопированы; строка команды модификации включает в себя индекс начального блока и информацию сцепления блоков; и строка команды сдвига включает в себя индекс начального блока и индекс соответствующего блока в V1.
В примере на фиг.9 информация обновления для указания блоков, которые должны быть скопированы в 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". Когда пакет обновлений формируется, как показано на фиг.3, устройство-получатель принимает пакет обновлений, копирует блоки с 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:11,2,13
M:13,5,A,B,C,D,E
S:18,7,15
Процессор 10 пакетов обновлений формирует пакет обновлений посредством соединения данных обновления и архивных данных и передает пакет обновлений на сервер 20 пакетов обновлений. В это время пакет обновлений, сформированный процессором 10 пакетов обновлений, сжимается перед сервером 20 пакетов обновлений. Посредством формирования пакета обновлений с помощью данных обновлений без данных сопоставления скорость формирования пакетов обновлений может быть повышена. Пакет обновлений может быть сформирован без процесса сжатия.
Как описано выше, процессор 10 пакетов обновлений сравнивает данные второй версии с соответствующими данными первой версии и формирует пакет обновлений с или без данных установки в зависимости от результата сравнения. Если вторая версия запрограммирована так, что некоторые блоки данных удалены из или добавлены к первой версии, оригинальные блоки данных сдвигаются. В случае, когда некоторые блоки удалены, блоки, следующие за удаленными блоками, сдвигаются влево. Наоборот, если некоторые блоки добавляются, блоки, занимающие позиции, в которые добавляются новые блоки, сдвигаются вправо. Когда вторая версия включает в себя модифицированные блоки, процессор 10 пакетов обновлений отыскивает блоки, идентичные модифицированным блокам, в диапазоне поиска первой версии и совпадения индексов блоков искомых блоков в V1 с индексами блоков модифицированных блоков в V2 или выполняет энтропийное кодирование на основе сходства некоторых последовательностей блоков в зависимости от результата поиска. Блоки в V1, замененные модифицированными блоками, сдвигаются вправо в V2 на число модифицированных блоков. Процессор 10 пакетов обновлений создает данные соответствия, имеющие поле команды, установленное в C (копирование), M (модификация) и S (сдвиг), на основе результата сравнения и формирует пакет обновлений, составленный из данных соответствия, архивных данных и данных обновления. Данные соответствия могут быть объединены в данные обновления. Пакет обновлений передается на сервер 20 пакетов обновлений через канал проводной или беспроводной связи. Фиг.10 - это схема, иллюстрирующая формат данных пакета обновлений, сформированного процессором пакетов обновлений по фиг.2, а фиг.11 - это схема, иллюстрирующая формат данных пакета обновлений, сформированного посредством процессора пакетов обновлений по фиг.3.
Процессор 10 пакетов обновлений передает пакет обновлений на сервер 20 пакетов обновлений через беспроводной или проводной канал. Если пакет обновлений принимается от процессора 10 пакетов обновлений, сервер 20 пакетов обновлений уведомляет устройства-получатели 30 о выходе нового пакета обновлений с тем, чтобы получатели 20 могли загрузить пакет обновлений с сервера 20 пакетов обновлений. Чтобы уведомить о выходе нового пакета, сервер 25 уведомлений может быть отдельно предусмотрен.
Если сообщение уведомления об обновлении принимается от сервера 20 пакетов обновлений, устройство-получатель 30 инициирует загрузку пакета обновлений посредством ответа на сообщение уведомления об обновлении. Фиг.12 является блок-схемой, иллюстрирующей конфигурацию устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения.
Со ссылкой на фиг.12, устройство-получатель 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, и пакета обновлений и анализа результата сравнения для назначения данных обновления, содержащихся в пакете обновлений, данным первой версии. Данные обновления могут быть структурированы так, как показано на фиг.9. Причина, по которой данные соответствия формируются посредством установщика 230, заключается в том, чтобы повысить скорость формирования второй версии в трансляторе 240. Когда данные обновления содержат информацию соответствия для назначения данных обновления данным первой версии, данные обновления могут быть заменены непосредственно или со ссылкой на данные соответствия, сформированные впоследствии.
Хотя предпочтительно обновить первую версию с помощью самого последнего пакета обновлений, первая версия может быть обновлена с помощью пакета обновлений для другой версии программы. Это возможно, поскольку устройство-получатель 30 предоставляет возможность сохранения шести пакетов обновлений. Соответственно, если формирование второй версии заканчивается неудачей с пакетом обновлений, можно попытаться сформировать вторую версию с помощью другого пакета обновлений, сохраненного в первом запоминающем устройстве 250.
Первое запоминающее устройство 250 может быть реализовано с несколькими областями хранения для хранения пакетов обновлений соответственно (в этом варианте могут быть сохранены 6 пакетов обновлений). Соответственно, даже если новый пакет обновлений загружается для сервера 20 пакетов обновлений, ранее загруженный пакет обновлений не удаляется. Записи обновлений сохраняются в архиве обновлений при введении данных для первой версии программы. Так как информация о первой и второй версиях ведется в архиве обновлений, обновление может быть выполнено с высокой отказоустойчивостью. Например, когда последний пакет обновлений не сработал, другой пакет обновлений может быть использован посредством пользовательского выбора. Даже в наихудшем случае, когда все пакеты обновлений не работают, может быть восстановлена исходная версия программы.
Фиг.13 является блок-схемой, иллюстрирующей конфигурацию первого запоминающего устройства устройства-получателя на фиг.12. Со ссылкой на фиг.13, первое запоминающее устройство включает в себя первую область 310 хранения, вторую область 320 хранения и третью область 330 хранения.
Первая область 310 хранения хранит первую версию программы в форме исходных данных или сжатых данных. Вторая область 320 хранения хранит, по меньшей мере, один пакет обновлений для формирования новой версии программы. Каждый пакет обновлений включает в себя данные обновления и данные установки. Данные обновления могут включать в себя команды с индексами блоков для обновления данных старой версии или данных, которые должны быть добавлены для новой версии. Соответственно, размер второй области 320 хранения определяется на основе числа пакетов обновлений, сохраненных в ней. Третья область 330 хранения является пользовательским пространством для хранения пользовательских данных с файловой системой.
Фиг.13 является схемой, иллюстрирующей структуру второй области 320 хранения первого запоминающего устройства 250 на фиг.12, а фиг.15 является схемой, иллюстрирующей формат архивных данных каждого пакета обновлений, сохраненного во второй области 320 хранения на фиг.13.
Со ссылкой на фиг.13, вторая область 320 хранения предоставлена с предварительно определенным числом областей хранения для хранения пакетов обновлений (в этом варианте осуществления 6 пакетов обновлений). Каждая область хранения структурирована, чтобы хранить архивные данные, данные соответствия и данные обновления, составляющие пакет обновлений. В типичном варианте, пакет обновлений включает в себя данные установки и данные обновления, а данные установки включают в себя архивные данные или архивные данные и данные соответствия. Вторая область 320 хранения предпочтительно выполнена с возможностью отдельно хранить архивные данные и данные соответствия. Архивные данные сохранены для сохранения ссылки на первую версию, сохраненную в первой области 310 хранения. Данные соответствия и данные обновления первой версии могут быть не сохранены или могут существовать как отсутствие данных. Фиг.14 показывает пример пакета обновлений, составленного из архивных данных, данных соответствия и данных обновления. В случае, когда процессор 10 пакетов обновлений формирует пакет обновлений с архивными данными и данными соответствия, вторая область 320 хранения предпочтительно структурирована с областями хранения для хранения архивных данных и данных соответствия соответствующей версии.
Со ссылкой на фиг.15, архивные данные включают в себя поле версии, поле размера, поле объединенного флага и поле флага неудачи. Здесь поле версии содержит номер версии пакета обновлений (одно из #2 по #7 на фиг.14), поле размера содержит значение размера архивных данных, поле объединенного флага содержит номер версии целевой версии, которая должна быть обновлена (в этом примере номер версии #1 первой версии), и поле флага неудачи содержит информацию по случаю неудачи загрузки. Номер версии #1 первой версии предпочтительно содержится в поле версии и связан с полем объединенного флага. Например, если поле версии и поле объединенного флага архивных данных пакета обновлений соответственно содержат #5 и #1, устройство-получатель 30 обновляет первую версию в #1 посредством объединения второй версии в #5 и первой версии в #1. Загруженный пакет обновлений сохраняется во вторую область 320 хранения первого запоминающего устройства 310, показанного, как показано на фиг.13, в структуре фиг.14. Когда пакет обновлений, сохраненный во второй области 320 хранения, запрашивается, запрошенный пакет объединяется с первой версией, сохраненной в первой области 310 хранения, так что первая версия обновляется до второй версии.
Операция обновления системы обновления программ, которая описана в данном документе, включает в себя пакет обновлений, включает в себя данные соответствия, архивные данные и данные обновления.
Фиг.16 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно примерному варианту осуществления настоящего изобретения. Как показано на фиг.16, первое запоминающее устройство является энергонезависимой памятью, такой как флэш-память, а второе запоминающее устройство является энергозависимой памятью, такой как оперативное запоминающее устройство (RAM).
Со ссылкой на фиг.16, если введен запрос обновления, загрузчик (не показан) загружает пакет обновлений запрошенной версии из второй области 320 хранения первого (флэш) запоминающего устройства 250 и транслятор 240 формирует вторую версию программы посредством объединения загруженного пакета обновлений и первой версии программы, сохраненной в первой области 310 хранения, и затем загружает вторую версию во второе запоминающее устройство 260. Запрос обновления формируется в ответ на пользовательскую команду. Т.е. устройство-получатель 30 выводит предупреждение для уведомления пользователя о выходе пакета обновлений, когда пакет обновлений загружается, или существует загруженный пакет, который не применяется, так что пользователь может запустить обновление целевой программы. Если запрос обновления вводится пользователем в ответ на предупреждение об обновлении, устройство-получатель 30 выполняет процесс обновления, как описано выше, и загружает обновленную версию программы во второе запоминающее устройство 260. Соответственно, устройство-получатель 30 работает впоследствии со второй версией.
Процесс обновления предпочтительно выполняется после того, как устройство-получатель инициализируется. Как показано на фиг.12, первая версия и пакеты обновлений программы отдельно хранятся в первом запоминающем устройстве 250, и обновление программы выполняется посредством объединения первой версии и одного из пакетов обновлений, так что вторая версия программы формируется и загружается во второе запоминающее устройство 260.
Фиг.17 является блок-схемой, иллюстрирующей операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения. В этом варианте осуществления первое запоминающее устройство не хранит пакет обновлений для второй версии. Фиг.18 и 19 являются блок-схемами, иллюстрирующими операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения.
Со ссылкой на фиг.17, первое запоминающее устройство 250 хранит первую версию программы.
Здесь первая версия может быть начальной версией программы. Первая версия программы составлена из n блоков с B#1 по B#n. Данные установки первой версии включают в себя архивные данные и данные соответствия. Архивные данные имеют поле версии, установленное в #1, и поле объединенного флага, установленное в #0. Данные соответствия предпочтительно структурированы в форме одной из табл.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. Когда пакет обновлений сжат посредством второго уплотнителя 140, транслятор 240 выполняет трансляцию после того, как сжатый пакет обновлений распакован.
Фиг.18 и 19 являются блок-схемами, иллюстрирующими операцию обновления системы обновления программы согласно другому примерному варианту осуществления настоящего изобретения. В данном варианте осуществления первая версия сохраняется в первой области 310 хранения первого запоминающего устройства 250, и пакеты обновлений второй версии сохраняются во второй области 320 хранения первого запоминающего устройства 250. Первая версия может быть первоначальной версией или заранее заданной контрольной версией, и каждый пакет обновлений включает в себя данные обновления и данные установки. Данные установки включают в себя архивные данные, содержащие номера версий второй версии и целевой версии, которая должна быть обновлена (в примере первая версия), и данные соответствия. Первая версия составлена из n блоков с B#1 по B#n, как на фиг.18 и 19. Поле объединенного флага архивных данных установлено в #0, и данные соответствия предпочтительно структурируются в форме одной из табл.1-3.
Со ссылкой на фиг.18, первая область 310 хранения (фиг.13) первого запоминающего устройства 250 сохраняет первую версию программы, и конкретный пакет обновлений, сохраненный во второй области 320 хранения первого запоминающего устройства 250, имеет данные соответствия в форме табл.1. Архивные данные пакета обновлений имеют флаг для объединения пакета обновлений с первой версией. В этом случае транслятор 240 обновляет первую версию до второй версии со ссылкой на данные соответствия и загружает вторую версию во второе запоминающее устройство 260. Данные соответствия имеют информацию для копирования блоков с 0-го по 15-й первой версии; копирования блоков 12-го, 13-го, 8-го и 9-го первой версии для блоков с 156-го по 19-й второй версии; и сдвига вправо блоков после 15-го блока первой версии. Соответственно, транслятор 240 обновляет первую версию со ссылкой на данные соответствия и загружает обновленную программу, т.е. вторую версию, во второе запоминающее устройство 260, как показано на фиг.18.
Со ссылкой на фиг.19, первая область 310 хранения первого запоминающего устройства 250 сохраняет первую версию программы, а вторая область 320 хранения первого запоминающего устройства 250 сохраняет пакеты обновлений, при этом конкретный пакет обновлений имеет данные соответствия в форме табл.3. Архивные данные пакета обновлений имеют флаг для информирования об объединении первой версии и пакета обновлений. Данные соответствия имеют информацию для копирования блоков с 0-го по 15-й первой версии; вставки данных обновления {Z, W, P, X} для блоков с 16-го по 19-й второй версии; и сдвига вправо блоков, следующих за 15-м блоком первой версии. Таким образом, транслятор 240 обновляет первую версию со ссылкой на данные соответствия.
После того как программа обновлена, устройство-получатель 30 управляется второй версией программы, которая обновляется в соответствии с примерами на фиг.18 и 19. Первая версия и пакеты обновлений могут быть сохранены в сжатом состоянии. Пакеты обновлений предпочтительно загружаются как сжатый пакет или сжимаются после загрузки. Когда первая версия и пакеты обновлений сохранены в сжатых состояниях, транслятор 240 распаковывает сжатые первую версию и пакеты обновлений с помощью распаковщика 270 для использования в процессе обновления. Когда первая и вторая версии сравниваются в сжатых состояниях (когда первая и вторая версии сжаты первым уплотнителем 160 процессора 10 пакетов обновлений), блоки, введенные в транслятор 240, могут быть в сжатых состояниях. В этом случае транслятор 240 распаковывает сжатые данные первой версии и пакет обновлений с помощью распаковщика 270 и загружает распакованные данные во второе запоминающее устройство 260.
Фиг.20 является блок-схемой, иллюстрирующей операцию обновления устройства-получателя системы обновления программы согласно примерному варианту осуществления настоящего изобретения. Со ссылкой на фиг.20, первое запоминающее устройство 250 хранит первую версию программы и пакеты обновлений для второй версии. Транслятор 240 объединяет пакет обновлений и первую версию в ответ на команду обновления, так что вторая версия формируется и загружается во второе запоминающее устройство 260. После того как вторая версия программы загружена во второе запоминающее устройство 260, устройство-получатель 30 работает со второй версией программы. Процесс обновления предпочтительно выполняется повторно, когда устройство-получатель 30 инициализируется или вводится команда обновления.
Как описано выше, способ обновления программы согласно варианту осуществления настоящего изобретения загружает пакет обновлений по предварительно определенному стандартному каналу связи, сохраняет загруженный пакет обновлений, выполняет обновление программы с помощью сохраненного пакета обновлений, загружает обновленную программу и управляет устройством-получателем под управлением обновленной программы. Способ обновления программы настоящего изобретения может состоять из процедуры формирования пакета обновлений, процедуры обработки загруженных данных установки, процедуры управления загруженным пакетом обновлений и процедуры выполнения обновления.
В процедуре формирования пакета обновлений первая и вторая версии программы вводятся в процессор 10 пакетов обновлений. Первая и вторая версии могут быть введены в исходном или в сжатом состоянии. Далее, первая и вторая версии сравниваются так, что определяются различия между двумя версиями. На основе различий формируются данные установки, включающие в себя данные соответствия для объединения пакета обновлений с первой версией, установленной в устройстве получателя. Данные установки упаковываются в пакет обновлений вместе с данными обновления, и пакет обновлений передается серверу пакетов обновлений.
В процедуре обработки загруженных данных установки пакет обновлений, переданный серверу пакетов обновлений, загружается в устройство получателя. Устройство-получатель может получить данные установки, содержащиеся в пакете обновлений, сравнивая пакет обновлений с контрольной версией (здесь, первой версией), и данные установки упрощают вычисление адреса. Т.е. при объединении первой версии, сохраненной в первом запоминающем устройстве 250, и пакета обновлений во второе запоминающее устройство 260 данные первой версии и пакет обновлений могут быть быстро обработаны на блочной основе с помощью данных установки.
В процедуре управления пакетом обновлений данные установки используются для быстрого вычисления адреса со ссылкой на данные соответствия, которые получаются посредством сравнения пакета обновлений и первой версии, и упрощения объединения первой версии и пакета обновлений во втором запоминающем устройстве 260. Установка пакетов обновлений предпочтительно выполняется в зависимости от того, упакованы ли данные соответствия в пакет обновлений. Когда данные соответствия упакованы в пакет обновлений, устройство-получатель 30 извлекает архивные данные, данные соответствия и данные обновления из пакета обновлений и независимо сохраняет извлеченные данные в областях пакета обновлений первого запоминающего устройства 250. С другой стороны, если данные соответствия не содержатся в пакете обновлений, устройство-получатель 30 может получить данные соответствия посредством сравнения первой версии, сохраненной в первом запоминающем устройстве 250, и загруженного пакета обновлений. В это время данные соответствия могут быть интегрированы в данные обновления, как показано на фиг.3. В этом случае устройство-получатель извлекает данные соответствия из данных обновления в ходе процесса установки и устанавливает данные соответствия в области данных соответствия. Устройство-получатель также извлекает данные обновления и устанавливает область хранения пакетов обновлений. Соответственно, устройство-получатель может установить пакет обновлений тем же образом, что и когда данные соответствия упакованы в пакет обновлений. Данные установки также включают в себя архивные данные пакета обновлений. Архивные данные сообщают версии пакетов обновлений и целевую программу. В этом варианте осуществления 6 пакетов обновлений могут быть сохранены в первом запоминающем устройстве 250. Когда происходит ошибка объединения с конкретным пакетом обновлений, устройство-получатель позволяет пользователю выбрать другой пакет обновлений через отображение списка пакетов обновлений.
В процедуре выполнения обновления пакеты обновлений хранятся в соответствующих областях хранения, подготовленных в первом запоминающем устройстве 250. Соответственно, когда новый пакет обновлений загружается, ранее загруженный пакет обновлений не стирается. Следовательно, когда конкретный пакет обновлений не загружается, устройство-получатель 30 позволяет пользователю выбрать другой пакет обновлений для обновления программы через отображение списка пакетов обновлений. Даже в наихудшем случае, когда все пакеты обновлений не загружаются, первая версия программы может быть загружена.
Фиг.21 является блок-схемой, иллюстрирующей способ обновления программы согласно примерному варианту осуществления настоящего изобретения. Этапы способа обновления программы изображены относительно операций процессора 10 пакетов обновлений и устройства-получателя 30 системы обновлений программы на фиг.1.
Со ссылкой на фиг.21, процессор 10 пакетов обновлений принимает первую и вторую версии программы на этапе 411. Пакет обновлений формируется, когда новая версия программы введена посредством сравнения старой версии, т.е. первой версии, и новой версии, т.е. второй версии. Пакет обновлений включает в себя данные обновления и данные установки. Первая версия может быть оригинальной версией или контрольной версией, которая запрограммирована, чтобы объединяться с обновленными пакетами. Пакет обновлений является информационным пакетом для обновления первой версии программы, установленной в устройстве-получателе, до второй версии. Устройство-получатель может хранить, по меньшей мере, один пакет обновлений. Если первая и вторая версии программы приняты, процессор 10 пакетов обновлений анализирует различия между первой и второй версиями на этапе 413 и формирует пакет обновлений на основе результата анализа на этапе 415. Пакет обновлений включает в себя данные обновлений и данные установки, содержащие информацию для объединения данных обновления с первой версией. Данные установки включают в себя архивные данные, предоставляющие архив второй версии, и данные соответствия, предоставляющие информацию для установления соответствия блоков первой и второй версий программы. Данные соответствия могут не содержаться в данных установки. В этом случае устройство-получатель может формировать данные соответствия в процессе обновления программы. Данные установки предусмотрены для упрощения процесса обновления программы. Если пакет обновлений успешно сформирован, процессор 10 пакетов обновлений передает пакет обновлений в сервер 20 пакетов обновлений. После приема пакета обновлений сервер 20 пакетов обновлений передает сообщение уведомления об обновлении в устройство-получатель 30. Если сообщение уведомления об обновлении принято, устройство-получатель 20 начинает загрузку пакета обновлений в ответ на пользовательскую команду. Процедура загрузки может быть определена на основе стандарта связи, поддерживаемого устройством-получателем 30. Стандарты связи включают в себя CDMA, UMTS, GSM, WiBro, Wi-Fi, WiMAX, Bluetooth, UWB, Zigbee и USB.
Если загрузка пакета обновлений начата, устройство-получатель 30 принимает пакет обновлений на этапе 451 и сохраняет загруженный пакет обновлений в первое запоминающее устройство 250. Первое запоминающее устройство 250 снабжено первой областью 310 хранения для хранения первой версии программы и второй областью 320 хранения для хранения пакетов обновлений. Вторая область 320 хранения может быть структурирована в форме множественных областей хранения для хранения соответствующих пакетов обновлений. В этом варианте осуществления вторая область 320 хранения имеет 6 областей хранения. Каждая область хранения может отдельно хранить архивные данные, данные соответствия и данные обновления.
В случае, когда данные соответствия не содержатся в данных установки загруженного пакета обновлений, установщик 230 устройства-получателя 30 формирует данные соответствия со ссылкой на пакет обновлений и первую версию программы. После того как пакет обновлений сохраняется в первом запоминающем устройстве 250, устройство-получатель 30 обновляет, в ответ на команду пользователя, программу до второй версии посредством объединения пакета обновлений и первой версии и затем загружает вторую версию программы во второе запоминающее устройство 260 на этапе S455. Соответственно, устройство-получатель 250 далее работает под управлением второй версии программы. Второе запоминающее устройство 260 может быть рабочей памятью в качестве энергозависимой памяти. Таким образом, устройство-получатель 30 формирует вторую версию программы посредством объединения первой версии, хранимой в первом запоминающем устройстве 250, и последнего загруженного пакета обновлений в процессе инициализации системы и загружает вторую версию во второе запоминающее устройство 260 для управления операциями устройства-получателя 30. Когда обновление программы завершается ошибкой для конкретного пакета обновлений, устройство-получатель 30 автоматически пытается обновить программу с помощью другого пакета обновлений, сохраненного в первом запоминающем устройстве 250. Так же устройство-получатель 3 позволяет пользователю выбирать пакет обновлений посредством предоставления списка пакетов обновлений, так что первая версия обновляется с помощью выбранного пакета обновлений.
Процесс обновления программы далее описан подробнее со ссылкой на фиг.22, на котором устройство-получатель 30 установило первую версию программы в первой области 310 запоминающего устройства 250 на этапе 501. Первая версия устанавливается на этапе производства и может быть заменена контрольной версией, загруженной и установленной после производства. Если сообщено о выпуске пакета обновлений, устройство-получатель 30 начинает загрузку пакета обновлений от сервера 20 пакетов обновлений и временно сохраняет пакет обновлений на этапе 503-507. Типично, пакет обновлений устанавливается в запоминающем устройстве с тем, чтобы к нему можно было стабильно осуществлять доступ. Соответственно, пакет обновлений устанавливается в первом запоминающем устройстве 250. Пакет обновлений может быть установлен сразу после загрузки или после завершения обычной работы. Если команда установки не обнаружена после того, как пакет обновлений полностью загружен на этапе 509, устройство-получатель 30 возвращается в обычный режим работы. Если команда установки обнаружена при работе в обычном режиме работы, устройство-получатель начинает установку пакета обновлений, сохраненного в первом запоминающем устройстве 250.
Если команда установки обнаружена на этапе 509, устройство-получатель 30 начинает установку пакета обновлений в первом запоминающем устройстве 250. Первое запоминающее устройство - это энергонезависимое запоминающее устройство, и оно включает в себя первую область для хранения первой версии как контрольной версии и множества вторых областей для хранения множества пакетов обновлений. Т.е. первое запоминающее устройство 250 снабжено первой и второй областями для хранения первой версии и пакетов обновлений второй версии, как показано на фиг.7, 14 и 15. Соответственно, устройство-получатель 30 устанавливает загруженный пакет обновлений в первой области, выделенной для пакета обновлений. Пакет обновлений сохраняется независимо от ранее загруженных пакетов обновлений во временном порядке времен загрузки в ассоциативной связи с архивом обновлений.
После того как пакет обновлений установлен в первом запоминающем устройстве 250, устройство-получатель показывает предупреждение и определяет то, введена ли команда перезагрузки системы, на этапе 515. Если команда перезагрузки системы не обнаружена, устройство-получатель 30 возвращается к обычному режиму работы на этапе 517. В этом случае, поскольку обновление системы еще не выполнено, устройство-получатель 30 работает с первой версией программы.
Если команда перезагрузки системы обнаружена, устройство-получатель 30 выполняет инициализацию системы на этапе 521 и затем загружает транслятор 240 на этапе 523. Транслятор 240 объединяет пакет обновлений, установленный в первое запоминающее устройство 250, с первой версией с тем, чтобы сформировать и загрузить обновленную версию программы во второе запоминающее устройство 260. После загрузки транслятора 240 устройство-получатель 30 проверяет состояние пакета обновлений, чтобы определить то, является ли пакет обновлений ошибочным, на этапе 525. Если пакет обновлений является ошибочным, устройство-получатель 30 загружает версию (вторую версию) до обновления или первую версию во второе запоминающее устройство для стабильной работы на этапе 533. Если определено, что состояние пакета обновлений обычное, на этапе 525, устройство-получатель 30 загружает пакет обновлений (этап 527) и объединяет пакет обновлений с первой версией на этапе 529, посредством чего вторая версия формируется на этапе 531. Вторая версия программы загружается во второе запоминающее устройство 260, чтобы управлять устройством-получателем 30.
Устройство-получатель 30 выполняет установку и трансляцию загруженных пакетов вышеописанным способом.
Фиг.23 является блок-схемой последовательности операций, иллюстрирующей процедуру установки пакета обновлений в способе обновления программы по фиг.22, а фиг.24 является процедурой обновлений версии способа обновления программы по фиг.22.
Со ссылкой на фиг.23, устройство-получатель 30 приводит в исполнение загрузчик для загрузки пакета обновлений на этапе 601 и загружает пакет обновлений из сервера 20 пакетов обновлений на этапе 603. Процедура загрузки может выполняться другим способом согласно линии связи устройства-получателя 30 и сервера 20 пакетов обновлений. Т.е. устройство-получатель 30 может быть подключено к серверу 20 пакетов обновлений через канал, установленный на основе стандарта связи, такого как CDMA, UMTS, GSM, GPRS, WiBro, Wi-Fi, WiMAX, Bluetooth, UWB, Zigbee и USB.
Устройство-получатель отслеживает линию связи, чтобы обнаружить то, выполнена ли успешно загрузка, на этапе 605. Если ошибка обнаружена в ходе сеанса загрузки, устройство-получатель 30 выполняет процесс обработки ошибок 607 и повторяет загрузку на этапе 609.
Если определено, что ошибка не возникла в ходе сеанса загрузки, устройство-получатель 30 загружает установщик для установки пакета обновлений в первом запоминающем устройстве 250 на этапе 611. Далее устройство-получатель 30 извлекает архивные данные из пакета обновлений (этап 615) и затем сохраняет пакет обновлений в области хранения пакетов обновлений первого запоминающего устройства 250 в форме архивной таблицы на этапе 617.
После этого устройство-получатель 30 определяет то, содержит ли пакет обновлений данные соответствия, на этапе 619. Если пакет обновлений содержит данные соответствия, устройство-получатель 30 извлекает данные соответствия из пакета обновлений на этапе 637 и устанавливает данные соответствия в области хранения пакетов обновлений первого запоминающего устройства 250 на этапе 639. Затем устройство-получатель 30 сохраняет данные обновления в соответствующей части области хранения пакетов обновлений первого запоминающего устройства на этапе 641. В результате устройство-получатель 30 устанавливает архивные данные, данные соответствия и данные обновления в соответствующих частях области хранения пакетов обновлений, предназначенной для пакета обновлений, на этапе 635.
Наоборот, если пакет обновлений не содержит данных соответствия на этапе 619, устройство-получатель 30 приводит в исполнение распаковщик на этапе 621, так что распаковщик выполняет распаковку пакета обновлений, чтобы извлекать данные обновлений, на этапе 623. Далее устройство-получатель 30 синтаксически анализирует и сохраняет данные обновления в первом запоминающем устройстве 250 на этапе 625. После этого устройство-получатель 30 сравнивает данные обновления с данными первой версии программы и получает различие между данными обновления и данными первой версии на этапе 627. Затем устройство-получатель 30 формирует данные соответствия на основе различий между данными обновления и первой версией на этапе 629 и устанавливает данные соответствия и данные обновления в соответствующих частях области хранения пакетов обновления первого запоминающего устройства 250 на этапах 631 и 633.
Если данные обновления включают в себя данные соответствия, устройство-получатель 30 обнаруживает данные соответствия на этапе 625. В этом случае процесс формирования данных соответствия может быть опущен. Данные соответствия могут быть составлены в формате, показанном на фиг.3. Как показано на фиг.3, данные обновления составлены из командных строк, имеющих команду и индексы блоков, которые должны обработать в соответствии с командой. Поскольку данные обновления включают в себя данные соответствия, процесс формирования данных соответствия может быть опущен. В этом случае этапы 627-633 пропускаются.
Как описано выше, устройство-получатель 30 загружает пакет обновлений в ответ на сообщение уведомления об обновлении, извлекает архивные данные, данные соответствия и данные обновления и устанавливает извлеченные архивные данные, данные соответствия и данные обновления в соответствующих частях первого запоминающего устройства 250. Данные соответствия могут быть включены или не быть включены в пакет обновлений. Если данные соответствия не включены в пакет обновлений, устройство-получатель 30 сохраняет данные соответствия в первом запоминающем устройстве 250, формирует данные соответствия посредством сравнения данных обновлений с первой версией в качестве контрольной версии и устанавливает данные соответствия в первом запоминающем устройстве. Если данные соответствия включены в пакет обновлений, процесс формирования данных соответствия может быть пропущен.
Фиг.24 является процедурой обновлений версии способа обновления программы по фиг.22. Со ссылкой на фиг.24, после того как архивные данные, данные соответствия и данные обновления установлены в первом запоминающем устройстве, устройство-получатель 30 обнаруживает событие включения питания или команду запроса обновления на этапе 651. Устройство-получатель 30 объединяет последний загруженный пакет обновлений с первой версией программы, сохраненной в первом запоминающем устройстве 250 после инициализации устройства-получателя, так что вторая версия программы формируется и загружается во второе запоминающее устройство 260 для управления устройством-получателем 30. Программой, загруженной во второе запоминающее устройство 260, может быть системное микропрограммное обеспечение, исполняемый код и программное обеспечение, и их эквиваленты могут быть сохранены в энергонезависимой памяти.
Если событие включения питания возникает, устройство-получатель 30 выполняет системную инициализацию и затем приводит в исполнение загрузчик для загрузки первой версии программы и пакета обновлений на этапах 651-655. Затем устройство-получатель 30 проверяет области хранения пакетов обновлений первого запоминающего устройства 250, чтобы определить то, сохранен ли, по меньшей мере, один пакет обновлений в первом запоминающем устройстве 250, на этапе 657. Если пакет обновлений не сохранен, устройство-получатель 30 приводит в исполнение транслятор 240 для загрузки первой версии программы (этап 659) и выполняет проверку безопасности первой программы на этапе 661. Далее устройство-получатель 30 проверяет то, сжата ли первая версия, сохраненная в первом запоминающем устройстве 250, на этапе 663. Если первая версия сжата, устройство-получатель 30 запускает распаковщик (распаковщик_1) и затем загружает распакованную версию во второе запоминающее устройство на этапе 667. Как результат, первая версия программы запускается во втором запоминающем устройстве на этапе 669. Если определено, что первая версия не сжата, на этапе 663, этап 665 пропускается, так что первая версия загружается (этап 667) и запускается во втором запоминающем устройстве 260 на этапе 669.
Возвращаясь к этапу 657, если, по меньшей мере, один пакет обновлений сохранен в первом запоминающем устройстве 250, устройство-получатель приводит в исполнение транслятор 240 на этапе 671, и тем самым транслятор 240 загружает самый последний пакет обновлений во второе запоминающее устройство 260 на этапе 673. Пакет обновлений, установленный в первом запоминающем устройстве, включает в себя, по меньшей мере, два из архивных данных, данных соответствия и данных обновления. Далее устройство-получатель 30 запускает распаковщик (распаковщик_2), и тем самым распаковщик выполняет распаковку пакета обновлений (или только данных обновления) на этапе 675. Далее устройство-получатель 30 выполняет проверку безопасности распакованного пакета обновлений на этапе 677 и определяет то, является ли первая версия, сохраненная в первом запоминающем устройстве 250, сжатой на этапе 679. Если первая версия является сжатой, устройство-получатель 30 запускает распаковщик (распаковщик _1), чтобы распаковать первую версию на этапе 681. Далее устройство-получатель 30 объединяет первую версию с пакетом обновлений, чтобы сформировать вторую версию, на этапе 683. Как результат, вторая версия загружается, чтобы выполниться во втором запоминающем устройстве 260 на этапе 669. На этапе 683 данные обновления назначаются первой версии со ссылкой на данные соответствия. Если определено, что первая версия программы не сжата, на этапе 679, этап 681 пропускается.
Фиг.25-31 являются блок-схемами последовательности операций, иллюстрирующими способ обновления программы согласно другому примерному варианту осуществления настоящего изобретения. В этом варианте осуществления устройство-получатель 30 загружает пакет обновлений с сервера пакетов обновлений, устанавливает пакет обновлений в энергонезависимой памяти, формирует версию обновления целевой программы посредством объединения пакета обновлений и контрольной версии целевой программы и загружает версию обновления, чтобы запуститься в энергозависимой памяти.
Фиг.25 - это блок-схема последовательности операций, иллюстрирующая процедуру загрузки и установки пакета обновлений способа обновления программы согласно примерному варианту осуществления настоящего изобретения, фиг.26 - это блок-схема последовательности операций, иллюстрирующая процедуру трансляции пакета обновлений способа обновления программы согласно примерному варианту осуществления настоящего изобретения, фиг.27 - это блок-схема последовательности операций, иллюстрирующая процедуру загрузки и установки пакета обновлений способа обновления программы согласно другому примерному варианту осуществления настоящего изобретения, фиг.28 - это блок-схема последовательности операций, иллюстрирующая процедуру загрузки и установки пакета обновлений способа обновления программы согласно примерному варианту осуществления настоящего изобретения, фиг.29 - это блок-схема последовательности операций, иллюстрирующая процедуру управления загрузкой и установкой пакета обновлений способа обновления программы согласно примерному варианту осуществления настоящего изобретения, фиг.30 - это блок-схема последовательности операций, иллюстрирующая процедуру управления загрузкой пакета обновлений способа обновления программы согласно другому примерному варианту осуществления настоящего изобретения, а фиг.31 - это блок-схема последовательности операций, иллюстрирующая процедуру загрузки и установки резервного пакета обновлений способа обновления программы согласно примерному варианту осуществления настоящего изобретения.
Со ссылкой на фиг.25-31, если сообщение уведомления об обновлении от сервера 20 пакетов обновлений на этапе 701, устройство-получатель 30 отображает сообщение оповещения об обновлении на экране дисплея (не показан на этапе 703). Если команда запроса обновления введена в ответ на сообщение оповещения об обновлении, устройство-получатель 30 передает сообщения запроса обновления в сервер 20 пакетов обновлений. После приема сообщения запроса обновления сервер 20 пакетов обновлений начинает передачу пакета обновлений. Устройство-получатель 30 загружает пакет обновлений при отображении состояния загрузки на экране дисплея на этапе 705. Пакет обновлений временно сохраняется в энергозависимом запоминающем устройстве, т.е. втором запоминающем устройстве. Если загрузка завершена, устройство-получатель 30 отображает сообщение оповещения, уведомляющее о том, что загрузка выполнена, и запрашивающее то, следует ли установить загруженную версию обновления, на этапе 707.
Поскольку загруженный пакет обновлений временно сохраняется в энергозависимом запоминающем устройстве, пакет обновлений предпочтительно устанавливается во второй области 320 хранения первого запоминающего устройства 250, т.е. в энергонезависимом запоминающем устройстве. Это обусловлено тем, что пакет обновлений может быть использован после того, как устройство-получатель 30 перезагружается.
Если команда запроса установки вводится в ответ на сообщение оповещения, устройство-получатель 30 проверяет установочные данные, содержащиеся в пакете обновлений, на этапе 711. Установочные данные включают в себя архивные данные и необязательные данные соответствия. Архивные данные снабжаются идентификаторами второй версии и контрольной версии, с которой данные обновления, содержащиеся в пакете обновления, объединяются. В данные соответствия предоставляются команды, за которыми следуют индексы блоков, которые должны быть обработаны согласно командам. Данные соответствия могут быть упакованы в пакете обновлений или нет. На этапе 711 устройство-получатель 30 проверяет версию (в данном примере, программа обновляется со старой версии Vx до новой версии Vy) программы, представленной посредством пакета обновлений, CRC и данные соответствия.
Если определено, что обновление от Vx до Vy, CRC обычная и данные соответствия существуют на этапе 713, установщик 230 устройства-получателя 30 устанавливает архивные данные пакета обновлений в части хранения архивных данных второй области 320 хранения первого запоминающего устройства 250 (этап 715), сохраняет данные соответствия пакета обновлений в части хранения данных соответствия второй области 320 хранения первого запоминающего устройства 250 на этапе 717 и сохраняет данные обновления пакета обновлений в части хранения данных обновления второй области 320 хранения первого запоминающего устройства 250 на этапе 719. Когда данные соответствия включают в себя данные обновления, установщик 230 пропускает сохранение данных обновлений на этапе 713. Т.е. если запрос на установку обнаружен, установщик 230 устройства-получателя 30 извлекает архивные данные, данные соответствия и данные обновления и устанавливает данные в соответствующих частях второй области 320 хранения первого запоминающего устройства 250.
Если определено, что программа обновляется с Vx до Vy, CRC нормальная и данные соответствия существуют, на этапе 721, устройство-получатель 30 устанавливает архивные данные пакета обновлений с соответствующей частью второй области 320 хранения первого запоминающего устройства 250, как показано на фиг.7 и 14 на этапе 723. Далее устройство-получатель 30 загружает первую версию (Vx), сохраненную в первом запоминающем устройстве 250, и формирует данные соответствия посредством соответствия данных обновления пакета обновлений до первой версии на этапе 725. Первая версия и данные обновления находятся в сжатом состоянии. В этом случае устройство-получатель 30 формирует данные соответствия посредством сравнения первой версии и данных обновления в единицах блоков. Это обусловлено тем, что данные обновления формируются на основе различий, полученных посредством сравнения первой версии (Vx) и второй версии (Vy) в единицах блоков. Соответственно, при формировании данных соответствия на этапе 823 устройство-получатель 30 сравнивает первую версию и данные обновления в единицах блоков. Далее устройство-получатель 30 устанавливает данные соответствия в области хранения данных соответствия первого запоминающего устройства 250 (этап 727) и устанавливает данные обновления в части хранения данных обновления второй области 320 хранения первого запоминающего устройства 250 на этапе 729. Т.е. если запрос на установку обнаружен, устройство-получатель 30 формирует данные соответствия и затем устанавливает архивные данные, данные соответствия и данные обновления в соответствующие части второй области 320 хранения первого запоминающего устройства 250. Если данные обновления включают в себя данные соответствия, как на фиг.3, устройство-получатель 230 устанавливает данные обновления без формирования данных соответствия. Т.е. если данные обновления включают в себя командные строки, имеющие индексы блоков, которые должны быть обработаны между первой и второй версиями, этап формирования данных соответствия пропускается.
Пакет обновлений (или данные обновления) может быть сохранен в сжатом состоянии для повышения эффективности использования второго запоминающего устройства 250 за счет уменьшения объема пакета обновлений. Первое запоминающее устройство 250 снабжается первой версией программы, установленной на фазе производства или установленной позднее в качестве контрольной версии программы. Первое запоминающее устройство 250 также снабжается множеством областей хранения пакетов обновлений для хранения множества пакетов обновлений. Соответственно, новый загруженный пакет обновлений сохраняется в одной из пустых областей хранения пакетов обновлений. Если все области хранения пакетов обновлений заполнены, самый старый пакет обновлений удаляется для обеспечения пространства под последний пакет обновлений. Таким образом, устройство-получатель 30 может хранить последние загруженные пакеты обновлений. Эти пакеты обновлений могут быть выборочно использованы, когда процесс обновления завершился ошибкой, приводя к эффекту отказоустойчивости. Если установка пакета обновлений завершена на этапе 731, устройство-получатель 30 отображает сообщение оповещения, запрашивающее то, следует ли выполнить обновление программы со сбросом питания, на этапе 733. Если команда сброса питания введена в ответ на сообщение оповещения, устройство-получатель 30 выполняет операцию сброса питания на этапе 741 по фиг.26.
Со ссылкой фиг.26, если событие включения питания обнаружено, устройство-получатель 30 включает питание системы и выполняет инициализацию системы. Инициализация системы - это процесс аппаратного сброса. После инициализации системы устройство-получатель отображает сообщение оповещения, информирующее о том, что программа изменена с Vx на Vy, на этапе 743 и перезагружает систему с загрузкой транслированного пакета обновлений на этапе 745. Т.е. транслятор 240 устройства-получателя 30 формирует вторую версию программы посредством объединения пакета обновлений с первой версией и загружает вторую версию во второе запоминающее устройство 260.
Процесс формирования второй версии подробнее описывается ниже. Когда пакет обновлений включает в себя данные соответствия, данные соответствия могут быть предоставлены в формате табл.1-4. Если данные соответствия отформатированы так, как показано в табл.1, 2 и 4, вторая версия программы формируется посредством объединения данных соответствия пакета обновлений с первой версией программы.
Когда данные соответствия отформатированы так, как в табл.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-й первой версии для блоков с 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-й первой версии для блоков с 0-го по 15-й второй версии, помещает 12-й блок код (B,K) и 9-й блок код (E,C) первой версии для блоков с 16-го по 19-й второй версии и помещает блоки с 16-го по 20-й первой версии для блоков с 20-го по 24-й второй версии. Здесь код (B,K) означает данные, полученные посредством энтропийного кодирования разности между 14-м блоком первой версии и 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-й первой версии для блоков с 0-го по 15-й второй версии, извлекает блоки с 16-го по 19-й из данных обновления. При этом блоки с 16-го по 19-й могут быть представлены посредством Z, W, P и X.
Когда пакет обновлений включает в себя архивные данные и данные обновления без данных соответствия, устройство-получатель 30 формирует данные соответствия посредством сравнения данных обновления и первой версии программы. Если данные обновления снабжаются информацией соответствия, как показано в табл.5"{C:0,6}, {M:6,2,X,Y}, {S:8,3,6,} {S:11,2,13}, {M:13,5, A,B,C,D,E}, {S:18,7,15}", формирование данных соответствия может быть пропущено. В этом случае устройство-получатель 30 формирует вторую версию программы с помощью данных обновления. Если данные обновления предоставляются в формате табл.5, устройство-получатель 30 сохраняет блоки с 0-го по 5-й первой версии для блоков с 0-го по 5-й второй версии, помещает блоки, имеющие соответствующее значение данных X и Y для 6-го и 7-го блоков второй версии, помещает 6-й и 8-й блок первой версии для 8-го и 10-го блока второй версии, помещает 13-й и 14-й блоки первой версии для 11-го и 12-го блоков второй версии, помещает блоки, имеющие соответствующее значение данных A, B, C, D и E для блоков с 13-го по 17-й второй версии и блоков с 15-го по 21-й первой версии для блоков с 18-го по 24-й второй версии.
При первом событии включения питания после установки пакета обновлений устройство-получатель 30 отображает сообщение оповещения в течение заранее определенного времени (в этом варианте осуществления, 2 секунд), информирующее о том, что старая версия Vx модифицирована до новой версии Vz, на этапе 743 по фиг.26, формирует вторую версию Vz посредством применения пакета обновлений к первой версии (т.е. трансляции) и сохраняет вторую версию во втором запоминающем устройстве 260 (S745). Следовательно, устройство-получатель 30 переходит в режим бездействия на этапе 747.
Как описано выше, функция включения питания системы установлена, устройство-получатель 30 загружает первую версию и пакет обновлений в первое запоминающее устройство 250 и формирует вторую программу посредством объединения первой версии и пакета обновлений таким образом, что вторая версия загружается так, чтобы выполняться во втором запоминающем устройстве 260. Обновление программы выполняется с последней версией программы. Устройство-получатель 30 загружает первую версию и пакет обновлений, формирует вторую версию посредством объединения первой версии и пакета обновлений и загружает вторую версию, чтобы выполняться во втором запоминающем устройстве 260, как показано на фиг.26.
Если обновление программы завершается ошибкой с самым последним пакетом обновлений, обновление программы может быть повторено с другим пакетом обновлений, установленным в первом запоминающем устройстве 250. В этом варианте осуществления устройство-получатель 30 может устанавливать множество пакетов обновлений в энергонезависимом запоминающем устройстве, обновлять первую версию программы с помощью последнего пакета обновлений или одного из пакетов обновлений, выбранного посредством пользователя в процессе инициализации системы, и загружать вторую версию в энергозависимом запоминающем устройстве. В этом варианте осуществления, хотя обновление программы с помощью пакета обновлений завершается ошибкой, загрузка системы может выполняться с предыдущей версией программы. Соответственно, если выяснилось, что последний пакет обновлений является ошибочным, на этапе 753 (фиг.27 описывает, например, что номер версии последнего пакета обновлений - это V#5), устройство-получатель 30 отображает сообщение оповещения, запрашивающее то, следует ли выбирать другой пакет обновлений, на этапе 755.
Если команда выбора версии вводится посредством пользователя в ответ на сообщение оповещения, устройство-получатель 30 отображает список номеров версий доступных пакетов обновлений (например, #2, #3 и #4) на этапе 757. Если команда выбора введена для выбора одного из номеров версии на этапе 759, устройство-получатель 30 загружает пакет обновлений выбранного номера версии (этап 761) и формирует вторую версию посредством объединения выбранного пакета обновлений с номером версии программы на этапе 763. Вторая версия загружается так, чтобы выполняться во втором запоминающем устройстве 260 для управления общей работой устройства-получателя 30. После того как вторая версия загружена во второе запоминающее устройство 260, устройство-получатель переходит в режим бездействия (S765).
Если команда выбора версии не введена в течение заранее определенного времени, устройство-получатель 30 загружает последний пакет обновлений (в данном примере пакет обновлений, имеющий номер версии #4), чтобы заменить ошибочный пакет обновлений (номер версии #5) на этапах 767 и 769, и формирует вторую версию программы посредством объединения пакета обновлений с номером версии #4 с первой версией, и загружает вторую версию во второе запоминающее устройство на этапе 771. После загрузки второй версии устройство-получатель 30 переходит в режим бездействия. Т.е. если функция выбора указанной пользователем версии не задана и последний пакет обновлений завершился ошибкой при обновлении программы, устройство-получатель 30 пытается сформировать вторую версию посредством объединения следующего последнего пакета обновлений с первой версией.
Со ссылкой на фиг.28, если выяснилось, что все пакеты обновлений, установленные в первом запоминающем устройстве 250, являются ошибочными, на этапах 781 и 783, устройство-получатель 30 загружает первую версию программы, установленной в первом запоминающем устройстве 250, во второе запоминающее устройство, так что первая версия выполняется для управления работой и функциями устройства-получателя 30, на этапах 785-789. После загрузки первой версии системы во второе запоминающее устройство 260 устройство-получатель 30 переходит в режим бездействия на этапе 791.
Если пользовательская команда не введена при отображении сообщения оповещения, запрашивающего то, следует ли загрузить пакет обновлений или следует ли установить загруженный пакет обновлений в первом запоминающем устройстве 250, устройство-получатель 30 задает функцию оповещений для уведомления о незавершенном процессе во время следующей загрузки и на этапе 821 (фиг.29) переходит в режим бездействия на этапе 823. Т.е. если пользователь не вводит команду для загрузки или установки пакета обновлений, устройство-получатель 30 задает функцию оповещения о незавершенном процессе и затем переходит в режим бездействия. Следовательно, если система перезагружается, устройство-получатель 30 отображает сообщение оповещения, запрашивающее то, следует ли перезапустить загрузку либо установку пакета обновлений.
Если сообщение оповещения, запрашивающее то, следует ли транслировать пакет обновлений после того, как пакет обновлений установлен, отображается и команда запроса трансляции не введена, устройство-получатель 30 задает применить пакет обновлений во время следующей загрузки на этапе 831 и переходит в режим бездействия на этапе 833. Если системная инициализация выполнена в режиме бездействия на этапе 835, устройство-получатель 30 начинает обновление программы с помощью последнего пакета обновлений, установленного в первом запоминающем устройстве 250. Если пакет трансляции не выполнен после обновления программы с помощью последнего пакета обновлений, устройство-получатель обновляет программу с помощью последнего пакета обновлений при включении питания системы.
Когда новый выпущенный пакет обновлений не загружен, загружен, но не установлен, или установлен, но не транслирован, устройство-получатель 30 отображает сообщение оповещения, запрашивающее то, следует ли загрузить новый выпущенный пакет обновлений, следует ли установить пакет обновлений, загруженный, но не установленный, или следует ли транслировать установленный, но не транслированный.
Со ссылкой на фиг.31, если событие включения питания возникает на этапе 803, устройство-получатель 30 включается и инициализируется, чтобы загрузить системную программу, на этапе 805. В ходе процесса загрузки устройство-получатель 30 загружает последний пакет обновлений из первого запоминающего устройства 250 и обновляет программу системы последним пакетом обновлений. Т.е. процесс остающегося обновления перезапускается после того, как система перезагружена. После того как обновленная система загружена, устройство-получатель 30 переходит в режим бездействия на этапе 807. В режиме бездействия устройство-получатель 30 определяет то, пропущена ли загрузка пакета обновлений в предыдущем состоянии включения питания, на этапе 809. Если пакет обновлений, который не был или был не полностью загружен, существует, устройство-получатель 300 отображает сообщение оповещения, запрашивающее то, следует ли загрузить пакет обновлений, на этапе 811. Если команда запроса загрузки не введена в ответ на сообщение оповещения, устройство-получатель 30 выполняет процедуру загрузки на этапе S705 по фиг.25. Если команда запроса загрузки не введена, устройство-получатель 30 задает вариант оповещения об остающейся загрузке на этапе 821 по фиг.29, так что сообщение оповещения запрашивает то, следует ли перезапустить загрузку пакета обновлений во время следующей загрузки. Если пакет обновлений, загрузка которого остается, не существует, устройство-получатель 30 определяет то, является ли этот пакет загруженным, но не установленным, на этапе 813. Если пакет обновлений с остающейся установкой существует, устройство-получатель 30 отображает сообщение оповещения, запрашивающее то, следует ли установить пакет обновлений с остающейся установкой, на этапе 815. Если команда запроса установки введена в ответ на сообщение оповещения, устройство-получатель 30 выполняет процесс установки на этапе 701 по фиг.25. С другой стороны, если команда запроса установки не введена, устройство-получатель 30 задает вариант оповещения об остающейся установке на этапе 821 по фиг.29.
Как описано выше, устройство-получатель 30 включает в себя первое запоминающее устройство 250 в качестве энергонезависимого запоминающего устройства, и первое запоминающее устройство 250 хранит первую версию программы. Первая версия может быть первоначальной версией, установленной на этапе производства устройства-получателя 30. Устройство-получатель 30 устанавливает пакеты обновления каждый раз, когда новый пакет обновлений загружается. Первое запоминающее устройство 250 снабжено множеством областей хранения, защищенных для установки пакетов обновлений. Пакет обновлений предоставляет обновленную версию программы. Пакет обновлений включает в себя данные первой версии и данные обновления либо данные обновления, представляющие различия между двумя версиями программы. В этом варианте осуществления пакет обновлений включает в себя данные обновления, представляющие различия между двумя версиями.
В этом варианте осуществления устройство-получатель включает в себя второе запоминающее устройство 260 в качестве энергозависимой памяти. Второе запоминающее устройство 260 - это предпочтительно рабочая память устройства-получателя. Устройство-получатель 30 инициализируется при включении питания системы. В ходе процесса загрузки программ первая версия программы и последний пакет обновлений загружаются с тем, чтобы быть объединеными, так что вторая версия программы формируется и загружается во второе запоминающее устройство 260. Соответственно, устройство-получатель 30 работает со второй версией программы, загруженной во второе запоминающее устройство 260.
В данном варианте осуществления процесс загрузки, установки и трансляции может выполняться сразу же, когда возникает соответствующее событие, после того как система перезагружена.
Со ссылкой на фиг.32, мобильный терминал включает в себя модуль 900 управления, радиочастотный (RF) модуль 930, дисплейный модуль 950, модуль 940 ввода с клавиатуры, модуль 960 интерфейса связи, первое запоминающее устройство 250 и второе запоминающее устройство 260. RF-модуль 930 отвечает за беспроводную связь мобильного терминала. RF-модуль 930 включает в себя передающее RF-устройство для выполнения преобразования с повышением частоты и усиления сигнала, который должен быть передан, и приемное RF-устройство для выполнения малошумного усиления и преобразования с понижением частоты принимаемого сигнала.
Модуль 940 ввода с клавиатуры оснащен множеством буквенно-цифровых клавиш и различных функциональных клавиш.
Первое запоминающее устройство 250 - это энергонезависимая память, и оно включает в себя первую область для хранения первой версии программы и вторую версию для хранения, по меньшей мере, одного пакета обновлений. Программа может быть рабочим микропрограммным обеспечением или программным обеспечением, и первая версия программы устанавливается на стадии производства. Пакет обновлений - это пакет данных, полученный из различий между первой версией и новой версией программы. Пакет обновлений включает в себя данные обновлений, которые должны быть применены для модификации первой версии и данных установки, включающих в себя архивные данные и данные соответствия. Данные соответствия могут быть снабжены данными обновления. В этом случае пакет обновлений включает в себя архивные данные и данные соответствия. Кроме того, данные обновления могут быть снабжены данными соответствия. В этом случае пакет обновлений включает в себя данные обновления и архивные данные. Вторая область первого запоминающего устройства 250 снабжена частями хранения для хранения соответствующих пакетов обновлений.
Второе запоминающее устройство 260 - это энергозависимая память в качестве рабочей памяти мобильного терминала. Второе запоминающее устройство 260 загружает вторую версию программы, сформированную посредством объединения первой версии, сохраненной в первой области первого запоминающего устройства 250, и последнего пакета обновлений, сохраненной во второй области первого запоминающего устройства 250, во время перезагрузки системы.
Модуль 900 управления управляет общими операциями мобильного терминала. Модуль 900 управления предпочтительно оснащен кодеком для кодирования и декодирования сигналов и модемом для модуляции и демодуляции сигналов. Если мобильным терминалом является мобильный телефон, модуль 900 управления - это предпочтительно микросхема модема мобильной станции (MSM), интегрирующая функциональности обработки данных и аудио. Функциональность обработки аудио и данных альтернативно может быть реализована отдельно. В этом варианте осуществления модуль 900 управления включает в себя загрузчик для загрузки пакета обновлений с сервера 20 пакетов обновлений, установщик для установки загруженного пакета обновлений в секции хранения второй области первого запоминающего устройства 250 и транслятор для формирования версии обновления программы посредством объединения первой версии с пакетом обновлений и загрузки версии обновления во второе запоминающее устройство 260.
Дисплейный модуль 950 отображает различные данные, выводимые мобильным терминалом под управлением модуля 900 управления. Дисплейный модуль 950 может быть реализован с помощью жидкокристаллического дисплея (LCD). В этом случае дисплейный модуль 950 оснащен LCD-контроллером, запоминающими устройствами для сохранения дисплейных данных и LCD-устройствами. Для функциональности сенсорного экрана LCD-дисплейный модуль 950 включает в себя функциональность ввода.
Модуль 960 интерфейса связи соединен с модулем 900 управления и предоставляет интерфейс проводного соединения, такой как порт универсальной последовательной шины (USB), интерфейс беспроводной связи ближнего действия, такой как порты Bluetooth и IrDA, либо интерфейс беспроводной IP-сети, такой как карты WiBro, Wi-Fi и WiMAX.
Операция управления пакетами обновлений мобильного терминала вышеописанной конструкции описывается далее. Модуль 900 управления мобильного терминала может обмениваться данными с базовой станцией с помощью RF-модуля 930. Базовая станция может быть CDMA-, UMTS- или GSM-системой и соединена с сервером 20 пакетов обновлений, по меньшей мере, по одной сети связи. Кроме того, мобильный терминал может осуществлять доступ к серверу 20 пакетов обновлений по Интернету с помощью модуля 960 интерфейса связи. Если сообщение уведомления о выпуске пакета обновлений принято от сервера 20 пакетов обновлений, модуль 900 управления мобильного терминала управляет RF-модулем 930, чтобы загрузить пакет обновлений с сервера 20 пакетов обновлений. Пакет обновлений передается по беспроводному каналу в формате беспроводной передачи, подходящем для системы беспроводной связи, такой как CDMA-, UMTS- или GSM-система. Загруженный пакет обновлений временно сохраняется во втором запоминающем устройстве 260 под управлением модуля 900 управления.
Поскольку второе запоминающее устройство 260 - это энергозависимая память, пакет обновлений должен быть установлен в первом запоминающем устройстве 250 в качестве энергонезависимой памяти, с тем чтобы пакет обновлений мог быть сохранен для последующего использования. Модуль 900 управления также управляет дисплейным модулем 950, чтобы отображать состояние загрузки пакета обновлений и сообщение оповещения, запрашивающее то, следует ли устанавливать загруженный пакет обновлений. Если команда запроса установки вводится в ответ на сообщение оповещения, модуль 900 управления устанавливает пакет обновлений с пустой частью хранения второй области первого запоминающего устройства. Если нет пустой части, самый старый пакет обновлений, сохраненный во второй области первого запоминающего устройства 250, удаляется, чтобы предоставить пространство для того, чтобы хранить самый последний пакет обновлений. Пакет обновлений включает в себя данные обновления и данные установки, а данные установки включают в себя архивные данные и данные соответствия. Данные соответствия могут не упаковываться в пакет обновлений. Соответственно, модуль 900 управления мобильного терминала анализирует пакет обновлений, чтобы определять то, включены ли данные соответствия. Если в пакете обновлений отсутствуют данные соответствия, модуль 900 управления формирует данные соответствия посредством сравнения пакета обновлений и первой версии программы и устанавливает данные соответствия, сформированные таким образом. Когда в пакете обновлений отсутствуют явные данные соответствия, в данные обновления предоставляется информация соответствия, установщик 230 пропускает формирование данных соответствия и устанавливает данные обновления и архивные данные в соответствующих частях хранения второй области первого запоминающего устройства 250. Когда данные обновления не упакованы явно в пакет обновлений, но данные соответствия неявно снабжены данными соответствия, установщик 230 устанавливает архивные данные и данные соответствия в соответствующих частях хранения второй области первого запоминающего устройства 250.
Если команда запроса установки не обнаружена в заранее определенное время, модуль 900 управления мобильного терминала задает вариант оповещения о незавершенной установке, так чтобы отобразить сообщение, запрашивающее то, следует ли перезапустить установку пакета обновлений во время следующей загрузки. Если команда установки запроса введена в ответ на сообщение оповещения, модуль 900 управления управляет началом установки пакета обновлений в первом запоминающем устройстве 250. Если пакет обновлений не сохранен, модуль 900 управления управляет, чтобы загрузить пакет обновлений с сервера 20 пакетов обновлений и затем устанавливает загруженный пакет обновлений в первом запоминающем устройстве 250. Если не запрошено установить загруженный пакет обновлений, модуль управления 900 задает вариант оповещения о незавершенной установке снова для уведомления о незавершенной установке пакета обновлений во время следующей загрузки.
После установки в первом запоминающем устройстве 250 пакет обновлений может быть постоянно сохранен. В ходе процесса инициализации системы модуль 900 управления загружает первую версию программы и последний пакет обновлений из первого запоминающего устройства 250 и формирует вторую версию программы посредством соответствия пакета обновлений на первой версии так, что вторая версия загружается во второе запоминающее устройство 260. После загрузки последнего пакета обновлений модуль 900 управления анализирует архивные данные пакета обновлений, чтобы проверить номера версий для старой и новой версий программы, которые должны быть объединены, и объединяет пакет обновлений с новой версией (т.е. первой версией) так, что новая версия (т.е. вторая версия) формируется и загружается во второе запоминающее устройство 260. Соответственно, мобильный терминал работает с последней версией программы.
В данном варианте осуществления загрузка пакетов обновлений может выполняться через модуль 960 интерфейса связи, а не через RF-модуль 930. Т.е. мобильный терминал может быть подключен к внешнему устройству, такому как персональный компьютер (PC), через USB-порт или линию беспроводной связи ближнего действия для приема пакета обновлений, загруженного посредством PC. Модуль 900 управления может обновлять программу через вышеописанные процессы загрузки, установки и обновления.
Как описано выше, система и способ обновления программы для устройства с поддержкой OTA выполняет обновление с помощью пакета обновлений, сформированного на основе различий между контрольной версией и новой версией программы, посредством чего можно уменьшить время загрузки при формировании пакетов. Кроме того, система и способ обновления системы для устройства с поддержкой OTA устанавливает загруженные пакеты обновления в раздельных областях хранения энергонезависимой памяти и формирует обновленную версию посредством объединения контрольной версии программы и одного из обновленных пакетов в энергозависимой памяти, тем самым приводя к стабильному обновлению программы и эффекту отказоустойчивости.
Хотя примерные варианты осуществления настоящего изобретения были описаны подробно выше в данном документе, должно быть понятно, что многие вариации и модификации основных изобретенных концепций, преподанных здесь, могут проявиться для специалистов в настоящей области техники, которые все еще подпадают под дух и цель настоящего изобретения, как определено в прилагаемой формуле изобретения.