(57)【要約】【課題】  無駄なチップ面積の増大を抑制しつつ、二つのプログラムの独立性を確保してＲＯＭに格納する。【解決手段】  ＣＰＵ２とＲＯＭ３間に、アドレス選択信号（二つのプログラムがいずれであるか）に応じて、入力アドレス信号と、その入力アドレス信号を反転させた反転アドレス信号とを選択可能なアドレス信号切替回路４を設ける。一方、ＲＯＭ３には、製品プログラムなどの一方のプログラムが通常の方法で上位アドレスから格納され、ハードウェア診断プログラムなどの他方のプログラムがアドレスを反転させた状態で下位アドレスから格納されている。これら二つのプログラムは、アドレス信号切替回路４のマルチプレクサ４ｂへのアドレス選択信号により切り替えられてアクセスされる。これによって、従来のような無駄なチップ面積の増大を抑制しつつ、二つのプログラムの独立性を確保してＲＯＭに格納することができる。【選択図】 図１  
2005122325.tif 000002
【特許請求の範囲】
【請求項１】
二つのプログラムが格納された読み出し専用メモリにおいて、該二つのプログラムが格納される番地が互いに重ならないように、該二つのプログラムのうち一方のプログラムのデータは下位アドレス側から格納され、他方のプログラムのデータは上位アドレス側から格納されている読み出し専用メモリ。
【請求項２】
前記二つのプログラムの一方は製品機能を有する製品プログラムであり、他方は製品の製造段階で検査のために用いられる診断プログラムである請求項１に記載の読み出し専用メモリ。
【請求項３】
請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、
該演算処理装置と読み出し専用メモリ間に、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が該演算処理装置から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリにアクセス可能とする回路システム。
【請求項４】
請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、
該読み出し専用メモリに、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が該演算処理装置から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリのメモリセル部にアクセス可能とする回路システム。
【請求項５】
請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、
該演算処理装置に、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が演算処理部から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリにアクセス可能とする回路システム。
【請求項６】
前記演算処理装置に、前記演算処理部から入力された入力アドレス信号と、外部から入力された外部信号との論理演算結果に基づいて、前記アドレス選択信号を前記アドレス信号切替回路に出力するアドレスデコーダ手段を更に有する請求項５に記載の回路システム。
【請求項７】
前記アドレスデコーダ手段は、所定の前記読み出し専用メモリをアクセスするときのみ、前記アドレス信号切替回路に前記アドレス選択信号を出力することにより、前記入力アドレス信号を反転可能とする機能を選択する請求項６に記載の回路システム。
【請求項８】
前記アドレス信号切替回路は、入力された入力アドレス信号を反転させる信号反転手段と、外部または内部から入力されるアドレス選択信号に応じて、該信号反転手段からの反転アドレス信号と該入力アドレス信号とのいずれか一方を選択して出力するアドレス信号選択手段とを有する請求項３〜５のいずれかに記載の回路システム。
【請求項９】
前記アドレス信号選択手段は、前記アドレス選択信号が製品機能プログラムを示す場合には前記入力アドレス信号を選択し、該アドレス選択信号が診断プログラムを示す場合には前記反転アドレス信号を選択する請求項８に記載の回路システム。
【請求項１０】
二つのプログラムのデータが読み出し専用メモリに配置される位置を示すプログラム情報と読み出し専用メモリのサイズとを入力する情報入力ステップと、
入力されたサイズ分のメモリ領域を確保するステップと、
入力されたプログラム情報のアドレスに従って一方のプログラムをメモリ領域に配置するステップと、
他方のプログラムについて、入力されたプログラム情報のアドレスに対して１の補数を算出し、算出された値をアドレスとして該他方のプログラムをメモリ領域に配置するステップと、
該他方のプログラムのメモリ領域への配置に伴って該一方のプログラムのデータが変化していないことを検出する検出ステップとを有する読み出し専用メモリイメージ合成方法。
【請求項１１】
二つの入力プログラムのデータが読み出し専用メモリに配置される本来のアドレスを決定するステップと、
該アドレスを反転させた反転アドレスを算出し、該アドレスおよび該反転アドレスを含む二つのプログラムのプログラム情報と読み出し専用メモリのサイズとを入力する情報入力ステップと、
入力されたサイズ分のメモリ領域を確保するステップと、
入力されたプログラム情報の該アドレスに従って一方のプログラムをメモリ領域に配置するステップと、
入力されたプログラム情報の該反転アドレスに従って他方のプログラムをメモリ領域に配置するステップと、
該他方のプログラムのメモリ領域への配置に伴って該一方のプログラムのデータが変化していないことを検出する検出ステップとを有する読み出し専用メモリイメージ合成方法。
【請求項１２】
該一方のプログラムのデータが変化している場合には、前記読み出し専用メモリのサイズを大きくしたり小さくしたりして調整して、前記情報入力ステップから前記検出ステップまでの各ステップを繰り返す請求項１０または１１に記載の読み出し専用メモリイメージ合成方法。
【請求項１３】
請求項１０〜１２のいずれかに記載の読み出し専用メモリイメージ合成方法によって合成された読み出し専用メモリイメージに従って、前記読み出し専用メモリに二つのプログラムを格納するプログラム格納方法。
【請求項１４】
前記二つのプログラムが格納される番地が互いに重ならないように、該二つのプログラムのうち一方のプログラムのデータを下位アドレス側から格納し、他方のプログラムのデータを上位アドレス側から格納する請求項１３に記載のプログラム格納方法。
【請求項１５】
請求項１３または１４に記載のプログラム格納方法をコンピュータに実行させるための各処理手順が記録された制御プログラム。
【請求項１６】
請求項１５に記載の制御プログラムが記憶されたコンピュータ読み取り可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置（ＣＰＵ）によって実行される二つのプログラムが格納された読み出し専用メモリ（リードオンリーメモリ；ＲＯＭ）、そのＲＯＭとＣＰＵとを含む回路システム、この二つのプログラムのＲＯＭイメージ合成方法、この二つのプログラムをＲＯＭに格納させるプログラム格納方法、これをコンピュータに実行させるための制御プログラムおよびこれが記憶された記憶媒体に関する。
【背景技術】
【０００２】
近年、半導体集積回路における集積度が向上し、一つのチップ上にマイクロプロセッサ（ＣＰＵ）とＲＯＭやランダムアクセスメモリ（ＲＡＭ）、周辺機器が同時に搭載されたシステムオンチップとして動作させることが一般的になってきている。このように、回路システムを構成するために必要なこれらの部品を同一チップ上に搭載することによって、回路システムの小型化、省電力化および低コスト化が可能になるからである。
【０００３】
このような従来の回路システムにおいて、ＲＯＭとしては様々なタイプのものが用いられている。例えば、本来の意味での読み出し専用メモリとは異なるが、プログラムを変更可能なように複数回書き換え可能なフラッシュメモリ（不揮発性メモリ）を内蔵させた書き換え可能なメモリや、ＯＴＰ（Ｏｎｅ−Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）と言われる一度だけ書き込み可能なメモリ、また、半導体製造時に内部にプログラムが書き込まれるが、プログラムの変更が不可能なメモリなどがある。回路システムの試作段階ではプログラムの変更が発生するため、これらのＲＯＭのうち、書き換え可能な前者の２種類が利用されることが多い。しかしながら、回路システムの開発が終了してしまえばプログラムの書き換えは殆ど行われず、製造コストも安いという理由から、書き換え不可能なＲＯＭが利用されることも多い。
【０００４】
このようなＲＯＭには、ＣＰＵによって実行されるプログラムが格納されているが、このプログラムは、通常、回路システムが製品として用をなすための機能を有するものである。また、ＲＯＭには、このような製品プログラムに加えて、回路システムの製造段階でハードウェアの検査を行うために、診断プログラムと言われるハードウェア検査用のプログラムが格納されている。製造段階において、この診断プログラムがまず実行され、その結果、製品を構成するハードウェアやチップに問題がないと判断された時点で、最終的な製品機能を有するプログラムが書き込まれることも多い。但し、この場合には、ＲＯＭとして上述したような書き換え可能なメモリを備えていることが必要である。
【０００５】
書き換え不可能なメモリの場合には、診断プログラムによって検査を行った後で製品プログラムを書き込むということが不可能であるので、様々な方法が用いられている。例えば、製品プログラムと診断プログラムとを単一のプログラムとして構成し、例えば製品のボタンを操作したり、半導体の入力端子をテストモードにするなど、何らかの方法を用いてプログラムにテストモードであることを認識させ、それによってプログラム内で診断プログラムの手続きを呼び出して実行させる方法がある。
【０００６】
このような方法は一般的に用いられているが、製品プログラムと診断プログラムとが独立していないという問題がある。即ち、診断プログラムと製品プログラムとが同一のメモリ空間内に存在しているため、必ずしも他方のプログラムに影響を与えないとは断言できない。例えば、製品プログラムは正常に動作するはずであるにも関わらず、診断プログラムが正常に動作しないために、その結果として製品プログラムが正しく動作しないことが考えられる。また、この二つのプログラムは、分割して開発されることが多いため、単一のプログラムとして構成するためには二つのプログラムを統合する手順が必要であり、それぞれの動作に影響が生じないように配慮する必要もある。
【０００７】
特に、半導体集積回路のように、回路システムの製造者と、ソフトウェアなどの製品開発のためにその回路システムを使用する製品開発者とが異なる場合には、このような配慮が重要である。例えば半導体集積回路の製造者は、製造時点でエージングと言われる信頼性試験を行なって半導体チップ自体のテストを行ない、それを出荷後、製品製造者がその半導体チップを組み込んだ製品を作製するような場合が挙げられる。このような場合、回路の製造者にとって信頼性試験のために必要な配慮を、製品プログラムに対して求めることは一般的に困難である。そのため、この信頼性試験のためのプログラム（診断プログラム）は、製品プログラムから意識されないようにする必要がある。
【０００８】
このような問題を解決するために、様々な方法が考えられている。例えば物理的に二つのＲＯＭを設けて、テストモード信号によってそれら二つのを切り替えて動作させる方法が挙げられる。この方法によれば、それぞれのプログラムは完全に独立しているため、他方のプログラムに影響を及ぼすことはない。
【０００９】
また、別の方法として、例えば特許文献１に開示されている方法がある。この方法では、ＲＯＭが中央で二つに区切られ、それぞれの開始アドレスを２種類のプログラムの開始位置として二つのプログラムが配置されている。そのいずれかを示す外部信号とＣＰＵのアドレス信号とによって、どちらのプログラムのどの部分であるかが示されてアクセスされるようになっている。
【特許文献１】特開２００３−７６５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した従来の方法はいずれも、一方のプログラムが他方のプログラムに影響を与えず、二つのプログラムを独立して動作させることができる。しかしながら、使用条件によっては、以下のような問題が生じる。
【００１１】
ＲＯＭやＲＡＭのサイズは、その構成方法により、一般的に２のべき乗とする必要がある。例えば１２８ｋ（２の１７乗）ビットの次は２５６ｋ（２の１８乗）ビット、その次は５１２ｋ（２の１９乗）ビット、・・・というように構成されている。この条件下で、例えば１３０ｋビットの製品プログラムと１２０ｋビットの診断プログラムとをメモリに格納しようとした場合、上記二つのＲＯＭを用いる方法では、製品プログラムには２５６ｋビットのＲＯＭ、診断プログラムには１２８ｋビットのＲＯＭが必要であり、合計３８４ｋビットのＲＯＭが必要になる。また、特許文献１に開示されている方法では、二つのプログラムのうちの大きい方が基準とされるため、製品プログラムを格納可能な２５６ｋビットの倍である５１２ｋビットの容量が必要になる。
【００１２】
半導体によってＲＯＭを構成する場合、同一プロセスで製造される製品においては、ほぼ単純にデータ量に比例してチップ面積が必要となり、また、このチップ面積は単純に価格に反映される。このことから分かるように、単純にプログラムの独立性を確保するだけではなく、その結果としてのＲＯＭ容量も問題になるのである。
【００１３】
上記二つの従来方法では、合計２５０ｋビットの容量である二つのプログラムを格納するために、前者では３８４ｋビット、後者では５１２ｋビットも必要となる。このため、前者では約３５％、後者では半分以上が参照されないデータのための無駄な領域となっている。これは、チップ面積の増大、さらには製品価格の上昇を招くことになる。
【００１４】
本発明は、上記従来の問題を解決するもので、無駄なチップ面積の増大を抑制しつつ、二つのプログラムの独立性を確保できる読み出し専用メモリ（リードオンリーメモリ；ＲＯＭ）、そのＲＯＭとＣＰＵとを含む回路システム、この二つのプログラムのＲＯＭイメージ合成方法、このＲＯＭイメージ合成方法を用いて二つのプログラムをＲＯＭに格納させるプログラム格納方法、これをコンピュータに実行させるための制御プログラムおよびこれが記憶された記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の読み出し専用メモリは、二つのプログラムが格納された読み出し専用メモリにおいて、該二つのプログラムが格納される番地が互いに重ならないように、該二つのプログラムのうち一方のプログラムのデータは下位アドレス側から格納され、他方のプログラムのデータは上位アドレス側から格納されているものであり、そのことにより上記目的が達成される。
【００１６】
また、好ましくは、本発明の読み出し専用メモリに格納される二つのプログラムの一方は製品機能を有する製品プログラムであり、他方は製品の製造段階で検査のために用いられる診断プログラムである。
【００１７】
本発明の回路システムは、請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、該演算処理装置と読み出し専用メモリ間に、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が該演算処理装置から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリにアクセス可能とするものであり、そのことにより上記目的が達成される。
【００１８】
本発明の回路システムは、請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、該読み出し専用メモリに、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が該演算処理装置から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリのメモリセル部にアクセス可能とするものであり、そのことにより上記目的が達成される。
【００１９】
本発明の回路システムは、請求項１または２に記載の読み出し専用メモリと、該読み出し専用メモリに対してアクセス可能とする演算処理装置とを有する回路システムにおいて、該演算処理装置に、
アドレス切替信号により入力アドレス信号と該入力アドレス信号の反転アドレス信号とを切替可能とするアドレス信号切替回路が設けられ、該入力アドレス信号が演算処理部から該アドレス信号切替回路に供給され、該アドレス信号切替回路によって切り替えられた入力アドレス信号または反転アドレス信号により該読み出し専用メモリにアクセス可能とするものであり、そのことにより上記目的が達成される。
【００２０】
また、好ましくは、本発明の回路システムにおける演算処理装置に、前記演算処理部から入力された入力アドレス信号と、外部から入力された外部信号との論理演算結果に基づいて、前記アドレス選択信号を前記アドレス信号切替回路に出力するアドレスデコーダ手段を更に有する。
【００２１】
さらに、好ましくは、本発明の回路システムにおけるアドレスデコーダ手段は、所定の前記読み出し専用メモリをアクセスするときのみ、前記アドレス信号切替回路に前記アドレス選択信号を出力することにより、前記入力アドレス信号を反転可能とする機能を選択する。
【００２２】
さらに、好ましくは、本発明の回路システムにおけるアドレス信号切替回路は、入力された入力アドレス信号を反転させる信号反転手段と、外部または内部から入力されるアドレス選択信号に応じて、該信号反転手段からの反転アドレス信号と該入力アドレス信号とのいずれか一方を選択して出力するアドレス信号選択手段とを有する。
【００２３】
さらに、好ましくは、本発明の回路システムにおけるアドレス信号選択手段は、前記アドレス選択信号が製品機能プログラムを示す場合には前記入力アドレス信号を選択し、該アドレス選択信号が診断プログラムを示す場合には前記反転アドレス信号を選択する。
【００２４】
本発明の読み出し専用メモリイメージ合成方法は、二つのプログラムのデータが読み出し専用メモリに配置される位置を示すプログラム情報と読み出し専用メモリのサイズとを入力する情報入力ステップと、入力されたサイズ分のメモリ領域を確保するステップと、入力されたプログラム情報のアドレスに従って一方のプログラムをメモリ領域に配置するステップと、他方のプログラムについて、入力されたプログラム情報のアドレスに対して１の補数を算出し、算出された値をアドレスとして該他方のプログラムをメモリ領域に配置するステップと、該他方のプログラムのメモリ領域への配置に伴って該一方のプログラムのデータが変化していないことを検出する検出ステップとを有するものであり、そのことにより上記目的が達成される。
【００２５】
本発明の読み出し専用メモリイメージ合成方法は、二つの入力プログラムのデータが読み出し専用メモリに配置される本来のアドレスを決定するステップと、該アドレスを反転させた反転アドレスを算出し、該アドレスおよび該反転アドレスを含む二つのプログラムのプログラム情報と読み出し専用メモリのサイズとを入力する情報入力ステップと、入力されたサイズ分のメモリ領域を確保するステップと、入力されたプログラム情報の該アドレスに従って一方のプログラムをメモリ領域に配置するステップと、入力されたプログラム情報の該反転アドレスに従って他方のプログラムをメモリ領域に配置するステップと、該他方のプログラムのメモリ領域への配置に伴って該一方のプログラムのデータが変化していないことを検出する検出ステップとを有するものであり、そのことにより上記目的が達成される。
【００２６】
また、好ましくは、本発明の読み出し専用メモリイメージ合成方法において、一方のプログラムのデータが変化している場合には、前記読み出し専用メモリのサイズを大きくしたり小さくしたりして調整して、前記情報入力ステップから前記検出ステップまでの各ステップを繰り返す。
【００２７】
本発明のプログラム格納方法は、請求項１０〜１２のいずれかに記載の上記読み出し専用メモリイメージ合成方法によって合成された読み出し専用メモリイメージに従って、前記読み出し専用メモリに二つのプログラムを格納するものであり、そのことにより上記目的が達成される。
【００２８】
また、好ましくは、本発明のプログラム格納方法において、二つのプログラムが格納される番地が互いに重ならないように、該二つのプログラムのうち一方のプログラムのデータを下位アドレス側から格納し、他方のプログラムのデータを上位アドレス側から格納する。
【００２９】
本発明の制御プログラムは、請求項１３または１４に記載の上記プログラム格納方法をコンピュータに実行させるための各処理手順が記録されており、そのことにより上記目的が達成される。
【００３０】
本発明の可読記録媒体は、請求項１５に記載の上記制御プログラムが記憶されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
【００３１】
上記構成により、以下に、本発明の作用について説明する。
【００３２】
本発明にあっては、演算処理装置（ＣＰＵ）により実行されるプログラムが格納された読み出し専用メモリ（ＲＯＭ）において、最終的な製品機能を有する製品プログラムなどのデータは、そのまま下位のアドレス側から格納され、製品の製造段階で検査のために用いられる診断プログラムなどはアドレスが反転されて上位のアドレス側から格納され、それぞれ共通の番地に重ならないように配置されている。
【００３３】
例えば、０番地からそのプログラムのサイズだけアドレスが連続している１３０ｋビットと１２０ｋビットの二つのプログラムを格納させる場合、合計２５６ｋビットに達しないため、２５６ｋビットのメモリに二つのプログラムを格納させることができる。２５６ｋビットは３２ｋバイトであるので、００００〜７ＦＦＦＨ（１６進数）で示される番地がある。この場合、一方のプログラムは、０番地から１３０ｋビット分（約１６．３ｋバイト分）、通常通り下位アドレスからＲＯＭに格納させる。また、他方のプログラムは、まず、プログラムを書き込むための番地（アドレス）とデータのうち、アドレスだけを反転させる。この場合には１５ビット分の番地があるため、０番地は７ＦＦＦＨ番地に、１番地は７ＦＦＦＥＨ番地に、というようにアドレスが反転される。このようにして反転されたアドレスに応じて、本来は下位アドレスから格納されるデータを上位アドレスから、全体を逆順にＲＯＭに格納させる。これにより、中心付近に６ｋビット分の何も格納されていない領域（無駄な領域）ができるが、従来の方法に比べて、従来、アドレスの後側に生じていた無駄な領域がなくなる。
【００３４】
このＲＯＭに格納された二つのプログラムを実行させるために、本発明では、入力されたアドレス信号を反転させるインバーター回路などの信号反転手段と、アドレス信号およびアドレス信号を反転させた反転アドレス信号の一方を選択して出力させるマルチプレクサなどのアドレス信号選択手段とを有するアドレス信号切替回路を用いる。そして、マルチプレクサによってどちらのアドレス信号を選択して出力させるかを、外部から入力されるアドレス選択信号によって設定できるようにしている。これによって、ＲＯＭに格納されている二つのプログラムを、アドレス選択信号に応じてマルチプレクサにより切り替えてアクセスすることが可能となる。このアドレス信号切替回路は、ＣＰＵとＲＯＭとの間を接続するアドレス信号線に接続してもよい。また、アドレス信号切替回路はＲＯＭ側に内蔵させてもよく、アドレス信号切替回路はＣＰＵ側に内蔵させてもよい。
【００３５】
アドレスが反転されていない一方のプログラムを実行する際には、ＣＰＵから出力されるアドレス信号をそのままＲＯＭに出力させるようにアドレス選択信号によってマルチプレクサを制御する。また、アドレスが反転された他方のプログラムを実行する際には、ＣＰＵから出力されるアドレス信号を反転させた反転アドレス信号をＲＯＭに出力させるようにアドレス選択信号によってマルチプレクサを制御する。この場合、ＣＰＵでは例えば０番地をアクセスするつもりであるのに対して、ＲＯＭでは１５ビットのアドレス信号が全て０から全て１に反転された反転アドレス信号がまず供給され、アドレスのいちばん後側の７ＦＦＦＨ番地がアクセスされることになる。この番地には他方のプログラムにおける最初の番地（０番地）のデータが格納されているため、ＣＰＵからは全く意識することなく、他方のプログラムにアクセスすることがが可能になる。
【００３６】
これにより、例えば製品プログラムは通常どおり０番地側から、また、診断プログラムは７ＦＦＦＨ番地側から実行される。この場合、アドレス選択信号によりどちらのアドレス信号を出力させるかが選択されるため、ＣＰＵや回路システムをソフトウェアなどの製品開発のために使用する使用者は、診断プログラムについて意識する必要はない。
【００３７】
ＲＯＭにデータを格納する際には、ＲＯＭイメージ（プログラム情報）によって、どのようなデータがどの位置（アドレス）に配置されるかが決定される。本発明では、二つのプログラムのＲＯＭイメージとＲＯＭサイズとに応じて、二つのプログラムのＲＯＭイメージが合成される。まず、二つのプログラムのＲＯＭイメージとＲＯＭサイズとが指定されると、そのサイズ分のメモリ領域が確保される。一方のプログラムは、入力されたＲＯＭイメージのアドレスに従ってデータがメモリ領域に格納され、他方のプログラムは、入力されたＲＯＭイメージのアドレスに対して１の補数が算出され、算出された値をアドレスとしてデータがメモリ領域に格納される。ここで、他方のプログラムのデータが一方のプログラムのデータと共通の番地に重なって格納された場合には、データが変化している。これを用いて、一方のプログラムのデータが比較（コンペア）されて、他方のプログラムのデータ格納前後で変化していないことが検証（検出）される。変化している場合には、ＲＯＭサイズを調整（メモリサイズを大きくしたり小さくしたりする）することによって、二つのプログラムのデータが共通の番地に重なって格納されないようにすることができる。
【００３８】
プログラムは、一般に、リンカなどの位置決定プログラムによって、データがＲＯＭに配置される位置（アドレス）が決定される。本発明では、リンカによって本来のアドレスが決定された後、そのアドレスを反転させた反転アドレスを算出し、後で利用できるようにプログラム情報（ＲＯＭイメージ）に加えて出力させることができる。このプログラム情報を用いて、二つのプログラムのＲＯＭイメージを合成させることができる。
【００３９】
本発明のＲＯＭイメージ合成方法は、制御プログラムとしてＲＯＭなどの記憶媒体に記憶させておくことにより、コンピューターによって実行させることができる。
【発明の効果】
【００４０】
本発明によれば、二つのプログラムの独立性を確保しつつＲＯＭに効率よく格納させることができる。即ち、そのＲＯＭ容量は従来と同様か、より少ない量しか必要とされない。また、それぞれのプログラムの独立性を完全に確保することができると共に、二つのプログラムの切替も容易である。これまでは検査を行う診断プログラムなどのために別のＲＯＭを用意して製造コストが上昇したり、プログラムの独立性を低下させることになっていたが、本発明によれば、このような問題を解決することができる。
【発明を実施するための最良の形態】
【００４１】
以下に、本発明の回路システムの実施形態１〜５について、図面を参照しながら説明する。
【００４２】
（実施形態１）
本実施形態１では、ＣＰＵとＲＯＭ間に、入力アドレスをそのまま出力させる回路と、入力アドレスを反転させる回路とを、プログラムの種類に応じて選択するアドレス信号切替回路４が設けられる場合について説明する。
【００４３】
図１は、本実施例の回路システムの実施形態１における基本構成例を示すブロック図である。なお、ここでは、通常、ＲＯＭによって使用されるチップセレクト信号やリード信号などはその記載を省略している。
【００４４】
図１において、本実施形態１の回路システム１は、演算処理装置としてのマイクロプロセッサ２（以下ＣＰＵ２という）と、このＣＰＵ２によってアクセスされる読み出し専用メモリとしてのＲＯＭ３と、ＣＰＵ２とＲＯＭ３間に設けられ、ＣＰＵ２からのアドレス信号を切り替えてＲＯＭ３に出力するアドレス信号切替回路４とを備え、アドレス信号がＣＰＵ２からアドレス信号切替回路４に供給され、アドレス信号切替回路４で、二つのプログラムの一方または他方に応じて切り替えられたアドレス信号をＲＯＭ３に出力してＲＯＭ３にアクセスする。
【００４５】
これらのＣＰＵ２とＲＯＭ３とは、データ信号線５によって接続されていると共に、アドレス信号線６ａからアドレス信号切替回路４を介したアドレス信号線６ｂによって接続されている。これらのデータ信号線５とアドレス信号線６ａ，６ｂとは、適切な本数分だけ接続されている。
【００４６】
ＲＯＭ３には、ＣＰＵ２によって実行される二つのプログラムが格納されている。ＣＰＵ２からアドレス信号線６ａ，６ｂとアドレス信号切替回路４とを介して供給されるアドレス信号に応じてＲＯＭ３がアクセスされて、データ信号線５を介してＣＰＵ２にプログラムのデータが読み出されて所望のプログラムが実行されるようになっている。
【００４７】
この二つのプログラムは、例えば最終的な製品機能を有する製品プログラムと、製品の製造段階で検査のために用いられる診断プログラムなどのように、それぞれ独立して実行されるプログラムである。一方のプログラム、例えば製品プログラムは下位アドレス（例えば００００番地）から格納され、他方のプログラム、例えば診断プログラムは上位アドレス（例えば７ＦＦＦＨ（１６進数）番地）から格納されて、それぞれ共通の番地に重ならないようにアドレスが配置されている。
【００４８】
アドレス信号切替回路４は、ＣＰＵ２とＲＯＭ３とを接続するためのアドレス信号線６ａ，６ｂ間に接続されている。このアドレス信号切替回路４は、信号反転手段としてのインバータ回路４ａと、アドレス信号選択手段としてのマルチプレクサ４ｂとを有している。
【００４９】
インバータ回路４ａは、ＣＰＵ２からアドレス信号線６ａを介して供給されるアドレス信号を反転してマルチプレクサ４ｂに供給する。
【００５０】
マルチプレクサ４ｂは、ＣＰＵ２からアドレス信号線６ａを介して供給される入力アドレス信号と、インバータ回路４ａから供給される反転アドレス信号とのいずれか一方が選択されてアドレス信号線６ｂを介してＲＯＭ３に供給される。マルチプレクサ４ｂの実線矢印はＣＰＵ２から供給された入力アドレス信号が選択される場合、点線矢印はインバータ回路４ａによって反転された反転アドレス信号が選択される場合を示している。
【００５１】
マルチプレクサ４ｂには、外部からアドレス選択信号線７を介してアドレス選択信号が供給され、このアドレス選択信号に応じて入力アドレス信号および反転アドレス信号のいずれかが選択される。例えばアドレス選択信号が”Ｈ”レベルのときにＣＰＵ２から入力された入力アドレス信号がそのままＲＯＭ３に供給され、アドレス選択信号が”Ｌ”レベルのときにインバータ回路４ａを介して反転された反転アドレス信号がＲＯＭ３に給される。
【００５２】
これによって、アドレス信号切替回路４から供給される信号（入力アドレス信号または反転アドレス信号）に応じて、ＲＯＭ３がアクセスされる。ＲＯＭ３では、ＣＰＵ２から出力されるアドレス信号がそのまま供給された場合には、下位アドレスから格納されている一方のプログラムのデータがＣＰＵ２によって読み出されて実行される。また、インバータ回路４ａを介して供給される反転アドレス信号が供給された場合には、上位アドレスから格納されている他方のプログラムのデータがＣＰＵ２によって読み出されて実行される。これにより、ＲＯＭ３に格納されている二つのプログラムを切り替えて実行させることができる。
【００５３】
（実施形態２）
本実施形態２では、ＲＯＭにアドレス反転機能および切替端子（図２ではアドレス信号切替回路４）が含まれる場合について説明する。
【００５４】
図２は、本発明の回路システムの実施形態２における基本構成例を示すブロック図である。なお、ここでは、通常、ＲＯＭによって使用されるチップセレクト信号やリード信号などはその記載を省略している。
【００５５】
図２において、回路システム１Ａは、演算処理装置としてのＣＰＵ２と、このＣＰＵ２によってアクセスされるＲＯＭ３Ａとを備え、アドレス信号がＣＰＵ２からアドレス信号切替回路４に供給され、アドレス信号切替回路４で、二つのプログラムの一方または他方に応じて切り替えられたアドレス信号をメモリセル部であるＲＯＭメモリセル３ａに出力してＲＯＭメモリセル３ａにアクセスする。なお、ここでのＣＰＵ２は上記実施形態１と同様の構成である。
【００５６】
ＲＯＭ３Ａは、ＲＯＭメモリセル３ａと、上記実施形態１と同様のアドレス信号切替回路４とが内蔵されている。
【００５７】
ＣＰＵ２から見ると、ＲＯＭ３Ａはアドレス選択信号線７を介してアドレス選択信号が供給される外部端子（図示せず）が設けられていること以外は、一般的なＲＯＭと同様である。ＣＰＵ２と接続されたデータ信号線５はＲＯＭメモリセル３ａに接続され、アドレス信号線６ａはアドレス信号切替回路４からアドレス信号線６ｂを介してＲＯＭメモリセル３ａに接続されている。
【００５８】
ＲＯＭメモリセル３ａには、ＣＰＵ３によって実行される二つのプログラムが格納されている。ＣＰＵ２からアドレス信号線６ａ，６ｂとアドレス信号切替回路４とを介して供給されるアドレス信号（入力アドレス信号と反転アドレス信号のいずれか）に応じてＲＯＭメモリセル３ａがアクセスされて、データ信号線５を介してＣＰＵ２にプログラムのデータが読み出されてプログラムが実行されるようになっている。
【００５９】
このＲＯＭメモリセル３ａには、上記実施形態１のＲＯＭ３と同様に、例えば最終的な製品機能を有する製品プログラム、および製品の製造段階で検査のために用いられる診断プログラムなどのように、それぞれ独立して実行される二つのプログラムが格納されている。一方のプログラム、例えば製品プログラムは下位アドレス（例えば００００番地）側から順次格納され、他方のプログラム、例えば診断プログラムは上位アドレス（例えば７ＦＦＦＨ（１６進数）番地）側から順次格納されて、それぞれ共通の番地に重ならないようにアドレス配置されている。
【００６０】
アドレス信号切替回路４は、ＣＰＵ２とＲＯＭメモリセル３ａとを接続するアドレス信号線６ａ，６ｂ間に接続されている。上記実施形態１と同様に、アドレス選択信号線７から外部端子（図示せず）を介して供給されるアドレス選択信号によってマルチプレクサ４ｂが切り替え制御されて、例えば、アドレス選択信号が”Ｈ”レベルのときにＣＰＵ２から出力されるアドレス信号がそのままＲＯＭメモリセル３ａに供給され、また、アドレス選択信号が”Ｌ”レベルのときにインバータ回路４ａを介して反転された反転アドレス信号がＲＯＭメモリセル３ａに供給される。これによって、ＲＯＭメモリセル３ａに格納されている二つのプログラムを切り替えて実行させることができる。
【００６１】
（実施形態３）
本実施形態３では、ＣＰＵにアドレス反転機能および切替端子（図３ではアドレス信号切替回路４）が含まれ、ＲＯＭ３をアクセスするときのみアドレス信号を反転する機能を選択できる場合（図３ではアドレスデコーダ８）について説明する。
【００６２】
図３は、本発明の回路システムの実施形態３における基本構成例を示すブロック図である。なお、ここでは、通常、ＲＯＭによって使用されるチップセレクト信号やリード信号などはその記載を省略している。
【００６３】
図３において、回路システム１Ｂは、演算処理装置としてのＣＰＵ２Ｂと、このＣＰＵ２ＢによってアクセスされるＲＯＭ３とを備え、アドレス信号がＣＰＵコア２ｂからアドレス信号切替回路４に供給され、アドレス信号切替回路４で、二つのプログラムの一方または他方に応じて切り替えられたアドレス信号をＲＯＭ３に出力してＲＯＭ３にアクセスする。なお、ここでのＲＯＭ３は上記実施形態１と同様の構成である。
【００６４】
ＣＰＵ２Ｂは、演算処理部としてのＣＰＵコア２ｂと、アドレスデコーダ手段としてのアドレスデコーダ８（ＡＤ）と、上記実施形態１と同様のアドレス信号切替回路４とが内蔵されている。
【００６５】
このＣＰＵ２Ｂには、アドレス選択信号線７ａを介してアドレス選択信号が供給される外部端子（図示せず）が設けられている。ＣＰＵコア２ｂに接続されたデータ信号線５はＲＯＭ３に接続され、アドレス信号線６ａはアドレス信号切替回路４およびアドレス信号線６ｂを介してＲＯＭ３に接続されている。また、アドレス信号線６ａは、アドレスデコーダ８とも接続されている。
【００６６】
アドレスデコーダ８は、アドレス選択信号線７ａから供給されるアドレス選択信号とアドレス信号線６ａから供給されるアドレス信号との論理演算が行われ、その演算結果がアドレス選択信号線７ｂを介してアドレス信号切替回路４のマルチプレクサ４ｂに供給される。
【００６７】
アドレス信号切替回路４は、アドレス選択信号線７ｂから供給されるアドレス選択信号によってマルチプレクサ４ｂが切り替え制御されて、ＣＰＵコア２ｂから出力される入力アドレス信号と、インバータ回路４ａを介して反転された反転アドレス信号とのいずれか一方が選択されてＲＯＭ３に供給される。
【００６８】
なお、アドレスデコーダを設けずに、上記実施形態１、２と同様に、マルチプレクサにアドレス選択信号を直接供給する構成について説明する。
【００６９】
以下の部分にあるように一つのＲＯＭしか存在しない場合には、アドレスの反転回路は、ＣＰＵ内部、ＣＰＵとＲＯＭの間、ＲＯＭ内部のどこに存在しても問題ない。ところが、他のＲＯＭ（ただしこれにはアドレス反転する必要のない１種類のデータまたはプログラムが保存されているとする）が存在する場合には、後者のＲＯＭに対しては、アドレス変換を行なってはいけない。つまり、前者のＲＯＭに対しては、２種類のプログラムを切り替えることが必要ですが、後者のＲＯＭについては、通常のアドレスが入力されることが前提となる。そこで、この前者のＲＯＭの範囲のアドレスでかつアドレス選択信号線７ａがアクティブのときのみ前者のＲＯＭのアドレスを反転させるという判断のために、アドレスデコーダが存在している。言い換えれば、例えばアドレス選択信号線７ａの信号がアクティブであったとしても、後者のＲＯＭにアクセスする時には、そのＲＯＭ範囲のデータを反転してはならない。
【００７０】
システムに上記説明の前者のＲＯＭとＲＡＭしかない場合にはアドレス反転をＲＯＭとＲＡＭ両方に対して適用しても問題ないため、アドレスデコーダは必要ありません。これは、ＲＡＭはアドレス反転したままシステム起動時から終了時までアクセスしても問題が発生しないためである。
【００７１】
例えば図３には示していないが、ＲＡＭや他のＲＯＭがＣＰＵ２Ｂに接続されている場合、アドレスデコーダ８（ＡＤ）は、そのＲＡＭや他のＲＯＭについては、そのままＣＰＵコア２ｂからのアドレス信号が選択されるように、アドレスデコーダ８からアドレス選択信号線７ｂを介してマルチプレクサ４ｂにアドレス選択信号が供給され、マルチプレクサ４ｂからＲＡＭや他のＲＯＭにアドレス信号が供給される。
【００７２】
また、アドレスデコーダ８（ＡＤ）は、ＣＰＵコア２ｂからアドレスデコーダ８に供給されるアドレス信号がＲＯＭ３に対するものであり、かつ、アドレス選択信号線７ａから供給されるアドレス選択信号がＲＯＭ３に上位アドレスから格納されているプログラムを選択するためのものであれば、インバータ回路４ａを介して反転された反転アドレス信号が選択されるように、アドレス選択信号線７ｂを介してアドレス選択信号がマルチプレクサ４ｂに供給される。これによって、ＲＯＭ３に格納されている二つのプログラムを切り替え、その切り替えたプログラムをＣＰＵコア２ｂにて実行することができる。
【００７３】
なお、上記実施形態１〜３の回路システム１，１Ａまたは１Ｂにおいて、ＣＰＵ、ＲＯＭおよびアドレス信号切替回路はそれぞれを作製して基板上に実装させてもよく、また、単一の半導体チップ上に実装させることも可能である。
【００７４】
また、上記実施形態１〜３の回路システム１，１Ａまたは１Ｂはそれぞれ単独であってもよく、それらの組み合わせであってもよい。また、回路システム１，１Ａまたは１Ｂのいずれかが複数あってもよい。
【００７５】
以下の実施形態４，５では、本発明のＲＯＭイメージ合成方法の一例について説明する。
【００７６】
（実施形態４）
本実施形態４では、本発明のＲＯＭに格納される二つのプログラム（主プログラムと従プログラム）のＲＯＭイメージとＲＯＭサイズとが指定された場合に、二つのＲＯＭイメージを合成する場合について説明する。
【００７７】
ここで、ＲＯＭイメージとは、ＲＯＭにプログラムのデータを書き込む前に、どのようなデータがどの位置（アドレス）に配置されるかを決定するために生成されるプログラム情報である。主プログラムは、例えば製品プログラムであって、ＲＯＭに下位アドレスからデータが書き込まれるものとする。また、従プログラムは、例えば診断プログラムであって、ＲＯＭに上位アドレスからデータが書き込まれるものとする。
【００７８】
図４は、本実施形態４のＲＯＭイメージ合成方法の処理手順について説明するためのフローチャートである。
【００７９】
図４に示すように、まず、二つのプログラムのＲＯＭイメージとＲＯＭサイズが入力されると、ステップＳ１１では、二つのプログラムについて指定されたＲＯＭサイズ分の領域が確保される。
【００８０】
次に、ステップＳ１２では、主プログラムについて入力されたＲＯＭイメージのアドレスに従って、ステップＳ１１で確保された領域に主プログラムのデータが書き込まれて格納される。
【００８１】
さらに、ステップＳ１３では、従プログラムについて入力されたＲＯＭイメージのアドレスに対して１の補数が算出（２進数の数字で、他の２進数の数字の「０」を「１」に「１」を「０」に置き換えることによって得られる）されてアドレスとされる。算出された値をアドレスとして、ステップＳ１１で確保された領域に、従プログラムのデータが上位アドレスから格納されて、下位アドレスから格納された主プログラムのデータに上書き、即ち重ね合わされて書き込まれて格納される。
【００８２】
その後、ステップＳ１４で、ステップＳ１２で書き込まれた主プログラムのデータと、ステップＳ１３で従プログラムのデータと重ね合せて書き込まれた主プログラムのデータとが比較（コンペア）される。このとき、主プログラムのデータが全て重ならず元のままであれば、従プログラムによって主プログラムのデータが変更されていないことが確認され、ステップＳ１１で確保されたメモリ領域をＲＯＭイメージとすることができる。
【００８３】
また、ステップＳ１４において比較結果が異なっていれば、主プログラムは、従プログラムのデータ書き込みによって値が書き換えられてしまっており、これら二つのプログラムの一部分が重なって共存できていないことが分かる。この場合には、ＲＯＭサイズをさらに大きくしたり小さくしたりして調整する。これによって、二つのプログラムのデータが共通の番地に重ならないように配置されるまでこの調整が繰り返し行われる。
【００８４】
なお、それぞれのプログラムの最終位置がＲＯＭサイズの半分以下であれば、それぞれが上下半分ずつの領域に収まるため、ステップＳ１４の処理を省略することもできる。プログラムのＲＯＭイメージは、アドレスが連続しているとは限らない。よって、プログラムの最終位置がＲＯＭサイズの半分を超えていても、共通の番地に重なって配置されず、互いに影響を与えない場合には、共存できることもある。例えば、サブルーチンが離れた位置にあり、そのサブルーチンへのジャンプ命令などがある場合に、ジャンプ命令以降サブルーチンの先頭番地までの領域はデータがない空白の状態であってＣＰＵによって読み出されることがないというような場合に、アドレスが不連続となる。このような場合に、ステップＳ１４の処理を行うことによって、主プログラムと従プログラムとが共存できているか否かを確認することができる。この一例について、図５を用いて詳細に説明する。
【００８５】
図５（ａ）は主プログラムのデータ配置を示す図であり、図５（ｂ）はその主プログラムとは別の機能を有し、主プログラムとは独立して実行される従プログラムのデータ配置を示す図である。なお、図５（ａ）〜図５（ｃ）において、左側のＡの列はアドレスを示し、Ｄの列はそのアドレスに対応したデータを示している。また、ここでは説明の簡単化のために１６バイトのＲＯＭ領域を示している。
【００８６】
Ｄの列が空白の部分はデータが含まれていない部分を示しており、複数の塊に分かれている。例えばＣＰＵが０番地から順にプログラムを実行するタイプのものである場合、３番地がジャンプ命令でそのジャンプ先が７番地であれば、図５（ａ）や図５（ｂ）に示すように二つ以上の塊にプログラムが分割されることもある。実際にＲＯＭを作製するときには、図５（ａ）に示す４番地〜６番地や図５（ｂ）に示す３番地〜９番地のように、プログラムのデータが含まれていない部分にも、通常、何らかかのデータが書き込まれる。しかしながら、そのデータには意味がないため、ＲＯＭイメージでは、このように空白の部分を有する飛び飛びのデータとして表される。
【００８７】
図５（ｃ）は、これら二つのプログラムのデータを上記図４に示す処理手順によりＲＯＭに書き込んだ場合に合成されるＲＯＭイメージ（データ配置）を示す図である。
【００８８】
図５（ｃ）では、上記ステップＳ１２において、図５（ａ）に示す主プログラムと同じ番地（アドレス）に、そのアドレスに対応する主プログラムのデータが書き込まれている。また、上記ステップＳ１３において、図５（ｂ）に示す従プログラムの各アドレスに対して、１の補数をとった値をアドレスとして、対応する従プログラムのデータが書き込まれている。この例では、ＲＯＭサイズが１６バイトであるので、（１６−１−従プログラムのアドレス）で示される番地に、対応する従プログラムのデータが書き込まれている。例えば、図５（ｂ）に示す従プログラムにおいて、２番地のデータは「４４」であり、上記式から（１６−１−２）＝１３であるため、図５（ｃ）に示すＲＯＭイメージでは１３番地にデータ「４４」が書き込まれている。
【００８９】
上記ステップＳ１４において、図５（ｃ）に示す主プログラムの部分のデータと、図５（ａ）に示す主プログラムのデータとが比較（コンペア）されても、両データは相違ないため、図５（ｂ）に示す従プログラムが共通の番地に重なって書き込まれていないことが分かる。これによって、図５（ｃ）に示すＲＯＭイメージによれば、主プログラムと従プログラムとが共存できている。さらに、この図５の例からも分かるように、場合によっては、主プログラムおよび従プログラムのそれぞれのデータ位置がＲＯＭサイズの半分を超えていてもよい。ＲＯＭの最初から最後まで完全にプログラムのデータが格納されていることは希であるので、上述したように二つのプログラムが共通の番地に重なって配置されておらず、互いに影響を与えなければ、このような場合も可能である。
【００９０】
図５（ａ）および図５（ｂ）に示す二つのプログラムをＲＯＭに格納させる例において、ＲＯＭを二つ使用する従来の方法や、特許文献１に開示されている方法では、３２バイトのＲＯＭ領域が必要になるが、本実施形態４では、ＲＯＭ領域は１６バイトでよいため、必要なＲＯＭ領域を５０％に削減することができる。
【００９１】
（実施形態５）
本実施形態５では、位置決定プログラムによって二つのプログラム（主プログラムと従プログラム）のデータがＲＯＭに配置される本来の位置（アドレス）を決定した後、その従プログラムについてのみ本来のアドレスを反転させ、その情報を、アドレスを反転させない主プログラムと共にプログラム情報として出力させる。そのプログラム情報を用いて、二つのプログラムのＲＯＭイメージを合成する場合について説明する。
【００９２】
一般に、高級言語の場合には、プログラムはコンパイル、アセンブルおよびリンクという手順によって作成されている。また、機械語の場合には、コンパイルを除いてアセンブルおよびリンクという２段階で作成されている。このうち、リンクの段階において、実際にプログラムのデータが配置されるメモリ領域が決定され、実行イメージにその情報（ＲＯＭイメージ）が加えられる。
【００９３】
このリンカ（位置決定プログラム）で決定されたプログラムデータの配置位置情報（ＲＯＭイメージ）は、そのまま出力させて主プログラムのＲＯＭイメージとして利用することができる。また、外部からの指示によってそのアドレスを反転させてリンカから出力させることにより、従プログラムのＲＯＭイメージとして利用することができる。
【００９４】
図６は、本実施形態５のＲＯＭイメージ合成方法の処理手順について説明するためのフローチャートである。
【００９５】
図６に示すように、まず、二つのプログラムのＲＯＭイメージとＲＯＭサイズが入力されると、ステップＳ２１では、指定されたＲＯＭサイズ分の領域が確保される。このとき、主プログラムのＲＯＭイメージは、リンカで決定された本来のアドレスがそのまま供給されており、従プログラムのＲＯＭイメージは、本来のアドレスが反転されたものが供給されている。
【００９６】
次に、ステップＳ２２では、主プログラムについて入力されたＲＯＭイメージのアドレスに従って、ステップＳ２１で確保された領域に主プログラムのデータが書き込まれて格納される。
【００９７】
さらに、ステップＳ２３では、従プログラムについて入力されたＲＯＭイメージのアドレス（変換後の反転アドレス）に従って、ステップＳ２１で確保された領域に、従プログラムのデータが上位アドレス側から格納され、下位アドレス側から格納されている主プログラムのデータに上書き、即ち重ね合せて書き込まれて格納される。
【００９８】
その後、ステップＳ２４では、ステップＳ２２で書き込まれた主プログラムのデータと、ステップＳ２３で従プログラムのデータが重ね合せて書き込まれた主プログラムのデータとが比較（コンペア）される。このとき、主プログラムのデータが全て重ならずに元のままであれば、従プログラムによって主プログラムのデータが変更されていないことが確認（検出）され、ステップＳ２１で確保されたメモリ領域をＲＯＭイメージとすることができる。
【００９９】
また、ステップＳ２４において比較結果が異なっていれば、主プログラムは、従プログラムのデータ書き込みによって値が書き換えられてしまっており、これら二つのプログラムが一部重なって共存できていないことが分かる。この場合には、ＲＯＭサイズをさらに大きくしたり小さくしたりして調整することによって、二つのプログラムのデータが共通の番地に重ならないようになるまで繰り返して調整される。
【０１００】
以上により、本実施形態５によれば、リンカによって従プログラムの形式（データ配置）を認識することができるため、より本発明に適した形式になるように配慮してプログラムのデータ配置位置を決定することができる。例えば、主プログラム生成時の特性（データ配置）から、主プログラムと従プログラムとをＲＯＭに格納させた場合に、両者が共通の番地に重なって配置されないような手段（図５（ａ）のデータが書き込まれていない領域に図５（ｂ）のデータの塊を配置するように工夫すること）を予め講じることができる。
【０１０１】
上記実施形態４，５のように合成されたＲＯＭイメージに従って、ＲＯＭに二つのプログラムを格納させることにより、二つのプログラムの一方を下位アドレスからＲＯＭに格納させ、他方のプログラムを上位アドレスから格納させて、それぞれ共通の番地に重ならないように配置させることができる。これらのＲＯＭイメージ合成方法は、その処理手順が記述された制御プログラムをＲＯＭなどの記憶媒体に記憶させておき、その制御プログラムに従って、ＣＰＵを備えたコンピュータにより実行させることにより行うことができる。
【０１０２】
以上により、本実施形態１〜５によれば、ＣＰＵ２とＲＯＭ３間（図１）、ＣＰＵ２Ｂ（図３）またはＲＯＭ３Ａ（図２）に、アドレス選択信号（二つのプログラムがいずれであるかを示す選択信号）に応じて、入力アドレス信号と、この入力アドレス信号を反転させた反転アドレス信号とを選択可能なアドレス信号切替回路４を設ける。一方、ＲＯＭ３または３ａには、製品プログラムなどの一方のプログラムが通常の方法で上位アドレスから格納され、ハードウェア診断プログラムなどの他方のプログラムがアドレスを反転させた状態で下位アドレスから格納されている。これら二つのプログラムは、アドレス信号切替回路４のマルチプレクサ４ｂへのアドレス選択信号により切り替えられてアクセスされる。これによって、従来のような無駄なチップ面積の増大を抑制しつつ、二つのプログラムの独立性を確保してＲＯＭに格納することができる。
【０１０３】
なお、以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０１０４】
本発明は、マイクロプロセッサ（ＣＰＵ）およびＲＯＭが搭載された回路システム、ここで用いる複数のプログラムのＲＯＭイメージ合成方法およびこれを用いたプログラム格納方法の分野において、小型化、省電力化および低コスト化を図ることができ、このような回路システムを備えた電子機器やその他各種の装置の普及に有効である。
【図面の簡単な説明】
【０１０５】
【図１】本発明の回路システムの実施形態１における基本構成例を示すブロック図である。
【図２】本発明の回路システムの実施形態２における基本構成例を示すブロック図である。
【図３】本発明の回路システムの実施形態３における基本構成例を示すブロック図である。
【図４】本実施形態４のＲＯＭイメージ合成方法の処理手順について説明するためのフローチャートである。
【図５】（ａ）〜（ｃ）はそれぞれプログラムのデータ配置例を示す図である。
【図６】本実施形態５のＲＯＭイメージ合成方法の処理手順について説明するためのフローチャートである。
【符号の説明】
【０１０６】
１，１Ａ，１Ｂ  回路システム
２，２Ｂ  ＣＰＵ（演算処理装置）
２ｂ  ＣＰＵコア（演算処理部）
３  ＲＯＭ（読み出し専用メモリ）
３ａ  ＲＯＭメモリセル（メモリセル部）
４  アドレス信号切替回路
４ａ  インバータ回路（信号反転手段）
４ｂ  マルチプレクサ（アドレス信号反転手段）
５  データ信号線
６ａ，６ｂ  アドレス信号線
７，７ａ，７ｂ  アドレス選択信号線
８  アドレスデコーダ（アドレスデコーダ手段）
【図１】
2005122325.tif 000003
【図２】
2005122325.tif 000004
【図３】
2005122325.tif 000005
【図４】
2005122325.tif 000006
【図５】
2005122325.tif 000007
【図６】
2005122325.tif 000008