本出願の目的、技術的解決策、および利点をより明確にするために、以下ではさらに、添付図面を参照して本出願を詳細に記載する。方法実施形態における具体的な動作方法は、デバイス実施形態またはシステム実施形態にも適用されてもよい。
自動車産業が継続的に発展するにつれて、より多くのソフトウェアが車両にインストールされる。具体的には、自動車にインストールされるソフトウェアは、通常、電子制御ユニット(electronic control unit、ECU)にインストールされる。例えば、車両内のアンチロックブレーキシステム、オートマチックトランスミッションシステム、マルチメディアシステム、補助ブレーキシステム、クルーズコントロールシステム、空調システム、作動システム、サスペンションシステム、セーフティシステムなどは、すべてECUを含む。各システム内の様々な複雑な制御ロジックおよび計算機能は、ソフトウェアの形態でシステム内のECU上で実行されてもよく、その結果、車両は適切に動作することができる。
車両に含まれる一部またはすべてのシステムは、同じECUに統合されてもよく、異なるECUに別々に配備されてもよいことに留意されたい。これは、本出願の実施形態では限定されない。
本出願の実施形態において提供される方法および装置は、スマートカー(smart/intelligent car)、デジタルカー(digital car)、無人車/無人運転車(unmanned car/driverless car)、または自動運転車(self-driving car)などの車両に適用されてもよいことを理解されたい。
現在、車両ソフトウェアを更新する2つの方式が存在する。1つの方式は、専用デバイスを使用して有線方式で車両ソフトウェアを更新することである。他の方式は、OTA(over the air、オーバージエア)更新である。OTA更新は、Wi-Fi、LTE、または衛星などのワイヤレス通信インターフェースを介するクラウドとの相互作用による更新または更新車両ソフトウェアを指す。OTA更新が採用されると、車両ソフトウェアはいつでもどこでも更新することができ、それはより柔軟で便利である。
車両ソフトウェアは、以下の高度運転者支援システム(advanced driver assistance system、ADAS)に関連するソフトウェア、インフォテインメント(infotainment、IVI)に関連するソフトウェア、テレマティクス(telematics)に関連するソフトウェア、情報セキュリティ(information security)に関連するソフトウェア、オンボード診断(on board diagnostic、OBD)に関連するソフトウェア、オペレーティングシステム(operating system、OS)、地図(map)ソフトウェアなどのうちの1つまたは複数を含んでもよいが、それらに限定されないことを理解されたい。
図1は、本出願の一実施形態による、システムアーキテクチャの概略図である。図1を参照されたい。システムは、端末デバイス、更新サーバ、ソフトウェア開発デバイスなどを含む。
当業者がより良く理解するように、本出願のいくつかの用語が以下に記載される。
(1)ソフトウェア開発デバイスは、アプリケーションのアプリケーションソフトウェアおよびアプリケーションソフトウェアのソフトウェア更新パッケージを開発するためにソフトウェア設計者によって使用されるデバイスであってもよい。上述されたように、ソフトウェア更新パッケージは、アプリケーションソフトウェアの新バージョンの完全なインストールファイルであってもよく、アプリケーションソフトウェアの差分更新パッケージであってもよい。任意選択で、ソフトウェア開発デバイスは、アプリケーションソフトウェアのソフトウェア更新パッケージに基づいてアプリケーションソフトウェアの差分ロールバックパッケージを生成するようにさらに構成されてもよく、差分ロールバックパッケージは、更新されたアプリケーションソフトウェアをロールバックするために使用され、その結果、アプリケーションソフトウェアの新バージョンが旧バージョンにロールバックされる。
具体的には、本出願のこの実施形態におけるソフトウェア更新パッケージおよび差分ロールバックパッケージは、アプリケーションソフトウェアのバージョンを示すために使用されるバージョン番号をさらに搬送することができる。端末デバイスは、バージョン番号に基づいて、対応するソフトウェア更新パッケージまたは差分ロールバックパッケージをダウンロードすることができる。例えば、バージョン番号は特別な意味を有する文字または文字列であってもよく、例えば、アプリケーションソフトウェアの現在のバージョン番号はv.2.0であり、新バージョンのアプリケーションソフトウェアのバージョン番号はv.2.1である。
任意選択で、ソフトウェア開発デバイスは、アプリケーションベンダ、またはアプリケーションソフトウェアをインストールすることができる端末デバイスのベンダに属してもよい。これは本出願では限定されない。例えば、ソフトウェア開発デバイスは、コンピュータ、サーバなどであってもよい。
(2)更新サーバは、アプリケーションソフトウェアのソフトウェア更新パッケージおよび差分ロールバックパッケージを格納し、(ソフトウェア更新パッケージおよび差分ロールバックパッケージを含む)ファイルのダウンロードサービスを端末デバイスに提供することができるサードパーティデバイスであってもよい。任意選択で、更新サーバはOTAサーバなどであってもよい。
更新サーバは、ソフトウェア開発デバイスとの接続を確立して、ソフトウェア開発デバイスによって新しく開発されたアプリケーションソフトウェアの新バージョンのソフトウェア更新パッケージおよび差分ロールバックパッケージを取得し、ソフトウェア更新パッケージおよび差分ロールバックパッケージを格納することができる。前述のケースは、単に説明を容易にするために提供されることに留意されたい。更新サーバは、ソフトウェア更新パッケージおよび差分ロールバックパッケージを同時に取得しなくてもよい。例えば、更新サーバは、ソフトウェア更新パッケージのみを取得する。これは本出願では限定されない。加えて、更新サーバは、端末デバイスとの接続をさらに確立して、アプリケーションソフトウェアを更新するための端末デバイスの要件を取得し、更新要件に基づいて、対応するバージョン番号を有するアプリケーションソフトウェアのソフトウェア更新パッケージを選択し、端末デバイスがアプリケーションソフトウェアを更新することができるように、選択されたソフトウェア更新パッケージを端末デバイスに送信することができる。
任意選択で、ソフトウェア開発デバイスおよび更新サーバは同じデバイスに統合されてもよく、すなわち、デバイスはソフトウェア開発デバイスと更新サーバの両方の機能を有する。
(3)アプリケーションは、対応するサービス機能をユーザに提供することができる。具体的には、アプリケーションのアプリケーションソフトウェアがインストールされた端末デバイスは、アプリケーションを実行してアプリケーションのサービス機能を実施することができる。
例えば、GPS測位機能および地図情報を有する地図ナビゲーションソフトウェアの場合、地図ナビゲーションソフトウェアは、ユーザに測位およびナビゲーションのサービス機能を提供するために、端末デバイスにインストールされ、端末デバイスによって実行されてもよい。説明を容易にするために、以下の説明では、アプリケーションソフトウェアは略してソフトウェアと呼ばれる。
ソフトウェア設計者の設計が未熟であるか、アプリケーション機能が不完全であるか、またはアプリケーションに対するユーザのサービス要件が増加しているために、ソフトウェア設計者は、通常、ソフトウェアの脆弱性を修正するか、またはアプリケーション機能を拡張するために、ソフトウェアがリリースされた後にソフトウェアを更新するためのソフトウェア更新パッケージをさらに開発する必要がある。
本出願の実施形態におけるソフトウェアは、代替として、端末デバイスのオペレーティングシステム、例えば、アンドロイドシステムであってもよいことに留意されたい。
(4)端末デバイスは、ソフトウェアが端末デバイスにインストールされ、端末デバイスによって実行されると、音声機能、ビデオ機能、写真撮影機能、およびデータ接続などの様々な対応するサービス機能をユーザに提供するデバイスであってもよい。本出願のこの実施形態では、端末デバイスは、更新サーバからダウンロードされたソフトウェア更新パッケージを使用してソフトウェアを更新して、現在実行されている旧バージョンに基づいて新バージョンを取得するか、または差分ロールバックパッケージを使用してソフトウェアをロールバックして、新バージョンから旧バージョンにロールバックすることができる。
異なるアプリケーションシナリオでは、図1に示されたように、端末デバイスの形態は異なる。例えば、従来のモバイル通信シナリオでは、端末デバイスは、携帯電話、タブレットコンピュータなどであってもよい。モノのインターネット(internet of things、IoT)通信シナリオでは、端末デバイスは、モバイルインターネットデバイス、ウェアラブルデバイス、または業界もしくはスマート家庭における様々なワイヤレス端末であってもよい。車両のインターネットまたは車両対すべて(vehicle to everything、V2X)通信シナリオでは、端末デバイスは車両であってもよく、車両のインターネットにおけるオンボードユニット(on board unit、OBU)、路側ユニット(road side unit、RSU)、路側機器(road side equipment、RSE)、電子制御ユニット(electronic control unit、ECU)などであってもよい。
本出願において提供されたシステムでは、端末デバイスは、(アクセスネットワークおよびコアネットワークを含む)モバイル通信ネットワークを介して更新サーバとの通信接続を確立して、通信対話を実行することができることに留意されたい。例えば、端末デバイスが更新サーバとの接続を確立した後に、端末デバイスは、更新サーバからソフトウェア更新パッケージおよび/または差分ロールバックパッケージをダウンロードすることができる。端末デバイスは、代替として、少なくとも1つの中継デバイスを使用することにより、モバイル通信ネットワークを介して更新サーバとの通信接続を確立して、通信対話を実行することができる。例えば、端末デバイスがV2X通信シナリオにおける電子制御ユニットであるとき、図1に示されたように、電子制御ユニットは、順番に以下の中継デバイス:ドメインコントローラ(domain controller、DC)およびT-Boxを介して更新サーバに接続されてもよい。
更新サーバは、従来のインターネットプロトコル(internet protocol、IP)ネットワークを介してソフトウェア開発デバイスとの通信接続を確立して、通信対話を実行することができる。
加えて、図1に示されたアーキテクチャは、複数の通信シナリオ、例えば、第5世代(the 5th generation、5G)通信システム、将来の第6世代通信システムおよび別の進化した通信システム、第4世代(the 4th generation)通信システム、車両対すべて(vehicle to everything、V2X)、ロングタームエボリューション-車両(LTE-vehicle、LTE-V)、車両間(vehicle to vehicle、V2V)、車両のインターネット、マシンタイプ通信(machine type communications、MTC)、モノのインターネット(internet of things、IoT)、ロングタームエボリューション-マシン間(LTE-machine to machine、LTE-M)、およびマシン間(machine to machine、M2M)に適用されてもよい。これは本出願では限定されない。
以下では、車両ソフトウェアのOTA更新方法を記載する。方法は、端末デバイスによって実施されてもよく、端末デバイスの構成要素、例えば、ECUによって実施されてもよい。ECUは、車両ソフトウェアのOTA更新方法を記載するために、本明細書では例として使用される。方法は、図1に示されたシステムアーキテクチャに適用されてもよい。図2を参照されたい。図2は、車両ソフトウェアのためのOTA更新方法の概略フローチャートである。手順は以下のステップを含んでもよい。
ステップ1.ソフトウェア更新パッケージを生成する。具体的には、ソフトウェア設計者は、ソフトウェア開発デバイスを使用して、対象ソフトウェアの新バージョンのソフトウェア更新パッケージを開発および生成し、新バージョンのソフトウェア更新パッケージをOTAクラウドサーバに送信し、OTAクラウドサーバはソフトウェア更新パッケージを格納する。
ステップ2.車両内のECUがOTAクラウドサーバから対象ソフトウェアの新バージョンのソフトウェア更新パッケージをダウンロードする。具体的には、OTAクラウドサーバが対象ソフトウェアの新バージョンのソフトウェア更新パッケージを有することを検出した後に、ECUはOTAクラウドサーバからソフトウェア更新パッケージをダウンロードする。ダウンロード動作を実行するECUは、対象ソフトウェアがインストールされたECUであってもよく、更新マスタノードとして使用されるECUであってもよい。更新マスタノードとして使用されるECUは、車両上の別のECUのソフトウェア更新を管理することができ、別のECUは、更新マスタノードとして使用されるECUのスレーブノードであることを理解されたい。以下では、マスタノードとして使用されるECUとスレーブノードとして使用されるECUとの間の関係を詳細に記載する。
ステップ3.ECUが新バージョンのソフトウェア更新パッケージをインストールし、対象ソフトウェアを現在のバージョンから新バージョンに更新する。
ソフトウェア更新パッケージの異なる形態に基づいて、OTA更新方式は、フルOTAおよび差分OTAにさらに分類されてもよい。フルOTAでは、新バージョンのソフトウェア更新パッケージは、新バージョンの対象ソフトウェアの完全なインストールファイルを含んでもよい。差分更新では、新バージョンのソフトウェア更新パッケージは、ECU上で動作する現在のバージョン(または旧バージョンと呼ばれる)の対象ソフトウェアに対する新バージョンの対象ソフトウェアの差分更新パッケージであってもよい。差分更新パッケージは、新バージョンの対象ソフトウェアと旧バージョンの対象ソフトウェアとの間の差を含んでもよい。例えば、差は、新バージョンが旧バージョンと比較されたときに、データの一部が削除されるか、またはデータの一部が新バージョンに追加されることであってもよい。ECUは、差分更新パッケージによって示された差に基づいて旧バージョンの対象ソフトウェアを調整して、新バージョンの対象ソフトウェアを取得する。
上記は、車両における対象ソフトウェアの更新プロセスを記載した。対象ソフトウェアの更新後、旧バージョンに基づいて新バージョンが取得される。しかしながら、可能なシナリオでは、更新後の対象ソフトウェアに対するロールバック要件がさらに存在する場合がある。例えば、ユーザは旧バージョンのソフトウェアを使用したいと考える。別の例では、新バージョンのソフトウェアにbugが存在する場合があり、新バージョンのソフトウェアの異常動作を引き起こす。対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECUは、対象ソフトウェアをロールバックして、旧バージョンの対象ソフトウェアを取得することができる。現在、一般的なロールバック方式は、ECUがOTAクラウドサーバから旧バージョンの対象ソフトウェアの完全なインストールファイルを再ダウンロードすること、またはECUが旧バージョンの対象ソフトウェアを更新する前に旧バージョンの対象ソフトウェアの完全なインストールファイルをバックアップすることである。対象ソフトウェアに対するロールバック要件が存在するとき、ECUは、対象ソフトウェアの現在実行中のバージョンが旧バージョンにロールバックされるように、旧バージョンの対象ソフトウェアの完全なインストールファイルを再インストールし、旧バージョンは、新バージョンのソフトウェア更新パッケージを使用して更新される前に対象ソフトウェアが正常に動作したバージョンを指す。
旧バージョンの対象ソフトウェアの完全なインストールファイルを再ダウンロードするロールバック方式は、長い時間がかかり、車両の通常の動作に影響を与える、時機を失したロールバックを引き起こす可能性があることを理解されたい。加えて、車両の記憶空間は通常制限され、旧バージョンの対象ソフトウェアの完全なインストールファイルをバックアップするロールバック方式を実現するために大きい記憶空間が必要とされ、記憶空間が不足するという問題が生じる可能性がある。
これを考慮して、本出願はソフトウェアロールバック方法を提供する。本出願の実施形態では、端末デバイスが差分更新パッケージを使用して対象ソフトウェアを更新した後に、対象ソフトウェアに対するロールバック要件が存在する場合、対象ソフトウェアは差分更新パッケージを使用してロールバックされてもよい。端末デバイスがECUである、すなわち、ECU内の対象ソフトウェアに対するロールバック要件が存在する場合、ECUは、OTAクラウドサーバから旧バージョンの対象ソフトウェアの完全なインストールファイルをダウンロードする必要はなく、旧バージョンの対象ソフトウェアの完全なインストールファイルをバックアップする必要はない。ECUは、実行のために旧バージョンにロールバックするために、対象ソフトウェアの更新に使用される差分更新パッケージを使用して、対象ソフトウェアを直接ロールバックすることができる。このようにして、車両の記憶空間の占有率を低減しながら、適時ソフトウェアのロールバックが実行される。
以下では、本出願において提供されたソフトウェアバージョンロールバック方法の技術的解決策を詳細に記載する。
図3を参照されたい。図3は、本出願の一実施形態による、ソフトウェアバージョンロールバック方法の概略フローチャートである。方法は、図1に示されたシステムアーキテクチャに適用されてもよい。方法は以下のステップを含む。
S301.端末デバイスが更新サーバから対象ソフトウェアの差分更新パッケージをダウンロードする。
差分更新パッケージは少なくとも1つの差分ファイルを含み、差分ファイルは、対象ソフトウェアの現在の第1のバージョンと対象ソフトウェアが更新されるべき第2のバージョンとの間の差を記録する。
任意選択で、差分ファイルはファイルヘッダをさらに含んでもよく、ファイルヘッダは対象ソフトウェアを示すために使用されてもよい。任意選択で、ファイルヘッダは、差分ファイルに対応するバージョン番号などの情報をさらに含んでもよい。
このステップの前に、ソフトウェア開発者は、ソフトウェア開発デバイスを使用して対象ソフトウェアの差分更新パッケージを開発し、格納のために差分更新パッケージを更新サーバに送信することを理解されたい。
S302.端末デバイスが、対象ソフトウェアの第1のバージョンに基づいて対象ソフトウェアの第2のバージョンを取得するために、差分更新パッケージを使用して対象ソフトウェアの現在のバージョンを更新する。
S303.対象ソフトウェアに対するロールバック要件が存在することを検出すると、端末デバイスが差分更新パッケージを使用して対象ソフトウェアをロールバックし、その結果、対象ソフトウェアの現在の第2のバージョンが第1のバージョンにロールバックされる。
以下では、特定の実施形態を参照して図3に示された実施形態の解決策を詳細に記載する。
最初に、差分更新パッケージが詳細に記載される。理解および区別を容易にするために、以下の説明では、対象ソフトウェアの第1のバージョンは旧バージョンと呼ばれ、対象ソフトウェアの第2のバージョンは新バージョンと呼ばれる。
本出願のこの実施形態における差分更新パッケージは、少なくとも1つの差分ファイルを含み、少なくとも1つの差分ファイルは、新バージョンの対象ソフトウェアと旧バージョンの対象ソフトウェアとの間の差を記録する。
以下では、特定の実施形態を参照して、対象ソフトウェアの新バージョンの差分更新パッケージを記載する。
本出願のこの実施形態では、対象ソフトウェアの新バージョンの差分更新パッケージ内の差分ファイルは、旧バージョンの対象ソフトウェアのソフトウェアコードに基づいてソフトウェア開発デバイスを使用して生成されると仮定する。
例えば、差分ファイルは少なくとも1つの差分動作命令を含み、各差分動作命令は命令タイプおよび差分データを含んでもよい。差分データは、新バージョンと旧バージョンとの間のデータ差として理解されてもよく、命令タイプは、データ差に対応する特定の命令タイプ差の指示として理解されてもよい。具体的には、差分データは、アドレス空間情報およびデータをさらに含む。例えば、命令タイプは挿入であり、差分データは新アドレス空間および挿入されるデータ(すなわち、新データ)aaaを含み、すなわち、新データが挿入される位置が新アドレス空間である。この場合、差分動作命令は、旧バージョンの新アドレス空間にデータaaaを挿入することである。
アドレス空間は、データ格納用のアドレス範囲である。本出願のこの実施形態におけるアドレス空間は、複数の形態で表されてもよい。例えば、アドレス空間は、対象ソフトウェアのソフトウェアコードのコードセグメント識別子またはコード行識別子であってもよい。コードセグメントは、コードのセグメントを識別するために使用される。コードセグメントは、1行のコードを含んでもよく、複数行のコードを含んでもよい。コードの各行は、行番号およびコード内容を含む。各コードセグメントはコードセグメント識別子を有し、コードの各行はコード行識別子、例えば、行番号を有する。コードセグメントが1行のコードを含む場合、コードセグメント識別子はコードの行の行番号であることに留意されたい。
理解を容易にするために、本出願のこの実施形態における差分ファイルのコードセグメントは1行のコードを含む、すなわち、コード行の行番号がコードセグメントの識別子であると仮定する。この場合、本出願のこの実施形態における第1のアドレス空間は、旧バージョンの対象ソフトウェアのソフトウェアコードの行番号であり、第2のアドレス空間は、新バージョンの対象ソフトウェアのソフトウェアコードの行番号であると仮定する。
図4は、差分ファイルを生成するプロセスを記載するために一例として使用される。対象ソフトウェアのファイル名はAPP1であると仮定する。
ソフトウェア開発デバイスが、バージョン番号V1の対象ソフトウェア(対応するソフトウェアコード)に基づいて、2行目と3行目との間に行xxxxを挿入(または、図4の「+」で表される追加)してバージョン番号V2の対象ソフトウェアを生成する必要があるとき、ソフトウェア開発デバイスは、バージョン番号V2の差分ファイルP1を生成することができる。このようにして、バージョン番号V1の対象ソフトウェアがインストールされた端末デバイスは、(図4に示されたように)差分ファイルP1をダウンロードしインストールすることにより、対象ソフトウェアをV2に更新することができる。
ソフトウェア開発デバイスが、バージョン番号V2の対象ソフトウェアに基づいて、2行目を(図4の「-」で表された)削除し、4行目と5行目との間に行yyyyを挿入してバージョン番号V3の対象ソフトウェアを生成する必要があるとき、ソフトウェア開発デバイスは、バージョン番号V3の差分ファイルP2を生成することができる。このようにして、バージョン番号V2の対象ソフトウェアがインストールされた端末デバイスは、(図4に示されたように)差分ファイルP2をダウンロードしインストールすることにより、対象ソフトウェアをV3に更新することができる。
ソフトウェア開発デバイスが、バージョン番号V3の対象ソフトウェアに基づいて、2行目を削除してバージョン番号V4の対象ソフトウェアを生成する必要があるとき、ソフトウェア開発デバイスは、バージョン番号V4の差分ファイルP3を生成することができる。このようにして、バージョン番号V3の対象ソフトウェアがインストールされた端末デバイスは、(図4に示されたように)差分ファイルP3をダウンロードしインストールすることにより、対象ソフトウェアをV4に更新することができる。
上記は単なる例であり、本出願のこの実施形態におけるアドレス空間は、コードセグメント識別子またはコード行の行番号に限定されないことに留意されたい。例えば、本出願のこの実施形態におけるアドレス空間はまた、コンピュータ内の記憶ユニットのアドレス空間によって表されてもよい。例えば、アドレス空間は、第Xバイトの記憶ユニットから第Yバイトの記憶ユニットまで、例えば、アドレス0x0000からアドレス0x0009までの空間であってもよく、言い換えれば、アドレス空間は、第1バイトの記憶ユニットから第9バイトの記憶ユニットまでの空間であり、各記憶ユニットは1バイトのデータを記憶する。
上記は、差分ファイルを生成するプロセスを記載した。差分ファイルは一連の差分動作命令を含み、差分動作命令は時系列の実行順序に従って配置されてもよいことが分かる。上述されたように、本出願のこの実施形態における差分動作命令は、命令タイプおよび差分データを含む。図4に示された「追加」および「削除」は命令タイプである。以下では、差分データおよび命令タイプを詳細に記載する。
本出願のこの実施形態における差分データは、以下のうちの1つまたは複数を含むが、それらに限定されない。
第1のアドレス空間情報、第2のアドレス空間情報、第1のデータ、または第2のデータ。
第1のアドレス空間情報は、旧バージョンの対象ソフトウェア内のアドレス空間を示すために使用され、第2のアドレス空間情報は、新バージョンの対象ソフトウェア内のアドレス空間を示すために使用され、第1のデータは旧バージョンの対象ソフトウェア内のデータであり、第2のデータは新バージョンの対象ソフトウェア内のデータである。説明を容易にするために、以下の説明では、第1のバージョンの対象ソフトウェア内の、第1のアドレス空間情報によって示されたアドレス空間は、略して旧アドレス空間と呼ばれ、新バージョンの対象ソフトウェア内の、第2のアドレス空間情報によって示されたアドレス空間は、略して新アドレス空間と呼ばれ、第1のデータは略して旧データと呼ばれ、第2のデータは略して新データと呼ばれる。
理解および説明を容易にするために、以下では、第1のバージョンに含まれる第1のアドレス空間は旧アドレス空間と呼ばれ、第2のバージョンに含まれる第2のアドレス空間は新アドレス空間と呼ばれ、第1のアドレス空間に格納されたデータ(すなわち、本出願における第1のデータ)は旧データと呼ばれ、第2のアドレス空間に格納されたデータ(すなわち、本出願における第2のデータ)は新データと呼ばれる。
本出願のこの実施形態における命令タイプは、以下のうちの1つまたは複数を含むが、それらに限定されない。
無視命令、シフト命令、追加命令、削除命令、および置換命令。
以下では、上記の命令タイプを詳細に記載する。
(1)無視命令は、新バージョンの対象ソフトウェアのデータであり、旧バージョンの対象ソフトウェアのデータと同じデータの一部を示すために使用され、同じデータは差分データによって示される。無視命令の場合、新バージョンおよび旧バージョンは、対応する差分データに含まれる同じアドレス空間を有することが理解されよう。新バージョンおよび旧バージョンは同じアドレス空間を有するので、アドレス空間のこの部分は旧アドレス空間と呼ばれてもよく、新アドレス空間と呼ばれてもよいことを理解されたい。
(2)シフト命令は、旧アドレス空間内のデータ(すなわち、旧データ)を新アドレス空間に移すように命令するために使用される。
(3)追加命令は、旧バージョンに新アドレス空間を挿入し、新アドレス空間に格納された新データを挿入するように命令するために使用される。図4に示されたように、追加命令は、旧バージョンの対象ソフトウェア(対応するソフトウェアコード)に基づいて、新アドレス空間を追加または挿入する、例えば、新コード行および新データを挿入するように命令するために使用される。例えば、新データは、新しく挿入されたアドレス空間内で編集されたプログラムコードである。
(4)削除命令は、旧バージョンの旧アドレス空間を削除するように命令するために使用される。旧アドレス空間を削除することは、旧アドレス空間に格納されている旧データを削除することであることを理解されたい。図4に示されたように、バージョン番号V2の対象ソフトウェアに基づいてバージョン番号V3の対象ソフトウェアが生成されると、2行目のコードが削除される。削除が完了した後、元の旧バージョンの第3行が第2行になることを理解されたい。
(5)置換命令は、旧バージョンの旧アドレス空間に格納されている旧データを新データと置き換えるように命令するために使用される。
上記では、差分動作命令を記載した。差分ファイルを使用して対象ソフトウェアを更新するとき、端末デバイスは、各差分動作命令に含まれる差分データおよび命令タイプに基づいて対応する差分動作を実行して、新バージョンの対象ソフトウェアを取得する。
例えば、表1は、本出願のこの実施形態において提供された差分更新パッケージに含まれる差分動作命令の具体例を示す。表1の行の順序は、差分更新パッケージに含まれる差分動作命令の実行順序を示す。
表1は単なる例であることに留意されたい。本出願のこの実施形態では、差分更新パッケージ内の差分動作命令に含まれる命令タイプは限定されない。例えば、無視命令、シフト命令、追加命令、削除命令、および置換命令のうちの1つのみが含まれるか、または前述の命令のうちのいくつかが含まれ、例えば、無視命令およびシフト命令が含まれ、もしくは削除命令および置換命令が含まれるか、または前述の命令のすべてが含まれ、例えば、無視命令、シフト命令、追加命令、削除命令、および置換命令が含まれる。
表1の第1行から、差分動作命令1の中の無視命令に対応する差分データにおいて、旧アドレス空間はコード行1~100であることが分かり、これは、旧バージョンの対象ソフトウェアの1番目から100番目のコード行と比較して、新バージョンの対象ソフトウェアの1番目から100番目のコード行が変化しない、言い換えれば、新バージョンの対象ソフトウェアのソフトウェアコードの1番目から100番目のコード行が、旧バージョンの対象ソフトウェアのソフトウェアコードの1番目から100番目のコード行と同じであることを意味する。
表1の第2行から、差分動作命令2の中のシフト命令に対応する差分データにおいて、旧アドレス空間はコード行101および102であり、新アドレス空間はコード行201および202であることが分かる。この場合、端末デバイスによって実行される、差分動作命令に対応する差分動作は、旧バージョンの対象ソフトウェアのソフトウェアコードの101番目および102番目のコード行(101番目および102番目のコード行のプログラムコード)を201番目および220番目のコード行に移すことである。
表1の第3行から、差分動作命令3の中の追加命令に対応する差分データにおいて、新アドレス空間はコード行300であることが分かる。この場合、端末デバイスによって実行される、差分動作命令に対応する差分動作は、データがyyyyである新コード行を対象ソフトウェアのソフトウェアコードのコード行300に挿入することである。新コード行が挿入された後、旧バージョン内の300番目の行は新バージョンの301番目の行になることが理解されよう。
表1の第4行から、差分動作命令4の中の削除命令に対応する差分データにおいて、旧アドレス空間はコード行400であることが分かる。この場合、端末デバイスによって実行される、差分動作命令に対応する差分動作は、旧アドレス空間内の400番目のコード行を削除することであり、削除される具体的なデータは400番目のコード行に格納されたデータであり、それはccccである。
表1の第5行から、差分動作命令5の中の置換命令に対応する差分データにおいて、旧アドレス空間はコード行500であることが分かる。この場合、端末デバイスによって実行される、差分動作命令に対応する差分動作は、旧アドレス空間内の500番目のコード行のプログラムコードaaaaaをbbbbと置き換えることである。
端末デバイスは、表1に示された差分動作命令1~5に対応する差分動作を順番に実行して、新バージョンの対象ソフトウェアを取得する、すなわち、対象ソフトウェアを現在の旧バージョンから新バージョンに更新する。結論として、端末デバイスが表1に示された差分更新パッケージを使用して対象ソフトウェアを更新するプロセスは、以下の通りである。
ステップ1.101番目および102番目のコード行(プログラムコード)を201番目および202番目のコード行に移す。
ステップ2.新コード行を300番目のコード行に挿入し、コード行のデータはyyyyである。
ステップ3.400番目のコード行を削除する。400番目のコード行を削除することは、400番目のコード行のデータccccを削除することであることを理解されたい。
ステップ4.現在のバージョンの対象ソフトウェアの500番目のコード行のデータbbbbをデータaaaaaと置き換える。
無視命令を実行することは、対象ソフトウェアを修正しないことであると理解されてもよく、したがって、前述のステップでは記載されない。
上記では、差分更新パッケージ、および端末デバイスが差分更新パッケージを使用して対象ソフトウェアを更新するプロセスを記載した。図5は、本出願の一実施形態による、差分更新パッケージに基づいて差分ロールバックパッケージが生成されるシナリオの概略図である。図5に示されたシナリオを参照して、以下では、端末デバイスが差分更新パッケージに基づいて差分ロールバックパッケージを生成するプロセスを記載する。
最初に、差分更新パッケージの内容が構文解析されて、表1に示された時系列の実行順序に従って配置された差分動作命令が取得される。次いで、差分動作命令が新しい順に再配置され、各差分動作命令は、差分動作命令に対応する逆差分動作命令と置き換えられて、差分ロールバックパッケージが生成される。差分ロールバックパッケージは、新バージョンの対象ソフトウェアをロールバックするために使用され、その結果、対象ソフトウェアを対象ソフトウェアの旧バージョンにロールバックすることができる。
差分動作命令に対応する逆差分動作命令は、差分動作命令に対応する第1の差分動作が実行された後に逆差分動作命令に対応する第2の差分動作を実行することを示し、その結果、第1の差分動作が実行される前に対象ソフトウェア(対応するソフトウェアコード)が存在していた状態へのロールバックを実現することができる。
例えば、差分動作命令が第1のアドレス空間内のデータを第2のアドレス空間に移すことであり、差分動作命令に対応する逆方向命令が第2のアドレス空間内のデータを第1のアドレス空間に移すことであると仮定する。
無視命令はロールバックに影響を与えず、無視命令に対応する逆差分動作命令も無視命令であるので、無視命令の実行は差分更新パッケージおよび/もしくは差分ロールバックパッケージ内でランダムにスケジュールされ、または差分動作命令は、差分更新パッケージおよび差分ロールバックパッケージに含まれなくてもよい。これは本出願のこの実施形態で限定されない。
表2は、表1に示された差分更新パッケージに対応する差分ロールバックパッケージの具体例を示す。差分ロールバックパッケージは、5つの差分動作命令を含む。表2の各行は差分動作命令を示す。差分更新パッケージ内の差分動作命令と同様に、各差分動作命令は命令タイプおよび差分データを含んでもよい。表2の行の順序は、差分ロールバックパッケージに含まれる差分動作命令の実行順序を示す。
本出願のこの実施形態では、端末デバイスが表2に示された差分ロールバックパッケージを使用して対象ソフトウェアをロールバックするプロセスは、以下の通りである。
ステップ1.現在のバージョンの対象ソフトウェアの500番目のコード行のデータ(プログラムコード)aaaaaをデータbbbbと置き換える。
ステップ2.新コード行を400番目のコード行に挿入し、コード行のデータはxxxxである。
ステップ3.300番目のコード行を削除する。300番目のコード行を削除することは、300番目のコード行のデータyyyyを削除することであることを理解されたい。
ステップ4.201番目および202番目のコード行を101番目および102番目のコード行に移す。
上述されたように、無視命令を実行することは、対象ソフトウェアを修正しないことであると理解されてもよく、したがって、前述のステップでは記載されない。
上述されたように、差分ロールバックパッケージを使用して対象ソフトウェアをロールバックした後に、端末デバイスは、対象ソフトウェアを新バージョンから旧バージョンにロールバックすることができる。
本出願のこの実施形態におけるシステムでは、差分ロールバックパッケージを生成することができる複数のデバイスが存在し、差分ロールバックパッケージを生成する複数の方式も存在することに留意されたい。以下の説明では、例が使用される。
生成方式1:ソフトウェア開発デバイスによって生成される。
ソフトウェア開発デバイスは、上記の方式で差分更新パッケージに基づいて差分ロールバックパッケージを生成し、差分ロールバックパッケージを更新サーバに送信し、その結果、更新サーバは差分ロールバックパッケージを格納する。
例えば、端末デバイスは、差分更新パッケージをダウンロードするときに差分ロールバックパッケージをダウンロードすることもできる。差分更新パッケージを使用して対象ソフトウェアが更新された後に、ロールバック要件が存在する場合、ダウンロードされた差分ロールバックパッケージは、対象ソフトウェアをロールバックするために直接使用される。このようにして、対象ソフトウェアのロールバック要件を即座にかつ迅速に対応することができ、対象ソフトウェアを旧バージョンにロールバックするのに費やされる時間を短縮することができる。
別の例では、端末デバイスは、対象ソフトウェアに対するロールバック要件が存在することを検出したときに、更新サーバから対象ソフトウェアの差分ロールバックパッケージをダウンロードすることができる。このようにして、差分ロールバックパッケージは、端末デバイスの記憶空間を長時間占有しないように防止することができる。
具体的には、異なるシナリオにおいて対象ソフトウェアに対する異なるタイプのロールバック要件が存在する。以下の説明では、2つのタイプが列挙される。
タイプ1:端末デバイスが対象ソフトウェアに対するロールバック要件を有する。
例えば、対象ソフトウェアが更新された後に、対象ソフトウェアに対するロールバック要件が存在することを端末デバイスが検出した場合、例えば、対象ソフトウェアが異常動作している場合、対象ソフトウェアを起動することができない場合、対象ソフトウェアがクラッシュした場合、または対象ソフトウェアにbugが存在する場合、例えば、対象ソフトウェアはユーザ操作に応答することができず、端末デバイスは対象ソフトウェアのロールバックをトリガすることができる。例えば、対象ソフトウェアはロールバック命令を生成し、ロールバック命令は、対象ソフトウェアに対してロールバック動作を実行するように命令し、例えば、ロールバック命令は、アプリケーション名などの対象ソフトウェアの識別子、および対象ソフトウェアがロールバックされるバージョンのバージョン番号を搬送する。バージョン番号は、対象ソフトウェアの差分ロールバックパッケージのバージョン番号と同じであってもよく、事前設定された対応関係に基づいて決定されてもよい。
タイプ2:ユーザが対象ソフトウェアに対するロールバック要件を有する。
対象ソフトウェアの更新が完了した後に、例えば、いくつかのソフトウェアの異なるバージョンが異なる機能を有し、新バージョンの更新された対象ソフトウェアがユーザによって頻繁に使用される機能をもたない場合に、ユーザが対象ソフトウェアを前のバージョン(旧バージョン)にロールバックすることを望む場合、ユーザは、ロールバックを実行するように端末デバイスをトリガすることができる。例えば、ユーザは、旧バージョンの対象ソフトウェアの完全なインストールファイルをインストールするように端末デバイスを制御するか、または端末デバイスはロールバック機能ボタンを有し、ロールバック機能ボタンは、ロールバックされるソフトウェアを選択するために使用されてもよい。ユーザは、機能ボタンに対する操作を実行して、対象ソフトウェアをロールバックするように端末デバイスをトリガすることができる。
前述のロールバック要件は単なる例であり、これは本出願のこの実施形態では限定されない。
生成方式2:端末デバイスによって生成される。
端末デバイスは、更新サーバから差分更新パッケージをダウンロードし、差分更新パッケージに基づいて差分ロールバックパッケージを生成する。可能な実装形態は、差分更新パッケージを使用して対象ソフトウェアを更新する前に、端末デバイスが差分更新パッケージに基づいて差分ロールバックパッケージを生成し、差分ロールバックパッケージを格納することである。差分更新パッケージに基づく対象ソフトウェアの更新が完了した後に、対象ソフトウェアに対するロールバック要件が検出された場合、端末デバイスは、差分ロールバックパッケージを使用して対象ソフトウェアをロールバックすることができる。
別の可能な実装形態は以下の通りである。端末デバイスが差分更新パッケージをバックアップする。差分更新パッケージを使用して対象ソフトウェアを更新した後に、対象ソフトウェアに対するロールバック要件が検出された場合、端末デバイスは、バックアップ差分更新パッケージを使用して差分ロールバックパッケージを生成し、生成された差分ロールバックパッケージを使用して対象ソフトウェアをロールバックする。任意選択で、端末デバイスは差分更新パッケージをバックアップしなくてもよく、対象ソフトウェアに対するロールバック要件が存在することを検出したときに、更新サーバから差分更新パッケージをダウンロードしてもよい。
複数の形態の差分更新パッケージが本出願のこの実施形態に適用可能であることに留意されたい。異なる形態の差分更新パッケージの場合、差分更新パッケージを使用して差分ロールバックパッケージを生成する具体的な方式も異なってもよい。以下の説明では、例が使用される。
形態1:差分データが、旧アドレス空間、旧データ、新アドレス空間、および新データを含む。
上述された表1を参照されたい。差分更新パッケージの差分データは、旧バージョンのアドレス空間、旧データ、新バージョンのアドレス空間、および新データを含む。
差分更新パッケージに含まれるデータは完全であるので、この形態の差分更新パッケージの場合、端末デバイスは、差分更新パッケージに基づいて差分ロールバックパッケージを直接生成することができる。具体的な生成方式については、前述の関連する説明を参照されたい。詳細はここでは再び記載されない。
形態2:差分データが旧データを含まない。
表1が例として使用される。表1に示された差分更新パッケージに含まれるデータは完全である。一例では、差分更新パッケージの差分は、差分更新パッケージが代替として旧データを含まなくてもよいことである。表3は、表1に示された差分更新パッケージが旧データを含まない形態を示す。
表3は単なる例にすぎない。差分更新パッケージが旧データを含まないとき、旧データの列は表3から削除されてもよい。
表3に示された差分更新パッケージは、対象ソフトウェアを更新する差分動作に影響を与えないことが分かる。しかしながら、この形態の差分更新パッケージに含まれるデータは不完全であるので、端末デバイスは、差分更新パッケージに基づいて差分ロールバックパッケージを直接生成することができない。したがって、差分更新パッケージを改善するために、端末デバイスは、旧アドレス空間に格納され、無視命令を除く差分命令に対応する差分データによって示された差分データを取得して、差分更新パッケージまたは表3を補足し、補足された差分更新パッケージまたは表3に基づいて差分ロールバックパッケージを生成することができる。
端末デバイスがECUであり、更新サーバがOTAクラウドサーバである例が、特定の実施形態における本出願の技術的解決策を記載するために以下で使用される。
図6は、本出願の一実施形態による、ソフトウェア更新およびソフトウェアバージョンロールバックを実行するために車両によって使用されるシステムアーキテクチャの概略図である。システムは、ソフトウェア開発デバイス、OTAクラウドサーバ、およびECUを含む。
ECUによってソフトウェアバージョンロールバックを実施するプロセスは、図6および実施形態1~3に示されたシナリオを参照して以下に記載される。
実施形態1
実施形態1の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージを生成する。
例えば、ソフトウェア開発デバイスによって差分更新パッケージを生成するプロセスは、対象ソフトウェアの新バージョンを対象ソフトウェアの旧バージョンと比較することと、本出願の一実施形態に記載された方式で差分更新パッケージを生成することとを含む。新アドレス空間、旧アドレス空間、および新データに加えて、差分更新パッケージ内の差分データは、旧データをさらに含んでもよい。例えば、差分更新パッケージが、命令タイプが削除である差分動作命令を含む場合、削除対象の旧アドレス空間に加えて、差分動作命令は、旧アドレス空間に格納されているデータ、すなわち、旧データをさらに含んでもよい。
別の例では、ソフトウェア開発デバイスによって差分更新パッケージを生成するプロセスは、対象ソフトウェアの新バージョンを対象ソフトウェアの旧バージョンと比較することと、既存のメカニズムを使用して差分更新パッケージを生成することとを含む。既存のメカニズムを使用して生成された差分更新パッケージは旧データを含まない、すなわち、差分更新パッケージの形態は形態2であることに留意されたい。したがって、ソフトウェア開発デバイスは、差分更新パッケージに旧データをさらに追加して、形態1の差分更新パッケージを取得することができ、その結果、端末デバイスは、差分更新パッケージに基づいて差分ロールバックパッケージを直接生成することができる。
ステップ2.ソフトウェア開発デバイスがOTAサーバに差分更新パッケージを送信する。
任意選択で、ソフトウェア開発デバイスはOTAサーバに統合されてもよい。ソフトウェア開発デバイスがOTAサーバに統合されている場合、ステップ2は必須のステップではなく任意選択のステップである。
ステップ3.ECUがOTAサーバから対象ソフトウェアの差分更新パッケージをダウンロードする。
ステップ4.ECUが差分更新パッケージに基づいて差分ロールバックパッケージを生成する。
ステップ5.ECUが差分更新パッケージを使用して対象ソフトウェアを更新して、新バージョンのソフトウェアを取得する。
ステップ6.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECUが差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
ステップ7.ECUが新バージョンのソフトウェアを置き換えるために旧バージョンのソフトウェアをインストールする。
前述のステップ4は単なる例であり、差分ロールバックパッケージは、対象ソフトウェアに対するロールバック要件が存在することをECUが検出した後に、ECUによって生成されてもよいことに留意されたい。以下では、実施形態2においてこの方式の手順を記載する。
実施形態2
実施形態2の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージを生成する。
ステップ2.ソフトウェア開発デバイスがOTAサーバに差分更新パッケージを送信する。
ステップ3.ECUがOTAサーバから対象ソフトウェアの差分更新パッケージをダウンロードする。
ステップ4.ECUが、差分更新パッケージが旧データを含むかどうか(すなわち、差分更新パッケージの形態が上述された形態1であるかどうか)を判定し、差分更新パッケージが旧データを含む場合、ECUが差分更新パッケージをバックアップし、差分更新パッケージが旧データを含まない場合、ECUが、対象ソフトウェアの現在のバージョンに基づいて、差分更新パッケージに含まれる差分動作命令に対応する旧データを取得し、旧データを差分更新パッケージに追加し、旧データが追加された差分更新パッケージをバックアップする。旧データを追加する具体的な方式については、前述の関連する説明を参照されたい。詳細はここでは再び記載されない。
ステップ5.ECUが差分更新パッケージを使用して対象ソフトウェアを更新して、新バージョンのソフトウェアを取得する。
ステップ6.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECUが、バックアップ差分更新パッケージに基づいて差分ロールバックパッケージを生成し、差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
ステップ7.ECUが新バージョンのソフトウェアを置き換えるために旧バージョンのソフトウェアをインストールする。
前述の実施形態1および実施形態2では、ECUは差分ロールバックパッケージを生成する。本出願では、差分ロールバックパッケージはまた、ソフトウェア開発デバイスによって生成されてもよい。実施形態3は、ソフトウェア開発デバイスが差分ロールバックパッケージを生成する場合に、ECUが対象ソフトウェアのソフトウェアバージョンロールバックを実行する手順を記載する。
実施形態3
実施形態3の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージおよび差分ロールバックパッケージを生成する。
ステップ2.ソフトウェア開発デバイスが差分更新パッケージおよび差分ロールバックパッケージをOTAサーバに送信する。
ステップ3.ECUがOTAサーバから対象ソフトウェアの差分更新パッケージおよび差分ロールバックパッケージをダウンロードする。
ステップ4.ECUが差分更新パッケージを使用して対象ソフトウェアを更新して、新バージョンのソフトウェアを取得する。
ステップ5.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECUが差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
実施形態1~実施形態3におけるECUは、対象ソフトウェアがインストールされたECUであってもよく、別のECUであってもよい。例えば、対象ソフトウェアがインストールされたECUがOTA更新サーバと通信および対話することができるとき、ECUは、OTAサーバから対象ソフトウェアの差分更新パッケージおよび差分ロールバックパッケージを直接ダウンロードすることができ、または対象ソフトウェアの差分更新パッケージおよび差分ロールバックパッケージは、OTA更新サーバと通信および対話することができる別のECUによってダウンロードされてもよく、次いで、差分更新パッケージおよび差分ロールバックパッケージは、対象ソフトウェアがインストールされたECUに送信される。これは本出願のこの実施形態で限定されない。
図7を参照されたい。図7は、本出願の一実施形態による、ソフトウェア更新およびソフトウェアバージョンロールバックを実行するために車両によって使用される別のシステムアーキテクチャの概略図である。システムは、ソフトウェア開発デバイス、OTAクラウドサーバ、ECU master、およびECU slave(スレーブノード)を含む。
ECU masterは、マスタノードとして使用されるECUであり、ECU slaveの更新を監視し集中制御するように構成されたノードである。ECU masterは、主に車両更新を集中制御するために使用される。車両更新中、ECU masterは、車両更新に必要な車両ソフトウェア更新パッケージをOTAからダウンロードする。車両ソフトウェア更新パッケージは、ECU masterおよび各ECU slaveに対応する差分更新パッケージを含む。ECU masterは、車両ソフトウェア更新パッケージを分割し、分割によって取得された各差分更新パッケージを対応するECU slaveに送信することができる。
ECU slaveは、ECU masterのスレーブノードであり、OTAクラウドサーバと通信および対話する能力を有してもよい。例えば、ECU slave上の特定のソフトウェアが更新される必要があるとき、ECU slaveがOTAクラウドサーバと通信および対話する能力を有する場合、ECU slaveは、OTAサーバからソフトウェアの差分更新パッケージをダウンロードし、ソフトウェアを更新することができる。あるいは、ECU masterは、ECU slaveのソフトウェア更新を制御および管理することができる。例えば、OTAクラウドサーバが特定のECU slaveにインストールされたソフトウェアの新バージョンのソフトウェア更新パッケージをリリースしたことを検出した後に、ECU masterは、OTAクラウドサーバからソフトウェアの新バージョンのソフトウェア更新パッケージをダウンロードし、ソフトウェア更新パッケージをECU slaveに送信する。
本出願のこの実施形態では、ECU masterとECU slaveの両方が差分更新パッケージに基づいて差分ロールバックパッケージを生成することができ、ECU masterとECU slaveの両方がOTAと通信してファイルをダウンロードすることができる。あるいは、ECU masterは、ECU slave上のソフトウェアを更新することに関与し、ECU masterは、ECU slaveにインストールされた対象ソフトウェアの差分更新パッケージおよび/または差分ロールバックパッケージをOTAからダウンロードし、差分更新パッケージおよび/または差分ロールバックパッケージをECU slaveに送信する。
ECUによってソフトウェアバージョンロールバックを実施するプロセスは、図7および実施形態4~6に示されたシナリオを参照して以下に記載される。
実施形態4
実施形態4の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージを生成する。
ステップ2.ソフトウェア開発デバイスがOTAサーバに差分更新パッケージを送信する。
ステップ3.ECU masterがOTAサーバから車両ソフトウェア更新パッケージをダウンロードする。
ステップ4.ECU masterが車両ソフトウェア更新パッケージを分割し、分割によって取得された差分更新パッケージに基づいて差分ロールバックパッケージを生成し、同じソフトウェアの差分更新パッケージおよび差分ロールバックパッケージを対応するECU slaveに送信する。
ステップ5.ECU slaveが、それぞれの差分更新パッケージを使用してそれぞれの対象ソフトウェアを更新して、新バージョンのソフトウェアを取得し、旧バージョンのソフトウェアを置き換える。
ステップ7.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECU slaveが差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
実施形態5
実施形態5の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージを生成する。
ステップ2.ソフトウェア開発デバイスがOTAサーバに差分更新パッケージを送信する。
ステップ3.ECU masterがOTAサーバから車両ソフトウェア更新パッケージをダウンロードする。
ステップ4.ECU masterが車両ソフトウェア更新パッケージを分割し、分割によって取得された各差分更新パッケージを対応するECU slaveに送信する。
ステップ5.ECU slaveがECU masterから差分更新パッケージを受信し、差分更新パッケージを使用して差分ロールバックパッケージを生成する。
ステップ6.ECU slaveが、それぞれの差分更新パッケージを使用してそれぞれの対象ソフトウェアを更新して、新バージョンのソフトウェアを取得し、旧バージョンのソフトウェアを置き換える。
ステップ6.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECU slaveが差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
実施形態6
実施形態6の手順は、以下のステップを含んでもよい。
ステップ1.ソフトウェア開発デバイスが対象ソフトウェアの差分更新パッケージを生成する。
ステップ2.ソフトウェア開発デバイスがOTAサーバに差分更新パッケージを送信する。
ステップ3.ECU masterがOTAサーバから車両ソフトウェア更新パッケージをダウンロードする。
ステップ4.ECU masterが車両ソフトウェア更新パッケージを分割し、分割によって取得された各差分更新パッケージを対応するECU slaveに送信する。
ステップ5.ECU slaveがECU masterから差分更新パッケージを受信し、差分更新パッケージが旧データを含むかどうかを判定し、差分更新パッケージが旧データを含む場合、ECU slaveが差分更新パッケージをバックアップし、差分更新パッケージが旧データを含まない場合、ECU slaveが差分更新パッケージをバックアップした後に旧データをバックアップ差分更新パッケージに追加する。
ステップ5は単なる例であることに留意されたい。ECU slaveは、差分更新パッケージが旧データを含むかどうかを判定する前に、差分更新パッケージをバックアップすることができる。言い換えれば、ECU slaveは、バックアップ遅延を低減するために、2つのプロセスで判定動作およびバックアップ動作をそれぞれ実行することができる。判定動作およびバックアップ動作は、本出願のこの実施形態では限定されない。
ステップ6.ECU slaveが、それぞれの差分更新パッケージを使用してそれぞれの対象ソフトウェアを更新して、新バージョンのソフトウェアを取得し、旧バージョンのソフトウェアを置き換える。
ステップ7.対象ソフトウェアに対するロールバック要件が存在することを検出した後に、ECU slaveが、バックアップ差分更新パッケージに基づいて差分ロールバックパッケージを生成し、差分ロールバックパッケージを使用して対象ソフトウェアをロールバックして、旧バージョンのソフトウェアを取得する。
実施形態4は単なる例であり、前述の実施形態1~実施形態3に示された方法が車両更新に適用されてもよいことに留意されたい。例えば、ステップ1において、ソフトウェア開発デバイスは、車両ソフトウェアロールバックパッケージを生成することができる。例えば、ソフトウェア開発デバイスは、車両更新用の各ソフトウェアの差分更新パッケージに基づいて差分ロールバックパッケージを生成し、すべてのソフトウェアの差分ロールバックパッケージを車両ソフトウェアロールバックパッケージにパッキングし、車両ソフトウェアロールバックパッケージをOTAサーバに格納する。ECU masterはまた、各ソフトウェアの差分更新パッケージまたは車両ソフトウェア更新パッケージをバックアップすることができる。ECU slaveに対するソフトウェアバージョンロールバック要件が存在することを検出した後に、ECU masterは、ソフトウェアのバックアップ差分更新パッケージを使用して差分ロールバックパッケージを生成し、差分ロールバックパッケージをECU slaveに送信する。詳細については、前述の関連する説明を参照されたい。詳細はここでは再び記載されない。
前述の実施形態に記載されたソフトウェアバージョンロールバック方式では、旧バージョンのソフトウェアの完全なインストールファイルが車両においてバックアップされる必要はなく、差分更新パッケージのみが格納される必要があり、差分更新パッケージのサイズは、旧バージョンのソフトウェアの完全なインストールファイルのサイズよりもはるかに小さい。このようにして、記憶空間が節約される。対象ソフトウェアに対するロールバック要件が検出されたとき、旧バージョンのソフトウェアの完全なインストールファイルがOTAクラウドサーバ側から再ダウンロードされる必要はなく、本出願の実施形態において提供された方法に従って差分更新パッケージに基づいて差分ロールバックパッケージが生成されてもよく、その結果、時間内にロールバックを実行することができ、ロールバックに費やされる時間が短縮される。加えて、差分ロールバックパッケージを生成する方式は簡単かつ効率的であり、計算オーバーヘッドは低い。
前述の概念と同じく、図8に示されたように、本出願の一実施形態は、前述の方法における端末デバイスの機能を実施するように構成された装置800をさらに提供する。例えば、装置はソフトウェアモジュールまたはチップシステムであってもよい。本出願のこの実施形態では、チップシステムはチップを含んでもよく、チップおよび別の個別部品を含んでもよい。装置800は、処理モジュール801および通信モジュール802を含んでもよい。
本出願のこの実施形態では、モジュール分割は一例であり、単なる論理機能分割にすぎない。実際の実装形態では、別の分割方式があってもよい。加えて、本出願の実施形態における機能的モジュールは1つのプロセッサに統合されてもよく、物理的に単独で存在してよく、または2つ以上のモジュールは1つのモジュールに統合される。統合されたモジュールはハードウェアの形態で実装されてもよく、ソフトウェア機能モジュールの形態で実装されてもよい。
例えば、装置800が図2に示された手順で端末デバイスの機能を実施するとき、通信モジュール802は、対象ソフトウェアの差分更新パッケージを取得するように構成され、差分更新パッケージは少なくとも1つの差分動作命令を含み、差分動作命令は、対象ソフトウェアの第1のバージョンと対象ソフトウェアが更新されるべき第2のバージョンとの間の差を示すために使用される。
処理モジュール801は、差分更新パッケージを使用して対象ソフトウェアの現在のバージョンを更新するように構成され、対象ソフトウェアの現在のバージョンは、第1のバージョンから第2のバージョンに更新され、対象ソフトウェアに対するロールバック要件が検出されると、差分更新パッケージを使用して対象ソフトウェアに対してロールバックを実行して、対象ソフトウェアの現在のバージョンを第1のバージョンにロールバックする。
可能な設計では、差分更新パッケージは少なくとも1つの差分動作命令を含み、差分動作命令は命令タイプおよび差分データを含み、差分データは、第1のバージョンの第1のアドレス空間および/または第1のアドレス空間に格納された第1のデータと、第2のバージョンの第2のデータおよび/または第2のアドレス空間とを含む。
可能な設計では、処理モジュール801は、差分更新パッケージに基づいて差分ロールバックパッケージを生成するようにさらに構成される。
差分ロールバックパッケージは、事前設定された順序に従って、差分更新パッケージ内に配置された少なくとも1つの差分動作命令を再配置し、再配置された各差分動作命令を差分動作命令に対応する逆差分動作命令と置き換えることによって取得される。差分動作命令に対応する逆差分動作命令は、差分動作命令に従って第1の差分動作が実行された後に逆差分動作命令に従って第2の差分動作を実行して、対象ソフトウェアのバージョンを第1の差分動作が実行される前に存在していた状態にロールバックすることを示す。
処理モジュール801は、具体的に、差分ロールバックパッケージを使用して対象ソフトウェアをロールバックするように構成される。
可能な設計では、命令タイプは、以下のタイプ:無視、シフト、挿入、削除、または置換を含むが、それらに限定されない。
可能な設計では、差分動作命令の命令タイプがシフトであるとき、差分動作命令は、第1のデータを第1のアドレス空間から第2のアドレス空間にシフトするように命令するために使用される。第2のアドレス空間は、第1のシステムにおける第1のアドレス空間以外のアドレス空間である。差分動作命令に対応する逆差分動作命令は、第2のアドレス空間内の第1のデータを第1のアドレス空間にシフトバックすることである。
可能な設計では、差分動作命令の命令タイプが挿入であるとき、差分動作命令は、第1のシステムに第2のアドレス空間を追加し、差分動作命令に含まれる第2のデータを第2のアドレス空間に追加するように命令するために使用される。差分動作命令に対応する逆差分動作命令は、第2のアドレス空間を削除することである。
可能な設計では、差分動作命令の命令タイプが削除であるとき、差分動作命令は、第1のアドレス空間および第1のアドレス空間に格納された第1のデータを削除するように命令するために使用される。差分動作命令に対応する逆差分動作命令は、第1のアドレス空間を追加し、第1のアドレス空間に第1のデータを追加することである。
可能な設計では、差分動作命令の命令タイプが置換であるとき、差分動作命令は、第1のアドレス空間内の第1のデータを第2のデータと置き換えるように命令するために使用される。差分動作命令に対応する逆差分動作命令は、第1のアドレス空間内の第2のデータを第1のデータと置き換えることである。
可能な設計では、端末デバイスは車載端末デバイスである。
図9は、本出願の一実施形態による装置900を示す。図9に示された装置は、図8に示された装置のハードウェア回路の一実装形態であってもよい。通信装置は、図2に示されたフローチャートに適用可能であり、通信装置は、前述の方法実施形態における端末デバイスの機能を実行する。説明を容易にするために、図9は通信装置の主要構成要素のみを示す。
図9に示された装置900は、本出願の実施形態において提供された方法における端末デバイスの機能を実施するように構成された少なくとも1つのプロセッサ920を含む。
装置900は、プログラム命令および/またはデータを記憶するように構成された少なくとも1つのメモリ930をさらに含んでもよい。メモリ930はプロセッサ920に結合される。本出願のこの実施形態における結合は、電気的形態、機械的形態、または別の形態の、装置、ユニット、またはモジュール間の間接結合または通信接続であってもよく、装置、ユニット、またはモジュール間の情報交換に使用される。プロセッサ920は、メモリ930と協調して動作することができる。プロセッサ920は、メモリ930に記憶されたプログラム命令を実行することができる。少なくとも1つのメモリのうちの少なくとも1つは、プロセッサに含まれてもよい。
装置900は、装置900内の装置が別のデバイスと通信することができるように、伝送媒体を介して別のデバイスと通信するように構成された通信インターフェース910をさらに含んでもよい。本出願のこの実施形態では、通信インターフェースは、トランシーバ、回路、バス、モジュール、または別のタイプの通信インターフェースであってもよい。本出願のこの実施形態では、トランシーバは、独立した受信機、独立した送信機、受信機能および送信機能が統合されたトランシーバ、またはインターフェース回路であってもよい。プロセッサ920は、通信インターフェース910を介してデータを受信および送信し、図2に対応する実施形態において端末デバイスによって実行される方法を実施するように構成される。
例えば、装置900が図2に示された手順で端末デバイスの機能を実施するとき、通信インターフェース910は、対象ソフトウェアの差分更新パッケージを取得するように構成され、差分更新パッケージは少なくとも1つの差分動作命令を含み、差分動作命令は、対象ソフトウェアの第1のバージョンと対象ソフトウェアが更新されるべき第2のバージョンとの間の差を示すために使用される。一例では、通信インターフェース910は、更新サーバとデータを直接交換し、例えば、差分更新パッケージおよび/または差分ロールバックパッケージをダウンロードすることができる。別の例では、装置900は、別のデバイスを使用してデータを取得することができる。例えば、装置900はECUであり、ECUは通信インターフェース910を含み、ECUはT-BOXを使用してデータを取得することができ、T-BOXは更新サーバとデータを交換することができる。例えば、T-BOXは、更新サーバから差分更新パッケージおよび/または差分ロールバックパッケージをダウンロードし、ECUは、通信インターフェース910を介して、T-BOXにダウンロードされた差分更新パッケージおよび/または差分ロールバックパッケージを取得することができる。これは本出願のこの実施形態で限定されない。
別の例では、プロセッサ920は、差分更新パッケージを使用して対象ソフトウェアの現在のバージョンを第1のバージョンから第2のバージョンに更新し、対象ソフトウェアに対するロールバック要件が検出されると、差分更新パッケージを使用して対象ソフトウェアに対してロールバックを実行して、対象ソフトウェアの現在のバージョンを第1のバージョンにロールバックするように構成される。
プロセッサ920および通信インターフェース910によって実行される別の方法については、図2に示された方法手順の説明を参照されたい。詳細はここでは再び記載されない。
前述の実施形態に基づいて、本出願の一実施形態は、ソフトウェアバージョンロールバック装置の物理装置をさらに提供する。装置は車載端末デバイスであり、装置は、前述の図に示されたソフトウェアバージョンロールバック方法を実施するように構成される。図10を参照されたい。装置1000は、通信ユニット1001、ECU1002、およびメモリ1003を含む。通信ユニット1001、ECU1002、およびメモリ1003は接続されている。
任意選択で、通信ユニット1001、ECU1002、およびメモリ1003は、バス1004によって接続される。バス1004は、CAN(コントローラエリアネットワーク)バス、イーサネットバスなどであってもよい。バスは、アドレスバス、データバス、制御バスなどに分類されてもよい。表現を容易にするために、図10ではバスを表すために1本の太線のみが使用されているが、これは、1つのバスしかまたは1つのタイプのバスしか存在しないことを意味しない。
通信ユニット1001は、伝送媒体を介して別のデバイスと通信するように構成される。例えば、通信ユニット1001は、別のデバイスと通信するために装置1000内の装置ECU1002によって使用される。例えば、通信ユニット1001は、T-BOX(telematics BOX、テレマティクスボックス)であってもよい。
メモリ1003は、プログラム命令などを記憶するように構成される。具体的には、プログラム命令はプログラムコードを含んでもよく、プログラムコードはコンピュータ動作命令を含む。データは、対象ソフトウェアの差分更新パッケージおよび/または差分ロールバックパッケージを含んでもよい。メモリ1003は、ランダムアクセスメモリ(random access memory、RAM)を含んでもよく、または不揮発性メモリ(non-volatile memory)、例えば、少なくとも1つの磁気ディスクメモリをさらに含んでもよい。
ECU1002は、車載端末デバイスにおける特定の構成要素またはシステム内で使用されてもよい。異なる構成要素またはシステムでは、ECUは異なる名称を有してもよい。例えば、モータにおけるVCU、ギアボックスにおけるTCU、エンジンにおけるEMS、および車体制御モジュールBCMは、すべてECUによって実装されてもよい。任意選択で、車載端末デバイスにおける異なる構成要素またはシステムは、同じECUに統合されてもよい。ECU1002は、前述の実施形態において提供されたソフトウェアバージョンロールバック方法を実施するために、メモリ1003に記憶されたプログラム命令およびデータを実行して、前述の機能を実施する。通信ユニット1001、ECU1002、およびメモリ1003によって実行される他の方法については、図2に示された方法手順の説明を参照されたい。詳細はここでは再び記載されない。
本出願の実施形態では、プロセッサは、汎用プロセッサ、デジタル信号プロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイもしくは別のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理デバイス、または個別ハードウェア構成要素であってもよく、本出願の実施形態で開示された方法、ステップ、および論理ブロック図を実施または実行することができることに留意されたい。汎用プロセッサは、マイクロプロセッサまたは任意の従来のプロセッサなどであってもよい。本出願の実施形態を参照して開示された方法のステップは、ハードウェアプロセッサによって直接実行されてもよく、プロセッサ内のハードウェアとソフトウェアモジュールの組合せによって実行されてもよい。
本出願の実施形態では、「および/または」という用語は、関連付けられたオブジェクト間の関連付け関係を記述し、3つの関係を示すことができる。例えば、Aおよび/またはBは、Aのみが存在する場合、AとBの両方が存在する場合、およびBのみが存在する場合を示すことができ、AおよびBは単数形であっても複数形であってもよい。文字「/」は、通常、関連付けられたオブジェクト間の「または」関係を示す。「以下の項目(部品)のうちの少なくとも1つ」またはその同様の表現は、単数形の項目(部品)または複数形の項目(部品)の任意の組合せを含む、これらの項目の任意の組合せを指す。例えば、a、b、またはcのうちの少なくとも1つは、a、b、c、aおよびb、aおよびc、bおよびc、またはa、b、およびcを示すことができ、a、b、およびcは単数形であっても複数形であってもよい。「複数の」は2つ以上を意味する。
本出願の実施形態における「例えば」という用語は、例、例示、または説明を与えることを表すために使用される。本出願において「例」として記載された任意の実施形態または設計方式は、別の実施形態または設計方式より好ましいか、またはより多くの利点を有するものとして説明されるべきではない。正確には、「例」という用語は、具体的に概念を提示するために使用される。
任意選択で、本出願の実施形態における「第1」および「第2」などの序数は、複数のオブジェクトを区別するために使用されるが、複数のオブジェクトの順序、時系列、優先度、または重要度を限定するものではない。例えば、第1の情報および第2の情報は、単に異なるシグナリングを区別するものであり、2つのタイプの情報の内容、優先度、送信順序、重要度などの違いを示すものではない。
本出願の実施形態では、メモリは、ハードディスクドライブ(hard disk drive、HDD)またはソリッドステートドライブ(solid-state drive、SSD)などの不揮発性メモリであってもよく、ランダムアクセスメモリ(random-access memory、RAM)などの揮発性メモリ(volatile memory)であってもよい。メモリは、命令またはデータ構造の形態の予想されるプログラムコードを搬送または記憶することができ、コンピュータによってアクセスされ得る任意の他の媒体であるが、それに限定されない。本出願の実施形態におけるメモリは、代替として、記憶機能を実装することができる回路または任意の他の装置であってもよく、プログラム命令および/またはデータを記憶するように構成される。
本出願の実施形態における方法のすべてまたは一部は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せを使用して実装されてもよい。実施形態を実装するためにソフトウェアが使用されるとき、実施形態のすべてまたは一部は、コンピュータプログラム製品の形態で実装されてもよい。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされ実行されると、本発明の実施形態による手順または機能がすべてまたは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、ネットワークデバイス、ユーザ機器、または別のプログラマブル装置であってもよい。コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてもよく、コンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタに、有線(例えば、同軸ケーブル、光ファイバ、もしくはデジタル加入者回線(digital subscriber line、略してDSL))またはワイヤレス(例えば、赤外線、無線、もしくはマイクロ波)方式で送信されてもよい。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、または1つもしくは複数の使用可能な媒体を統合したサーバもしくはデータセンタなどのデータストレージデバイスであってもよい。使用可能な媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスクドライブ、または磁気テープ)、光学媒体(例えば、デジタルビデオディスク(digital video disc、略してDVD))、半導体媒体(例えば、SSD)などであってもよい。
本出願の実施形態では、論理的な矛盾がないことを前提として、実施形態は相互に参照されてもよい。例えば、方法実施形態における方法および/または用語は相互に参照されてもよく、装置実施形態における機能および/または用語は相互に参照されてもよい。例えば、装置実施形態と方法実施形態との間の機能および/または用語は、相互に参照されてもよい。
当業者は、本出願の範囲から逸脱することなく、本出願に様々な修正および変形を加えることができる。本出願は、以下の特許請求の範囲およびそれらと等価な技術によって規定される範囲内に入るという条件で、本出願のこれらの修正および変形を包含するものである。