説明

情報処理装置及び制御プログラム

【課題】リロケーション機能を有するOSを車載システムに適用する場合に、リロケーションによるシステム起動時間の遅延を軽減させることができる技術を提供する。
【解決手段】メインメモリをバッテリーによってバックアップされるように構成し、装置への電力供給が絶たれた場合でも、メインメモリ内の情報が保持されるようにする。そして、初回のプログラムロード時にカーネル情報をカーネル情報テーブルに記憶させるようにし(S140)、当該プログラムを再度起動させる際には、そのカーネル情報をカーネルに渡すようにする(S180)。このようにすることにより、プログラム記憶媒体からプログラムを再度読み出すことなく、また、カーネル情報を再生成することもなく、プログラムの実行を開始することができる。したがって、システムの起動時間を短縮することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高速にシステムを起動させることができる技術に関する。
【背景技術】
【0002】
システム起動時間を短縮させる技術として様々な技術が知られている。例えば、メモリ(RAM)の内容をそのまま保持(バッテリバックアップ等)させながらCPUのみを停止させ、必要に応じてCPUを起動させる方法(レジューム)や、メモリの内容をHDD等へそのまま保存し、復帰時にそれをメモリに展開させる方法(ハイバネーション)がある。
【0003】
しかし、これらを実現させるためには、これらの機能に対応したドライバを開発する必要がある。また復帰の際には、ネットワークコントローラ等の他のハードウェアは通常と同様に初期化されるが、実行途中であったプログラムは待機開始時点の状態から続けて実行することになる。このため、車載LANを介して他の装置との通信を行う処理のような動作シーケンスを有している処理については、シーケンスに不整合が生じて復帰出来ないケースも多い。したがって、車載システムにおいては、レジュームやハイバネーションといった高速起動技術の適応は困難であり、車載システムにおいては、これらの高速起動技術とは別の観点で高速化を図ることが必要である。
【0004】
他の技術として、特許文献1に記載された情報処理装置がある。この情報処理装置は、フラッシュメモリとRAMとを備え、フラッシュメモリにOS(オペレーティングシステム)を含むプログラムを記憶させている。そして、起動時にRAMにプログラムがロード済みであるか否かをチェックし、ロード済みであれば、そのプログラムがRAM上で正常に起動できるか否かをチェックし、正常であれば当該プログラムを実行する。これにより、起動時におけるプログラムのフラッシュメモリからのロード処理を省略して起動時間の短縮化が図れる。
【特許文献1】特開2003−131880号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ここで、MMU(Memory Management Unit)機能を利用するOS(例えば、Linux、Windows(登録商標)等)に注目してみると、これらのOSでは、プログラムをロードするアドレスをカーネルが決定する(「リロケーション」と称す)。したがって、アプリケーションプログラムやドライバプログラムを起動させる場合には、カーネルが、毎回、これらのプログラムの使用するメモリのアドレスを決定してプログラムをロードする必要がある。このため、MMU機能を利用するOSは固定アドレス方式の従来のシステムに比べて、システムの起動に時間がかかる。
【0006】
車載システムに対して上述した特許文献1に記載された技術を適用すればプログラムのロードは回避出来るが、MMU機能を有するOSの場合、プログラム実行(起動)させるためには、更にカーネル情報が必要である。例えば、ファイルからロードを前提とするOS(Linux、Windows(登録商標)、T-Kernel等)で言えば、ロード時にカーネル情報が生成されるため、カーネルによるロード方法以外の方法でプログラムがロードされるとカーネル情報が生成されないため、プログラムの実行(起動)ができない。したがって、何らかの方法によりカーネル情報を再生成するためのプログラムが必要となる。
【0007】
本発明は、このような問題にかんがみなされたものであり、リロケーション機能を有するOSを車載システムに適用する場合に、リロケーションによるシステム起動時間の遅延を軽減させることができる技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するためになされた請求項1に記載の情報処理装置は、電力供給がなくても情報を記憶し続けることができるメモリと、プログラムが記憶された記憶手段と、制御手段とを備える。制御手段は、オペレーティングシステムの機能により、メモリ中のアドレス位置を決定し、決定したアドレスの場所に、記憶手段からプログラムを読み出して展開させ、展開させたプログラムを実行する。そして、制御手段は、記憶手段からプログラムを読み出してメモリに展開させた際、当該プログラムを特定するための情報と、展開させた領域のアドレス情報とをメモリにカーネル情報として記憶させておき、当該制御手段が初期化された後、プログラムを実行させる必要が生じた際に、メモリに記憶させておいたカーネル情報を参照してプログラムが既にメモリに展開されているか否かを判定し、展開されている場合には、記憶手段からプログラムを読み出すことなく、既にメモリに展開されているプログラムを、カーネル情報を用いて実行する。
【0009】
なお、「電力供給がなくても情報を記憶し続けることができるメモリ」というのは、フラッシュメモリ等の不揮発性のメモリや、バッテリーによってバックアップされたメモリを意味する。また、「初期化」というのは、制御手段への電力供給が開始された際や、リセットされた際に行われる処理を意味し、制御手段内のレジスタ等の内容が初期化されることを意味する。
【0010】
このようになっていれば、記憶手段からプログラムの再度の読み出しを回避できる上、カーネル情報の再生成も必要ない。したがって、リロケーション機能を有するオペレーティングシステムを情報処理装置に実行させる場合にも、システムの起動時間を短縮することができる。また、このような情報処理装置を車両に搭載する場合には、車両では情報処理装置の停止及び起動が頻繁に発生するため、起動時間の短縮効果は特に大きい。
【0011】
ところで、制御手段は、更に、カーネル情報を記憶させる際にカーネル情報のCRC値を計算し、そのCRC値をカーネル情報とともにメモリに記憶させておき、上記判定の際に更に、メモリに記憶させておいたカーネル情報の整合性をCRC値を用いて検証し、カーネル情報に不整合があった場合には、上記判定の結果にかからず、メモリに展開されているプログラムを実行せずに、記憶手段からプログラムを再度読み出して実行するようになっているとよい(請求項2)。
【0012】
このようになっていれば、何らかの理由によってカーネル情報が破壊されたとしても、その破壊されたカーネル情報に基づいてプログラムが実行されることがない。つまり、プログラムが暴走してしまうことを効果的に防止することができる。
【0013】
また、「アドレス情報」というのは、当該プログラムのコードが展開された領域のアドレス情報と、当該プログラムの実行時に利用されるデータが展開された領域のアドレス情報とから少なくとも構成されているとよい(請求項3)。なお、データの領域には、例えば、初期値付き変数が格納される。
【0014】
アドレス情報がこのような情報から構成されていれば、プログラムのコードが展開された領域のアドレスと、プログラムの実行時に利用されるデータが格納された領域のアドレスとをオペレーティングシステムは即座に把握できる。したがって、これらのアドレス情報を別途収集する必要がなく、プログラムの開始速度が速まる。
【0015】
また、制御手段は、カーネル情報を記憶させる際、プログラムのコードが展開された領域のCRC値を計算し、そのCRC値をカーネル情報の一つとしてメモリに記憶させておき、上記判定において肯定判定された後に、プログラムのコードが展開された領域を、メモリに記憶させておいたCRC値を用いて検証し、その領域に不整合があった場合には、メモリに展開されているプログラムを実行せずに、記憶手段からプログラムを再度読み出して実行するようになっているとよい(請求項4)。
【0016】
このようになっていれば、何らかの理由によってプログラムコードが破壊されたとしても、その破壊されたプログラムコードに基づいてプログラムが実行されることがない。つまり、プログラムが暴走してしまうことを効果的に防止することができる。
【0017】
また、制御手段は、カーネル情報を記憶させる際、プログラムの実行時に利用されるデータが展開された領域のCRC値を計算し、そのCRC値をカーネル情報の一つとしてメモリに記憶させておき、上記判定において肯定判定された後に、データが展開された領域を、CRC値を用いて検証し、領域に不整合があった場合には、メモリに展開されているプログラムを実行せずに、記憶手段からプログラムを再度読み出して実行するようになっているとよい(請求項5)。
【0018】
このようになっていれば、何らかの理由によってプログラムの実行時に利用されるデータが破壊されたとしても、その破壊されたデータに基づいてプログラムが実行されることがない。つまり、プログラムが暴走してしまうことを効果的に防止することができる。
【0019】
なお、上述した制御手段の機能の一部を制御プログラムとして構成してもよい(請求項6〜請求項10)。これらの制御プログラムは、周知のオペレーティングシステムとは別のプログラムであるが、オペレーティングシステムの一部として組み込まれていてもよい。このような制御プログラムを、情報処理装置が内蔵するCPUに実行させれば、その情報処理装置は、上述した情報処理装置と同様の作用及び効果を奏する。また、プログラムはネットワーク等を用いて流通させることも可能である上、情報処理装置におけるプログラムの入れ替えは、部品の入れ替えに比較して容易である。したがって、情報処理装置の機能向上を容易に行うこともできる。
【発明を実施するための最良の形態】
【0020】
以下、本発明が適用された実施形態について図面を用いて説明する。尚、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【0021】
[構成の説明]
図1は、本発明の情報処理装置の機能を備えたナビゲーション装置20の概略構成を示すブロック図である。
【0022】
ナビゲーション装置20は車両に搭載され、車両の現在位置を検出する位置検出器21と、利用者からの各種指示を入力するための操作スイッチ群22と、操作スイッチ群22と同様に各種指示を入力可能であってナビゲーション装置20とは別体となったリモートコントロール端末(以下、リモコンと称す)23aと、リモコン23aからの信号を入力するリモコンセンサ23bと、パケット通信網等に接続して外部と通信を行う外部通信機24と、地図データや音声データ等が記録された地図記憶媒体からデータを入力する地図データ入力器25と、地図や各種情報の表示を行うための表示部26と、各種のガイド音声等を出力するための音声出力部27と、利用者が発話した音声に基づく電気信号を出力するマイクロフォン28と、車内LANに接続された各種ECU等と通信を行う車内LAN通信部33と、上述した位置検出器21,操作スイッチ群22,リモコンセンサ23b,外部通信機24,地図データ入力器25,マイクロフォン28,車内LAN通信部33からの入力に応じて各種処理を実行し、外部通信機24,表示部26,音声出力部27,車内LAN通信部33を制御する制御部29とを備えている。
【0023】
位置検出器21は、GPS(Global Positioning System)用の人工衛星からの電波を図示しないGPSアンテナを介して受信してその受信信号を出力するGPS受信機21aと、車両に加えられる回転運動の大きさを検出するジャイロスコープ21bと、車両の前後方向の加速度等から走行した距離を検出するための距離センサ21cとを備えている。そして、これら各センサ等21a〜21cからの出力信号に基づいて制御部29が、車両の位置,方位,速度等を算出する。なお、GPS受信機21aからの出力信号に基づいて現在位置を求める方式は様々な方式があるが、単独測位方式、相対測位方式の何れであってもよい。
【0024】
操作スイッチ群22は、表示部26の表示面と一体に構成されたタッチパネル及び表示部26の周囲に設けられたメカニカルなキースイッチ等から構成される。尚、タッチパネルと表示部26とは積層一体化されており、タッチパネルには、感圧方式,電磁誘導方式,静電容量方式,あるいはこれらを組み合わせた方式など各種の方式があるが、その何れを用いてもよい。
【0025】
リモコン23aは、複数のボタンから構成されており、何れかのボタンが押下されるとそのボタンの種類に応じた信号が赤外線等の近距離無線通信を介してリモコンセンサ23bに届くように構成されている。
【0026】
リモコンセンサ23bは、リモコン23aから送られる信号を受信し、受信した信号を制御部29へ出力するようになっている。
外部通信機24は、路側に設置された光ビーコンや電波ビーコン等を介してVICSの情報センタから事故情報や渋滞情報等を取得する。
【0027】
地図データ入力器25は、図示しない地図データ等記憶媒体(例えばハードディスクやDVD−ROM等)に記憶された各種データやプログラムを入力するための装置である。地図データ等記憶媒体には、地図データ(ノードデータ、リンクデータ、コストデータ、背景データ、道路データ、名称データ、マークデータ、交差点データ、施設のデータ等)、案内用の音声データ、音声認識データ、各種のプログラム等が記憶されている。なお、地図データ等記憶媒体からこれらのデータやプログラムを入力する代わりに、通信ネットワークを介してこれらのデータやプログラムを入力するようになっていてもよい。
【0028】
表示部26は、液晶ディスプレイや有機ELディスプレイ等からなり、表示部26の表示画面には、位置検出器21にて検出した車両の現在位置と地図データ入力器25より入力された地図データとから特定した現在地を示すマーク、目的地までの誘導経路、名称、目印、各種施設のマーク等の付加データとを重ねて表示することができる。また、施設のガイド等も表示できる。
【0029】
マイクロフォン28は、利用者が音声を入力(発話)するとその入力した音声に基づく電気信号(音声信号)を制御部29に出力するものである。利用者はこのマイクロフォン28に様々な音声を入力することにより、ナビゲーション装置20を操作することができる。
【0030】
車内LAN通信部33は、車内LANに接続された各種のECU(エンジンECU、AT−ECU、ブレーキECU等)や各種のセンサ(方向指示器センサ、ドア開閉センサ等)との通信を担う。
【0031】
制御部29は、CPU,ROM,RAM,I/O及びこれらの構成を接続するバスラインなどからなる周知のマイクロコンピュータを中心に構成されており、ROMや上述した地図データ等記憶媒体から読み出したプログラムに基づいてCPUが主体となって各種処理を実行する。例えば、位置検出器21からの各検出信号に基づき座標及び進行方向の組として車両の現在位置を算出し、地図データ入力器25を介して読み込んだ現在位置付近の地図等を表示部26に表示する現在地表示処理や、地図データ入力器25に格納された地図データと、操作スイッチ群22やリモコン23a等の操作に従って設定された目的地とに基づいて現在位置から目的地までの最適な経路を算出する経路算出処理や、その算出した経路を表示部26に表示させたり音声出力部27に音声として出力させることにより経路を案内する経路案内処理等を実行する。
【0032】
なお、制御部29のRAM(メインメモリ)は、図示しないバッテリーの電力によってバックアップされており、ナビゲーション装置20への電力供給が絶たれた状態であっても、メインメモリの内容が保持されるようになっている。また、制御部29は、MMU(Memory Management Unit)機能を有したOSを実行し、そのOS上で各処理を実行する。また、このOSは、プログラムが終了した場合にも、メインメモリ(RAM)上でプログラムが使用していた領域(プログラムコードが展開された領域及びプログラムの実行時に利用されるデータが展開された領域)を開放せず、可能な限り当該領域を残しておくように動作するOSである。
【0033】
[動作の説明]
次に、制御部29が実行する処理のうち、本発明に特に関連するプログラムロード処理について、図2のフローチャートを用いて説明する。なお、一般的なナビゲーション装置の制御部が実行する現在地表示処理や、経路案内処理等の広く知られた処理については説明を省略する。
【0034】
制御部29が実行するプログラムロード処理は、ユーザインターフェースを司るプログラムをはじめとする他のプログラムから実行指令を受けた際に実行が開始される。
制御部29は、プログラムロード処理の実行を開始すると、まずロードするプログラム(以下、「起動対象プログラム」とも称す。)の情報を取得する(S110)。これは、実行指令を発したプログラムからファイル名、ディレクトリ名等を取得することである。
【0035】
続いて、制御部29は、ロードするプログラムは初回起動であるか否かを判定する(S115)。具体的には、メインメモリ(RAM)内のカーネル情報テーブルを参照し、起動対象プログラムについてのカーネル情報が存在するか否かを判定する。そして、起動対象プログラムについてのカーネル情報は存在しない(つまり、初回起動である)と判定した場合は(S115:Yes)、S120へ処理を移行し、起動対象プログラムについてのカーネル情報は存在する(つまり、初回起動でない)と判定した場合は(S115:No)、S150へ処理を移行する。なお、カーネル情報の詳細については後述する。また、カーネル情報テーブルは、カーネル情報を格納可能なテーブルであり、カーネル情報を構成する各情報を、カーネル情報単位で複数記憶することができるように構成されている。そして、メインメモリからプログラムコード等が消去された場合には、該当するカーネル情報もカーネル情報テーブルから消去されるようになっている。
【0036】
初回起動であると判定した場合に進むS120では、起動対象プログラムをメインメモリ(RAM)にロードする。このステップで行うロードは、既存の方法によるロードであり、OSが当該プログラムのためにメインメモリの領域を割り当て、地図データ入力器25を介して地図データ等記憶媒体や、制御部29内のROMから起動対象プログラムを読み出してメインメモリにロードし、起動対象プログラムを実行可能な状態にすることである。
【0037】
ここで、カーネル情報について説明する。カーネル情報というのは、カーネルがプログラムの実行を制御する際に利用する情報であって、プログラム(モジュール)単位に設定された情報である。カーネル情報の一例を、図3のデータ構造図を用いて説明する。この例のカーネル情報は、module構造体と、このmodule構造体自体のCRC値を格納するための変数crc32とから構成される。module構造体は、pathname、entry、text_paddr、text_crc32、data_cache、data_cache_crc32の各変数から構成される。pathnameは、モジュールのパス名を格納するための変数である。entryは、モジュールがロードされたメモリの先頭物理アドレスを格納するための変数である。text_paddrは、プログラムコードが格納されるプログラムコード領域の先頭物理アドレスを格納するための変数である。text_crc32は、プログラムコード領域のCRC値を格納するための変数である。data_cacheは、プログラムが実行時に使用するデータの領域であるプログラムデータ領域の先頭物理アドレスを格納するための変数である。なお、プログラムデータ領域は、例えば、初期値付き変数が格納される領域として利用される。data_cache_crc32は、プログラムデータ領域のCRC値を格納するための変数である。このうち、pathname、entry、text_paddr、data_cache、の各変数にセットされるデータについては、S120でメインメモリにプログラムがロードされた際に生成される。
【0038】
説明を図2に戻し、続いて、プログラムのCRC値を計算するか否かを判定する(S125)。ここで言う「プログラムのCRC値」というのは、メインメモリ内に記憶されている起動対象プログラムのプログラムコード領域及び当該プログラムが使用するプログラムデータ領域のそれぞれのCRC値であり、図3の例で言えば、text_crc32にセットするためのプログラムコード領域のCRC値であり、data_cache_crc32にセットするためのプログラムデータ領域のCRC値である。この判定は、所定の設定ファイルの記述や、起動時の引数に基づいて行う。なお、プログラムのCRC値の算出は、デバッグを想定したものである。通常デバッカは、停止させたい位置(Breakポイント)のプログラムコードを「(デバック)例外を発生させる」コードに変更し、その例外を発生させることにより、プラグラムを目的の位置で停止させるようにしている。よってデバック時にBreakポイントを設定した状態で本発明を実行した場合、最初にCRC値を算出した場合とプログラムコードが異なり、毎回プログラムのロードが発生してしまう。このため「CRC判定をする/しない」を用意している(CRC値の算出有無の判定は本ステップ(S125)にて行い、CRC値のチェックの有無は後述するS160にて行う)。
【0039】
プログラムのCRC値を計算すると判定した場合は(S125:Yes)、S130へ処理を移行し、プログラムのCRC値を計算すると判定した場合は(S125:No)、S135へ処理を移行する。
【0040】
プログラムのCRC値を計算すると判定した場合に進むS130では、プログラムのCRC値を計算して記憶する。
続いて、カーネル情報(図3の例で言えば、module構造体部分のデータ)のCRC値を求める(S135)。カーネル情報のCRC値を求めると、そのCRC値をカーネル情報に付加する(図3の例で言えば、変数crc32にセットする)。そしてCRC値が付加されたカーネル情報を、制御部29内のメインメモリ内のカーネル情報テーブルに格納し(S140)、S145へ処理を移行する。
【0041】
S145では、本処理(プログラムロード処理)の実行指令を発したプログラムに対してロードを完了した旨の通知を行う(S145)。そして、本処理(プログラムロード処理)を終了する。
【0042】
一方、初回起動でないと判定した場合に進むS150では、メインメモリ内のカーネル情報テーブルから起動対象プログラムのカーネル情報を特定し、そのカーネル情報のCRC値をチェックする。具体的には、カーネル情報のうちCRC値を除いた部分(図3の例で言えば、module構造体の部分)のCRC値を計算し、その計算結果とカーネル情報に付加されているCRC値(図3の例で言えば、変数crc32に格納されている値)とが同一であるか否かを比較する。
【0043】
続いて、チェック結果によって処理を分岐する(S155)。チェック結果が正当(CRC値が一致)である場合には(S155:Yes)、S160へ処理を移行し、チェック結果が不当(CRC値が不一致)である場合には(S155:No)、S175へ処理を移行する。
【0044】
チェック結果が正当であったと判定した場合に進むS160では、プログラムのCRC値をチェックするか否かを判定する。この判定は、所定の設定ファイルの記述や、起動時の引数に基づいて行う。なお、プログラムのCRCチェックは、デバッグを想定したものであり、通常はプログラムのCRCチェックは行われないようになっているとよい。プログラムのCRCチェックを実行すると判定した場合は(S160:Yes)、S165へ処理を移行し、プログラムのCRCチェックを実行しないと判定した場合は(S160:No)、S180へ処理を移行する。
【0045】
起動プログラムのCRCチェックを実行すると判定した場合に進むS165では、プログラムのCRC値をチェックする。ここで言う「プログラムのCRC値をチェック」というのは、メインメモリ内に記憶されている起動対象プログラムのプログラムコード領域及び当該プログラムが使用していたプログラムデータ領域のそれぞれのCRC値を計算し、起動対象プログラムのカーネル情報にセットされているそれぞれのCRC値と比較することによって行う。図3の例で言えば、プログラムコード領域のCRC値とtext_crc32にセットされている値とを比較するとともに、プログラムデータ領域のCRC値とdata_cache_crc32にセットされている値とを比較することである。
【0046】
続いて、CRC値のチェック結果によって処理を分岐する(S170)。チェック結果が正当(いずれのCRC値も一致)である場合には(S170:Yes)、S180へ処理を移行し、チェック結果が不当(いずれかのCRC値が不一致)である場合には(S170:No)、S175へ処理を移行する。
【0047】
チェック結果が不当(いずれのCRC値も不一致)であると判定した場合に進むS175では、メインメモリ内のカーネル情報テーブルに記憶させておいた当該プログラムのカーネル情報を削除する。そして、S120へ処理を戻す。
【0048】
S160で起動プログラムのCRCチェックを実行しないと判定した場合、S170でチェック結果が正当であると判定した場合に進むS180では、S150で特定したカーネル情報をカーネルに渡し、S145へ処理を移行する。
【0049】
[実施形態の効果]
上記実施形態のナビゲーション装置20では、メインメモリはバッテリーによってバックアップされているため、ナビゲーション装置20への電力供給が絶たれた場合でも、メインメモリ内の情報が保持される。そして、上述したプログラムロード処理による機能により、初回のプログラムロード時にカーネル情報をカーネル情報テーブルに記憶させるようになっており(S140)、当該プログラムを再度起動させる際には、そのカーネル情報をカーネルに渡すようになっている(S180)。
【0050】
このため、オペレーティングシステムは、制御部29内のROMや地図データ等記憶媒体からプログラムを再度読み出すことなく、また、カーネル情報を再生成することもなく、プログラムの実行を開始することができる。したがって、システムの起動時間を短縮することができる。
【0051】
また、プログラムロード処理では、カーネル情報をカーネルに渡す前に、カーネル情報のCRC値をチェックするようになっている(S150)。そして、CRC値に異常がある場合には(S155:No)、プログラムをROMや地図データ等記憶媒体から再ロードするようになっている(S120)。
【0052】
このため、何らかの理由によってカーネル情報が破壊されていたとしても、その破壊されたカーネル情報に基づいてプログラムが実行されることがない。
また、プログラムロード処理では、メインメモリ中におけるプログラムコード領域の先頭物理アドレスとプログラムデータ領域の先頭物理アドレスとを、カーネル情報として記憶するようになっている(S140,図3参照)。そして、それらの情報がカーネルに渡されるようになっている(S180)。このため、プログラムコード領域の先頭物理アドレスと、プログラムデータ領域の先頭物理アドレスとをオペレーティングシステムは即座に把握できるため、これらのアドレス情報を別途収集する必要がなく、プログラムの開始速度が早い。
【0053】
また、プログラムロード処理では、メインメモリ中におけるプログラムコード領域のCRC値、及び、プログラムデータ領域のCRC値をチェックすることもできる(S165)。したがって、何らかの理由によってプログラムコードやプログラムが利用するデータが破壊されたとしても、その破壊されたプログラムコード等に基づいてプログラムが実行されることがない。
【0054】
[特許請求の範囲との対応]
上記実施形態で用いた用語と、特許請求の範囲に記載した用語との対応を示す。
制御部29のRAMがメモリに相当し、制御部29のROM及び地図データ等記憶媒体が記憶手段に相当し、制御部29のCPUが制御手段に相当する。また、図3における、変数crc32に格納される値が、カーネル情報のCRC値である。変数text_paddrに格納される値が、プログラムコードが展開された領域(プログラムコード領域)のアドレス情報である。変数text_crc32に格納される値が、プログラムコード領域のCRC値である。変数data_cacheに格納される値が、プログラムの実行時に利用されるデータが展開された領域(プログラムデータ領域)のアドレス情報である。変数data_cache_crc32に格納される値が、プログラムデータ領域のCRC値である。
【図面の簡単な説明】
【0055】
【図1】実施形態のナビゲーション装置の概略構成を示すブロック図である。
【図2】プログラムロード処理を説明するためのフローチャートである。
【図3】カーネル情報を説明するためのデータ構造図である。
【符号の説明】
【0056】
20…ナビゲーション装置、21…位置検出器、21a…GPS受信機、21b…ジャイロスコープ、21c…距離センサ、22…操作スイッチ群、23a…リモコン、23b…リモコンセンサ、24…外部通信機、25…地図データ入力器、26…表示部、27…音声出力部、28…マイクロフォン、29…制御部、33…車内LAN通信部。

【特許請求の範囲】
【請求項1】
電力供給がなくても情報を記憶し続けることができるメモリと、
プログラムが記憶された記憶手段と、
オペレーティングシステムの機能により、前記メモリ中のアドレス位置を決定し、決定したアドレスの場所に、前記記憶手段から前記プログラムを読み出して展開させ、展開させたプログラムを実行する制御手段と、
を備え、
前記制御手段は、
前記記憶手段から前記プログラムを読み出して前記メモリに展開させた際、そのプログラムを特定するための情報と、展開させた領域のアドレス情報とを前記メモリにカーネル情報として記憶させておき、
当該制御手段が初期化された後、前記プログラムを実行させる必要が生じた際に、前記メモリに記憶させておいた前記カーネル情報を参照して前記プログラムが既に前記メモリに展開されているか否かを判定し、展開されている場合には、前記記憶手段から前記プログラムを読み出すことなく、既に前記メモリに展開されている前記プログラムを、前記カーネル情報を用いて実行すること、
を特徴とする情報処理装置。
【請求項2】
請求項1に記載の情報処理装置において、
前記制御手段は、
更に、前記カーネル情報を記憶させる際に前記カーネル情報のCRC値を計算し、そのCRC値を前記カーネル情報とともに前記メモリに記憶させておき、
前記判定の際に更に、前記メモリに記憶させておいた前記カーネル情報の整合性を前記CRC値を用いて検証し、前記カーネル情報に不整合があった場合には、前記判定の結果にかかわらず、前記メモリに展開されている前記プログラムを実行せずに、前記記憶手段から前記プログラムを再度読み出して実行すること、
を特徴とする情報処理装置。
【請求項3】
請求項1又は請求項2に記載の情報処理装置において、
前記アドレス情報は、前記プログラムのコードが展開された領域のアドレス情報と、前記プログラムの実行時に利用されるデータが展開された領域のアドレス情報とから少なくとも構成されること、
を特徴とする情報処理装置。
【請求項4】
請求項3に記載の情報処理装置において、
前記制御手段は、
前記カーネル情報を記憶させる際、前記プログラムのコードが展開された領域のCRC値を計算し、そのCRC値を前記カーネル情報の一つとして前記メモリに記憶させておき、
前記判定において肯定判定された後に、前記プログラムのコードが展開された領域を、前記メモリに記憶させておいた前記CRC値を用いて検証し、その領域に不整合があった場合には、前記メモリに展開されている前記プログラムを実行せずに、前記記憶手段から前記プログラムを再度読み出して実行すること、
を特徴とする情報処理装置。
【請求項5】
請求項3又は請求項4に記載の情報処理装置において、
前記制御手段は、
前記カーネル情報を記憶させる際、前記プログラムの実行時に利用されるデータが展開された領域のCRC値を計算し、そのCRC値を前記カーネル情報の一つとして前記メモリに記憶させておき、
前記判定において肯定判定された後に、前記データが展開された領域を、前記CRC値を用いて検証し、前記領域に不整合があった場合には、前記メモリに展開されている前記プログラムを実行せずに、前記記憶手段から前記プログラムを再度読み出して実行すること、
を特徴とする情報処理装置。
【請求項6】
電力供給がなくても情報を記憶し続けることができるメモリと、
プログラムが記憶された記憶手段と、
オペレーティングシステムの機能により、前記メモリ中のアドレス位置を決定し、決定したアドレスの場所に、前記記憶手段から前記プログラムを読み出して展開させ、展開させたプログラムを実行する制御手段と、
を備える情報処理装置の前記制御手段に実行させる制御プログラムであって、
前記オペレーティングシステムの機能により、前記記憶手段から前記プログラムが読み出されて前記メモリに展開された際、そのプログラムを特定するための情報と、展開された領域のアドレス情報とを前記メモリにカーネル情報として記憶させ、
前記制御手段が初期化された後、前記プログラムを実行させる必要が生じた際に、前記オペレーティングシステムが前記プログラムを前記記憶手段から読み出す前に、前記メモリに記憶させておいた前記カーネル情報を参照して前記プログラムが既に前記メモリに展開されているか否かを判定し、展開されている場合には、前記オペレーティングシステムに前記記憶手段から前記プログラムを読み出させることなく、前記カーネル情報を前記オペレーティングシステムに渡し、既に前記メモリに展開されている前記プログラムを前記オペレーティングシステムに実行させること、
を特徴とする制御プログラム。
【請求項7】
請求項6に記載の制御プログラムにおいて、
前記制御プログラムは、
更に、前記カーネル情報を記憶させる際に前記カーネル情報のCRC値を計算し、そのCRC値を前記カーネル情報とともに前記メモリに記憶させておき、
前記判定の際に更に、前記メモリに記憶させておいた前記カーネル情報の整合性を前記CRC値を用いて検証し、前記カーネル情報に不整合があった場合には、前記判定の結果にかかわらず、前記メモリに展開されている前記プログラムを前記オペレーティングシステムに実行させずに、前記オペレーティングシステムに前記記憶手段から前記プログラムを再度読み出させて実行させること、
を特徴とする制御プログラム。
【請求項8】
請求項6又は請求項7に記載のプログラムにおいて、
前記アドレス情報は、前記プログラムのコードが展開された領域のアドレス情報と、前記プログラムの実行時に利用されるデータが展開された領域のアドレス情報とから少なくとも構成されること、
を特徴とする制御プログラム。
【請求項9】
請求項8に記載の制御プログラムにおいて、
前記制御プログラムは、
前記カーネル情報を記憶させる際、前記プログラムのコードが展開された領域のCRC値を計算し、そのCRC値を前記カーネル情報の一つとして前記メモリに記憶させておき、
前記判定において肯定判定された後に、前記プログラムのコードが展開された領域を、前記メモリに記憶させておいた前記CRC値を用いて検証し、その領域に不整合があった場合には、前記メモリに展開されている前記プログラムを前記オペレーティングシステムに実行させずに、前記オペレーティングシステムに前記記憶手段から前記プログラムを再度読み出させて実行させること、
を特徴とする制御プログラム。
【請求項10】
請求項8又は請求項9に記載の制御プログラムにおいて、
前記制御プログラムは、
前記カーネル情報を記憶させる際、前記プログラムの実行時に利用されるデータが展開された領域のCRC値を計算し、そのCRC値を前記カーネル情報の一つとして前記メモリに記憶させておき、
前記判定において肯定判定された後に、前記データが展開された領域を、前記CRC値を用いて検証し、前記領域に不整合があった場合には、前記メモリに展開されている前記プログラムを前記オペレーティングシステムに実行させずに、前記オペレーティングシステムに前記記憶手段から前記プログラムを再度読み出させて実行させること、
を特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2008−158591(P2008−158591A)
【公開日】平成20年7月10日(2008.7.10)
【国際特許分類】
【出願番号】特願2006−343529(P2006−343529)
【出願日】平成18年12月20日(2006.12.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.VICS
【出願人】(000004260)株式会社デンソー (27,639)
【Fターム(参考)】