(57)【要約】【課題】ブートローダにより使用されるデータの記憶領域が書き換え寿命に達するまでの期間を延ばす。【解決手段】ＮＡＮＤ型フラッシュメモリ１８には、車載装置１０の起動の態様を示すデータであり、かつ、車載装置１０の電源がオンの間に更新されうるデータであるＶｕｐフラグ３６が格納される。ＣＰＵ２０は、車載装置１０の電源がオンになった場合、ブートローダ３０とＯＳ３２を実行する。ブートローダ３０は、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合、Ｖｕｐフラグ３６が示す態様でＯＳ３２を起動する。ブートローダ３０は、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合、ＯＳ３２を特殊モードで起動する。特殊モードで起動されたＯＳ３２は、ＮＡＮＤ型フラッシュメモリ１８に記憶されたＶｕｐフラグ３６をＤＲＡＭ１４へ格納して、ソフトリセットを実行する。【選択図】図１
2018147285.tif 000002
【特許請求の範囲】
【請求項１】
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備え、
前記ブートローダは、前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記ブートローダは、前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記特殊モードで起動されたＯＳは、前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動させる、
電子機器。
【請求項２】
前記ＯＳ上で動作する所定のアプリケーションは、ウェアレベリングが適用されたファイルシステムを経由して、前記ＮＡＮＤ型フラッシュメモリに格納された前記特殊データを更新する、
請求項１に記載の電子機器。
【請求項３】
前記揮発性メモリに前記特殊データが格納されている場合、前記ブートローダと前記ＯＳの少なくとも一方は、前記揮発性メモリに前記特殊データが未格納の場合に実行した複数の初期化処理のうち少なくとも一部の初期化処理をスキップする、
請求項１または２に記載の電子機器。
【請求項４】
前記スキップされる少なくとも一部の初期化処理は、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、
請求項３に記載の電子機器。
【請求項５】
前記ブートローダが少なくとも格納されたＮＯＲ型フラッシュメモリをさらに備え、
前記プロセッサはＳＯＣ（System On a Chip）として実装され、
前記揮発性メモリに前記特殊データが格納されている場合と前記揮発性メモリに前記特殊データが未格納の場合の両方で、前記ＳＯＣのピンマルチ設定と前記ＮＯＲ型フラッシュメモリの初期化処理とが実行される、
請求項１から４のいずれかに記載の電子機器。
【請求項６】
前記揮発性メモリに前記特殊データが未格納の場合、前記ブートローダと前記ＯＳの少なくとも一方は、前記揮発性メモリに前記特殊データが格納されている場合にスキップされる少なくとも一部の初期化処理を実行する、
請求項１から５のいずれかに記載の電子機器。
【請求項７】
前記スキップされる少なくとも一部の初期化処理は、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、
請求項６に記載の電子機器。
【請求項８】
前記ブートローダが少なくとも格納されたＮＯＲ型フラッシュメモリをさらに備え、
前記プロセッサはＳＯＣ（System On a Chip）として実装され、
前記揮発性メモリに前記特殊データが未格納の場合に実行される初期化処理は、前記ＳＯＣのピンマルチ設定と、前記ＮＯＲ型フラッシュメモリの初期化処理と、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、
請求項１から７のいずれかに記載の電子機器。
【請求項９】
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備える電子機器が実行する起動方法であって、
前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動する、
起動方法。
【請求項１０】
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備える電子機器において実行されるプログラムであって、
前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、特に電子機器、起動方法およびプログラムに関する。
【背景技術】
【０００２】
近年、電子機器のデータストレージとしてフラッシュメモリが使用されることがある。フラッシュメモリは、セクタの書き換え寿命が比較的短く、同一のセクタを何度も更新すると早期に書き換え寿命に達してしまう。この対策として、大量のセクタの集合（パーティションとも呼ばれる。）を対象に、データの書込先を自動的に循環または均一化させることにより、書き換え寿命に達するまでの期間を延ばす技術が採用されることがある。この技術は、ジャーナリングファイルシステムまたはウェアレベリングと呼ばれる。
【０００３】
また、以下の特許文献１の半導体記憶装置は、フラッシュメモリのデータを書き換え寿命がないＤＲＡＭへコピーし、システム動作中はＤＲＡＭのデータを書き換え、電源断等のシステム終了時にＤＲＡＭからフラッシュメモリへデータを書き戻す。これにより、データの不揮発性を確保しつつ、フラッシュメモリの書き換え回数を低減する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−５９００７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術では、電源断のたびにフラッシュメモリが書き換えられる。車載装置のように製品寿命が長くかつ頻繁に電源断されるシステムの場合、特許文献１に記載の技術を単独で採用してもいずれ書き換え寿命に達するため、ウェアレベリングとの組み合わせが必要になる。ただし、ウェアレベリングは多くのセクタを必要とする。そのため、セクタ数が多いＮＡＮＤ型フラッシュメモリにウェアレベリングを適用することは可能だが、セクタ数が少ないＮＯＲ型フラッシュメモリにウェアレベリングを適用することは困難である。
【０００６】
ここで、上述の課題について、より詳細に説明する。ＮＡＮＤ型フラッシュメモリのドライバの実装、および、ウェアレベリングに対応したファイルシステムの実装には、比較的大きなメモリ容量が必要になる。一方、システムの環境によっては（例えば車載装置の場合等）、ブートローダは、小容量の内蔵ＲＡＭで動作する必要がある。この場合、ブートローダは、ＮＡＮＤ型フラッシュメモリにアクセスできず、ブートローダが使用するデータは通常、ＮＯＲ型フラッシュメモリに格納される。比較的頻繁に更新されるデータがＮＯＲ型フラッシュメモリに格納されると、書き換え寿命の延命技術（例えばウェアレベリング）を適用することは困難であり、早期に書き換え寿命に達してしまうことがあった。
【０００７】
本発明はこうした状況に鑑みてなされたものであり、１つの目的は、ブートローダにより使用されるデータの記憶領域が書き換え寿命に達するまでの期間を延ばすことである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある態様の、電子機器は、本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、揮発性メモリと、本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、を備える。ブートローダは、揮発性メモリに特殊データが格納されている場合、特殊データが示す態様でＯＳを起動し、ブートローダは、揮発性メモリに特殊データが未格納の場合、ＯＳを特殊モードで起動し、特殊モードで起動されたＯＳは、ＮＡＮＤ型フラッシュメモリに記憶された特殊データを揮発性メモリへ格納して、本電子機器を再起動させる。
【０００９】
本発明の別の態様は、起動方法である。この方法は、本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、揮発性メモリと、本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、を備える電子機器が実行する起動方法であって、揮発性メモリに特殊データが格納されている場合、特殊データが示す態様でＯＳを起動し、揮発性メモリに特殊データが未格納の場合、ＯＳを特殊モードで起動し、ＮＡＮＤ型フラッシュメモリに記憶された特殊データを揮発性メモリへ格納して、本電子機器を再起動する。
【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を、コンピュータプログラム、コンピュータプログラムを記録した記録媒体、本装置を搭載した車両などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、ブートローダにより使用されるデータの記憶領域が書き換え寿命に達するまでの期間を延ばすことができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施例の車載装置の構成を示す図である。
【図２】第１実施例の車載装置の動作を示すフローチャートである。
【図３】第２実施例の車載装置の動作を示すフローチャートである。
【図４】図３に続く動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
［第１実施例］
実施例の車載装置の構成を説明する前に概要を説明する。既述したように、車載装置の起動初期に実行されるブートローダがアクセス可能なフラッシュメモリは、ＮＯＲ型フラッシュメモリに限定されることがある。ＮＯＲ型フラッシュメモリは、容量単価がＮＡＮＤ型フラッシュメモリより高い。したがって、ブートローダが参照するデータ（ここでは「特殊データ」と呼ぶ。）の記憶領域の寿命を延ばすために当該記憶領域をローテーションさせる場合、ＮＡＮＤ型フラッシュメモリよりも多くのコストがかかってしまう。
【００１４】
上記の特殊データは、読み取りおよび書き込みが可能なデータであり、かつ、車載装置の動作中に書き換えられうるデータである。また、特殊データは、車載装置の起動の態様を示すデータであり、言い換えれば、特定の態様での起動をブートローダに指示するデータである。実施例における特殊データは、バージョンアップ（言い換えればプログラムの更新）の要否を指定するバージョンアップフラグ（後述の「Ｖｕｐフラグ３６」）とする。ただし、特殊データは、バージョンアップフラグに限られない。特殊データは、ユーザによるカスタマイズに関するデータであってもよい。例えば、車載装置の起動時にディスプレイに表示する画像をユーザ指定の画像に差し替えるか否かを示すカスタマイズ画像フラグであってもよい。
【００１５】
実施例の車載装置は、ＮＡＮＤ型フラッシュメモリに格納された特殊データをブートローダが参照可能になるよう構成される。具体的には、車載装置は、揮発性であるが、ソフトウェア制御による再起動時にデータの記憶を継続するメモリ（実施例ではＤＲＡＭとするが、所定のレジスタでもよい）を備える。以下、ソフトウェア制御による再起動をソフトリセットと呼ぶ。なお、ソフトリセットは、ソフトウェアリブートまたはソフトウェアリセットとも言える。車載装置の電源がオンされると、ブートローダは、まず特殊データの読み出しモード（以下「特殊モード」）でＯＳを起動する。ＯＳは、ＮＡＮＤ型フラッシュメモリからＤＲＡＭへ特殊データをロードし、ロード後直ちにソフトリセットして、制御をブートローダに戻す。ソフトリセット後、ブートローダは、ＤＲＡＭに記憶された特殊データが示す態様にてＯＳを起動することができる。
【００１６】
実施例の車載装置によると、ブートローダが参照する特殊データの記憶領域をＮＡＮＤ型フラッシュメモリに設定できるため、特殊データの記憶領域が書き換え寿命に達するまでの期間を延ばすことができる。さらに、ＮＡＮＤ型フラッシュメモリでは、ウェアレベリングを適用したファイルシステムを介したデータの更新が可能である。そのため、特殊データの記憶領域が書き換え寿命に達するまでの期間を一層容易に延ばすことができる。
【００１７】
図１は、第１実施例の車載装置１０の構成を示す。車載装置１０は、車両に搭載された電子機器であり、例えば、カーナビゲーション装置またはＩＶＩ（In-Vehicle Infotainment）装置であってもよい。
【００１８】
車載装置１０は、ＳＯＣ（System On a Chip）１２、ＤＲＡＭ１４、ＮＯＲ型フラッシュメモリ１６、ＮＡＮＤ型フラッシュメモリ１８を備える。車載装置１０は、インターネット等の通信網を介して外部機器と通信する通信部（不図示）をさらに備える。実施例では、通信部は、車両外部のサーバと通信し、サーバから送信された更新プログラムを受信する。また、車載装置１０は、様々な情報を表示するディスプレイ（不図示）をさらに備えてもよい。
【００１９】
ＳＯＣ１２は、ＣＰＵ２０、内蔵ＲＯＭ２２、内蔵ＲＡＭ２４を含む。内蔵ＲＡＭ２４は、１６Ｋバイト程度の小容量のＲＡＭであり、ＳＲＡＭであってもよい。内蔵ＲＡＭ２４には、ＮＯＲ型フラッシュメモリ１６から読み出されたブートローダ３０が格納される。実際には、ＣＰＵ２０が所定の領域に記憶されたプログラムを実行することにより、プログラムが定める機能が発揮されることは、当業者であれば容易に理解できよう。
【００２０】
ＤＲＡＭ１４は、ＮＯＲ型フラッシュメモリ１６から読み出されたＯＳ３２を記憶する。また、ＤＲＡＭ１４は、ＮＡＮＤ型フラッシュメモリ１８から読み出されたＶｕｐ検出Ａｐｐ３４およびＶｕｐフラグ３６を記憶する。図１には不図示だが、ＤＲＡＭ１４には、初期化完了フラグに対応する領域が設けられる。初期化完了フラグは、所定の初期化処理が完了したか否かを示すフラグであり、初期状態ではオフである。ＤＲＡＭ１４の所定領域にＶｕｐフラグ３６が格納された場合、初期化完了フラグはオンに切り替えられる。
【００２１】
ＮＯＲ型フラッシュメモリ１６は、ブートローダ３０とＯＳ３２を記憶する。ＮＡＮＤ型フラッシュメモリ１８は、Ｖｕｐ検出Ａｐｐ３４とＶｕｐフラグ３６を記憶する。Ｖｕｐ検出Ａｐｐ３４は、ＯＳ３２上で動作するアプリケーションプログラムであり、通信部を介してサーバと通信し、車載装置１０に搭載されたプログラムを更新すべきタイミングであるかどうかを検出する。Ｖｕｐフラグ３６は、ＯＳ３２をバージョンアップモードで起動すべきか、または通常モードで起動すべきかを示すデータである。
【００２２】
車載装置１０では、ＮＡＮＤ型フラッシュメモリ１８の各記憶素子に対する書き換え回数を平滑化する公知のウェアレベリング制御（言い換えれば、ジャーナリングファイルシステム）が実装される。ウェアレベリング制御は、ハードウェアウェアレベリングとして実装されてもよく、ソフトウェアウェアレベリングとして実装されてもよい。実施例では、ＯＳ３２上で動作するアプリケーションは、ＯＳ３２またはＮＡＮＤ型フラッシュメモリ１８のファームウェアが提供するファイルシステムであり、ウェアレベリングが適用されたファイルシステムを介して、ＮＡＮＤ型フラッシュメモリ１８のデータを更新する。
【００２３】
ＤＲＡＭ１４は、車載装置１０のメインメモリとして機能する。実施例のＤＲＡＭ１４は、車載装置１０においてソフトウェア制御下での再起動（ソフトリセット）がなされた場合、再起動前のデータを再起動後も記憶する。なお、ＤＲＡＭ１４は、バックアップ機能を備えてもよい。このバックアップ機能は、少なくともソフトリセットの場合に、再起動前のＤＲＡＭ１４の記憶データを一時的に不揮発メモリに格納し、起動後に当該記憶データをＤＲＡＭ１４へ書き戻してもよい。
【００２４】
以上の構成による車載装置１０の動作を説明する。
図２は、第１実施例の車載装置１０の動作を示すフローチャートである。車載装置１０の電源がオンになると（Ｓ１０のＹ）、ＣＰＵ２０は、内蔵ＲＯＭ２２に記憶されたＮＯＲ型フラッシュメモリ１６の所定領域からブートローダ３０を読み出す。ＣＰＵ２０は、読み出したブートローダ３０を内蔵ＲＡＭ２４へ格納して実行する。ブートローダ３０（実際にはブートローダ３０のプロセス）は、ＤＲＡＭ１４における初期化完了フラグを確認し、言い換えれば、初期化完了フラグに対応する領域の値がオンを示す値か、オフを示す値かを確認する。
【００２５】
初期化完了フラグがオフの場合（Ｓ１２のＮ）、ブートローダ３０は、特殊モードでＯＳ３２を起動する（Ｓ１４）。例えば、ブートローダ３０は、特殊モードを示すパラメータを付加してＯＳ３２のプログラムを起動してもよい。特殊モードは、Ｖｕｐフラグ３６を読み出すための動作モードと言える。特殊モードで起動したＯＳ３２は、ＮＡＮＤ型フラッシュメモリ１８に格納されたＶｕｐフラグ３６を読み出し、ＤＲＡＭ１４の所定領域に格納する（Ｓ１６）。ＯＳ３２は、ＤＲＡＭ１４の初期化完了フラグをオンに設定し（Ｓ１８）、車載装置１０をソフトリセットする（Ｓ２０）。
【００２６】
Ｓ２０のソフトリセットにより、例えば、ＣＰＵ２０のプログラムカウンタが０番に戻り、Ｓ１２に戻る。既述したように、ＤＲＡＭ１４は、ソフトリセット時点で記憶しているデータ（少なくともＶｕｐフラグ３６および初期化完了フラグを含む）をソフトリセット後も保持する。ＣＰＵ２０は、ブートローダ３０を内蔵ＲＡＭ２４へ格納して実行する。ブートローダ３０は、ＤＲＡＭ１４の初期化完了フラグがオンの場合（Ｓ１２のＹ）、ＤＲＡＭ１４のＶｕｐフラグ３６がオンか否かを確認する。
【００２７】
Ｖｕｐフラグ３６がオンの場合（Ｓ２２のＹ）、ブートローダ３０は、ＯＳ３２のプログラムをＤＲＡＭ１４へロードし、ＯＳ３２をバージョンアップモードで起動する（Ｓ２４）。ＯＳ３２（実際にはＯＳ３２のプロセス）は、バージョンアップ（プログラム更新等）を実行する所定のアプリケーション（以下「Ｖｕｐ実行Ａｐｐ」とも呼ぶ。）を起動する（Ｓ２６）。Ｖｕｐ実行Ａｐｐは、例えば外部のサーバと通信して更新プログラムを取得し、その更新プログラムをＮＡＮＤ型フラッシュメモリ１８等に格納することによりシステムを更新する（Ｓ２８）。
【００２８】
Ｖｕｐ実行Ａｐｐは、ＤＲＡＭ１４のＶｕｐフラグ３６をオフに設定するとともに、ＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６をオフに設定する（Ｓ３０）。このときＶｕｐ実行Ａｐｐは、ウェアレベリングが適用されたファイルシステムを介して、ＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６を更新する。なお、Ｖｕｐ実行Ａｐｐは、両者のフラグを同期的に更新してもよく、非同期に更新してもよい。例えば、ＤＲＡＭ１４のフラグを先に更新し、ＮＡＮＤ型フラッシュメモリ１８のフラグを後で（ソフトリセット時等に）更新してもよい。Ｖｕｐ実行Ａｐｐは、ＯＳ３２の機能を利用して、車載装置１０をソフトリセットする（Ｓ３２）。
【００２９】
Ｓ３２のソフトリセットにより、再びＳ１２に戻る。ＣＰＵ２０は、ブートローダ３０を内蔵ＲＡＭ２４へ格納して実行する。ブートローダ３０は、ＤＲＡＭ１４の初期化完了フラグがオン（Ｓ１２のＹ）、かつ、ＤＲＡＭ１４のＶｕｐフラグ３６がオフの場合（Ｓ２２のＮ）、ＯＳ３２を通常モードで起動する（Ｓ３４）。ＯＳ３２は、車載装置１０の様々な機能を実行する所定のアプリケーションを起動する（Ｓ３６）。以降、車載装置１０は定常状態となり、例えば、カーナビゲーション機能を実行する。
【００３０】
Ｓ３６で起動されるアプリケーションにはＶｕｐ検出Ａｐｐ３４が含まれる。Ｖｕｐ検出Ａｐｐ３４は、外部のサーバからバージョンアップ開始トリガを受信すると（Ｓ３８のＹ）、ＤＲＡＭ１４のＶｕｐフラグ３６をオンに設定するとともに、ＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６をオンに設定する（Ｓ４０）。このときＶｕｐ検出Ａｐｐ３４は、ウェアレベリングが適用されたファイルシステムを介して、ＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６を更新する。Ｖｕｐ実行Ａｐｐと同様にＶｕｐ検出Ａｐｐ３４も、両者のフラグを同期的に更新してもよく、非同期に更新してもよい。Ｖｕｐ検出Ａｐｐ３４は、ＯＳ３２の機能を利用して、車載装置１０をソフトリセットする（Ｓ４２）。Ｓ４２のソフトリセットがなされると、Ｓ１２のＹ、Ｓ２２のＹの経路を辿り、Ｖｕｐ実行Ａｐｐによりシステムが更新される。
【００３１】
定常状態においてバージョンアップ開始トリガを未受信であり（Ｓ３８のＮ）、電源オフ等の終了条件が満たされると（Ｓ４４のＹ）、本図のフローを終了する。終了条件が満たされなければ（Ｓ４４のＮ）、Ｓ３８に戻り、定常状態を維持する。車載装置１０の電源がオンされなければ（Ｓ１０のＮ）、以降の処理をスキップし、本図のフローを終了する。
【００３２】
図２では、バージョンアップ開始トリガを受信した場合に、Ｓ４０でＤＲＡＭ１４のＶｕｐフラグ３６とＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６をオンに設定し、Ｓ４２でソフトリセットを実行した。変形例として、Ｓ４０の後、Ｓ４４に進んでもよく、すなわち、Ｖｕｐフラグ３６の更新後、定常状態を維持してもよい。この場合、一旦電源がオフされて、再度電源がオンされたタイミングで、Ｓ１４〜Ｓ１８が実行され、ＮＡＮＤ型フラッシュメモリ１８のＶｕｐフラグ３６がＤＲＡＭ１４へロードされる。そして、Ｓ２４〜Ｓ２８が実行され、システムが更新される。
【００３３】
［第２実施例］
第２実施例では、車載装置１０の迅速な起動を実現する技術を提案する。第２実施例の車載装置１０の構成は第１実施例（図１）と同様である。以下、第１実施例と同じ内容については適宜説明を省略する。
【００３４】
第２実施例では、ブートローダ３０とＯＳ３２の少なくとも一方（実施例では両方）は、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合と比べて制限された初期化処理を実行する。ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合は、ＤＲＡＭ１４の初期化完了フラグがオフの場合と言える。また、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合は、ＤＲＡＭ１４の初期化完了フラグがオンの場合と言える。初期化処理は、デバイスの内部状態を初期設定して、ＣＰＵ２０による読み書き等のアクセスを可能にする一連の手続である。
【００３５】
具体的には、ブートローダ３０とＯＳ３２は、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合の起動処理において、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合の起動処理で実行する複数種類の初期化処理の一部を実行する。言い換えれば、ブートローダ３０とＯＳ３２は、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合、通常の起動処理で実行する初期化処理より少ない個数の初期化処理を実行する。すなわち、ブートローダ３０とＯＳ３２は、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合、ＮＡＮＤ型フラッシュメモリ１８からＤＲＡＭ１４へＶｕｐフラグ３６をロードするために必要最低限の初期化処理を実行する。
【００３６】
ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合に実行される必要最低限の初期化処理の例を示す。
（１）ＳＯＣ１２のピンマルチ設定（図３のＳ５２）：
ＳＯＣ１２のどの端子をどの機能に割り当てるかを設定する。ピン機能設定およびＧＰＩＯ（General Purpose Input/Output）の初期化を含む。
（２）ＮＯＲ型フラッシュメモリ１６の初期化：（図３のＳ５４）
内蔵ＲＯＭ２２に格納されたプログラムによる初期化処理と、ブートローダ３０による初期化処理の２つを含む。前者は、ＮＯＲ型フラッシュメモリ１６から内蔵ＲＡＭ２４へブートローダ３０をロードする（図３のＳ５６）ために必要となる。また、後者は、ＮＯＲ型フラッシュメモリ１６からＤＲＡＭ１４へＯＳ３２をロードする（図３のＳ６４）ために必要となる。
【００３７】
（３）ＤＲＡＭ１４の初期化（図３のＳ６２）：
ＮＯＲ型フラッシュメモリ１６からＤＲＡＭ１４へＯＳ３２をロードする（図３のＳ６４）ために必要となる。また、ＮＡＮＤ型フラッシュメモリ１８からＤＲＡＭ１４へＶｕｐフラグ３６をロードする（図３のＳ７０）ために必要となる。
（４）ＮＡＮＤ型フラッシュメモリ１８の初期化（図３のＳ６８）：
ＮＡＮＤ型フラッシュメモリ１８からＤＲＡＭ１４へＶｕｐフラグ３６をロードする（図３のＳ７０）ために必要となる。
【００３８】
ＳＯＣ１２は、図１に不図示の様々な外部機器が接続されうるものであり、通常の起動時は、多くの外部機器に対する初期化処理が必要になる。しかし、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合、ＮＡＮＤ型フラッシュメモリ１８からＤＲＡＭ１４へＶｕｐフラグ３６をロードするために必要となる初期化処理に制限することで、Ｖｕｐフラグ３６のロード完了までに要する時間を短縮できる。
【００３９】
また、第２実施例では、ブートローダ３０とＯＳ３２の少なくとも一方（実施例では両方）は、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合、ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合に実行した複数の初期化処理のうち少なくとも一部の初期化処理をスキップする。ＤＲＡＭ１４にＶｕｐフラグ３６が未格納の場合に実行した初期化処理は、ソフトリセット前に実行した初期化処理と言える。また、ＤＲＡＭ１４にＶｕｐフラグ３６が格納されている場合は、ソフトリセット後（再起動後）とも言える。
【００４０】
スキップにより大きな効果が見込めるのは、ＳＯＣ１２と接続された外部機器（例えば図１のＤＲＡＭ１４等）の初期化である。外部機器の初期化は、一般的に、１）ＳＯＣ１２から外部機器へ初期化コマンドを送信、２）外部機器からＳＯＣ１２へ初期化完了を通知、というシーケンスを繰り返して完了する。ここで、ＳＯＣ１２が外部機器からの応答を待つ時間は、数ミリ秒〜数１００ミリ秒になる場合があり、車載装置１０の起動開始から起動完了までの時間の中で大きな割合を占めることが多い。そのため、外部機器の初期化を可及的にスキップすることにより、車載装置１０の起動に要する時間を短縮できる。
【００４１】
なお、外部機器の初期化をスキップするためには、以下２点の考慮が必要になる。１）ＳＯＣ１２が再起動する際に、外部機器の電源をオフにしないようにすること。一般的に外部機器の電源がオフになると、設定値がクリアされてしまい、再度の初期化が必要になるからである。第２実施例の車載装置１０では、ＳＯＣ１２がソフトリセットされる場合、ＤＲＡＭ１４、ＮＯＲ型フラッシュメモリ１６、ＮＡＮＤ型フラッシュメモリ１８への電力供給を維持する。２）ＳＯＣ１２の再起動後、ＳＯＣ１２が外部機器にアクセスする前に、そのデバイスに関連するＳＯＣ１２の内部設定（例えばＩＯレジスタの設定値等）を、再起動前と同じ内容に再設定すること。第２実施例のＳＯＣ１２は、この再設定のための構成を備え、例えば内蔵ＲＯＭ２２のプログラムに実装される。
【００４２】
第２実施例において、再起動後にスキップする初期化処理は、上記の（３）ＤＲＡＭ１４の初期化、および、（４）ＮＡＮＤ型フラッシュメモリ１８の初期化である。いずれも初期化に要する時間が比較的長いため、スキップによる時間短縮効果を期待できる。
【００４３】
上記の（１）ＮＯＲ型フラッシュメモリ１６の初期化、および、（２）ＳＯＣ１２のピンマルチ設定は、再起動後もスキップせず再実行する。（１）は、以下の２つの前提条件を満たせばスキップ可能である。しかし、一般的にＮＯＲ型フラッシュメモリ１６は初期化に要する時間が短く、再実行しても遅延は小さいため、実施例では（１）の処理を再実行する。なお、第１の前提条件は、ＳＯＣ１２の内蔵ＲＯＭ２２のプログラムによる設定値と、ブートローダ３０による設定値が完全に一致することである。第２の前提条件は、ＳＯＣ１２の内蔵ＲＯＭ２２のプログラムを、初期化をスキップできるように実装することである。また、（２）は、外部機器の初期化ではなく、ＳＯＣ１２内部の初期化であり、その設定時間は無視できるほど短いため、実施例では（２）の処理を再実行する。
【００４４】
以上の構成による車載装置１０の動作を説明する。
図３は、第２実施例の車載装置１０の動作を示すフローチャートである。車載装置１０の電源がオンになると（Ｓ５０のＹ）、ＣＰＵ２０は、内蔵ＲＯＭ２２に記憶されたプログラム（ここでは「内蔵ＲＯＭプログラム」と呼ぶ。）を実行する。内蔵ＲＯＭプログラムは、ＳＯＣ１２のピンマルチ設定を行う（Ｓ５２）。内蔵ＲＯＭプログラムは、ＮＯＲ型フラッシュメモリ１６に対する初期化処理を実行する（Ｓ５４）。内蔵ＲＯＭプログラムは、ブートローダ３０をＮＯＲ型フラッシュメモリ１６から内蔵ＲＡＭ２４へロードする（Ｓ５６）。
【００４５】
ブートローダ３０は、ＮＯＲ型フラッシュメモリ１６に対する初期化処理を実行する（Ｓ５８）。ＤＲＡＭ１４の初期化完了フラグがオフであり、または、ＤＲＡＭ１４の初期化が未実行で、ＤＲＡＭ１４の初期化完了フラグを参照できない場合（Ｓ６０のＮ）、ブートローダ３０は、ＤＲＡＭ１４に対する初期化処理を実行し（Ｓ６２）、ＮＯＲ型フラッシュメモリ１６からＤＲＡＭ１４へＯＳ３２をロードする（Ｓ６４）。ブートローダ３０は、特殊モードでＯＳ３２を起動する（Ｓ６６）。
【００４６】
ＯＳ３２は、ＮＡＮＤ型フラッシュメモリ１８に対する初期化処理を実行し（Ｓ６８）、ＮＡＮＤ型フラッシュメモリ１８からＤＲＡＭ１４へＶｕｐフラグ３６をロードする（Ｓ７０）。ＯＳ３２は、ＤＲＡＭ１４の初期化完了フラグをオンに設定して（Ｓ７２）、ソフトリセットを実行する（Ｓ７４）。ソフトリセット後、Ｓ５２〜Ｓ５８の処理が再度実行される。ブートローダ３０は、ＤＲＡＭ１４の初期化完了フラグがオンであれば（Ｓ６０のＹ）、図４の処理に移る。
【００４７】
図４は、図３に続く動作を示すフローチャートである。図３のＳ６０のＹに続いて、ブートローダ３０は、ＤＲＡＭ１４のＶｕｐフラグ３６がオンであれば（Ｓ７６のＹ）、ＤＲＡＭ１４に対する初期化処理（図３のＳ６２）をスキップして、ＮＯＲ型フラッシュメモリ１６からＤＲＡＭ１４へＯＳ３２をロードする（Ｓ７８）。ブートローダ３０は、バージョンアップモードでＯＳ３２を起動する（Ｓ８０）。ＯＳ３２は、起動処理の過程で、ＮＡＮＤ型フラッシュメモリ１８に対する初期化処理（図３のＳ６８）をスキップする。以降のＳ８２〜Ｓ８８は、図２のＳ２６〜Ｓ３２と同じであるため、説明を省略する。
【００４８】
図３のＳ６０のＹに続いて、ブートローダ３０は、ＤＲＡＭ１４のＶｕｐフラグ３６がオフであれば（Ｓ７６のＮ）、ＤＲＡＭ１４に対する初期化処理をスキップして、ＮＯＲ型フラッシュメモリ１６からＤＲＡＭ１４へＯＳ３２をロードする（Ｓ９０）。ブートローダ３０は、通常モードでＯＳ３２を起動する（Ｓ９２）。ＯＳ３２は、起動処理の過程で、ＮＡＮＤ型フラッシュメモリ１８に対する初期化処理をスキップする。以降のＳ９４〜Ｓ１０２は、図２のＳ３６〜Ｓ４４と同じであるため、説明を省略する。なお、Ｓ８８およびＳ１００におけるソフトリセット後は、図３のＳ５２に戻る。また、図３において車載装置の電源がオフであれば（Ｓ５０のＮ）、図３および図４の処理をスキップして本図のフローを終了する。
【００４９】
以上、本発明を第１実施例および第２実施例をもとに説明した。これらの実施例は例示であり、各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５０】
上記実施例では、ＮＡＮＤ型フラッシュメモリに格納されたデータをブートローダが参照可能にする技術を車載装置に適用した。既述したように、車両は頻繁に電源のオン／オフが繰り返される。また、自動運転の普及に伴って、車両には一層高いセキュリティが求められ、また、高い頻度でプログラム更新が必要になると想定される。したがって、ブートローダにより使用されるデータの記憶領域が書き換え寿命に達するまでの期間を延ばすことを容易化する実施例の技術は、車載装置に好適である。ただし、実施例の技術の適用対象は車載装置に限定されず、様々な電子機器に適用可能である。例えば、ＰＣ、タブレット端末、スマートフォン、組み込みシステムに適用可能である。
【００５１】
上記実施例では、車載装置１０の制御をＯＳ３２からブートローダ３０に戻すための再起動処理としてソフトリセットを実行した。変形例として、他の種類の再起動処理を実行してもよい。例えば、制御が一旦ＯＳ３２からブートローダ３０に戻るように実装されたサスペンド／レジューム機能を車載装置１０が備える場合、再起動処理としてサスペンド／レジュームを実行してもよい。
【００５２】
なお、実施例および変形例に記載の技術は、以下の項目によって特定されてもよい。
［項目１］
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備え、
前記ブートローダは、前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記ブートローダは、前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記特殊モードで起動されたＯＳは、前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動させる、電子機器。
この電子機器のブートローダは、ＮＡＮＤ型フラッシュメモリへ直接アクセスすることはできないが、ＯＳとの連携により、ＮＡＮＤ型フラッシュメモリに格納された特殊データを参照可能になり、特殊データが示す態様でＯＳを起動することができる。また、特殊データをＮＡＮＤ型フラッシュメモリに格納することにより、特殊データを記憶する領域が書き換え寿命に達するまでの期間を延ばすことが容易になる。
［項目２］
前記ＯＳ上で動作する所定のアプリケーションは、ウェアレベリングが適用されたファイルシステムを経由して、前記ＮＡＮＤ型フラッシュメモリに格納された前記特殊データを更新する、項目１に記載の電子機器。
この態様によると、ＮＡＮＤ型フラッシュメモリにおける特殊データの記憶領域が書き換え寿命に達するまでの期間を容易に延ばすことができる。
［項目３］
前記揮発性メモリに前記特殊データが格納されている場合、前記ブートローダと前記ＯＳの少なくとも一方は、前記揮発性メモリに前記特殊データが未格納の場合に実行した複数の初期化処理のうち少なくとも一部の初期化処理をスキップする、項目１または２に記載の電子機器。
この態様によると、再起動がなされた場合に実行する初期化処理の個数を低減し、起動が完了するまでの時間を短縮することができる。
［項目４］
前記スキップされる少なくとも一部の初期化処理は、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、項目３に記載の電子機器。
この態様によると、再起動がなされた場合に実行する初期化処理の個数を低減し、起動が完了するまでの時間を短縮することができる。
［項目５］
前記ブートローダが少なくとも格納されたＮＯＲ型フラッシュメモリをさらに備え、
前記プロセッサはＳＯＣ（System On a Chip）として実装され、
前記揮発性メモリに前記特殊データが格納されている場合と前記揮発性メモリに前記特殊データが未格納の場合の両方で、前記ＳＯＣのピンマルチ設定と前記ＮＯＲ型フラッシュメモリの初期化処理とが実行される、項目１から４のいずれかに記載の電子機器。
この態様によると、実行時間が短い初期化処理は、揮発性メモリに特殊データが格納されているか否かに関わらず実行することで、電子機器の実装が容易になる。
［項目６］
前記揮発性メモリに前記特殊データが未格納の場合、前記ブートローダと前記ＯＳの少なくとも一方は、前記揮発性メモリに前記特殊データが格納されている場合にスキップされる少なくとも一部の初期化処理を実行する、項目１から３のいずれかに記載の電子機器。
この態様によると、揮発性メモリに特殊データが格納されている場合に必要な初期化処理を、揮発性メモリに前記特殊データが未格納であるときに予め実行しておくことで、揮発性メモリに特殊データが格納されている場合の初期化処理に要する時間を低減できる。
［項目７］
前記スキップされる少なくとも一部の初期化処理は、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、項目６に記載の電子機器。
この態様によると、揮発性メモリに特殊データが格納されている場合の初期化処理に要する時間を低減できる。
［項目８］
前記ブートローダが少なくとも格納されたＮＯＲ型フラッシュメモリをさらに備え、
前記プロセッサはＳＯＣ（System On a Chip）として実装され、
前記揮発性メモリに前記特殊データが未格納の場合に実行される初期化処理は、前記ＳＯＣのピンマルチ設定と、前記ＮＯＲ型フラッシュメモリの初期化処理と、前記揮発性メモリの初期化処理と、前記ＮＡＮＤ型フラッシュメモリの初期化処理とを含む、項目１から７のいずれかに記載の電子機器。
この態様によると、揮発性メモリに特殊データが格納されている場合に必要な初期化処理を、揮発性メモリに前記特殊データが未格納であるときに予め実行しておくことができる。
［項目９］
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備える電子機器が実行する起動方法であって、
前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動する、起動方法。
この起動方法によると、ブートローダは、ＮＡＮＤ型フラッシュメモリへ直接アクセスすることはできないが、ＯＳとの連携により、ＮＡＮＤ型フラッシュメモリに格納された特殊データを参照可能になり、特殊データが示す態様でＯＳを起動することができる。また、特殊データをＮＡＮＤ型フラッシュメモリに格納することにより、特殊データを記憶する領域が書き換え寿命に達するまでの期間を延ばすことが容易になる。
［項目１０］
本電子機器の起動の態様を示すデータであり、かつ、本電子機器の電源がオンの間に更新されうるデータである特殊データが少なくとも格納されたＮＡＮＤ型フラッシュメモリと、
揮発性メモリと、
本電子機器の電源がオンになった場合、ブートローダとＯＳ（Operating System）とを実行するプロセッサと、
を備える電子機器において実行されるプログラムであって、
前記揮発性メモリに前記特殊データが格納されている場合、前記特殊データが示す態様で前記ＯＳを起動し、
前記揮発性メモリに前記特殊データが未格納の場合、前記ＯＳを特殊モードで起動し、
前記ＮＡＮＤ型フラッシュメモリに記憶された特殊データを前記揮発性メモリへ格納して、本電子機器を再起動する、プログラム。
このプログラムによると、ブートローダは、ＮＡＮＤ型フラッシュメモリへ直接アクセスすることはできないが、ＯＳとの連携により、ＮＡＮＤ型フラッシュメモリに格納された特殊データを参照可能になり、特殊データが示す態様でＯＳを起動することができる。また、特殊データをＮＡＮＤ型フラッシュメモリに格納することにより、特殊データを記憶する領域が書き換え寿命に達するまでの期間を延ばすことが容易になる。
【００５３】
上述した実施例および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【００５４】
１０  車載装置、  １４  ＤＲＡＭ、  １６  ＮＯＲ型フラッシュメモリ、  １８  ＮＡＮＤ型フラッシュメモリ、  ２０  ＣＰＵ、  ３０  ブートローダ、  ３２  ＯＳ。
【図１】
2018147285.tif 000003
【図２】
2018147285.tif 000004
【図３】
2018147285.tif 000005
【図４】
2018147285.tif 000006