(57)【要約】【課題】ファームウェアの正当性の確認を高速に行うことが可能なＡＳＩＣシステムを提供する。【解決手段】  制御装置５と、ＲＡＭ４と、ファームウェアが格納されるフラッシュＲＯＭ３と、フラッシュＲＯＭ３に格納されているファームウェアを読み出し、システムバス２を介してＲＡＭ３に転送するデータ転送装置６と、システムバス２に読み出されたファームウェアを取得して前記ファームウェアの正当性を判別する正当性確認装置７とを具備し、正当性確認装置７によってファームウェアの正当性に問題があると判別した場合、制御装置５はＲＡＭ３に転送されたファームウェアを実行しないようにする。【選択図】      図１
2008140034.tif 000002
【特許請求の範囲】
【請求項１】
制御装置と、
ランダムアクセスメモリと、
ファームウェアが格納されるフラッシュＲＯＭと、
前記フラッシュＲＯＭに格納されている前記ファームウェアを前記ランダムアクセスメモリに記憶させるために連続して転送するデータ転送装置と、
前記データ転送装置によって前記フラッシュＲＯＭから前記ランダムアクセスメモリへ前記ファームウェアを転送している間の前記ファームウェアを取得して、前記ファームウェアの正当性を判別する正当性確認装置とを有し、
前記正当性確認装置が前記ファームウェアの正当性に問題があると判別した場合、前記ランダムアクセスメモリに記憶された前記ファームウェアを前記制御装置が実行しないようにしたことを特徴とするＡＳＩＣシステム。
【請求項２】
制御装置と、
ランダムアクセスメモリと、
初期実行部を含むファームウェアが格納されるフラッシュＲＯＭと、
前記フラッシュＲＯＭに格納されている前記ファームウェアを前記ランダムアクセスメモリに記憶させるために転送するデータ転送装置と、
前記データ転送装置によって前記フラッシュＲＯＭから前記ランダムアクセスメモリへ前記ファームウェアを転送している間の前記初期実行部を取得して、前記ファームウェアの正当性を判別する正当性確認装置とを有し、
前記正当性確認装置が前記初期実行部の正当性に問題があると判別した場合、前記ランダムアクセスメモリに記憶された前記ファームウェアを前記制御装置が実行しないようにしたことを特徴とするＡＳＩＣシステム。
【請求項３】
前記フラッシュＲＯＭは、データを１ビットずつ送るシリアルフラッシュＲＯＭであることを特徴とする請求項１又は請求項２に記載のマイクロコンピュータ。
【請求項４】
前記ファームウェアは、実データと前記実データのエラー検出コードとを含み、
前記正当性確認装置は、
前記実データ又はエラー検出コードを１ビット単位に記憶する第１のバレルシフタと、
前記第１のバレルシフタからの１ビット出力を受信し、前記実データの所定単位毎にエラーチェックコードを繰り返し演算し、最終エラーチェックコードを生成する第２のバレルシフタ部と、
前記第１のバレルシフタに記憶された前記エラー検出コードと前記第２のバレルシフタで生成された前記最終エラーチェックコードを比較する比較部と
を具備することを特徴とする請求項３記載のＡＳＩＣシステム。
【請求項５】
前記フラッシュＲＯＭは、１ワードのデータを並列して送るパラレルフラッシュＲＯＭであることを特徴とする請求項１又は２に記載のＡＳＩＣシステム。
【請求項６】
前記ファームウェアは、実データと、前記実データのエラー検出コードとを含み、
前記正当性確認装置は、
１ワードのデータを記憶するレジスタと、
前記フラッシュＲＯＭから前記ランダムアクセスメモリに転送される１ワードのデータと前記レジスタに記憶されている１ワードのデータとを加算し、その結果を前記レジスタに記憶する加算器と
を具備することを特徴とする請求項５記載のＡＳＩＣシステム。
【請求項７】
ランダムアクセスメモリと、
ファームウェアが格納されるフラッシュＲＯＭと、
システムＲＯＭに格納されるプログラムによって動作し、前記フラッシュＲＯＭに格納されている前記ファームウェアを前記ランダムアクセスメモリに転送すると共に、前記フラッシュＲＯＭから前記ランダムアクセスメモリへ前記ファームウェアを転送している間の前記ファームウェアを取得して前記ファームウェアの正当性を判別する制御装置とを有し、
前記ファームウェアの正当性に問題があると判別した場合、前記ランダムアクセスメモリに記憶された前記ファームウェアを前記制御装置が実行しないようにしたことを特徴とするＡＳＩＣシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの正当性を確認する機能を有するＡＳＩＣシステムに関する。
【背景技術】
【０００２】
ＡＳＩＣ（application specific integrated circuits）システムでは、不揮発性メモリ（ラッシュメモリ）に格納されたファームウェアをＳＲＡＭ等のメモリに転送し、メモリ上のファームウェアをプロセッサが実行する構成となっている。
【０００３】
フラッシュメモリ上のデータが放射線や経時変化等で変化し、いわゆるデータ破壊が発生しているファームウェアを実行すると、そのＡＳＩＣシステムを組み込んだ電子機器は、予期せぬ挙動を引き起こす。場合によって、電子機器のシステム破壊が起きるおそれがある。この問題を避けるために、チェックサム等の技術を用いてファームウェアのデータの正当性を確認する技術が広く用いられている。
【０００４】
例えば、演算処理時に読み出されるユーザプログラムが格納されるユーザメモリと、ユーザメモリに格納されたユーザプログラムと同一内容のデータが記憶されたバックアップメモリとを備え、実行中にユーザメモリとバックアップメモリに記憶されたユーザデータをブロック毎に比較し、メモリ異常の有無を判断する技術が開示されている。（特許文献１）
【特許文献１】特開２００６−５９３８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した技術では、データの正当性を確認するために、ブロック毎にデータをチェックしている。ブロック毎に正当性を確認するために、ファームウェアのデータの転送を開始してからファームウェアを実行するまでに時間がかかるという問題が発生する。
【０００６】
本発明の目的は、ファームウェアの正当性の確認を高速に行うことが可能なＡＳＩＣシステムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一例に係わるＡＳＩＣシステムは、制御装置と、ランダムアクセスメモリと、ファームウェアが格納されるフラッシュＲＯＭと、前記フラッシュＲＯＭに格納されている前記ファームウェアを前記ランダムアクセスメモリに記憶させるために連続して転送するデータ転送装置と、前記データ転送装置によって前記フラッシュＲＯＭから前記ランダムアクセスメモリへ前記ファームウェアを転送している間の前記ファームウェアを取得して、前記ファームウェアの正当性を判別する正当性確認装置とを有し、前記正当性確認装置が前記ファームウェアの正当性に問題があると判別した場合、前記ランダムアクセスメモリに記憶された前記ファームウェアを前記制御装置が実行しないようにしたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ＡＳＩＣシステムのファームウェアの正当性の確認を高速に行うことが可能になり、その結果正当性に問題がある場合はプロセッサが実行しないようにして、電子機器の故障発生を避けることができる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態を以下に図面を参照して説明する。
【００１０】
図１は、本発明の第１の実施形態に係わるＡＳＩＣシステムの構成を示すブロック図である。
【００１１】
図１に示すＡＳＩＣシステム１は、システムバス２を中心として、プログラム並びにデータを格納する不揮発性のフラッシュメモリ３、プログラム並びにデータを展開して実行するためＲＡＭ４、制御装置５、フラッシュメモリ３の内のプログラム並びにデータをＲＡＭ４に転送するためのデータ転送装置６、および正当性確認装置７等を具備する。なお、以下の説明では、プログラムおよびデータをまとめてファームウェアと呼称する。
【００１２】
データ転送装置６の構成並びに動作は利用するフラッシュメモリ３の形態により変化するが、本実施形態ではシリアルフラッシュメモリ３、つまりデータ線が１本のフラッシＲＯＭを対象としている。またＲＡＭ４はＳＤＲＡＭ、つまり一回のアドレス設定の後に複数のデータを連続して書き込むものを対象としている。
【００１３】
データ転送装置６は、フラッシュメモリ３から送られたデータを一時記憶するデータ組み立てバッファ６Ａを有する。データ組み立てバッファ６Ａは、フラッシュメモリ３から転送されるファームウェアの各データを１ｂｉｔずつ記憶し、ＲＡＭ４が受理可能なデータ単位に組み立てる。ＲＡＭ４が受理可能なデータ単位になると、データ転送装置６はデータをＲＡＭ４に転送する。
【００１４】
正当性確認装置７は、フラッシュメモリ３からデータ転送装置６に転送されるファームウェアのデータを取得し、そのファームウェアが正当であるか否かを判別する。
【００１５】
図２は、ＡＳＩＣシステム１の電源オン以後、フラッシュメモリ３内のファームウェアをＲＡＭ４に転送し、ＲＡＭ４に記憶されたファームウェアを制御装置５が実行するまでの動作を説明するためのフローチャートである。
【００１６】
ＡＳＩＣシステム１の電源がオンされると、制御装置５は正当性確認装置７を起動する（ステップＳ１１）。正当性確認装置７は、システムバス２を通じてＲＡＭ４に転送されるデータを取得して監視する。次いで、制御装置５は、データ転送装置６を起動する（ステップＳ１２）。そして、データ転送装置６はフラッシュメモリ３内に格納されたファームウェアを読み出し、ＲＡＭ４に転送するよう動作する。
【００１７】
その後、制御装置５はデータ転送装置６が所定のファームウェアをＲＡＭ４の形式に展開し、転送し終えるのを待つ。ＲＡＭ４へのファームウェアの転送が終了したら（ステップＳ１３のＹｅｓ）、正当性確認装置７の判別結果を調べ、ＲＡＭ４に転送されたファームウェアが正当であるか否かを判別する（ステップＳ１４）。そして、転送されたファームウェアの正当性に問題がないと判別されている場合（ステップＳ１４のＹｅｓ）、制御装置５はＲＡＭ４に記憶されたファームウェアを実行する（ステップＳ１５）。一方、転送されたファームウェアの正当性に問題があると判別されている場合（ステップＳ１４のＮｏ）、制御装置５はＲＡＭ４に記憶されたファームウェアを実行しないようにして、エラー情報を出力する（ステップＳ１６）。
【００１８】
次に、データ転送装置６がフラッシュメモリ３からファームウェアを読み出し、ＲＡＭ４に転送する動作について説明する。図３は、データ転送装置６がフラッシュメモリ３からＲＡＭ４へファームウェアを転送する動作を説明するためのフローチャートである。
【００１９】
制御装置５によりデータ転送開始が指示されると、データ転送装置６は、リード対象となるフラッシュメモリ３のアドレスをフラッシュメモリ３に設定する（ステップＳ２１）。フラッシュメモリ３のアドレスは、データがリードされるたびにフラッシュメモリ３の機能によって自動的にインクリメントされる。またデータ転送装置６は、データ組み立てバッファ６Ａを初期化する（ステップＳ２２）。
【００２０】
データ転送装置６は、ステップＳ２３のファームウェア読み出しの最終アドレスに到達したか否かのチェックを経て、フラッシュメモリ３からデータを１ｂｉｔずつ読み出す（ステップＳ２４）。データ転送装置６は、読み出したデータをデータ組み立てバッファ６Ａに記憶する（ステップＳ２５）。データ転送装置６は、ステップＳ２６のデータ組み立てバッファ６Ａが一杯であるか否かのチェックを経て、ステップＳ２３に戻り、ファームウェア読み出し最終アドレスに到達に到達するまでステップＳ２４，Ｓ２５の動作を繰り返し実行する。
【００２１】
またステップＳ２６において、データ組み立てバッファ６Ａが一杯であると判別した場合（ステップＳ２６のＹｅｓ）、データ転送装置６は、ＲＡＭ４の書き込みアドレスを設定し（ステップＳ２７）、データ組み立てバッファ６Ａ内のデータをＲＡＭ４に転送する（ステップＳ２８）。そして、データ転送装置６は、データ組み立てバッファ６Ａを初期化状態して、次のデータ組み立て処理を可能にする（ステップＳ２９）。その後、ステップＳ２３に戻り、ファームウェア読み出し最終アドレスに到達するまでステップＳ２７〜Ｓ２９の動作を繰り返し実行する。
【００２２】
ステップＳ２３において、ファームウェア読み出し最終アドレスに到達した場合（ステップＳ２３のＹｅｓ）、ＲＡＭ４の書き込みアドレスを設定し（ステップＳ３０）、データ組み立てバッファ６Ａに残っているデータをＲＡＭ４に転送（ステップＳ３１）することによってファームウェアの転送処理が終了する。
【００２３】
次に、正当性確認装置７によるファームウェアの正当性確認処理について説明する。図４は、正当性確認装置７の構成を示す図である。
【００２４】
図４に示すように、正当性確認装置７は、例えば１６ｂｉｔのレジスタ２０1〜２０16，２１1〜２１16を有する２本のバレルシフタ２０，２１と、ビット対応の１６個の排他的論理和ＥＸＯＲ（以下、ＸＯＲと称する）２２1〜２２16と、隣り合うビット間の論理和を取る１５個のＯＲ回路２３1〜２３15と、バレスシフタ２１の入力側に設けられる１個の排他的論理和ＥＸＯＲ（以下、ＸＯＲと称する）２４と、並びにＯＲ回路２３15に接続される１ｂｉｔの結果レジスタ２５等を有する。
【００２５】
正当性確認装置７がシステムバス１２から取得したデータは、バレルシフタ２０の“ｉ”の位置から入力される。バレルシフタ２０のレジスタ２０1〜２０16内のデータは、“ｉ”から新たなデータが入力されるたびに１ビットずつ上位のレジスタに記憶内容をシフトする。バレルシフタ２０のレジスタ２０16のデータは、“ｉ”から新たなデータが入力されると、ＸＯＲ２４によってバレルシフタ２１のレジスタ２１5、レジスタ２１12、およびレジスタ２１16のデータとの排他的論理和演算が行われた後に、バレルシフタ２１のレジスタ２１1に入力される。つまり、ＸＯＲ２４は、入力されたデータのＣＲＣ（cyclic redundancy check）コードを生成している。
【００２６】
フラッシュメモリ３からＲＡＭ４に１ｂｉｔずつ順に送られるデータの構成としては、１６ｂｉｔ毎のデータと、それに対応するＣＲＣコード（１６ｂｉｔ）であり、それらがビットストリームとして１ｂｉｔずつ順次に送られている。従って、バレルシフタ２０，２１を初期化した後に、バレルシフタ２０，２１内が一杯になると、バレルシフタ２１の各レジスタ２１1〜２１16にはＸＯＲ２４によって生成されたＣＲＣコードが記憶される。したがって、フラッシュメモリ３からＲＡＭ４に正しいデータが転送された場合、バレルシフタ２１の各レジスタ２１1〜２１16には、バレルシフタ２０の各レジスタ２０1〜２０16に記憶されるフラッシュメモリ３から読み出したＣＲＣコードと同じＣＲＣコードが生成されることになる。
【００２７】
ＸＯＲ２２n（ｎ＝１，２，…，１６）は、レジスタ２０n（ｎ＝１，２，…，１６）とレジスタ２１n（ｎ＝１，２，…，１６）との排他的論理和演算を行う。すなわち、ＸＯＲ２２n（ｎ＝１，２，…，１６）は、レジスタ２０n（ｎ＝１，２，…，１６）のデータとレジスタ２１n（ｎ＝１，２，…，１６）のデータとの二つのデータが一致する場合に“０”を出力し、二つのデータが異なる場合に“１”を出力する。
【００２８】
ＯＲ回路２３1は、ＸＯＲ２２1の演算結果とＸＯＲ２２2の演算結果との論理和を演算する。ＯＲ回路２３m（ｍ＝２，３，…，１５）は、ＯＲ２３m-1（ｍ＝２，３，…，１５）の演算結果とＸＯＲ２２m+1（ｍ＝２，３，…，１５）の演算結果との論理和を演算する。ＯＲ回路２３15の演算結果は結果レジスタ２５に出力される。すなわち、ＸＯＲ２２1〜２２16の出力の全てが“０”の場合に、ＯＲ回路２３15の出力が“０”となり、結果レジスタ２５には“０”が記憶される。また、ＸＯＲ２２1〜２２16の出力の何れかが“１”の場合に、ＯＲ回路２３15の出力が“１”となり、結果レジスタ２５には“１”が記憶される。
【００２９】
つまり、ＸＯＲ２２1〜２２16の出力の全てが“０”であるということは、ＸＯＲ２４によって生成されたＣＲＣコードと、フラッシュメモリ３からＲＡＭ４に送られるＣＲＣコードとが一致することである。また、ＸＯＲ２２1〜２２16の出力の何れかが“１”であるということは、ＸＯＲ２４によって生成されたＣＲＣコードと、フラッシュメモリ３からＲＡＭ４に送られるＣＲＣコードとが一致しないと言うことである。
【００３０】
従って、結果レジスタ２５に“０”が記憶されている場合は、フラッシュメモリ３からＲＡＭ４に送られたファームウェアのデータの正当性に問題がないであると言う判定が下される。一方、結果レジスタ２５に“１”が記憶されている場合は、フラッシュメモリ３からＲＡＭ４に送られたファームウェアのデータの正当性に問題があると言う判定が下される。
【００３１】
図５は、正当性確認装置７が転送データの正当性の確認の動作を示すフローチャートである。正当性確認装置７が起動されると、図４に示した計算レジスタ内をクリアする（ステップＳ４１）。また計算レジスタ内をクリアするとは、計３３ｂｉｔのレジスタ２０1〜２０16，２１1〜２１16，２４の値を全て０にすることを言う。
【００３２】
続いてデータ転送装置６が、ステップＳ２４の１ｂｉｔデータを読む動作をするのを待つ（ステップＳ４２）。
【００３３】
データ転送装置６が１ｂｉｔデータを読んだら（ステップＳ４２のＹｅｓ）、システムバス２に流れるそのデータを正当性確認装置７でも読み込む（ステップＳ４３）。このデータを計算レジスタの“ｉ”の位置から挿入することにより計算レジスタを更新する（ステップＳ４４）。正当性確認装置７は、この動作をフラッシュメモリ３からＲＡＭ４にファームウェアのデータを転送し終わるまで実行し、図４に示したロジックで、そのデータの正当性を常時監視している。
【００３４】
本実施形態によれば、データ転送装置６によりフラッシュメモリ３の内容をＲＡＭ４に転送する際、同時に正当性確認装置７によってその正当性確認の計算を実行し、転送が終了したとき同時に正当性確認の計算も終了する。このため、正当性確認に要する実質的な計算時間がゼロになる。
【００３５】
また、本実施形態によれば正当性確認装置７の計算レジスタは、図４に示すように一般的なエラー検出装置（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｕｎｉｔ）のそれであり、ＡＳＩＣ内の既存回路の再利用で実現できる。またデータ転送装置６は既存の装置であり、本実施形態を実現するために新たに必要となるのは正当性確認装置７の制御をする部分のみである。このため本実施形態の実施に伴い新たに必要になる回路は僅かである。
【００３６】
また、本実施形態では、データ転送装置６により転送されるファームウェアの全領域が正当性確認装置７によって監視される。このためファームウェア内には、正当性確認の出来ない部分が存在しない。
【００３７】
（第２の実施形態）
図６は、本発明の第２の実施形態に係わるＡＳＩＣシステム１の概略構成を示すブロック図である。  
図６に示すＡＳＩＣシステム１は、システムバス２を中心として、プログラム並びにデータを格納する不揮発性のフラッシュメモリ３３、プログラム並びにデータを展開して実行するためＲＡＭ４、制御装置５、フラッシュメモリ３３の内のプログラム並びにデータをＲＡＭ４に転送するためのデータ転送装置３６、および正当性確認装置３７等を具備する。そして、本実施形態では、データ転送装置３６に、データを読み込むフラッシュメモリ３３の先頭アドレスが設定されるリードアドレスレジスタ３６Ａと、データを書き込むＲＡＭ４の先頭アドレスが設定されるライトアドレスレジスタ３６Ｂが新たに設けられている。なお、以下の説明では、プログラムおよびデータをまとめてファームウェアと呼称する。
【００３８】
フラッシュメモリ３３は、複数のデータ線を持つ。本実施形態では、フラッシュメモリ３３のデータ線の数は、ＲＡＭ４のデータ線の数と同じであるとする。データ線を一度に送信可能な情報の単位をワードと呼ぶ。
【００３９】
なお、本実施形態においても、ＡＳＩＣシステム１が電源ＯＮ以後フラッシュメモリ３３からファームウェアのデータをＲＡＭ４に転送し、ＲＡＭ４のファームウェアの実行を開始するまでの制御装置５の動作は、図２に示した第１の実施形態と同様である。
【００４０】
図７は、第２の実施形態においてデータ転送装置３６がフラッシュメモリ３３から読み出したデータをＲＡＭ４へデータ転送する動作を示すフローチャートである。
【００４１】
制御装置５によりデータ転送開始が指示されると、データ転送装置３６は、フラッシュメモリ３３の先頭アドレスが設定されるリードアドレスレジスタ３６Ａを初期化し（ステップＳ５１）、ＲＡＭ４の先頭アドレスが設定されるライトアドレスレジスタ３６Ｂを初期化（ステップＳ５２）する。データ転送装置３６は、ステップＳ５３のリードアドレスレジスタ３６Ａに設定されているアドレスが最終アドレスに到達したか否かのチェックを経て、リードアドレスレジスタ３６Ａで指定されるフラッシュメモリ３３のアドレスから１ワード分のデータを読み出す。そして、ライトアドレスレジスタ３６Ｂで指定されるＲＡＭ４のアドレスに読み出した１ワード分のデータを書き込む（コピー）（ステップＳ５４）。その後、リードアドレスレジスタ３６Ａを更新し（ステップＳ５５）、ライトアドレスレジスタ３６Ｂを更新する（ステップＳ５６）。その後、ステップＳ５３に戻り、ファームウェアのリードアドレスが最終アドレスに到達するまでステップＳ５４〜Ｓ５６の動作を繰り返し実行し、到達していると判別した場合（ステップＳ５３のＹｅｓ）、データ転送処理を終了する。
【００４２】
図８は、正当性確認装置３７の概略構成を示すブロック図である。正当性確認装置３７は、加算器４１、ｎ個のレジスタ４２1〜４２n等を有する。正当性確認装置３７は、データ転送装置３６によってフラッシュメモリ３３からシステムバス２に読み出されるファームウェアのデータを取得し、前記ファームウェアが正当であるか否かを判別する。
【００４３】
フラッシュメモリ３３からシステムバス２を流れる１ワード（ｎｂｉｔ）のデータがＲＡＭ４に転送されると同時に、正当性確認装置３７の加算器４１にも入力される。加算器４１は、入力されたデータとレジスタ４２1〜４２nに記憶されているデータとを加算する。レジスタ４２1〜４２nには、加算器４１の計算結果が下位ビットから順に記憶される。
【００４４】
フラッシュメモリ３３に格納されるファームウェアの最後の１ワードはエラー検出コードであり、最後の１ワードを除く残り全部のワードの合計値の符号反転したものが設定されている。このため、フラッシュメモリ３３に格納されているファームウェアの内容が破壊されていなければ、全てのデータの転送を終えたときに、全てのレジスタ４２1〜４２nに記憶されている値は“０”である。
【００４５】
図９は、第２の実施形態に係わる正当性確認装置３７が転送データの正当性を確認する動作を示すフローチャートである。
【００４６】
正当性確認装置３７が起動されると、レジスタ４２1〜４２nをクリアする（ステップＳ６１）。正当性確認装置３７は、データ転送装置３６がフラッシュメモリ３３から１ワード分のデータを読み出しシステムバス２を介してＲＡＭ４に転送するのを待つ。この１ワードのデータがシステムバス２に出力されたならば（ステップＳ６２のＹｅｓ）、同時にこの１ワードのデータを正当性確認装置３７も取り込む（ステップＳ６３）。当性確認装置３７は、この１ワードのデータを元に、加算器４１によって演算を行い、その結果を記憶するレジスタ４２1〜４２nの内容を更新する（ステップＳ６４）。
【００４７】
フラッシュメモリ３３からＲＡＭ４にファームウェアのデータ転送が終了したとき、制御装置５は、正当性確認装置３７によるデータ監視の結果を示す各レジスタ４２1〜４２nの値を読む。制御装置５は、各レジスタ４２1〜４２nの値が“０”であるならば転送したファームウェアの正当性に問題がないと判断し、ＲＡＭ４のファームウェアを実行する。一方、各レジスタ４２1〜４２nのいずれか１つの値が“１”であるならば、転送したファームウェアの正当性に問題があると判定し、ＲＡＭ４のファームウェアを実行しないで、例えばエラー発生を出力する。
【００４８】
本実施形態によれば、データ転送装置３６によりフラッシュメモリ３３の内容を読み出しＲＡＭ４に転送する際、同時に正当性確認装置３７によってその正当性確認のための計算を実行する。そして、ファームウェア転送が終了したとき、同時に正当性確認のための計算も終了する。このため、正当性確認に要する実質的な計算時間がゼロになる。
【００４９】
また、本実施形態によれば、正当性確認装置３７はワード単位の加算器であり、ＡＳＩＣ内の既存回路の再利用で実現できる。またデータ転送装置３６は既存の装置である。このため本実施形態の実施に伴い新たに必要になる回路は僅かである。
【００５０】
また、本実施形態ではデータ転送装置３６により転送されるファームウェアの全領域が正当性確認装置３７による確認の対象となる。このためファームウェア内には正当性確認の出来ない部分が存在しない。
【００５１】
（第３の実施形態）
第３の実施形態では複数のデータ線を持つフラッシュメモリ３を使用し、またデータ転送とファームウェア正当性確認を制御装置に搭載したプログラムで実行するものである。
【００５２】
図１０は、第３の実施形態に係わるＡＳＩＣシステム１の構成を示すブロック図である。
【００５３】
ＡＳＩＣシステム１は、システムバス２に接続されたフラッシュメモリ４３、ＲＡＭ４、制御装置４５、並びに制御装置４５から参照可能なプログラムを格納したシステムＲＯＭ４８等から構成されている。また、制御装置４５には、データを読み込むフラッシュメモリ４３の先頭アドレスが設定されるリードアドレスレジスタ４５Ａ、データを書き込むＲＡＭ４の先頭アドレスが設定されるライトアドレスレジスタ４５Ｂを備える。また、フラッシュメモリ４３内に合計値レジスタ４Ａが設けられる。
【００５４】
ＡＳＩＣシステム１の電源がＯＮされると、制御装置４５は、システムＲＯＭ４８に格納されているプログラムを読み出し実行する。
【００５５】
図１１は、第３の実施形態に係わる制御装置５がフラッシュメモリ４３から読み出したデータをＲＡＭ４へデータ転送する動作を示すフローチャートである。
【００５６】
制御装置４５は、フラッシュメモリ４３の先頭アドレスが設定されるリードアドレスレジスタ４５Ａを初期化し（ステップＳ７１）、ＲＡＭ４の先頭アドレスが設定されるライトアドレスレジスタ４５Ｂを初期化する（ステップＳ７２）。また制御装置４５は、合計値レジスタ４Ａの内容をクリアする（ステップＳ７３）。
【００５７】
制御装置４５は、ステップＳ７４のリードアドレスレジスタ４５Ａに設定されているアドレスが最終アドレスに到達したか否かもチェックを経て、リードアドレスレジスタ３６Ａによって指定されるフラッシュメモリ４３のアドレスから１ワード分のデータを読み出し、ライトアドレスレジスタ３６Ｂによって指定されるＲＡＭ４のアドレスに読み出した１ワード分のデータを書き込む（コピー）（ステップＳ７５）。
【００５８】
併せて、ステップＳ７５でコピーした１ワードのデータ値とレジスタ４Ａに記憶される合計値との論理和を求め、その合計値を再びレジスタ４Ａに記憶（更新）する（ステップＳ７６）。なお、論理和の桁あふれは破棄し、１ビットをレジスタ４Ａに記憶する。
【００５９】
制御装置４５は、リードアドレスレジスタ３６Ａのアドレスを更新して、フラッシュメモリ４３に対する次の読み出しアドレスを生成する（ステップＳ７７）。また、制御装置４５はライトアドレスレジスタ３６Ｂを更新して、ＲＡＭ４に対する次の書き込みアドレスを生成する（ステップＳ７８）。その後ステップＳ７４に戻り、リードアドレスレジスタ３６Ａのリードアドレスが最終アドレスに到達するまで、ステップＳ７５〜Ｓ７８の動作を実行する。
【００６０】
そして、リードアドレスレジスタ３６Ａのリードアドレスが最終アドレスに到達していると判別した場合（ステップＳ７４のＹｅｓ）、ＲＡＭ４のレジスタ４Ａに記憶されている合計値がゼロであるか否かを判別する（ステップＳ７９）。合計値がゼロであると判別した場合（ステップＳ７９のＹｅｓ）、フラッシュメモリ４３からＲＡＭ４へ転送したファームウェアの正当性に問題がないと判断され、制御装置４５はＲＡＭ４のファームウェアを実行する（ステップＳ８０）。一方、合計値がゼロではないと判別した場合（ステップＳ７９のＮｏ）、フラッシュメモリ４３からＲＡＭ４へ転送したファームウェアの正当性に問題があると判断され、制御装置４５はＲＡＭ４のファームウェアを実行せず、例えばエラー発生を出力する（ステップＳ８１）。
【００６１】
フラッシュメモリ３に格納されるファームウェアの最後の１ワードはエラー検出コードであり、最後の１ワードを除く残り全部のワードの合計値の符号反転したものが設定されている。このため、フラッシュメモリ３に格納されるファームウェアの内容が破壊されていなければ、全てのデータの転送を終えたときの、レジスタ４Ａに記憶される合計値はゼロである。
【００６２】
本実施形態によれば、制御装置４５がフラッシュメモリ４３のデータをＲＡＭ４にコピーする際、その値の合計値（チェックサムと称される）を計算する。制御装置４５の実行ステップは、フラッシュメモリ３のファームウェアをＲＡＭ４にコピーした後合計値を計算する場合に比べて、データのリード、ライト、合計値計算が１回／ワードであるため、動作が速い。さらに、パイプライン処理をサポートする通常の制御装置では、フラッシュメモリ３からデータをリードするのに要する時間が他の処理時間に比べて非常に長いため、フラッシュメモリ３からのデータのリード時間の間に合計値計算（ステップＳ７６）並びにリード・ライトアドレス更新（ステップＳ７７，Ｓ７８）を並行して実行できる。従って、合計値計算の処理時間は事実上ゼロである。
【００６３】
また、正当性確認はプログラムによって実現されているため、新たな回路は増えたプログラムを記録するための回路の分であり、それは僅かである。
【００６４】
また、転送されるファームウェアの全領域が制御装置４５による確認の対象となる。このためファームウェア内には正当性確認の出来ない部分が存在しない。
【００６５】
（第４の実施形態）
図１２は、第４の実施形態に係わるＡＳＩＣシステム１の構成を示すブロック図である。ブロック図の構成は、第１の実施形態とほぼ同じであるが、フラッシュメモリ５３は全体がひとかたまりではなく、初期実行部５９を中に含む構成をとっている。
【００６６】
第４の実施形態では、ＡＳＩＣシステム１の電源がＯＮしたとき、フラッシュメモリ５３に格納されているファームウェアの全体をＲＡＭ４に転送するのではなく、ファームウェアの一部をＲＡＭ４に転送する。これによって読み出し速度が遅いフラッシュメモリ５３の内容を全部読み取ることによりファームウェアの実行が遅れる問題を回避する。
【００６７】
初期実行部５９は、フラッシュメモリ５３上の一連の領域で、実行プログラムとデータから構成されるファームウェアで、その最終ワードにはエラー検出コードを含んでいる。エラー検出コードは、初期実行部５９を例えば図４に示した正当性確認装置に入力して得られるレジスタ２１の値である。
【００６８】
電源ＯＮの後の制御装置５５の動作も図２に示したフローチャートと同様である。但し、データ転送装置５６の起動で、転送対象はフラッシュメモリ５３のファームウェア全体ではなく、その中の初期実行部５９のみである。
【００６９】
データ転送装置５６の動作、正当性確認装置５７の動作は第１の実施形態で示したものと同様であるので、その説明は省略する。
【００７０】
本実施形態によれば、データ転送装置５６によりフラッシュメモリ４３に格納されるファームウェアの初期実行部５９を読み出しＲＡＭ４に転送すると同持に、正当性確認装置５７によってその初期実行部５９の正当性を確認するための計算を並行して実行し、転送が終了したとき同時に正当性を確認するための計算も終了することになる。このため、正当性確認に要する実質的な計算時間がゼロになる。
【００７１】
また、本実施形態によれば正当性確認装置５７の計算レジスタは、図４に示す一般的なエラー検出装置（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｕｎｉｔ）のそれであり、ＡＳＩＣ内の既存回路の再利用で実現できる。またデータ転送装置５６は既存の装置であり、本装置の実施のために新たに必要となるのは正当性確認装置５７の制御をする部分のみである。このため本実施形態の実施に伴い新たに必要になる回路は僅かである。
【００７２】
また、本実施形態ではデータ転送装置５６により転送される初期実行部５９の領域が正当性確認装置５７による確認の対象となる。このため、初期実行部５９内には正当性確認の出来ない部分が存在しない。
【００７３】
さらに、第１の実施形態と比較してファームウェアの最初に必要な初期実行部５９を先に転送することで直ちにＲＡＭ４のファームウェアが起動されることになるため、電源ＯＮからＲＡＭ４のファームウェア実行を開始するまでの時間を短縮することが出来る。
【００７４】
第４の実施形態は、シリアルフラッシュメモリ３を利用する形式としたが、データ転送装置５６、並びに正当性確認装置５７を第２の実施形態で示した形態とし、第４の実施形態をワードアクセスの可能なフラッシュメモリ５３を使用するＡＳＩＣシステム１に適用することも可能である。
【００７５】
同様に、第４の実施形態のブロック構成のうち、データ転送装置５６、正当性確認装置５７を取り外し、例えば図１０のシステムＲＯＭ４８を搭載して初期実行部５９をＲＡＭ４に転送する実施形態を構築することも可能である。この場合、制御装置５５の電源ＯＮに伴う動作は図１１に従うが、ステップＳ７１のリードアドレス初期化、並びにステップＳ７４の最終アドレス判定では初期実行部５９の開始アドレス・終了アドレスを設定・参照する。
【００７６】
なお、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００７７】
【図１】第１の実施形態に係わるＡＳＩＣシステムの概略構成を示すブロック図。
【図２】第１の実施形態に係わるＡＳＩＣシステムの制御装置がフラッシュメモリ内のファームウェアをＲＡＭに転送し、ＲＡＭに記憶されたファームウェアを実行するまでの処理の手順を示すフローチャート。
【図３】第１の実施形態に係わるＡＳＩＣシステムのデータ転送装置がフラッシュメモリからＲＡＭへファームウェアを転送する処理の手順を示すフローチャート。
【図４】第１の実施形態に係わるＡＳＩＣシステムの正当性確認装置の構成を示すブロック図。
【図５】第１の実施形態に係わるＡＳＩＣシステムの正当性確認装置が転送データの正当性を確認する動作を示すフローチャート。
【図６】第２の実施形態に係わるＡＳＩＣシステムの概略構成を示すブロック図。
【図７】第２の実施形態に係わるＡＳＩＣシステムのデータ転送装置がフラッシュメモリからＲＡＭへのデータ転送の動作を示すフローチャート。
【図８】第２の実施形態に係わるＡＳＩＣシステムの正当性確認装置の概略構成を示すブロック図
【図９】第２の実施形態に係わるＡＳＩＣシステムの正当性確認装置が転送データの正当性の確認の動作を示すフローチャート。
【図１０】第３の実施形態に係わるＡＳＩＣシステムの構成を示すブロック図。
【図１１】第３の実施形態に係わるＡＳＩＣシステムの制御装置がシステムＲＯＭのプログラムの動作を示すフローチャート
【図１２】第４の実施形態に係わるＡＳＩＣシステムの構成を示すブロック図。
【符号の説明】
【００７８】
１…ＡＳＩＣシステム、２…システムバス、３，３３，４３，５３…フラッシュメモリ、４…ＲＡＭ、４，３７，５７…正当性確認装置、４Ａ…合計値レジスタ、４Ａ…レジスタ、５，４５，５５…制御装置、６，３６，５６…データ転送装置、６Ａ…バッファ、７，５７…正当性確認装置、４８…システムＲＯＭ
【図１】
2008140034.tif 000003
【図２】
2008140034.tif 000004
【図３】
2008140034.tif 000005
【図４】
2008140034.tif 000006
【図５】
2008140034.tif 000007
【図６】
2008140034.tif 000008
【図７】
2008140034.tif 000009
【図８】
2008140034.tif 000010
【図９】
2008140034.tif 000011
【図１０】
2008140034.tif 000012
【図１１】
2008140034.tif 000013
【図１２】
2008140034.tif 000014