(57)【特許請求の範囲】
【請求項１】
第１プログラムを記憶した第１記憶装置と、
圧縮されている第２プログラムを記憶した第２記憶装置と、
前記第１および第２記憶装置を接続するバスと、
前記バスに接続され、前記第１記憶装置から前記バスを介して前記第１プログラムを取得して実行し、前記第２プログラムを前記第２記憶装置から読み出すプロセッサとを有し、
前記第２プログラムは、前記プロセッサにより前記第２記憶装置から読み出されたときに自己展開するものであり、
前記プロセッサは、
自己展開された前記第２プログラムを前記第１記憶装置に書き込み、
前記第１記憶装置から前記第２プログラムを所定量ずつ読み出し、前記所定量の読出しの度に、前記第１記憶装置における、該読出しにより読み出される前記第２プログラムの前記所定量の部分の展開後の記憶位置と、前記第１プログラムの前記第１記憶装置での記憶位置とが重複する可能性がある場合は前記第１プログラムの前記第１記憶装置での記憶位置を変更することを特徴とする半導体集積回路。
【請求項２】
前記プロセッサは、前記第１記憶装置での前記第１プログラムの格納領域を示すアドレスの内の一のアドレスである第１アドレスと、前記第１記憶装置に既に書き込まれた前記第２プログラムの部分の格納領域を示すアドレスの内の一のアドレスである第２アドレスとに基づき、前記可能性を判断することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記プロセッサは、前記第１アドレスと前記第２アドレスの差分に基づき前記可能性を判断することを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記プロセッサは、前記差分が所定の閾値以下である場合、前記第１および第２プログラムの前記第１記憶装置での記憶位置が重複する可能性があると判断する請求項３に記載の半導体集積回路。
【請求項５】
前記第１アドレスは、前記第１プログラムの格納領域を示すアドレスの内の最小アドレスであり、前記第２アドレスは、既に書き込まれた前記第２プログラムの部分の格納領域を示すアドレスの内の最大アドレスであることを特徴とする請求項２に記載の半導体集積回路。
【請求項６】
前記プロセッサは、前記第２プログラムの前記第１記憶装置への書き込みを開始してから経過した時間に基づき、前記可能性があるか否かを判断することを特徴とする請求項１に記載の半導体集積回路。
【請求項７】
前記第２プログラムは、カーネルであることを特徴とする請求項１に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、特に、一のメモリに記憶されたプログラムを他のメモリに書き込むプロセッサを有する半導体集積回路に関する。
【背景技術】
【０００２】
組込システムにおいて、かつて、ファームウェアが書換え不能なマスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に記憶され、ＣＰＵが直接マスクＲＯＭに記憶されたファームウェアを実行するようになっていた。しかし、製品の出荷後にファームウェアにバグが発見されると、製品の回収またはマスクＲＯＭの交換などの作業が必要であり、コストがかかるという問題があった。そのため、近年は、ファームウェアの記憶装置としてユーザにより書換え可能なフラッシュＲＯＭを用いることが主流となっている。
【０００３】
しかし、フラッシュＲＯＭは、安価、比較的大容量などの利点が挙げられるが、フラッシュＲＯＭ上で直接ファームウェアを動作させると、アクセススピードが遅く、システム動作が遅くなるという問題がある。
【０００４】
この問題を解決するために、フラッシュＲＯＭにファームウェアを記憶しておき、初期化時にファームウェアをＲＡＭ上にロードしてＣＰＵに供する技術が提案されている（特許文献１）。この技術は、具体的には、ファームウェアと、ローダプログラムと、ローダ移動プログラムをフラッシュＲＯＭに記憶しておき、初期化時にまずローダ移動プログラムが起動され、起動されたローダ移動プログラムは、ローダプログラムをＲＡＭへコピーする。そして、ＲＡＭにコピーされたローダプログラムの実行により、ファームウェアをフラッシュＲＯＭからＲＡＭ上にコピーする。
【特許文献１】特開２００５−１７８１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、ＲＡＭにコピーされたローダプログラムの格納領域について考える。
ファームウェアは、通常、オペレーティングシステムの中核となるカーネルが含まれており、このカーネルは、システムのリソースや、ハードウェアとソフトウェアコンポーネントのやりとりを管理するものである。つまり、カーネルがＲＡＭにロードされ、実行されるまでは、システムのリソースが管理されていない状態にある。そのため、ファームウェアは通常ＲＡＭの先頭領域にロードされるようになっている。
【０００６】
ファームウェアをＲＡＭにロードすることを担うローダプログラムによるファームウェアのロード中に、ファームウェアの格納領域とローダプログラムの格納領域とが重なるとシステムが破綻してしまうので、ローダプログラムをファームウェアの格納領域以外の領域にコピーする必要がある。
【０００７】
ローダプログラムをＲＡＭの終端部分に格納するようにすれば、この問題を解決できると考えられるが、組込システムにおいて、ＲＡＭの終端部分は、通常アプリケーション領域に割り当てられている。
【０００８】
このような背景において、ローダプログラムの格納領域は、ファームウェアの領域と、アプリケーション領域のいずれとも重ならないように、ＲＡＭの先頭と終端の間の適当な中間領域にコピーされるようになっている。
【０００９】
ところで、リソースの管理がなされていない状態において、この適当な領域は、本当にファームウェアの領域と重ならないことを保証するのは難しい。さらに、機能の増加などによりファームウェアが圧縮された状態でＲＯＭに記憶され、ＲＡＭにロードされるときにＲＡＭ上で展開されることが多い。圧縮されたファームウェアはＲＡＭ上でどのぐらいのサイズに展開されるかについて、ローダ移動プログラムにより把握されることは通常行われないので、ローダプログラムの格納領域と、ファームウェアの格納領域とが重なり、システムの破綻を引き起こす恐れがある。
【００１０】
また、製品出荷時にシミュレーションなどによりこの問題をクリアしたとしても、後にファームウェアのバージョンアップによりファームウェアのサイズが変わってしまう場合にも、この問題が生じる可能性がある。
【課題を解決するための手段】
【００１１】
本発明の一つの態様は、第１プログラムを記憶した第１記憶装置と、第２プログラムを記憶した第２記憶装置と、第１および第２記憶装置を接続するバスと、バスを介して、第１記憶装置から第１プログラムを取得して実行し、第２プログラムを第２記憶装置から読み出して第１記憶装置に書き込むプロセッサとを有し、このプロセッサが、第１および第２プログラムの第１記憶装置での記憶位置が重複する可能性がある場合は第１プログラムの第１記憶装置での記憶位置を変更することを特徴とする半導体集積回路である。第２プログラムによって第１プログラムが上書きされる可能性がある場合でも、第１プログラムの記憶位置が移動するため、第１プログラムが上書きされることはない。
例えば、具体的には、実行プログラムをＲＡＭへロードする場合、実行プログラムをＲＡＭへロードする工程において、ＲＡＭ上における実行プログラムの格納領域と、ロードプログラムの格納領域とが重複する可能性の有無を監視すると共に、この可能性があるときに、ＲＡＭ上においてロードプログラムを移動することが考えられる。
【００１２】
なお、上記態様を装置やシステム、上記方法をコンピュータに実行せしめるプログラムなどに置き換えて表現したものも、本発明の態様としては有効である。
【発明の効果】
【００１３】
本発明にかかる技術によれば、実行プログラムをＲＡＭへロードする際の安全性を高めることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら、本発明の実施の形態について説明する。
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかるシステム１００を示す。このシステム１００は、携帯電話機や、ゲーム機などに適用される組込システムである。以下において、本発明の主旨が分かりやすいように、本発明にかかる技術と関連がある部分について説明および図示し、関連が特になく、組込システムが通常備える部分について説明および図示を省略する。
【００１５】
図１に示すように、システム１００は、ＣＰＵ１１０と、フラッシュＲＯＭ１２０と、ＲＡＭ１３０を有する。ＣＰＵ１１０は、バス１８０を介してフラッシュＲＯＭ１２０とＲＡＭ１３０にアクセスできる。
【００１６】
図２は、フラッシュＲＯＭ１２０に記憶されたデータを示す。フラッシュＲＯＭ１２０には、ブートローダ１２２と、ロードプログラム１２４と、カーネル１２６が記憶されている。
【００１７】
ブートローダ１２２は、電源オン時に、システム１００の全体の初期化と、ロードプログラム１２４をＲＡＭ１３０へのコピーとを担うプログラムであり、ロードプログラム１２４は、カーネル１２６をＲＡＭ１３０へロードするためのプログラムである。カーネル１２６は、システム１００のリソースや、システム１００における各種ハードウェアとソフトウェアコンポーネントのやりとりを管理するプログラムであり、圧縮されてフラッシュＲＯＭ１２０に記憶されている。なお、カーネル１２６は、自己展開機能を備えており、ＲＡＭ１３０へロードされるときに自らを展開する。
【００１８】
システム１００の電源オン時に、ＣＰＵ１１０は、バス１８０を介してフラッシュＲＯＭ１２０にアクセスし、フラッシュＲＯＭ１２０に記憶されたブートローダ１２２を実行する。これによりシステム１００は初期化される。そして、ＣＰＵ１１０は、ロードプログラム１２４をフラッシュＲＯＭ１２０からＲＡＭ１３０へコピーする。なお、ＲＡＭ１３０へ書き込まれたロードプログラムは、フラッシュＲＯＭ１２０に格納されたロードプログラム１２４と同一のものであるが、区別するために、ＲＡＭへ書き込まれたロードプログラムにロードプログラム１２４と別の符号「１３４」を付与する。
【００１９】
次に、ＣＰＵ１１０は、ＲＡＭ１３０に書き込まれたロードプログラム１３４を実行し、カーネル１２６のロードを開始する。
【００２０】
図３は、ＲＡＭ１３０を示す。図示のように、ＲＡＭ１３０の終端部分は、アプリケーション領域１３２に割り当てられている。ＣＰＵ１１０は、ロードプログラム１３４を実行することにより、カーネル１２６をＲＡＭ１３０のシステム領域（ここでは先頭領域）に書き込む。なお、カーネル１２６は、ＲＡＭ１３０へのロード中に自己展開するので、ＲＡＭ１３０に書き込まれたカーネル１３６は、展開されたものである。
【００２１】
ロードプログラム１３４は、ＣＰＵ１１０がブートローダ１２２を実行した際の初期化時に、ＣＰＵ１１０によりＲＡＭ１３０の先頭領域と終端領域の中間部分に書き込まれている。
図４は、ロードプログラム１３４の構成を示す。図示のように、本実施の形態において、ロードプログラム１３４は、ＣＰＵ１１０が実行する処理として、カーネル１２６をＲＡＭ１３０にロードする処理と、ＲＡＭ１３０上でのロードプログラム１３４がＲＡＭ１３０に転送されるカーネルによって上書きされないように監視する処理と、上書きが発生する可能性がある場合にはＲＡＭ１３０上でのロードプログラム１３４の記憶位置を移動する処理とを含む。
【００２２】
ここで、図４および図５を用いて、本実施の形態に係るＣＰＵ１１０の処理内容を説明する。まずＣＰＵ１１０は、バスを介してフラッシュＲＯＭ１２０にアクセスし、ブートローダを実行する（図５のＳ１００）。そしてＣＰＵ１１０は初期化処理を行い（図５のＳ１１０）、このときにフラッシュＲＯＭ１２０に書き込まれているロードプログラムをＲＡＭ１３０に書き込む（図５のＳ１２０）。そしてＣＰＵ１１０は、ロードプログラム１３４のＲＡＭ１３０上での記憶位置を把握する。例えばＣＰＵ１１０の内部にあるレジスタにその情報を格納する。例えば、ＲＡＭ１３０が０番地から１００番地までのアドレスを有し、ＣＰＵ１１０は、初期化時に、ロードプログラム１３４を３０番地から４０番地までに連続して書き込んだ場合を考える。この場合、ＣＰＵ１１０は、３０番地と４０番地のアドレスをレジスタに格納し、記憶しておく。このロードプログラム１３４のＲＡＭ１３０上での記憶位置のアドレス情報を格納領域情報ということにする。
【００２３】
次に、ＣＰＵ１１０はこのロードプログラム１３４を実行する（図５のＳ１３０）。ＣＰＵ１１０は、フラッシュＲＯＭ１２０に記憶されているカーネル１２６をフラッシュＲＯＭ１２０からＲＡＭ１３０へコピーする動作を開始する。
カーネル１２６は、ＣＰＵ１１０の処理によって、ＲＡＭ１３０上に書き込まれていく。具体的には、例えば上述したように、ＲＡＭ１３０が０番地から１００番地までのアドレスを有する場合、ＣＰＵ１１０は、ＲＡＭ１３０の先頭番地である０番地に書き込むことができる量のカーネル、すなわちカーネル１２６の一部分をこの０番地に書き込む。フラッシュＲＯＭ１２０に記憶されているカーネル１２６の内、ＲＡＭ１３０の０番地に書き込むことができる量が、０番地に書き込まれることになる。ＣＰＵ１１０は、０番地へのカーネル１２６の一部分の書き込みが完了すると、０番地の次のアドレスである１番地に、カーネル１２６の別の一部分を書き込む。以降、順番に、２番地、３番地、４番地・・・と、ＣＰＵ１１０は、カーネル１２６の一部分を次々と書き込んでいく。例えばＣＰＵ１１０は、カーネル１２６の記述の先頭から順番に、ＲＡＭ１３０上の各アドレスに書き込むことができる量を抽出して、ＲＡＭ１３０のそれぞれのアドレスに順次書き込んでいくことが考えられる。
【００２４】
ＣＰＵ１１０は、ＲＡＭ１３０上の一のアドレスにカーネル１２６の一部を書き込むたびに、カーネル１２６がすべてＲＡＭ１３０にコピーされたかを確認する（図５のＳ１４０）。例えばこの処理は以下のように実現することが考えられる。図５のＳ１２０において、ＣＰＵ１１０が、ロードプログラム１３４をＲＡＭ１３０へコピーし、ロードプログラム１３４が書き込まれているアドレスをレジスタに書き込む際（すなわち格納領域情報をレジスタに書き込む際）に、ＣＰＵ１１０は、フラッシュＲＯＭ上でカーネル１２６がどの領域に書き込まれているかを確認し、フラッシュＲＯＭ上でのカーネル１２６の最終アドレスもあらかじめレジスタに記憶しておくことにする。そしてＣＰＵ１１０は、図５のＳ１４０において、ＲＡＭ１３０に書き込んだカーネル１２６の一部が、フラッシュＲＯＭ１２０の前記最終アドレスであるから読み出したものか否かを確認すればよい。カーネル１２６をフラッシュＲＯＭ１２０からＲＡＭ１３０へすべてコピーすれば、ＣＰＵ１１０は処理を終了する。
【００２５】
次に、ＣＰＵ１１０は、ロードプログラム１３４のＲＡＭ１３０上での記憶位置と、現時点まででＲＡＭ１３０上に書き込まれたカーネル１２６の一部の記憶位置が重複する可能性があるかを判断する（図５のＳ１５０）。ＣＰＵ１１０は、現在のカーネル１２６の一部の書き込み位置と、上述したロードプログラムが書き込まれている番地とを比較する。ＣＰＵ１１０は、この比較を、カーネル１２６の一部をＲＡＭ１３０に書き込むたびに行うとすることができる。例えば、ＣＰＵ１１０は、カーネル１２６の一部の書き込みを０番地から順番に行い、現在、カーネルは２０番地にまで書き込まれているとする。この場合、ロードプログラム１３４の記憶位置の先頭アドレスが３０番地であり、カーネルの書き込みが最後に行われた番地が２０番地であることから、ＣＰＵ１１０は、カーネルの現在における最終書き込み位置とロードプログラム１３４の記憶位置の先頭とのアドレス差が１０であると認識する（３０番地−２０番地＝１０番地）。そして、この１０のアドレス差が所定の閾値を下回る場合、ＣＰＵ１１０は、カーネルがロードプログラム１３４を上書きする可能性があると判断する。一方、１０番地の差が所定の閾値を上回る場合、現段階ではカーネル１２６の一部がロードプログラム１３４を上書きする可能性はないとＣＰＵ１１０は判断する。
【００２６】
すなわち、ＣＰＵ１１０は、このアドレス差に基づく検討結果に従い、ＲＡＭ１３０上でのカーネル１３６の格納領域と、ロードプログラム１３４自身の格納領域とが重複する可能性の有無を監視結果として求める。なお、ＣＰＵ１１０が、カーネル１２６をＲＡＭ１３０上の一のアドレスに書き込むたびに上述のアドレス差を求めるのではなく、一定時間経過後、割り込みによってアドレス差を求めるとすることもできる。また、カーネルは、自己展開を行うため、ＣＰＵ１１０は、フラッシュＲＯＭ１２０に記憶されたカーネルからは、ＲＡＭ１３０に書き込むために必要となる記憶領域がどの程度になるかは知ることができない。このことから、ＣＰＵ１１０は、前述の監視を行う必要がある。ＣＰＵ１１０は、カーネル１３６の格納領域と、ロードプログラム１３４の格納領域とが重複する可能性があると判断した場合に、カーネル１２６の転送を停止し、ＲＡＭ１３０に書き込まれているロードプログラム１３４の移動を行う（図５のＳ１６０）。
【００２７】
ＣＰＵ１１０は、上記の監視結果に応じて、重複の可能性が無い場合には引き続き上述の監視を続けるが、重複の可能性がある場合には、ロードプログラム１３４を、その格納領域がカーネル１３６の格納領域と重複しないようにＲＡＭ１３０のアプリケーション領域１３２側に向かって移動する（例えば上述の具体例では、ロードプログラム１３４の記憶位置を３０番地から４０番地までから、５０番地から６０番地までに移動する）。このように、ＣＰＵ１１０は、ロードプログラム１３４のＲＡＭ１３０上での記憶位置を移動する。また、ＣＰＵ１１０は、移動後のロードプログラム１３４の格納情報（例えばＲＡＭ１３０上の５０番地から６０番地までに記憶されているというアドレスの情報）を取得し、ＣＰＵ１１０内部のレジスタに書き込んでおく。取得したこのアドレス情報は、ＣＰＵ１１０が、カーネル１３６の最終書き込み位置とロードプログラム１３４の移動後の記憶位置の先頭とのアドレス差を求めるために利用される。そしてＣＰＵ１１０は、再度カーネル１２６の転送を再開すべく、内部に有するプログラムカウンタが保持するアドレスを、指定すべきアドレスに変更する。カーネル１２６の転送にあたって実行すべきロードプログラム１３４のＲＡＭ１３０上での記憶位置が移動しているためである。
【００２８】
ＣＰＵ１１０は、その後、再びカーネル１２６の転送を再開し、カーネル１２６の転送終了（図５のＳ１４０のＹｅｓ）まで、カーネル１３６がロードプログラム１３４を上書きしないかどうかを監視し続ける。
【００２９】
なお、ここでは、ＣＰＵ１１０は前述のアドレス差を用いて監視を行っているが、カーネル１３６の格納領域が分かり、ＣＰＵ１１０が取得しうるものであれば、いかなる情報を用いてもよい。例えば、カーネル１２６の転送開始から計時し、転送時間に基づいてカーネル１３６の格納領域を推算するようにしてもよい。
【００３０】
このように、本実施の形態のシステム１００は、フラッシュＲＯＭ１２０に記憶されたカーネル１２６をＲＡＭ１３０にロードするので、カーネル１２６が展開されて得たカーネル１３６は、その後ＲＡＭ１３０上で実行されることになる。こうすることにより、ＣＰＵ１１０のカーネル１３６への高速なアクセスを実現することができ、システム１００の高速化を図れる。
【００３１】
また、カーネル１２６をＲＡＭ１３０にロードするロードプログラム１２４もＲＡＭ１３０にロードしてＲＡＭ１３０上で実行しているので、カーネル１２６のロード処理も高速にできる。
【００３２】
さらに、カーネル１２６のロード中に、展開されたカーネル１３６の格納領域と、ロードプログラム１３４の格納領域とが重複する可能性の有無を監視し、可能性がある場合には、ロードプログラム１３４を移動するようにしているので、ロードプログラム１３４が展開されたカーネル１３６により上書きされることを防止し、破綻しないシステムを実現している。
＜第２の実施の形態＞
【００３３】
図６は、本発明の第２の実施の形態にかかるシステム２００を示す。システム２００も組込システムである。システム２００は、バス１８０に接続されたメモリ・マネージメント・ユニット（以下ＭＭＵという）２５０をさらに備えること以外、図１に示すシステム１００とほぼ同様の構成を有し、これの構成については、システム１００における同じものと同様の符号を付与している。なお、フラッシュＲＯＭ２２０は、図１に示すシステム１００におけるフラッシュＲＯＭ１２０と同じように、ブートローダ、ロードプログラム、カーネルを記憶しているが、フラッシュＲＯＭ２２０に記憶されたロードプログラムは、システム１００のフラッシュＲＯＭ１２０に記憶されたロードプログラム１２４のロード処理に関するもののみを有する。
【００３４】
本実施の形態において、カーネルのロード中において、ロードプログラムの上書きの防止は、ＭＭＵ２５０により行われる。図７に示すように、ＭＭＵ２５０は、上書き防止部２５２を備え、上書き防止部２５２は、監視部２５２ａと移動部２５２ｂを有する。
【００３５】
監視部２５２ａは、カーネルのＲＡＭ１３０へのロードが終了するまで、ＲＡＭ１３０における、カーネルの格納領域と、ロードプログラム自身の格納領域とが重複する可能性の有無を監視し、移動部２５２ｂは、この可能性があるときにロードプログラムを、その格納領域がカーネルの格納領域と重複しないように移動する。
【００３６】
すなわち、図１に示すシステム１００において、ソフトウェアとＣＰＵ１１０の協働により実現される上書き防止処理は、本実施の形態のシステム２００では、ハードウェアにより実現されている。そのため、図１に示すシステム１００と同様の効果を得ることができると共に、ハードウェアによる上書き防止処理を実現することによって、カーネルのロードをより高速にできる。
【００３７】
以上、実施の形態をもとに本発明による技術を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００３８】
例えば、図１に示すシステム１００において、監視処理と移動処理に関する部分は、ロードプログラムに含まれているが、ロードププログラム以外の別のプログラムとして設けるようにしてもよい。
【００３９】
また、上記２つの実施の形態では、組込みシステムを例にしているが、本発明にかかる技術は、Ｗｉｎｄｏｗｓ（登録商標）などの汎用システムにも適用できる。汎用システムにおいて、カーネルに含まれるシステムファイルは、通常ＣＡＢ形式で圧縮された状態でハードディスクなどの補助記憶装置に記憶されており、システムの初期化時にＲＡＭにロードされる。汎用システムにおいてカーネルを補助記憶装置からＲＡＭにロードする際に、本発明にかかる技術を適用すれば、上述した本発明の各効果を得ることができる。
【００４０】
また、上述した実施の形態において、カーネルが圧縮されてフラッシュＲＯＭに記憶された場合を例にしているが、圧縮されていないカーネルをＲＡＭにロードする際にも本発明にかかる技術を適用することができる。
【００４１】
また、上述した実施の形態において、カーネルがフラッシュＲＯＭに記憶された場合を例にしているが、カーネルがフラッシュＲＯＭ以外の記憶装置例えばマスクＲＯＭなどに格納され、初期化時にＲＡＭへロードされるシステムにも、本発明にかかる技術を適用することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の第１の実施の形態にかかるシステムを示す図である。
【図２】図１に示すシステムにおけるフラッシュＲＯＭに記憶されたデータを示す図である。
【図３】図１に示すシステムにおけるＲＡＭの各領域を示す図である。
【図４】図１に示すシステムに用いられるロードプログラムの構成を示す図である。
【図５】図１に示すシステムの処理の流れを示すフローチャートである。
【図６】本発明の第２の実施の形態にかかるシステムを示す図である。
【図７】図６に示すシステムにおけるメモリ・マネージメント・ユニットを示す図である。
【符号の説明】
【００４３】
１００  システム  １２０  フラッシュＲＯＭ
１２２  ブートローダ  １２４  ロードプログラム
１２６  カーネル  １３０  ＲＡＭ
１３２  アプリケーション領域  １３４  ロードプログラム
１３６  カーネル  １８０  バス
２００  システム  ２２０  フラッシュＲＯＭ
２５０  メモリ・マネージメント・ユニット  ２５２  上書き防止部
２５２ａ  監視部  ２５２ｂ  移動部
【図１】
0005086823.tif 000002
【図２】
0005086823.tif 000003
【図３】
0005086823.tif 000004
【図４】
0005086823.tif 000005
【図５】
0005086823.tif 000006
【図６】
0005086823.tif 000007
【図７】
0005086823.tif 000008