JP6609199B2 - 組込み機器 - Google Patents
組込み機器 Download PDFInfo
- Publication number
- JP6609199B2 JP6609199B2 JP2016038574A JP2016038574A JP6609199B2 JP 6609199 B2 JP6609199 B2 JP 6609199B2 JP 2016038574 A JP2016038574 A JP 2016038574A JP 2016038574 A JP2016038574 A JP 2016038574A JP 6609199 B2 JP6609199 B2 JP 6609199B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- program
- code
- update
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Description
まず、実施の形態の詳細な説明に先立って、実施の形態の概要について説明する。図1は、実施の形態の概要にかかる組込み機器1の構成を示すブロック図である。組込み機器1は、図1に示すように、ネットワーク入出力部2と、不揮発性メモリ3と、CPU4と、アドレス変換器5とを有する。
ネットワーク入出力部2は、ネットワークを介して更新情報を受信する。更新情報は、組込み機器1のプログラム及びデータを更新するための情報である。不揮発性メモリ3は、独立して読み出し及び書き込みが可能な複数の面を備えたROMであり、例えばフラッシュメモリである。不揮発性メモリ3は、第1の面にデフォルトプログラム(更新前プログラム)が配置され、第2の面にデフォルトプログラムに対する差分プログラムが配置される。なお、差分プログラムは、ネットワーク入出力部2により受信される更新情報に含まれており、ネットワーク入出力部2が更新情報を受信後、不揮発性メモリ3に配置されることとなる。なお、差分プログラムは更新差分プログラムと呼ばれることがある。CPU4は、不揮発性メモリ3に配置されたプログラムを実行する。また、アドレス変換器5は、ネットワーク入出力部2により受信された更新情報に含まれたアドレス変換テーブルを用いてアドレス変換を行う。アドレス変換器5は、CPU4により命令がデコードされることによって取得されたアドレスが、デフォルトプログラムにおける変更箇所に対応するアドレスである場合に、このアドレスを差分プログラムが配置されたアドレスへと変換する。そして、CPU4は、アドレス変換器5により変換されたアドレスに従って差分プログラムを実行する。これにより、CPU4は、デフォルトプログラム及び差分プログラムからなる更新後のプログラムを実行することとなる。
このように、組込み機器1では、アドレス変換器5によりアドレス変換を行っているため、更新前プログラムと差分プログラムを用いたプログラムの再構成を行う必要がない。
以下、図面を参照しつつ、実施の形態1について具体的に説明する。
図2は、実施の形態1にかかる情報システム10の構成例を示す模式図である。情報システム10は、開発環境20と、管理サーバ30と、組込み機器40とを含む。管理サーバ30と組込み機器40は、ネットワーク15で相互に接続されている。組込み機器40は、例えば車載制御ECU(Electronic Control Unit)や産業FA(Factory Automation)制御機器などといった制御機器が相当する。なお、図2では、開発環境20、管理サーバ30、及び組込み機器40が全て一台の場合を例に記載しているが、管理サーバ30及び組込み機器40は任意の台数で良い。また、管理サーバ30は複数台を経由する形式にカスケードに接続された構成でも良い。更に、ネットワーク15は、管理サーバ30と組込み機器40を相互に接続できる形態であれば任意で良い。従って、ネットワーク15は、有線接続と無線接続のどちらか一方または両方で構成されていても良い。ネットワーク15には、例えばインターネットや放送波、車載・産業ネットワークが含まれる。
プログラムROM407用のアドレス変換器402Aは、CPU401により命令がデコードされることによって取得されたアドレスが、デフォルトプログラムにおける変更箇所に対応するアドレスである場合に、このアドレスを差分プログラムが配置されたアドレスへと変換する。また、データROM408用のアドレス変換器402Bは、CPU401により命令がデコードされることによって取得されたアドレスが、デフォルトデータにおける変更箇所に対応するアドレスである場合に、このアドレスを差分データが配置されたアドレスへと変換する。そして、CPU401は、データROM408用のアドレス変換器402Bにより変換されたアドレスに従って、差分データを用いた処理を実行する。このように、本実施の形態では、組込み機器40は、プログラムROM407用のアドレス変換器402Aに加えて、データROM408用のアドレス変換器402Bを有している。このため、プログラムコードの更新に限らず、データの更新にも対応することが可能となる。一般に、プログラムROMやデータROMに配置されているデータの更新がなされると、元々のデータとはアドレスが異なるため、更新されたデータへアクセスを行うプログラムコードも変更がなされる。この変更により、差分コード量が増加するという問題がある。アドレス変換器を用いる事で、プログラムコード上のアドレスの変更を極力抑えつつデータを更新する事が可能となり、差分コードの増加量を削減する事が可能となる。
ステップ3301(S3301)で、データ処理部22は、ロールバックポイントの指定があるか否か判定する。指定がある場合は、処理がステップ3302へ移行する。指定がない場合、処理は、ステップ3304へ処理を移行する。
ステップ3302(S3302)で、データ処理部22は、ユーザからのロールバックポイントの指定の入力を受付けて受付けた内容を格納する。
ステップ3303(S3303)で、データ処理部22は、変数flagの値を1に更新する。
ステップ3305(S3305)で、データ処理部22は、差分コードを構成するコードブロック(置換ブロック)がN個以下になるよう、コードブロックを、2つのプログラム間で変化がない部分を含み得る方法でマージする。なお、Nは、例えば、アドレス変換テーブルの設定可能なエントリ数の最大値と、更新差分プログラムが配置されるメモリ領域におけるセグメント数の小さい方の値である。マージ処理の具体的な例については、図35A、35Bを参照して説明する。
ステップ3307(S3307)で、データ処理部22は、変数iを1からMに1ずつ増加させながら、ステップ3308をM回繰り返す。
ステップ3308(S3308)で、データ処理部22は、リンクによるアドレス解決済みのプログラムである更新前プログラム(デフォルトプログラム)における、差分コードの第i番目のコードブロックの先頭アドレスを抽出する。この先頭アドレスは、更新の際の変換元のアドレスに相当する。データ処理部22は、このコードブロックがデフォルトプログラム内の関数を参照する場合、当該関数の呼び出しアドレスを抽出する。
ステップ3310(S3310)で、データ処理部22は、開発環境で保持している、更新対象の組込み機器40のROMの使用状況を参照し、差分プログラムを構成する各コードブロックの配置位置(先頭アドレス)を決定する。配置位置(先頭アドレス)の決定では、ステップ3309で求めたセグメントサイズ毎に高々1つのコードブロックが配置されるように決定を行うものとする。ここで、差分コードを構成するコードブロックの配置において、プログラムROM407の領域を再利用しても良い。プログラムROM407の再利用対象領域の消去回数が、どの領域でも均一となるように工夫しても良い。また、消去回数が規定回数を超える場合に、警告を発しても良い。本警告に基づき、ユーザは、差分コードによる更新ではなく、図34に示す全体プログラム更新へと、更新内容を変更しても良いし、次回の更新を全体プログラム更新としても良い。このように消去回数を参照するのは、以下の点で利点がある。すなわち、例えばROMとしてフラッシュメモリが用いられる場合、フラッシュメモリは消去書込みで劣化するため、特定領域に集中的に消去や書込みが発生しないよう工夫する事で、フラッシュメモリの寿命を延命することが可能となる。また、品質保証の観点から、書き換え回数の所定の上限を越えての書換えが起らないよう管理することが好ましい。
ステップ3312(S3312)で、データ処理部22は、アドレス解決済みの差分プログラムを生成する。
ステップ3313(S3313)で、データ処理部22は、変数jを1からMへ1ずつ増加させながら、ステップ3314を繰り返す。
ステップ3314(S3314)で、データ処理部22は、差分プログラムを構成する各コードブロックjについて、ステップ3310で求めた先頭アドレスを変換後のアドレスとして抽出する。
ステップ3315(S3315)で、データ処理部22は、各コードブロックに対して、ステップ3308で求めた変換前アドレスとステップ3314で抽出した変換後のアドレスを対応表としてマージし、アドレス変換表を生成する。
ステップ3316(S3316)で、データ処理部22は、アドレス変換テーブルのデータROM408への書込み処理委譲のインジェクションコード702を生成する。
ステップ3317(S3317)で、データ処理部22は、更新バイナリのプログラムROMへの書込み処理委譲のインジェクションコード701を生成する。
ステップ3318(S3318)で、データ処理部22は、変数flagの値が1に一致するか否か判定する。一致する場合、処理はステップ3319へ移行し、一致しない場合、処理は終了する。
ステップ3319(S3319)で、データ処理部22は、指定復元ポイントへのロールバック処理委譲のインジェクションコード709を生成する。ここで、本インジェクションコードは、例えば差分プログラム更新にて途中停止やセキュリティ上の異常が発生した場合に実行される。また、本インジェクションコードから実行したロールバックBIOSコードの実行完了時に、更新キャンセルBIOSコード呼び出しが実行されるとしても良い。
ステップ3401(S3401)で、データ処理部22は、ロールバックの指定があるか否か判定する。指定がある場合、処理はステップ3402へ移行し、指定がない場合、処理はステップ3404へ移行する。
ステップ3402(S3402)で、データ処理部22は、ユーザからのロールバックポイントの指定の入力を受付けて受付けた内容を格納する。
ステップ3403(S3403)で、データ処理部22は、変数flagの値を1に更新する。
ステップ3405(S3405)で、データ処理部22は、BIOSコードのデータROM408からプログラムROM407への書込みがあるか否か判定する。書込みがある場合、処理はステップ3406へ移行し、無い場合、処理はステップ3407へ移行する。
ステップ3406(S3406)で、データ処理部22は、データROM408に格納されているBIOSコードのプログラムROM407への書込み処理委譲のインジェクションコード716を生成する。ここで、BIOSコードのプログラムROM407への書込みは、一部または全てのプログラムROM407に未だBIOSコードが配置されていない場合に実施される。3面のプログラムROM407の場合、差分コードの書込み先のプログラムROM407の面にBIOSコードが配置されていない場合、このプログラムROM面へBIOSコードを書込むこととなる。これにより、例えば予めデータROM408に格納されていたBIOSコードが、プログラムROM407に書き込まれることとなる。
ステップ3407(S3407)で、データ処理部22は、更新バイナリのプログラムROM書込み処理委譲のインジェクションコード701を生成する。ここでは、全体プログラム更新のため、本インジェクションコードは、復元ポイント無効化のためのデータROM408の消去を実行するBIOSコードの呼び出しも実施するものとする。
ステップ3408(S3408)で、データ処理部22は、プログラムROM407のデフォルト面切り替えのためのインジェクションコード712、及びデータROM408のデフォルト面切り替えのためのインジェクションコード713を生成する。
ステップ3409(S3409)で、データ処理部22は、アドレス変換テーブルの無効化を行うインジェクションコードを生成する。
ステップ3411(S3411)で、データ処理部22は、デフォルト動作へのロールバック処理委譲のインジェクションコード710を生成する。ここで、本インジェクションコードは、差分プログラム更新にて途中停止やセキュリティ上の異常が発生した場合に実行される。また、本インジェクションコードから実行したロールバックBIOSコード実行完了時に、更新キャンセルBIOSコード呼び出しが実行されるとしても良い。
ステップ3501(S3501)で、データ処理部22は、N>nかつM≧mを満たすか否か判定する。成立していれば、処理はステップ3503へ移行し、不成立であれば処理はステップ3502へ移行する。
ステップ3502(S3502)で、アドレス変換テーブルのエントリ数を超えているため、データ処理部22は、ステップ3501における違反があった書込みに関し、書き込まれるデータテーブルが含まれる隣接するセグメントのマージ処理を実施する。データ処理部22は、隣接したものがなければ、書き込まれるデータテーブルが含まれる一番近いセグメントのマージを実施する。ここで、データ処理部22は、ユーザには差分更新が不可能である旨を通知し、セグメントサイズを超えたデータテーブルの更新を許可するか否か問合せる。許可された場合、処理はステップ3500へ移行し、許可されない場合、処理は中断する。中断した場合は、ユーザが更新プログラムを修正し、再度、更新準備処理を実施するか、プログラム全体更新に方針転換を行う事となる。
ステップ3504(S3504)で、データ処理部22は、変更のあるデータテーブル数だけ、ステップ3505〜ステップ3509の処理を繰り返す。
ステップ3505(S3505)で、データ処理部22は、変更後のデータテーブルを配置する、プログラムROM407上の先頭アドレスを算出する。先頭アドレスの算出では、空き領域を優先的に利用する。十分な空きがない場合は、前回以前の更新で更新対象のデータテーブルが配置されているときは、その先頭アドレスを再利用するかをユーザに確認し、ユーザが許可した場合、再利用を考慮した先頭アドレスの算出が実施される。ユーザが許可しない場合や、再利用対象がない場合は、処理が中断される。中断した場合は、ユーザが更新プログラムを修正し、再度、更新準備処理を実施するか、プログラム全体更新に方針転換を行う事となる。
ステップ3506(S3506)で、データ処理部22は、算出したアドレスに既にデータテーブルが含まれている場合、算出したアドレスを含む消去ブロック番号を算出する。
ステップ3507(S3507)で、データ処理部22は、消去対象のブロックがある場合は、そのブロック内のデータテーブル変数を、更新内容も含めて書込みデータとする。データ処理部22は、消去対象のブロックがない場合は、変更のあるデータテーブル全体を書込みデータとする。また、データ処理部22は更新により書き込まれるデータテーブルのデータ長も算出する。
ステップ3508(S3508)で、データ処理部22は、ROM消去及び書込みのドライバを動作させるための以下の引数を用いて、プログラムROM407の消去/書込み処理委譲のインジェクションコード705を生成する。すなわち、当該ドライバプログラムの配置アドレス、当該ドライバへ渡すフレームポインタ、ステップ3506で算出された消去対象のブロック番号、更新により書き込まれるデータの内蔵メモリでの配置位置の先頭アドレス、更新により書き込まれるデータのデータ長、及びステップ3505で算出されたプログラムROM407上の先頭アドレスが引数として用いられる。なお、上記及び下記の説明で述べられる内蔵メモリは、一例としては、SRAM406であるが、書き込まれるデータが存在するメモリであればよく、例えばデータROM408であってもよい。ここで、ステップ3506で消去対象のブロックがないと判断された場合、データ処理部22は、消去対象のブロック番号を伴わない、プログラムROM書込み処理委譲のインジェクションコード707を生成する。
ステップ3509(S3509)で、データ処理部22は、変数Nに、現在のNの値から1を減じた値を代入する。
ステップ3511(S3511)で、データ処理部22は、追加のあるテーブル数だけ、ステップ3512〜ステップ3515の処理を繰り返す。
ステップ3512(S3512)で、データ処理部22は、追加するテーブルを配置する、プログラムROM407上の先頭アドレスを算出する。具体的には、追加する各データテーブルの配置状況は、セグメント数が最小となるよう、ナップサック問題を解くなどして決定されているため、データ処理部22は、追加するデータテーブルが含まれるセグメントの先頭アドレスを決定する。また、データ処理部22は、追加するデータテーブルのデータ長も算出する。ここで、先頭アドレスの算出では、空き領域を優先的に利用するが、十分な空きがない場合は、処理を中断する。中断した場合は、ユーザが更新プログラムを修正し、再度、更新準備処理を実施するか、プログラム全体更新に方針転換を行う事となる。
ステップ3513(S3513)で、データ処理部22は、ステップ3512で決定した先頭アドレスを持つセグメントに含まれるデータテーブルを書込みデータとする。
ステップ3514(S3514)で、データ処理部22は、ROM消去・書込みドライバを動作させるための以下の引数を用いて、プログラムROM書込み処理委譲のインジェクションコード707を生成する。すなわち、当該ドライバプログラムの配置アドレス、当該ドライバへ渡すフレームポインタ、書込みデータの内蔵メモリでの配置位置の先頭アドレス、書込みデータのデータ長、及びステップ3512で算出したプログラムROM407上の先頭アドレスが引数として用いられる。
ステップ3515(S3515)で、データ処理部22は、変数Nに、現在のNの値から1を減じた値を代入する。
ステップ3517(S3517)で、データ処理部22は、変更のあるテーブル数だけ、ステップ3518〜ステップ3522の処理を繰り返す。
ステップ3518(S3518)で、データ処理部22は、変更後のテーブルを配置する、データROM408上の先頭アドレスを算出する。先頭アドレスの算出では、空き領域を優先的に利用する。十分な空きがない場合は、前回以前の更新で更新対象のデータテーブルが配置されているときは、その先頭アドレスを利用し、そうでないときは、処理を中断する。中断した場合は、ユーザが更新プログラムを修正し、再度、更新準備処理を実施するか、プログラム全体更新に方針転換を行う事となる。
ステップ3519(S3519)で、データ処理部22は、算出したアドレスに既にデータテーブルが含まれている場合、算出したアドレスを含む消去ブロック番号を算出する。
ステップ3520(S3520)で、データ処理部22は、消去対象のブロックがある場合は、そのブロック内のデータテーブル変数を、更新内容も含めて書込みデータとする。そうでない場合は、変更のあるデータテーブル全体を書込みデータとする。また、データ処理部22は更新により書き込まれるデータテーブルのデータ長も算出する。
ステップ3521(S3521)で、データ処理部22は、ステップ3519で算出した消去対象のブロック番号、書込みデータの内蔵メモリでの配置位置の先頭アドレス、書込みデータのデータ長、及びステップ3518で算出した先頭アドレスを引数として、データROM消去/書込み処理委譲のインジェクションコード706を生成する。ここで、ステップ3519で消去対象のブロックがないと判断された場合、データ処理部22は、消去対象のブロック番号を伴わないデータROM書込み処理委譲のインジェクションコード708を生成する
ステップ3522(S3522)で、データ処理部22は、変数Mに、現在のMの値から1を減じた値を代入する
ステップ3524(S3524)で、データ処理部22は、追加のあるテーブル数だけ、ステップ3525〜ステップ3528の処理を繰り返す。
ステップ3525(S3525)で、データ処理部22は、追加するテーブルを配置する、データROM408上の先頭アドレスを算出する。具体的には、追加する各データテーブルの配置状況は、セグメント数が最小となるよう、ナップサック問題を解くなどして決定されているため、データ処理部22は、追加するデータテーブルが含まれるセグメントの先頭アドレスを決定する。また、データ処理部22は、追加するデータテーブルのデータ長も算出する。ここで、先頭アドレス算出では、空き領域を優先的に利用するが、十分な空きがない場合は、処理を中断する。中断した場合は、ユーザが更新プログラムを修正し、再度、更新準備処理を実施するか、プログラム全体更新に方針転換を行う事となる。
ステップ3526(S3526)で、データ処理部22は、ステップ3525で決定した先頭アドレスを持つセグメントに含まれることとなるデータテーブルを書込みデータとする。
ステップ3527(S3527)で、データ処理部22は、書込みデータの内蔵メモリでの配置位置の先頭アドレス、書込みデータのデータ長、及びステップ3525で算出した先頭アドレスを引数として、データROM書込み処理委譲のインジェクションコード708を生成する。
ステップ3528(S3528)で、データ処理部22は、変数Mに、現在の変数Mの値から1を減じた値を代入する。
この目的関数は、更新差分コードのブロックを繋げて得られるコード(連続コード)の最大サイズが最小となるよう最適化する。この最適化の目的は、セグメントサイズが大きくなり過ぎないよう、即ち、Nを出来るだけ大きくすることである。
目的関数2: minimize { total of 関数呼出 in 共通コード }
この目的関数は、共通コードにおける関数の呼出し数を最小化するよう最適化する。差分コードのブロックを繋げる際、異なる差分コードブロック間の変更対象でないコード(共通コード)を含めて繋げることとなる。この共通コードからの関数呼び出しが多いと、プログラムROM面をまたいだプログラム実行が多く行われることとなる。プログラムROM面はそれぞれ異なる電源を持つだめ、消費電力の増大、及びプログラムROMの読出しサイクルの増大が懸念される。このため、目的関数2では、呼出し数を最小化する。
目的関数3:既存の配置済みの差分コードの再利用の最大化
この目的関数の目的は、以下の通りである。過去の更新により、更新差分コードの配置が複数回成されている場合、何回か前に配置した更新差分コードブロックが今回の更新でもそのまま再利用できる可能性があり、その場合、それを再利用する事で、配置処理が軽減可能となる。
ステップ3700(S3700)で、管理サーバ30は、ユーザインターフェース37を介して、ユーザに更新プログラムのロード可否を問合せる。ロードが許可されると、処理はステップ3701へ移行し、許可されない場合、処理はステップ3705へ移行する。
ステップ3701(S3701)で、管理サーバ30は、更新プログラムの動的ロード、即ちプログラムROM407及びデータROM408への更新プログラムの動的な配置を開始する。なお、動的な配置とは、プログラムの動作を停止させることなく、当該プログラムに対する差分をROMに配置することをいう。
ステップ3702(S3702)で、管理サーバ30は、更新プログラムの動的な配置の完了を確認する。
ステップ3703(S3703)で、管理サーバ30は、ユーザインターフェース37を介して、ユーザに更新可否を問合せる。更新が許可されると、処理はステップ3704へ移行し、許可されない場合、処理はステップ3706へ移行する。
ステップ3704(S3704)で、アドレス変換テーブルの許可設定など、更新に必要な設定が完了後、組込み機器40がリセットされ、組込み機器40が再起動される。そして、再起動時に更新が完了する。
ステップ3705(S3705)では、所定の待機時間が経過した後、ステップ3700へ処理が移行する。同様に、ステップ3706(S3706)でも、所定の待機時間が経過した後、ステップ3703へ処理が移行する。
(2)CPU401は専用割込みベクタ441を参照し、対応する割込みハンドラが実行される。これにより、CPU401またはDMAコントローラ405の制御の下、CANインターフェース409からSRAM406に更新情報がデータ転送される。ここで、更新情報に含まれるインジェクションコードはプログラム更新作業領域442に配置される。また、受信した各データには予め署名が付加されており、プログラム更新作業領域442の予め定められたアドレスを先頭アドレスとして格納されるものとする。
(3)CANインターフェース409から更新情報の転送の区切りを示す割込みを割込みコントローラ403が受けてCPU401が割込みを受け付けるまで、上記(1)と(2)が繰り返される。
(4)CANインターフェース409から更新情報の転送の区切りを示す割込みを割込みコントローラ403が受け、CPU401が割込みを受ける。
(5)CPU401は専用割込みベクタ441を参照し、対応する割込みハンドラが実行される。これにより、プログラム更新作業領域442に配置されたインジェクションコードが実行される。インジェクションコードは、その種類に応じて、CPU401がアクセスしていないプログラムROM407/データROM408に対する更新データテーブル(すなわち更新差分コードに含まれる初期値付き局所変数と大域変数)の配置、CPU401がアクセスしていないプログラムROM407に対する更新差分バイナリの配置、並びに現在実行中にないデータROM408に対するアドレス変換テーブルの配置を実施する。
(6)CANインターフェース409から更新情報の転送の終了を示す割込みを割込みコントローラ403が受けてCPU401が割込みを受け付けるまで、上記(1)〜(5)が繰り返される。
(7)CANインターフェース409から更新情報の転送の終了を示す割込みを割込みコントローラ403が受け、CPU401が割込みを受け付ける。
(8)CPU401は専用割込みベクタ441を参照し、対応する割込みハンドラが実行される。これにより、プログラムROM407/データROM408に配置したデータテーブルや差分コードの署名検証、アドレス変換器402やデータROM408に配置したアドレス変換テーブルの署名検証が実施される。ここで、組込み機器40は、署名検証をパスした場合、差分コードの署名(ハッシュ値)をデータROM408に格納するとともに、CANインターフェース409から完了通知を外部へ出力する。また、組込み機器40は、再起動後に差分コード配置面の切り替えを実施する旨、フラグ設定を実施する。組込み機器40は、署名検証で不一致となった場合は、プログラムROM407/データROM408に配置したデータテーブルや差分コードの消去、アドレス変換器やデータROMに配置したアドレス変換テーブルの消去を実施するとともに、CANインターフェース409から署名検証不一致の通知を外部へ出力する。
(2)サブCPU411は専用割込みベクタ441を参照し、対応する割込みハンドラが実行される。これにより、サブCPU411またはDMAコントローラ405の制御の下、CANインターフェース409からSRAM406に更新情報がデータ転送される。ここで、更新情報に含まれるインジェクションコードはプログラム更新作業領域442に配置される。また、各データには予め署名が付加されており、プログラム更新作業領域442の予め定められたアドレスを先頭アドレスとして格納されるものとする。
(3)CANインターフェース409から更新情報の転送の区切りを示す割込みを割込みコントローラ403が受けてサブCPU411が割込みを受け付けるまで、上記(1)と上記(2)が繰り返される。
(4)CANインターフェース409から更新情報の転送の区切りを示す割込みを割込みコントローラ403が受け、サブCPU411が割込みを受ける。
(5)サブCPU411は専用割込みベクタ444を参照し、対応する割込みハンドラが実行される。これにより、プログラム更新作業領域442に配置されたインジェクションコードが実行される。インジェクションコードはその種類に応じて、サブCPU411がアクセスしていないプログラムROM407/データROM408面への更新データテーブルの配置、サブCPU411がアクセスしていないプログラムROM407への更新差分バイナリ配置、並びに現在実行中にないデータROM408に対するアドレス変換テーブルの配置を実施する。
(6)CANインターフェース409から更新情報の転送の終了を示す割込みを割込みコントローラ403が受けサブCPU411が割込みを受け付けるまで、上記(1)〜(5)が繰り返される。
(7)CANインターフェース409から更新情報の転送の終了を示す割込みを割込みコントローラ403が受け、サブCPU411が割込みを受け付ける。
(8)サブCPU411は専用割込みベクタ444を参照し、対応する割込みハンドラが実行される。これにより、プログラムROM407/データROM408に配置したデータテーブルや差分コードの署名検証、アドレス変換器402やデータROM408に配置したアドレス変換テーブルの署名検証が実施される。なお、署名検証をパスした場合、署名検証で不一致となった場合の動作は、図38に対する上述の(8)の説明と同様である。
ステップ4001(S4001)で、SRAM406上にプログラム更新作業領域442が割り当てられる。ここで、作業領域の先頭アドレスをwork_addrとする。
ステップ4002(S4002)で、work_addrが専用割込みベクタ441または専用割込みベクタ444に設定される。
ステップ4003(S4003)で、組込み機器40は、特権レベルを変更し、通常モードへ移行する。
ステップ4004(S4004)で、組込み機器40が、CPU401及び周辺モジュールの初期化処理を実行する。
ステップ4005(S4005)で、組込み機器40は、差分コード配置面切り替えフラグが設定されているか否かを判断する。設定されている場合は処理がステップ4006へ移行し、設定されていない場合は処理がステップ4007へ移行する。
ステップ4006(S4006)で、「更新差分コード配置後初期化処理」を実施する。なお、「更新差分コード配置後初期化処理」の具体例については、後述する。
ステップ4007(S4007)で、組込み機器40は、メインプログラムを実行する。
ステップ4008(S4008)で、メインシステムが起動する。
ステップ4101(S4101)で、組込み機器40は、データテーブルや差分コードをプログラムROM407/データROM408から読出し、ハッシュ値を算出する。
ステップ4102(S4102)で、組込み機器40は、データテーブルや差分コードの配置時に署名検証で用いたハッシュ値とステップ4101で算出したハッシュ値を比較する。これらが一致した場合、処理はステップ4103へ移行し、不一致の場合、処理はステップ4108へ移行する。
ステップ4103(S4103)で、組込み機器40は、データROM408に配置したアドレス変換テーブルのハッシュ値を算出する。
ステップ4104(S4104)で、組込み機器40は、アドレス変換テーブルの配置時に署名検証で用いたハッシュ値とステップ4103で算出したハッシュ値を比較する。これらが一致した場合、処理はステップ4105へ移行し、不一致の場合、処理はステップ4108へ移行する。
ステップ4105(S4105)で、組込み機器40は、差分コード配置面の切り替えを実施する。
ステップ4106(S4106)で、組込み機器40は、アドレス変換テーブルをデータROM408からロードし、アドレス変換器402に設定する。
ステップ4107(S4107)で、組込み機器40は、アドレス変換を有効化する。
ステップ4108(S4108)で、組込み機器40は、C_tmpへ退避(格納)したプログラムコンテキストを、新たなプログラムコンテキストとして設定する。すなわち、組込み機器40は、C_tmpへ退避したプログラムコンテキストを復帰させる。
このように、更新情報は、組込み機器40のROMに格納される際に署名検証が行われるととともに、組込み機器40に適用される際にも署名検証(ステップ4101〜ステップ4104)が行われる。このため、更新情報の受信の際の改竄の検知、及び受信後の改竄の検知が可能となる。つまり、CPU401は更新情報が正当であることが確認された場合に差分プログラムを実行するため、改竄等の危険があるプログラム等に基づく実行を避けることができ、セキュリティが向上する。
ステップ4200(S4200)で、CANインターフェース409から更新情報の転送を要求する割込みをCPU401が受付ける。
ステップ4201(S4201)で、割り込みが、インジェクションコードの実行を指示する割込みか否かが判定され、そうである場合、処理はステップ4204へ移行し、そうでない場合、処理はステップ4202へ移行する。
ステップ4202(S4202)で、CPU401は、受信したデータを、上述のwork_addrを先頭アドレスとするプログラム作業領域へ転送する。
ステップ4203(S4203)で、割込み処理が終了し、処理はステップ4200へ移行する。
ステップ4204(S4204)で、CPU401は割込みハンドラによりプログラム更新作業領域に配置されたインジェクションコードを実行する。CPU401は、インジェクションコードからBIOSを読出し、BIOSに引数を渡し、BIOSを実行する。
ステップ4205(S4205)で、CPU401は、BIOS関数実行後、BIOS関数内で割込み終了処理を実施する。
S=256×N2バイト
M=ceil(更新差分バイナリのバイトサイズ/S)
N1=256/8、ここで、8はCANのデータペイロードサイズ
尚、これら定数値はシステム要件に応じて適宜変更可能である。
ステップ4300(S4300)で、データ処理部33は、ステップ4301〜ステップ4307までの処理をM回繰り返す。また、データ処理部33は、繰り返し中、変数i(初期値は1)をインクリメントする。
ステップ4301(S4301)で、データ処理部33は、更新差分バイナリをSバイト毎に区切ったときのi番目のデータを変数Cに代入する。
ステップ4302(S4302)で、データ処理部33は、ステップ4303〜ステップ4306までの処理をN2回繰り返す。また、データ処理部33は、繰り返し中、変数j(初期値は1)をインクリメントする。
ステップ4303(S4303)で、データ処理部33は、Cに代入されたデータを256バイト単位に区切ったときのj番目のデータを変数Dに代入する。
ステップ4304(S4304)で、データ処理部33は、ステップ4305及びステップ4306の処理をN1回繰り返す。また、データ処理部33は、繰返し中、変数k(初期値は1)をインクリメントする。
ステップ4305(S4305)で、データ処理部33は、組込み機器40内のCANインターフェース409にて受信される更新バイナリ断片をSRAM406へ転送する要求を、組込み機器40に対してCANバスを介して発行する。
ステップ4306(S4306)で、データ処理部33は、Dに代入されたデータを8バイト毎に区切ったときのk番目のデータを組込み機器40に転送するため、これをCANバスへ送信する。
ステップ4307(S4307)で、データ処理部33は、更新バイナリのプログラムROM407への書込み処理委譲のインジェクションコード701の実行指示をCANバスへ送信するとともに、このインジェクションコードをCANバスへ送信する。
次に、実施の形態2について説明する。実施の形態2は、組込み機器40が変更されている点で、具体的には、本実施の形態に組込み機器40は、プログラムROM407の構成及びデータROM408の構成が変更された点で、実施の形態1にかかる組込み機器40と異なる。なお、以下の説明において、実施の形態1と同様である点については、理解の容易化のため、適宜割愛される。図44は、実施の形態2にかかる組込み機器40の構成例を示すブロック図である。
ステップ4900(S4900)で、管理サーバ30は、ユーザインターフェース37を介して、ユーザに更新プログラムのロード可否を問合せる。ロードが許可されると、処理はステップ4901へ移行し、許可されない場合、処理はステップ4906へ移行する。
ステップ4901(S4901)で、アドレス変換テーブルの不許可設定など、デフォルトプログラムの実行状態とするために必要な設定が完了した後、組込み機器40がリセットされ、組込み機器40が再起動される。そして、再起動後に組込み機器40は、デフォルトプログラムの実行状態へと遷移する。
ステップ4902(S4902)で、管理サーバ30は、更新プログラムの動的ロード、即ちプログラムROM407及びデータROM408への更新プログラムの動的な配置を開始する。
ステップ4903(S4903)で、管理サーバ30は、更新プログラムの動的な配置の完了を確認する。
ステップ4904(S4904)で、管理サーバ30は、ユーザインターフェース37を介して、ユーザに更新可否を問合せる。更新が許可されると、処理はステップ4905へ移行し、許可されない場合、処理はステップ4907へ移行する。
ステップ4905(S4905)で、アドレス変換テーブルの許可設定など、更新に必要な設定が完了後、組込み機器40がリセットされ、組込み機器40が再起動される。そして、再起動時に更新が完了する。
ステップ4906(S4906)では、所定の待機時間が経過した後、ステップ4900へ処理が移行する。同様に、ステップ4907(S4907)で、所定の待機時間が経過した後、ステップ4904へ処理が移行する。
ステップ5105(S5105)で、組込み機器40は、アドレス変換テーブルをデータROM408からロードし、アドレス変換器402に設定する。
ステップ5106(S5106)で、組込み機器40は、アドレス変換を有効化する。
ステップ5107(S5107)で、組込み機器40は、C_tmpへ退避(格納)したプログラムコンテキストを、新たなプログラムコンテキストとして設定する。すなわち、組込み機器40は、C_tmpへ退避したプログラムコンテキストを復帰させる。
次に、実施の形態3について説明する。本実施の形態では、組込み機器での、更新差分プログラムのセキュアな動的配置、及びセキュアな更新動作を実現するために成された改善例を示す。具体的には、本実施の形態では、プログラム又はデータの破壊に対する対応策と、ROMに対する悪意ある書込み消去に対する対応策を実現している。なお、本実施の形態は、実施の形態1にも2にも組み合わせ可能である。また、プログラム又はデータの破壊に対する対応策と、ROMに対する悪意ある書込み消去に対する対応策のうち、一方のみが適用されてもよい。
図53は、実施の形態3にかかる、アドレス変換テーブルのデータROM408への書込み処理委譲を行うインジェクションコード720での処理に対応するBIOSルーチンコードの呼び出し処理の手続き例を示すフローチャートである。
ステップ5300(S5300)で、第一引数arg1に読出しデータの先頭アドレスを配置し、ステップ5301(S5301)で、第二引数arg2にデータ長を配置し、ステップ5302(S5302)で、第三引数arg3にデータ書込み先の先頭アドレスを配置し、ステップ5303(S5303)でROM消去BIOSルーチンのコールを実施し、ステップ5304(S5304)で、対応するBIOSルーチンのコールを実施する。
ステップ5400(S5400)で、第一引数arg1に復元ポイントに対応するアドレス変換テーブルの先頭アドレスを配置する。ステップ5401(S5401)で、第二引数arg2に復元ポイントに対応するアドレス変換テーブルのエントリ数を配置する。ステップ5402(S5402)で、復元ポイントに対応するアドレス変換テーブルの設定を実施するBIOSルーチンAのコールを実施する。そして、以下のステップ5403〜ステップ5407を必要回数だけ実施する。ステップ5403(S5403)で、第一引数arg1にロールバック対象の差分プログラム内の指定復元ポイントでの初期値付き局所変数や大域変数が配置されているデータROM408上の領域の先頭アドレスを配置する。すなわち、この先頭アドレスは、読み出しデータの先頭アドレスである。ステップ5404(S5404)で、第二引数arg2に読み出しデータのデータ長を配置する。ステップ5405(S5405)で、第三引数arg3にデータ書込み先の先頭アドレスを配置する。ステップ5406(S5406)でROM消去BIOSルーチンのコールを実施する。ステップ5407(S5407)で、指定復元ポイントでの初期値付き局所変数や大域変数の配置状態への復帰実現のためのプログラムROM407及びデータROM408の書込みを行うBIOSルーチンBのコールを実施する。
まず、ステップ5500(S5500)で、第一引数arg1に、プログラムROM407に対する消去及び書込み処理プログラムが配置される、SRAM406上のアドレスを配置する。なお、消去及び書込み処理プログラムはプログラムROM407の特定のアドレスに予め配置されている。次に、ステップ5501(S5501)で、第二引数arg2に、この消去及び書込み処理プログラムへ渡す引数のフレームポインタを配置する。次に、ステップ5502(S5502)で、第三引数arg3に、ロールバック対象の差分プログラム内の局所変数更新部分に対応するコードが配置されているデータROM408またはSRAM406上の領域の先頭アドレスを配置する。すなわち、この先頭アドレスは、読み出しデータの先頭アドレスである。ステップ5503(S5503)で、第四引数arg4に読み出しデータのデータ長を配置する。ステップ5504(S5504)で、第五引数arg5にデータ書込み先の先頭アドレスを配置する。ステップ5505(S5505)でROM消去BIOSルーチンのコールを実施する。ステップ5506(S5506)で、対応するBIOSルーチンのコールを実施する。
まず、ステップ5600(S5600)で、第一引数arg1にロールバック対象の差分プログラム内の大域変数更新部分に対応するコードが配置されているデータROM408またはSRAM406上の領域の先頭アドレスを配置する。すなわち、この先頭アドレスは、読み出しデータの先頭アドレスである。ステップ5601(S5601)で、第二引数arg2に読み出しデータのデータ長を配置する。ステップ5602(S5602)で、第三引数arg3にデータ書込み先の先頭アドレスを配置する。ステップ5603(S5603)で、ROM消去BIOSルーチンのコールを実施する。ステップ5604(S5604)で、対応するBIOSルーチンのコールを実施する。
ステップ5800(S5800)で、変数addrに書換え先頭アドレスを代入する。ここで、書き換え先頭アドレスは、上記図53から図56において示されたデータ書込み先の先頭アドレスに対応する。次に、ステップ5801(S5801)で、上記の対応表からaddrに対応する消去ブロック番号を探し出す。ステップ5802(S5802)で、対応する消去ブロック番号が探し出されたか否かを判定し、探し出された場合、処理はステップ5803へ移行し、探し出されなかった場合、処理は終了する。ステップ5803(S5803)で、消去ブロック番号を変数blknoに代入する。ステップ5804(S5804)で、プログラムROM407又はデータROM408のblkno番のブロックを消去する。
ステップ5904(S5904)において、データ処理部22は、変更のあるデータテーブル数だけ、ステップ5905〜ステップ5908の処理を繰り返す。
ステップ5905(S5905)の処理は、図35Aに示したステップ3505の処理と同様である。
ステップ5906(S5906)で、データ処理部22は、ステップ5905で算出したアドレスに既にデータテーブルが含まれている場合、消去対象のブロックがあると判断し、そのブロック内のデータテーブル変数を、更新内容も含めて書込みデータとする。上述の通り、本実施の形態では、消去対象のブロック番号は、対応表を参照することにより決定されるので、図35Aに示したステップ3506のような消去対象のブロック番号の決定はなされない。ただし、ステップ5905で算出したアドレスに既にデータテーブルが含まれている場合、算出したアドレスを含むブロック番号を算出し、開発環境での消去書換え回数管理に利用する。データ処理部22は、ステップ5905で算出したアドレスにデータテーブルが含まれていない場合、変更のあるデータテーブル全体を書込みデータとする。また、データ処理部22は更新により書き込まれるデータテーブルのデータ長も算出する。
ステップ5907(S5907)で、データ処理部22は、ROM消去及び書込みのドライバを動作させるための以下の引数を用いて、プログラムROM407の消去/書込み処理委譲のインジェクションコード721を生成する。すなわち、当該ドライバプログラムの配置アドレス、当該ドライバへ渡すフレームポインタ、更新により書き込まれるデータの内蔵メモリでの配置位置の先頭アドレス、更新により書き込まれるデータのデータ長、及びステップ5905で算出されたプログラムROM407上の先頭アドレスが引数として用いられる。なお、ここでは、ステップ5906で算出されたブロック番号を引数として渡さずインジェクションコードを生成するが、上述の通り、このインジェクションコードが実行されると、対応表により決定される番号のブロックが消去されることとなる。ステップ5905で算出したアドレスにデータテーブルが含まれていない場合、データ処理部22は、プログラムROM書込み処理委譲のインジェクションコード707を生成する。
ステップ5916(S5916)において、データ処理部22は、変更のあるデータテーブル数だけ、ステップ5917〜ステップ5920の処理を繰り返す。
ステップ5917(S5917)の処理は、図35Bに示したステップ3518の処理と同様である。
ステップ5918(S5918)で、データ処理部22は、ステップ5917で算出したアドレスに既にデータテーブルが含まれている場合、消去対象のブロックがあると判断し、そのブロック内のデータテーブル変数を、更新内容も含めて書込みデータとする。上述の通り、本実施の形態では、消去対象のブロック番号は、対応表を参照することにより決定されるので、図35Bに示したステップ3519のような消去対象のブロック番号の決定はなされない。ただし、ステップ5917で算出したアドレスに既にデータテーブルが含まれている場合、算出したアドレスを含むブロック番号を算出し、開発環境での消去書換え回数管理に利用する。データ処理部22は、ステップ5917で算出したアドレスにデータテーブルが含まれていない場合、変更のあるデータテーブル全体を書込みデータとする。また、データ処理部22は更新により書き込まれるデータテーブルのデータ長も算出する。
ステップ5919(S5919)で、データ処理部22は、書込みデータの内蔵メモリでの配置位置の先頭アドレス、書込みデータのデータ長、及びステップ5917で算出した先頭アドレスを引数として、データROM消去/書込み処理委譲のインジェクションコード722を生成する。なお、ここでは、ステップ5918で算出されたブロック番号を引数として渡さずインジェクションコードを生成しているが、上述の通り、このインジェクションコードが実行されると、対応表により決定される番号のブロックが消去されることとなる。ステップ5918で算出したアドレスにデータテーブルが含まれていない場合、データ処理部22は、データROM書込み処理委譲のインジェクションコード708を生成する。
以降、ステップ5920(S5920)からステップ5927(S5927)までの処理は、図35Bに示したステップ3522からステップ3529までの処理と同様である。
ステップ6100(S6100)で、実施の形態1又は実施の形態2で説明した更新動作に従い、更新差分プログラムがSRAM406へ転送される。
ステップ6101(S6101)で、転送完了後、CPU401は、「f1」ビットを設定する。ここで、CPU401は、転送が正常終了した場合‘1’を設定し、そうでない場合、‘0’を設定する。
ステップ6102(S6102)で、暗号処理ユニット404(署名検証部)が、更新差分プログラムの署名検証を実施する。
ステップ6103(S6103)で、署名検証完了後、CPU401は、「f2」ビットを設定する。CPU401は、署名検証結果が正常な場合、‘1’を設定し、そうでない場合、‘0’を設定する。
ステップ6104(S6104)で、「許可」ビットが‘1’か否かが確認され、‘1’の場合、処理はステップ6105へ移行し、そうでない場合、処理はステップ6106へ移行する。
ステップ6105(S6105)で、「f1」ビットが‘1’でかつ「f2」ビットが‘1’であるか否かが確認され、双方ともに‘1’の場合、処理はステップ6106へ移行し、そうでない場合、処理はステップ6108へ移行する。
ステップ6106(S6106)で、プログラムROM407/データROM408の書込みコントローラに対し書込み許可を設定し、「r」ビットに‘1’が設定される。
ステップ6107(S6107)で、CPU401は、更新制御レジスタ451を必ず読み出す。読み出す事で、「f1」ビット、「f2」ビット、及び「r」ビットの内容を確認する。また、これら3つのビットが‘0’にクリアされ、そして、処理が終了する。なお、ステップ6107において、書込み処理が完了した場合に、CPU401は、「r」ビットの確認を行うことで、書き込み処理が行われた際に書込みコントローラへのイネーブル信号値が実際に1であったか否かを確認することができる。また、許可ビット以外の全ビットが‘0’にクリアされるため、次の更新差分プログラムのプログラム/データROMへの書込みで、署名検証や転送完了が正常に行われているかのチェックが必須となり、これらチェックをスキップする事での攻撃を排除可能となる。
ステップ6108(S6108)で、「r」ビットに‘0’が設定され、処理はステップ6107へ移行する。
次に、実施の形態4について説明する。本実施の形態では、組込み機器40での更新情報の動的な配置の途中又は組込み機器40での更新動作の途中で、組込み機器40において電源停止が発生した場合の復旧時の対応方法について説明する。なお、本実施の形態にかかる組込み機器40は、更新情報がプログラムROM407又はデータROM408に格納される際に、更新情報の書き込み先の先頭アドレスと、この先頭アドレスの属する消去ブロック番号とを管理する上述の管理情報をデータROM408に記憶する。図62は、組込み機器40で更新情報の動的な配置又は更新動作の途中で電源停止が発生した場合の復旧処理の一例を示すフローチャートである。以下、フローチャートに沿って説明する。なお、下記のフローにおける組込み機器40の動作は、例えば、CPU401がプログラムROM407等に格納されたファームウェア等のプログラムを実行することにより、実現される。
ステップ6201(S6201)で、更新情報の動的な配置又は更新動作の途中で、組込み機器40において電源遮断が発生する。なお、電源遮断が発生しない場合には、ステップ6200の処理が完了するまで継続されることとなる。
ステップ6202(S6202)で、組込み機器40の電源が復帰し、組込み機器40が再起動する。
ステップ6203(S6203)で、組込み機器40は、対応表を確認し、プログラムROM407又はデータROM408の消去ブロック番号が識別可能であるかを確認する。具体的には、組込み機器40は、更新情報の配置毎に作成される上記対応表のうち、電源遮断の直前の更新情報の配置において作成された対応表を参照することにより確認する。
ステップ6204(S6204)で、上記識別が成功した場合には、処理はステップ6207へ移行し、そうでない場合、処理はステップ6205へ移行する。ここで、ステップ6203における識別が成功することは、電源遮断の直前の更新情報の配置において電源遮断の発生までの間に書き込まれた情報について、書き込み先のブロックの確認ができたことを意味する。ところで、上述のように、更新情報の書込みの際、書込み先に既にデータが格納されている場合には、書き込み先のブロックを消去した上で、書き込みが実施されるよう更新情報ファイル50は構成されている。このため、電源遮断の発生までの間に更新情報がプログラムROM407又はデータROM408に書き込まれた場合、そのままの更新情報ファイル50でこの更新を再度やり直すことができなくなる。これは、データが格納されていないはずの書込み先にデータ書き込まれてしまっている可能性があるためである。しかし、電源遮断の発生までの間に書き込まれた位置が特定できる場合には、書き込み先のブロックを消去することで、このような問題が解消される。すなわち、更新情報ファイル50の修正を行うことなく、更新情報の配置をやり直すことが可能となる。
ステップ6205(S6205)で、組込み機器40は、デフォルトプログラムによる動作へのロールバック処理を実施する。
ステップ6206(S6206)で、開発環境20において、電源遮断前に生成した更新情報の再構成が行われる。ここでは、更新情報が全て書込まれているものと仮定して、再構成が行われる。つまり、プログラムROM407又はデータROM408における書込み先にデータが既に格納されていると仮定した上で、再構成が行われる。この再構成では、具体的には、書き込み先のブロックに対する消去処理を追加した更新情報ファイル50が生成される。その後、処理は、ステップ6200へ移行し、再構成された更新情報に基づく、更新情報の動的な配置、及び更新動作が行われる。なお、ステップ6206では、ネットワークを介した管理サーバ30への通知及び管理サーバ30から開発環境20への通知がなされ、更新情報が再構成されるとしても良いし、開発環境20へは通知せずに、管理サーバ30上で上述の再構成が行われてもよい。
ステップ6207(S6207)では、組込み機器40は、ステップ6203で識別したブロック消去番号を用いてプログラムROM407又はデータROM408のブロックの消去を実施する。その後、処理は、ステップ6200へ移行し、電源遮断前に生成した更新情報に基づく、更新情報の動的な配置、及び更新動作が行われる。
2 ネットワーク入出力部
3 不揮発性メモリ
4 CPU
5 アドレス変換器
10 情報システム
15 ネットワーク
20 開発環境
22、33 データ処理部
30 管理サーバ
35 ネットワーク接続部
50 更新情報ファイル
70、701、702、703、704、705、706、707、708、709、710、711、712、713、714、715、716、720、721、722、723 インジェクションコード
400 制御対象装置
401 CPU
402、402A、402Bアドレス変換器
403 割込みコントローラ
404 暗号処理ユニット
405 DMAコントローラ
406 SRAM
407、412 プログラムROM
408 データROM
409 CANインターフェース
410 入出力インターフェース
411 サブCPU
440、443 汎用割込みベクタテーブル
441、444 専用割込みベクタテーブル
442 プログラム更新作業領域
450 制御回路
451 更新制御レジスタ
Claims (10)
- ネットワークを介して更新情報を受信するネットワーク入出力部と、
独立して読み出し及び書き込みが可能な複数の面を備えた第1の不揮発性メモリと、
独立して読み出し及び書き込みが可能な複数の面を備えた第2の不揮発性メモリと、
前記第1の不揮発性メモリに配置されたプログラムを実行するCPUと、
前記ネットワーク入出力部により受信された更新情報に含まれたアドレス変換テーブルを用いてアドレス変換を行う第1のアドレス変換器と、
前記ネットワーク入出力部により受信された更新情報に含まれたアドレス変換テーブルを用いてアドレス変換を行う第2のアドレス変換器と
を有し、
前記CPUは、前記第2の不揮発性メモリに配置されたデータを用いて前記第1の不揮発性メモリに配置されたプログラムを実行し、
前記第1の不揮発性メモリは、第1の面にデフォルトプログラムが配置され、第2の面に、前記ネットワーク入出力部により受信された更新情報に含まれた、前記デフォルトプログラムに対する差分プログラムが配置され、
前記第2の不揮発性メモリは、第1の面にデフォルトデータが配置され、第2の面に、前記ネットワーク入出力部により受信された更新情報に含まれた、前記デフォルトデータに対する差分データが配置され、
前記第1のアドレス変換器は、前記CPUにより命令がデコードされることによって取得されたアドレスが、前記デフォルトプログラムにおける変更箇所に対応するアドレスである場合に、該アドレスを前記差分プログラムが配置されたアドレスへと変換し、
前記第2のアドレス変換器は、前記CPUにより命令がデコードされることによって取得されたアドレスが、前記デフォルトデータにおける変更箇所に対応するアドレスである場合に、該アドレスを前記差分データが配置されたアドレスへと変換し、
前記CPUは、前記第1のアドレス変換器により変換されたアドレスに従って前記差分プログラムを実行し、
前記CPUは、前記第2のアドレス変換器により変換されたアドレスに従って前記差分データを用いた処理を実行する
組込み機器。 - 前記第1の不揮発性メモリの面数が3以上である
請求項1に記載の組込み機器。 - 前記第1のアドレス変換器は、前記CPUにより命令がデコードされることによって取得されたアドレスにおける予め定められたビット数の上位ビット列を変更し、かつ、変更された上位ビット列と前記アドレスの下位ビット列とを連結することにより、前記差分プログラムが配置されたアドレスへと変換する
請求項1に記載の組込み機器。 - 前記デフォルトプログラムにおける置換対象部分のコードのサイズよりも、前記置換対象部分のコードの代わりとなる差分コードのサイズが大きい場合、又は、前記置換対象のコードのサイズ若しくは前記差分コードのサイズが、前記予め定められたビット数に対応するメモリ領域の大きさであるセグメントサイズより大きい場合、前記第1のアドレス変換器は、前記置換対象部分のコードの開始アドレスを所定のアドレスへと変換し、
前記所定のアドレスは、前記置換対象部分のコードに代わる命令列の開始アドレスへのジャンプ命令に関わる命令が記憶されたアドレスである
請求項3に記載の組込み機器。 - 前記更新情報についての署名検証を行う署名検証部をさらに有し、
前記CPUは、前記署名検証部により正当であることが確認された場合、前記差分プログラムを実行する
請求項1に記載の組込み機器。 - 前記第2の不揮発性メモリは、前記更新情報に含まれる情報が前記第1の不揮発性メモリ又は前記第2の不揮発性メモリに書き込まれた際の書き込み先アドレスと、該アドレスに対応する消去ブロック番号とを管理する管理情報を記憶し、
前記第1の不揮発性メモリ又は前記第2の不揮発性メモリに記憶された情報の削除の際、前記管理情報に示される消去ブロック番号により指定された領域が削除される
請求項1に記載の組込み機器。 - 前記署名検証部により正当であることが確認された場合、前記更新情報の前記第1の不揮発性メモリへの書き込みを許可する制御回路をさらに有する
請求項5に記載の組込み機器。 - 前記ネットワーク入出力部は、既に前記第1の不揮発性メモリに配置された更新情報と重複する部分を除く更新情報を受信し、
前記第1の不揮発性メモリには、既に配置されている前記重複する部分に加え、前記重複する部分が除かれた前記差分プログラムが新たに配置される
請求項1に記載の組込み機器。 - 前記第2の不揮発性メモリは、前記更新情報に含まれる情報が前記第1の不揮発性メモリ又は前記第2の不揮発性メモリに書き込まれた際の書き込み先アドレスと、該アドレスに対応する消去ブロック番号とを管理する管理情報を記憶し、
前記更新情報の前記第1の不揮発性メモリ若しくは前記第2の不揮発性メモリへの書き込みの際、又は前記更新情報の適用動作の際に電源が停止した場合、電源回復後、前記管理情報が参照可能であるとき前記管理情報に従って電源停止前に書き込まれた前記更新情報が削除される
請求項1に記載の組込み機器。 - ネットワークを介して更新情報を受信するネットワーク入出力部と、
独立して読み出し及び書き込みが可能な複数の面を備えた第1の不揮発性メモリと、
前記第1の不揮発性メモリに配置されたプログラムを実行するCPUと、
前記ネットワーク入出力部により受信された更新情報に含まれたアドレス変換テーブルを用いてアドレス変換を行う第1のアドレス変換器と
を有し、
前記第1の不揮発性メモリは、第1の面にデフォルトプログラムが配置され、第2の面に、前記ネットワーク入出力部により受信された更新情報に含まれた、前記デフォルトプログラムに対する差分プログラムが配置され、
前記第1のアドレス変換器は、前記CPUにより命令がデコードされることによって取得されたアドレスが、前記デフォルトプログラムにおける変更箇所に対応するアドレスである場合に、該アドレスを前記差分プログラムが配置されたアドレスへと変換し、
前記CPUは、前記第1のアドレス変換器により変換されたアドレスに従って前記差分プログラムを実行し、
前記ネットワーク入出力部は、前記差分プログラムに加え、プログラム復元ポイントを構成する情報を含む前記更新情報を受信する
組込み機器。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016038574A JP6609199B2 (ja) | 2016-03-01 | 2016-03-01 | 組込み機器 |
KR1020170025009A KR20170102425A (ko) | 2016-03-01 | 2017-02-24 | 내장 기기 및 프로그램의 갱신 방법 |
EP17158031.9A EP3214545B1 (en) | 2016-03-01 | 2017-02-27 | Embedded device and program updating method |
US15/445,510 US10642596B2 (en) | 2016-03-01 | 2017-02-28 | Embedded device and program updating method |
CN201710126476.3A CN107145362B (zh) | 2016-03-01 | 2017-03-01 | 嵌入式设备以及程序更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016038574A JP6609199B2 (ja) | 2016-03-01 | 2016-03-01 | 組込み機器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017156908A JP2017156908A (ja) | 2017-09-07 |
JP6609199B2 true JP6609199B2 (ja) | 2019-11-20 |
Family
ID=58191317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016038574A Active JP6609199B2 (ja) | 2016-03-01 | 2016-03-01 | 組込み機器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10642596B2 (ja) |
EP (1) | EP3214545B1 (ja) |
JP (1) | JP6609199B2 (ja) |
KR (1) | KR20170102425A (ja) |
CN (1) | CN107145362B (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019567B1 (en) * | 2014-03-24 | 2018-07-10 | Amazon Technologies, Inc. | Encoding of security codes |
US10140117B2 (en) * | 2016-06-30 | 2018-11-27 | Microsoft Technology Licensing, Llc | Fault-tolerant variable region repaving during firmware over the air update |
US10185553B2 (en) * | 2016-06-30 | 2019-01-22 | Microsoft Technology Licensing, Llc | Fault-tolerant variable region repaving during firmware over the air update |
EP3435617B1 (en) * | 2017-07-24 | 2021-05-26 | Nxp B.V. | A node, a vehicle, an integrated circuit and method for updating at least one rule in a controller area network |
WO2019021064A1 (en) | 2017-07-25 | 2019-01-31 | Aurora Labs Ltd | CONSTRUCTION OF SOFTWARE DELTA UPDATES FOR VEHICLE ECU SOFTWARE AND TOOL-BASED ANOMALY DETECTION |
US10834206B2 (en) * | 2018-02-27 | 2020-11-10 | Excelfore Corporation | Broker-based bus protocol and multi-client architecture |
JP7231807B2 (ja) * | 2018-04-27 | 2023-03-02 | 日本電信電話株式会社 | 通信装置及び情報処理方法 |
US20190370439A1 (en) * | 2018-05-29 | 2019-12-05 | Sunasic Technologies, Inc. | Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same |
CN108920168B (zh) * | 2018-06-15 | 2022-03-11 | 先进储能材料国家工程研究中心有限责任公司 | 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 |
CN110737603B (zh) * | 2018-07-18 | 2023-08-01 | 炬力(珠海)微电子有限公司 | 一种替换rom中函数的方法及装置 |
JP7346956B2 (ja) * | 2018-08-10 | 2023-09-20 | 株式会社デンソー | 車両用プログラム書換えシステム、車両用マスタ装置、進捗状態の同期制御方法及び進捗状態の同期制御プログラム |
JP7354631B2 (ja) * | 2018-08-10 | 2023-10-03 | 株式会社デンソー | 電子制御装置、車両用電子制御システム、差分データの整合性判定方法及び差分データの整合性判定プログラム |
JP7439402B2 (ja) * | 2018-08-10 | 2024-02-28 | 株式会社デンソー | 表示制御装置、書換え進捗状況の表示制御方法及び書換え進捗状況の表示制御プログラム |
JP7115429B2 (ja) * | 2018-08-10 | 2022-08-09 | 株式会社デンソー | 車両用マスタ装置、ロールバックの実行制御方法及びロールバックの実行制御プログラム |
JP7047819B2 (ja) * | 2018-08-10 | 2022-04-05 | 株式会社デンソー | 電子制御装置、車両用電子制御システム、アクティベートの実行制御方法及びアクティベートの実行制御プログラム |
JP6973450B2 (ja) * | 2018-08-10 | 2021-12-01 | 株式会社デンソー | 車両用マスタ装置、インストールの指示判定方法及びインストールの指示判定プログラム |
JP6823027B2 (ja) * | 2018-09-18 | 2021-01-27 | ファナック株式会社 | 数値制御装置 |
US11561786B2 (en) * | 2018-12-04 | 2023-01-24 | Mitsubishi Electric Corporation | Update management device, update management system, and update management method |
US10866747B2 (en) | 2019-02-10 | 2020-12-15 | Hewlett Packard Enterprise Development Lp | Securing a memory drive |
US11086769B2 (en) | 2019-03-25 | 2021-08-10 | Aurora Labs Ltd. | Proving whether software functionality has changed following a software change |
US10871960B2 (en) * | 2019-04-23 | 2020-12-22 | EMC IP Holding Company LLC | Upgrading a storage controller operating system without rebooting a storage system |
JP7263101B2 (ja) * | 2019-04-26 | 2023-04-24 | キヤノン株式会社 | 情報処理装置、データ検証方法 |
JP7331456B2 (ja) | 2019-05-22 | 2023-08-23 | 株式会社デンソー | 車両用装置 |
WO2020261340A1 (ja) * | 2019-06-24 | 2020-12-30 | 日本電信電話株式会社 | 情報処理装置、制御方法及び制御プログラム |
US11016755B2 (en) * | 2019-07-31 | 2021-05-25 | Dell Products L.P. | System and method to secure embedded controller flashing process |
CN110413348B (zh) * | 2019-07-31 | 2023-01-06 | 中国工商银行股份有限公司 | 数据处理方法、装置、系统及介质 |
JP6821101B1 (ja) * | 2019-09-12 | 2021-01-27 | 三菱電機株式会社 | 数値制御装置 |
CN110750283B (zh) * | 2019-10-15 | 2023-05-02 | 青岛易触科技有限公司 | 一种自动售货机驱动程序远程升级方法及系统 |
CN113448596A (zh) * | 2020-03-24 | 2021-09-28 | 上海汽车集团股份有限公司 | 一种车辆控制器刷写系统、方法及相关设备 |
KR20220028879A (ko) * | 2020-08-31 | 2022-03-08 | 현대자동차주식회사 | 차량의 ecu 업데이트 관리 장치 및 그 방법 |
CN112596769A (zh) * | 2020-12-21 | 2021-04-02 | 潍柴动力股份有限公司 | 一种变量管理方法及装置 |
CN113110860B (zh) * | 2021-04-29 | 2024-05-24 | 苏州大学 | 一种嵌入式终端远程软件更新方法 |
US11644980B2 (en) * | 2021-06-22 | 2023-05-09 | Intel Corporation | Trusted memory sharing mechanism |
CN113553090B (zh) * | 2021-07-26 | 2023-07-25 | 网易(杭州)网络有限公司 | 客户端应用程序的更新控制方法及装置 |
US11709937B2 (en) * | 2021-08-25 | 2023-07-25 | International Business Machines Corporation | Inactivating basic blocks of program code to prevent code reuse attacks |
CN114063931B (zh) * | 2021-11-26 | 2023-04-25 | 重庆科创职业学院 | 一种基于大数据的数据存储方法 |
JP2023085002A (ja) * | 2021-12-08 | 2023-06-20 | 株式会社オートネットワーク技術研究所 | 車載装置、プログラム、プログラムの更新方法、及び車載更新システム |
CN114546445B (zh) * | 2022-02-24 | 2024-05-24 | 重庆长安汽车股份有限公司 | 一种基于微服务架构的整车ota控制器升级系统及方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0772863B2 (ja) * | 1986-10-30 | 1995-08-02 | 日本電気株式会社 | プログラムカウンタ相対アドレス計算方式 |
JPH10260845A (ja) * | 1997-03-19 | 1998-09-29 | Fujitsu Ltd | ファームウェアの更新処理機能を有するマルチcpuシステム |
US6952823B2 (en) * | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
JP2001005658A (ja) * | 1999-06-18 | 2001-01-12 | Toshiba Corp | 組込型データ処理システムおよびシステムプログラム修正方法 |
JP2001125781A (ja) * | 1999-10-29 | 2001-05-11 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ、およびマイクロプロセッサにおけるプログラム変更方法 |
US7082549B2 (en) | 2000-11-17 | 2006-07-25 | Bitfone Corporation | Method for fault tolerant updating of an electronic device |
JP2002312186A (ja) * | 2001-04-16 | 2002-10-25 | Matsushita Electric Ind Co Ltd | 情報処理機器、そのファームウェア及びそのファームウェア書き換え方法 |
JP2003208359A (ja) * | 2002-01-16 | 2003-07-25 | Mitsubishi Electric Corp | マイクロコンピュータ |
JP3702231B2 (ja) * | 2002-01-31 | 2005-10-05 | 株式会社東芝 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
US7007049B2 (en) * | 2002-11-18 | 2006-02-28 | Innopath Software, Inc. | Device memory management during electronic file updating |
WO2004061551A2 (en) * | 2002-12-18 | 2004-07-22 | Bitfone Corporation | Mobile handset with a fault tolerant update agent |
US7269707B2 (en) * | 2003-01-10 | 2007-09-11 | Texas Instruments Incorporated | Multiple patches to on-chip ROM in a processor with a multilevel memory system without affecting performance |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
US20070106873A1 (en) * | 2005-11-04 | 2007-05-10 | Stratus Technologies Bermuda Ltd. | Apparatus and method for translating addresses |
JP2007219883A (ja) * | 2006-02-17 | 2007-08-30 | Sony Ericsson Mobilecommunications Japan Inc | 移動端末装置およびソフトウェア更新方法 |
CN101068212B (zh) * | 2007-06-11 | 2010-12-29 | 中兴通讯股份有限公司 | 一种网络地址转换转发的装置及方法 |
US20090031121A1 (en) * | 2007-07-24 | 2009-01-29 | Via Technologies | Apparatus and method for real-time microcode patch |
US7844785B2 (en) * | 2007-10-22 | 2010-11-30 | Qimonda Ag | Method and apparatus for memory access optimization |
US8839225B2 (en) * | 2008-01-23 | 2014-09-16 | International Business Machines Corporation | Generating and applying patches to a computer program code concurrently with its execution |
JP5297848B2 (ja) | 2009-03-18 | 2013-09-25 | 株式会社日立ソリューションズ | プログラム動的更新システム、管理サーバ、組込み機器及びプログラム |
JP5342302B2 (ja) * | 2009-03-30 | 2013-11-13 | 株式会社日立ソリューションズ | ファームウェア更新システム、ファームウェア配信サーバ、及びプログラム |
CN102135859A (zh) * | 2010-01-22 | 2011-07-27 | 智多星电子科技有限公司 | 用于差分数据传输的快闪存储卡 |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
CN103680610A (zh) * | 2012-09-03 | 2014-03-26 | 北京兆易创新科技股份有限公司 | 差分存储NAND Flash存储器写操作的方法及装置 |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN104657170A (zh) * | 2013-11-25 | 2015-05-27 | 腾讯科技(上海)有限公司 | 一种数据更新方法、装置及系统 |
KR20150074414A (ko) * | 2013-12-24 | 2015-07-02 | 현대자동차주식회사 | 펌웨어 업그레이드 방법 및 그 시스템 |
US9653184B2 (en) * | 2014-06-16 | 2017-05-16 | Sandisk Technologies Llc | Non-volatile memory module with physical-to-physical address remapping |
US10747449B2 (en) * | 2014-07-31 | 2020-08-18 | Toshiba Memory Corporation | Reduction of power use during address translation via selective refresh operations |
US9864545B2 (en) * | 2015-04-14 | 2018-01-09 | Sandisk Technologies Llc | Open erase block read automation |
-
2016
- 2016-03-01 JP JP2016038574A patent/JP6609199B2/ja active Active
-
2017
- 2017-02-24 KR KR1020170025009A patent/KR20170102425A/ko unknown
- 2017-02-27 EP EP17158031.9A patent/EP3214545B1/en active Active
- 2017-02-28 US US15/445,510 patent/US10642596B2/en active Active
- 2017-03-01 CN CN201710126476.3A patent/CN107145362B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107145362B (zh) | 2021-08-06 |
EP3214545A1 (en) | 2017-09-06 |
US20170255459A1 (en) | 2017-09-07 |
EP3214545B1 (en) | 2018-11-07 |
JP2017156908A (ja) | 2017-09-07 |
CN107145362A (zh) | 2017-09-08 |
KR20170102425A (ko) | 2017-09-11 |
US10642596B2 (en) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6609199B2 (ja) | 組込み機器 | |
US20180173643A1 (en) | File Data Access Method and Computer System | |
KR101213275B1 (ko) | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 | |
US20090019437A1 (en) | Application management and execution system and method thereof | |
JP2007058776A (ja) | メモリアクセス制御装置 | |
US20100082929A1 (en) | Memory protection method, information processing apparatus, and computer-readable storage medium that stores memory protection program | |
KR20040076589A (ko) | 메모리 카드 | |
US20150012732A1 (en) | Method and device for recombining runtime instruction | |
WO2019237866A1 (zh) | 一种运行时访问控制方法及计算装置 | |
CN112256396B (zh) | 内存管理方法、系统及安全处理装置、数据处理装置 | |
JP5158187B2 (ja) | ストレージ装置、ストレージ制御装置およびストレージ制御方法 | |
JP2016157270A (ja) | ストレージ制御装置、およびストレージ制御プログラム | |
JP2014517376A (ja) | 安全なデータ格納方法およびデバイス | |
US9262301B2 (en) | Observability control with observability information file | |
CN111797390B (zh) | 程序运行方法、装置、电子设备及计算机可读存储介质 | |
CN113485716A (zh) | 防内存越界的程序编译方法及装置 | |
CN101441551B (zh) | 计算机、外存储器以及处理外存储器中数据信息的方法 | |
US11922158B2 (en) | Unified local patch repository | |
US10956038B2 (en) | Non-volatile memory drive partitions within microcontrollers | |
KR20170102635A (ko) | 어플리케이션 사용패턴을 고려한 프라이버시 보호 방법 및 장치 | |
CN115688119A (zh) | 漏洞修复方法、装置、电子设备及存储介质 | |
CN111752475B (zh) | 在存储服务器中进行数据存取管理的方法与装置 | |
JP5551868B2 (ja) | 実行ファイル作成装置 | |
KR100811559B1 (ko) | 비휘발성 메모리의 데이터 저장영역 관리 방법 및 장치 | |
JP7332249B2 (ja) | 移行先決定プログラム、装置、及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160803 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180913 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190625 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190702 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190902 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20191001 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20191025 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6609199 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |