(57)【要約】      （修正有）【課題】組み込みプログラムをＲＯＭからＲＡＭにコピーして実行するコンピュータにおいて、必要なＲＯＭ容量及びＲＡＭ容量を低減させる。【解決手段】マイクロコンピュータ１０が、組み込みプログラム３が格納されたＲＯＭ２と、ＲＡＭ４とを備えている。組み込みプログラム３は、ＲＡＭ４にコピーされるべきプログラム部分と、前記プログラム部分が配置されるべきＲＡＭ配置アドレスが記述されたアドレス管理リストと、前記プログラム部分をＲＡＭ４にコピーするためのコピー関数とを有している。前記プログラム部分のヘッダには第１シンボルが定義され、前記プログラム部分のボトムには第２シンボルが定義、組み込みプログラム３のうちの、ＲＯＭ２において前記第１シンボルが配置されたアドレスからＲＯＭ２において前記第２シンボルが配置されたアドレスまでの部分を、ＲＡＭ４の前記ＲＡＭ配置アドレスを宛先としてコピーする。【選択図】図１
2009211193.tif 000002
【特許請求の範囲】
【請求項１】
組み込みプログラムが格納されたＲＯＭと、
ＲＡＭ
とを備えるマイクロコンピュータであって、
前記組み込みプログラムは、
前記ＲＡＭにコピーされるべきプログラム部分と、
前記プログラム部分が配置されるべき前記ＲＡＭのアドレスであるＲＡＭ配置アドレスが記述されたアドレス管理リストと、
前記プログラム部分を前記ＲＡＭにコピーするためのコピー関数
とを有し、
前記組み込みプログラムに含まれる前記プログラム部分を参照する命令コードには、前記プログラム部分の前記ＲＡＭ上のアドレスが直接に記述され、
前記プログラム部分のヘッダには第１シンボルが定義され、
前記プログラム部分のボトムには第２シンボルが定義され、
前記コピー関数は、それが当該マイクロコンピュータによって実行されたときに、前記組み込みプログラムのうちの、前記ＲＯＭにおいて前記第１シンボルが配置されたアドレスから前記ＲＯＭにおいて前記第２シンボルが配置されたアドレスまでの部分を、前記ＲＡＭの前記ＲＡＭ配置アドレスを宛先としてコピーするように記述されている
マイクロコンピュータ。
【請求項２】
請求項１に記載のマイクロコンピュータであって、
前記プログラム部分は、関数を構成する処理ブロックであるファンクションを最小単位として構成されている
マイクロコンピュータ。
【請求項３】
ＲＯＭとＲＡＭとを備えるコンピュータの前記ＲＯＭに書き込まれる組み込みプログラムであって、
前記ＲＡＭにコピーされるべきプログラム部分と、
前記プログラム部分が配置されるべき前記ＲＡＭ上のアドレスであるＲＡＭ配置アドレスが記述されたアドレス管理リストと、
前記プログラム部分を前記ＲＡＭにコピーするためのコピー関数と、
とを有し、
前記プログラム部分は、ヘッダに第１シンボルが定義されると共にボトムに第２シンボルが定義されており、
前記命令コードは、前記コンピュータに、前記組み込みプログラムのうちの、前記ＲＯＭにおいて前記第１シンボルが配置されたアドレスから前記第２シンボルが配置されたアドレスまでの部分を、前記ＲＡＭの前記ＲＡＭ配置アドレスにコピーするステップを実行させる
組み込みプログラム。
【請求項４】
請求項３に記載の組み込みプログラムであって、
前記プログラム部分は、関数を構成する処理ブロックであるファンクションを最小単位として構成されている
組み込みプログラム。
【請求項５】
抽出手段と、シンボル定義手段と、配置手段と、プログラム修正手段とを備える組み込みプログラム作成装置を用いて、ＲＯＭとＲＡＭとを備えるコンピュータの前記ＲＯＭに格納される組み込みプログラムを作成する組み込みプログラム作成方法であって、
前記抽出手段が、コピー関数を含むように作成された前記組み込みプログラムのソースプログラムから前記ＲＡＭで実行されるべきプログラム部分を抽出するステップと、
前記シンボル定義手段が、前記抽出されたプログラム部分のヘッダに第１シンボルを定義し、前記抽出されたプログラム部分のボトムに第２シンボルを定義するステップと、
前記配置手段が、前記プログラム部分を配置すべき前記ＲＡＭのアドレスであるＲＡＭ配置アドレスを決定するステップと、
前記プログラム修正手段が、前記プログラム部分の前記ＲＡＭ上のアドレスが前記プログラム部分を参照する命令コードに直接に記述されるように修正するとともに、前記ソースプログラムに前記ＲＡＭ配置アドレスを記述したアドレス管理リストを追加するステップ
とを備え、
前記ソースプログラムに含まれる前記コピー関数は、前記コンピュータによって実行されたときに、前記組み込みプログラムの前記ＲＯＭにおいて前記第１シンボルが配置されたアドレスから前記ＲＯＭにおいて前記第２シンボルが配置されたアドレスまでの部分を前記ＲＡＭの前記ＲＡＭ配置アドレスにコピーするようにコードされている
組み込みプログラム作成方法。
【請求項６】
ＲＯＭとＲＡＭとを備えるコンピュータの前記ＲＯＭに格納される組み込みプログラムを作成する組み込みプログラム作成装置であって、
コピー関数を含むように作成された前記組み込みプログラムのソースプログラムから前記ＲＡＭで実行されるべきプログラム部分を抽出する抽出手段と、
前記抽出されたプログラム部分のヘッダに第１シンボルを定義し、前記抽出されたプログラム部分のボトムに第２シンボルを定義するシンボル定義手段と、
前記プログラム部分を配置すべき前記ＲＡＭのアドレスであるＲＡＭ配置アドレスを決定する配置手段と、
前記プログラム部分の前記ＲＡＭ上のアドレスが前記プログラム部分を参照する命令コードに直接に記述されるように修正するとともに、前記ソースプログラムに前記ＲＡＭ配置アドレスを記述したアドレス管理リストを追加するプログラム修正手段とを備え、
前記ソースプログラムに含まれる前記コピー関数は、前記コンピュータによって実行されたときに、前記組み込みプログラムの前記ＲＯＭにおいて前記第１シンボルが配置されたアドレスから前記ＲＯＭにおいて前記第２シンボルが配置されたアドレスまでの部分を前記ＲＡＭの前記ＲＡＭ配置アドレスにコピーするようにコードされている
組み込みプログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特に、マイクロコンピュータに組み込まれる組み込みプログラムに関する。
【背景技術】
【０００２】
用語の定義：
本明細書において、「ファンクション」とは、「関数」を構成する１つの処理ブロックを意味しており、「関数」は、「ファンクション」の集まりとして構成される。また、「コマンド」とは、関数の集まりであり１つの命令体系を示している。例えば、Ｗｉｎｄｏｗｓ（マイクロソフト社の登録商標）のコマンドプロンプト上のＣＤコマンドやＤＩＲコマンドは、「コマンド」の例である。
【０００３】
発明の背景：
低速なＲＯＭ（read only memory）に格納されている組み込みプログラムを高速に動作させるための一つの手法として、組み込みプログラムを低速なＲＯＭから高速なＲＡＭ（random access memory）にコピーし、当該ＲＡＭ上で当該組み込みプログラムを実行する手法が知られている（例えば、特開２００１−１９５２５８号公報参照）。
【０００４】
このような手法を採用する場合、組み込みプログラムは、自分自身（の一部）をＲＡＭにコピーする動作を行うように作成される必要がある。このような組み込みプログラムを開発する負担を軽減するために、コンパイラ・システム（ソースプログラムを機械語命令に翻訳するシステム）には、ＲＯＭに格納された組み込みプログラムをＲＡＭにコピーするコピー関数を標準で用意しているものもある（例えば、ＣＡ８５０  Ｖｅｒ．３．００  Ｃコンパイラ・パッケージ  操作編  Ｕ１７２９３ＪＪ２Ｖ０ＵＭ００、第６章、ＲＯＭ化プロセッサ、図６−１、６−２、６−８参照）。
【０００５】
組み込みプログラムをマイクロコンピュータのＲＡＭにコピーして実行する場合、データの初期値やプログラムコードを、実行前に、ＲＡＭ上に展開する必要がある。つまり、ＲＡＭに展開するデータをＲＯＭ上に持たせておき、当該データをアプリケーション実行前にＲＯＭからＲＡＭにコピーする作業が必要になる。ＲＡＭに展開するデータをＲＯＭ上に持たせておき、当該データをアプリケーション実行前にＲＯＭからＲＡＭにコピーするように組み込むプログラムを作成する作業は、しばしば、ＲＯＭ化と称される。
【０００６】
図７は、ＲＯＭ化用オブジェクトを作成する典型的な手順を示す概念図である。まず、組み込みプログラムのソースプログラム５０１に、ＲＯＭ化のためのコピー関数５０２の記述が追加される。次に、コピー関数５０２とＲＯＭ化領域確保コード５０３とを含むソースプログラム５０１に対して、ＲＯＭ化をするオプションを指定しながらコンパイルを行ってオブジェクト５０８が生成され、更に、そのオブジェクト５０８をリンカによってＲＯＭ化ライブラリ５０４とリンクすることにより、実行可能オブジェクト５０５が生成される。最後に、ＲＯＭ化プロセッサ５０６により、ＲＯＭ化用オブジェクト５０７が生成される。
【０００７】
図８は、ＲＯＭに格納された組み込みプログラムのコピー関数５０２を実行することによってＲＯＭ領域６０１に配置されたデータを、ＲＡＭ領域６０２にコピーする動作を示す概念図である。ＲＯＭ領域６０１には、パッキングされた初期値有りデータ及びプログラムコードを格納する初期値有りデータ／プログラムコード領域６０３が用意される。コピー関数５０２が実行されると、初期値有りデータ／プログラムコード領域６０３に格納されたパッキングされた初期値有りデータが初期値有りデータ用ＲＡＭ領域６０４に展開され、プログラムコードがＲＡＭ配置プログラム領域６０５にコピーされる。
【０００８】
図９は、実行可能オブジェクト５０５及びＲＯＭ化用オブジェクト５０７のメモリ配置を示す概念図である。実行可能オブジェクト５０５がＲＯＭ化プロセッサ５０６によって処理されると、初期値有りデータ／プログラムコード領域６０３に格納されるべきパッキングされた初期値有りデータ及びプログラムコードが、特定のアドレス領域５１１（図８では、アドレス領域"_S_romp"）にrompsecセクション５１２として割り付けられる。このrompsecセクション５１２には、コピー情報５１３（即ち、パッキングされた初期値有りデータ及びプログラムコードをＲＡＭにコピーするためのコンパイラ管理情報）が付加される。そして、ヘキサコンバータ５１４によってヘキサファイル５１５が生成され、ＲＯＭライター５１６によりヘキサファイル５１５がＲＯＭ上に格納される。
【０００９】
図８の初期値有りデータ／プログラムコード領域６０３にデータを配置するためには、実行可能オブジェクト５０５を生成するためにリンクを実施する際に、リンク・ディレクティブという指示が行われる。リンク・ディレクティブの説明は、例えば、ＣＡ８５０  Ｖｅｒ．３．００  Ｃコンパイラ・パッケージ  リンク・ディレクティブ編  Ｕ１７２９４ＪＪ２Ｖ０ＵＭ００  ページ７９に開示されている。
【００１０】
図１０は、図８の初期値有りデータ／プログラムコード領域６０３へのプログラムコードの配置を定義する例を示している。ソースプログラム５０１において、関数"funcl"の定義の直前で"#pragma text "f1.text" funcl"と指定することにより、関数"funcl"が、セクション"f1.text"として定義される。次に、リンク・ディレクティブ５１７において、
TEXT2 : !Load ?RX V0x120000{
text1 = $PROGBITS ?AX f1.text;
};
と定義することにより、セクション"f1.text"が、120000Hex番地に割り付けられる。このように、図８の初期値有りデータ／プログラムコード領域６０３に含まれるプログラムコードをＲＡＭに配置する最小単位は、１つの関数である。
【００１１】
図１１は、組み込みプログラムをＲＯＭに格納する手順の詳細を説明するフローチャートである。まず、ＲＯＭに格納する組み込みプログラムのソースプログラム５０１がコマンド単位で作成される（ステップＳ９０１）。
【００１２】
ステップＳ９０１で作成したソースプログラム５０１中に、ＲＡＭで実行するプログラムが存在するかを確認（ステップＳ９０２）し、ＲＡＭで実行するプログラムが存在しない場合は、ステップＳ９０５に進み、ＲＡＭで実行するプログラムが存在する場合は、ステップＳ９０１で作成したプログラムの中からＲＡＭで実行する部分を抽出する（ステップＳ９０３）。次に図７のrompsecセクション５１２へ配置するためのＲＯＭ化するプログラムコードのセクションリストが作成される（ステップＳ９０４）。セクションの最小単位は、１関数である。次に全コマンドのソースプログラムについて作成が終了したかの確認（ステップＳ９０５）を行い、終了していなければ、ステップＳ９０１へと戻り、処理を繰り返す。終了していれば、作成したソースプログラム５０１を“ＲＯＭ化用オブジェクトの生成のオプションを指定してコンパイルおよびリンクを行い、図５の実行可能オブジェクト５０５を生成する（ステップＳ９０６）。次にステップＳ９０６で生成された実行可能オブジェクト５０５をＲＯＭ化プロセッサ５０６にかけ、図５のＲＯＭ化用オブジェクト５０７が生成される（ステップＳ９０７）。ＲＯＭ化用オブジェクト５０７を生成する際、図７のコピー情報５１３がＲＯＭ化用オブジェクト５０７内に生成される。次にＲＯＭ化用オブジェクト５０７をヘキサフォーマットに変換することにより、前述のヘキサファイル５１５が生成される（ステップＳ９０８）。次にステップＳ９０８で生成されたヘキサファイル５１５がＲＯＭライターによってＲＯＭに格納される（ステップＳ９０９）。
【００１３】
図１２は、図１１の手順でＲＯＭに格納された組み込みプログラムをＲＡＭ上で実行する手順の詳細を説明するフローチャートである。ＲＯＭに格納されたプログラムの実行が開始されると、実行コマンドがＲＡＭ上で実行する処理を含んでいるかどうかが判断される（ステップＳ９１１）。実行コマンドがＲＯＭ上のみで実行されるコマンドであれば、処理はステップＳ９１５に進む。実行コマンドがＲＡＭで実行する処理を含むコマンドであれば、図５のコピー関数５０２が呼び出され、rompsecセクション５１２の内容がＲＡＭにコピーされる（ステップＳ９１２）。より具体的には、rompsecセクション５１２に含まれるコピー情報５１３（図７参照）がＲＡＭに展開され、コピー関数５０２は、ＲＡＭに展開されたコピー情報５１３を参照しながらrompsecセクション５１２の内容をＲＡＭにコピーする。次にプログラムカウンタの値がＲＯＭのアドレスからＲＡＭのアドレスに変更され、ステップＳ９１２でＲＡＭにコピーされたプログラムが実行される（ステップＳ９１３）。ＲＡＭ上での処理が完了すると、プログラムカウンタの値がＲＡＭのアドレスからＲＯＭのアドレスに変更され、ＲＯＭに処理が移される（ステップＳ９１４）。更に、次に実行するコマンドがあるかどうかがチェックされ（ステップＳ９１５）、次に実行するコマンドがあれば、ステップＳ９１１に分岐して処理を実行し、次に実行するコマンドがなければ処理を終了する。
【００１４】
このように、従来技術では、ＲＯＭに格納された組み込みプログラムをＲＡＭにコピーして実行可能にするために、プログラムが配置されるＲＡＭのアドレスをコンパイラが生成し、用意されたコピー関数を読み出すことでＲＡＭへプログラムが展開される。このような手法は、アプリケーションでの対応を不要にする点で好適である。
【特許文献１】特開２００１−１９５２５８号公報
【非特許文献１】ＣＡ８５０  Ｖｅｒ．３．００  Ｃコンパイラ・パッケージ  操作編  Ｕ１７２９３ＪＪ２Ｖ０ＵＭ００、第６章、ＲＯＭ化プロセッサ、図６−１、６−２、６−８
【非特許文献２】ＣＡ８５０  Ｖｅｒ．３．００  Ｃコンパイラ・パッケージ  リンク・ディレクティブ編  Ｕ１７２９４ＪＪ２Ｖ０ＵＭ００  ページ７９
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、従来技術では、必要なＲＯＭ容量及びＲＡＭ容量が増加するという問題点がある。従来技術では、コピー情報５１３がＲＡＭのプログラム格納用領域に展開される、これにより必要なＲＡＭ容量が無駄に増大してしまう。加えて、従来技術では、関数単位で構成されたセクションがＲＯＭ上に配置され、コンパイラで用意されているコピー関数を呼び出すことによって、プログラムがＲＡＭに展開される。したがって、ＲＡＭで実行する処理はそれぞれ関数単位としておく必要がある。このため、レジスタの退避や復帰、呼び出し処理と復帰処理といったオーバーヘッドとなる処理が発生してしまう。これは、必要なＲＯＭ容量やＲＡＭ容量を増加させてしまう。一般的に８／１６ビットのマイクロコンピュータのようなローエンドＭＣＵ（Micro Control Unit）では、チップコストが製品価格に与える影響は大きく、ＲＯＭやＲＡＭの容量を抑えることによる製品コストの低減の要求が強い。
【課題を解決するための手段】
【００１６】
本発明の一の観点においては、マイクロコンピュータが、組み込みプログラムが格納されたＲＯＭと、ＲＡＭとを備えている。前記組み込みプログラムは、前記ＲＡＭにコピーされるべきプログラム部分と、前記プログラム部分が配置されるべき前記ＲＡＭのアドレスであるＲＡＭ配置アドレスが記述されたアドレス管理リストと、前記プログラム部分を前記ＲＡＭにコピーするためのコピー関数とを有している。記組み込みプログラムに含まれる前記プログラム部分を参照する命令コードには、前記プログラム部分の前記ＲＡＭ上のアドレスが直接に記述されている。加えて、前記プログラム部分のヘッダには第１シンボルが定義され、前記プログラム部分のボトムには第２シンボルが定義されている。前記コピー関数は、それが当該マイクロコンピュータによって実行されたときに、前記組み込みプログラムのうちの、前記ＲＯＭにおいて前記第１シンボルが配置されたアドレスから前記ＲＯＭにおいて前記第２シンボルが配置されたアドレスまでの部分を、前記ＲＡＭの前記ＲＡＭ配置アドレスを宛先としてコピーするように記述されている。
【００１７】
当該マイクロコンピュータは、ＲＯＭに用意されたアドレス管理リストと、プログラム部分のヘッダとボトムに定義されたシンボルを用いてＲＯＭからＲＡＭへのコピーを行うため、コピーに必要な情報をＲＡＭに展開する必要がない。したがって、必要なＲＯＭ容量やＲＡＭ容量を低減することができる。加えて、ＲＯＭからＲＡＭにコピーされるプログラム部分を関数よりも小さい単位（例えば、ファンクション）により構成することができる。コピーするプログラム部分の最小単位をファンクションとすることにより、必要なＲＯＭ容量やＲＡＭ容量を一層に低減することができる。
【発明の効果】
【００１８】
本発明によれば、組み込みプログラムをＲＯＭからＲＡＭにコピーして実行するコンピュータにおいて、必要なＲＯＭ容量及びＲＡＭ容量を低減させることができる。
【発明を実施するための最良の形態】
【００１９】
図１は、本発明の一実施形態におけるマイクロコンピュータ１０の構成を示すブロック図である。マイクロコンピュータ１０は、ＣＰＵ（central processing unit）１と、ＲＯＭ２と、ＲＡＭ４とを備えている。ＲＯＭ２には、組み込みプログラム３が格納されている。組み込みプログラム３は、その少なくとも一部分がＲＡＭ４にコピーされて実行される。図１において、ＲＡＭ４にコピーされた組み込みプログラムは、符号５によって参照されている。
【００２０】
図２は、組み込みプログラム３を作成し、更に、ＲＯＭ２に格納する手順について説明するフローチャートである。まず、組み込みプログラム３に含まれるコマンドのうちの一のコマンドのソースプログラムが作成される（ステップＳ２０１）。ソースプログラムは、それがＲＡＭ４にコピーされるべきファンクションを含む場合には、コピー関数を含むように作成される。続いて、ステップＳ２０１において作成されたソースプログラムの中に、ＲＡＭ４にコピーして実行するプログラム部分、より具体的には、ファンクションが存在するかどうかが確認される（ステップＳ２０２）。上述のように、ファンクションは、関数を構成する処理ブロックのことである。ＲＡＭ４にコピーして実行するファンクションが存在しない場合には、処理はステップＳ２０８に進み、下記のステップＳ２０３〜Ｓ２０７は行われない。
【００２１】
ステップＳ２０２で作成したソースプログラムの中に、ＲＡＭ４で実行するファンクションが存在する場合は、ＲＡＭ４で実行するファンクションが抽出される（ステップＳ２０３）。図３は、ファンクションの抽出の例を示しており、図３は、コマンドＡについてはファンクション＃１、＃２、＃５、＃８、＃ｎが抽出されることを図示している。
【００２２】
次に、ステップＳ２０３で抽出したファンクションのヘッダ（先頭）とボトム（末尾）にシンボルが定義される（ステップＳ２０４）。後述のように、ファンクションのヘッダとボトムに定義されたシンボルは、ファンクションをＲＡＭ４にコピーする際に、コピー元（ＲＯＭ）のコピー開始アドレス及びコピー終了アドレスを認識するために使用される。また、ファンクションのヘッダとボトムに定義されたシンボルは、ＲＡＭ４にコピーされるファンクションのプログラムサイズを認識するためにも使用される。
【００２３】
続いて、ステップＳ２０３で抽出したファンクションをＲＡＭ４に配置する構成が決定される（ステップＳ２０５）。各ファンクションのプログラムサイズがヘッダとボトムに定義されたシンボルから認識され、認識されたプログラムサイズを用いてＲＡＭで実行されるファンクションのＲＡＭ４上の配置、即ち、ファンクションがＲＡＭ４にコピーされる際の宛先のアドレスであるＲＡＭ配置アドレスが決定される。決定されたＲＡＭ配置アドレスは、アドレス管理リストに定義される（ステップＳ２０６）。図３には、コマンド「Ａ」について定義されたアドレス管理リストの内容の例が図示されている。コマンド「Ａ」のファンクション＃１、＃２、＃５、＃８、＃ｎがＲＡＭ４にコピーされて実行される場合、コマンド「Ａ」のアドレス管理リストには、ファンクション＃１、＃２、＃５、＃８、＃ｎのＲＡＭ配置アドレスが記述される。
【００２４】
次にアドレス管理リストの作成が終了したら、アドレス管理リストに記述されたＲＡＭ４上のアドレスで各ファンクションが実行されるように、ステップＳ２０１で作成したソースプログラムが修正される（ステップＳ２０７）。詳細には、ステップＳ２０７では、ステップＳ２０１で作成したソースプログラムにアドレス管理リストが追加される。加えて、ＲＡＭ４で実行されるファンクションを参照する命令コードにＲＡＭ４のアドレスが直接に記述されるようにソースプログラムが修正される。
【００２５】
以上の手順が、全コマンドについて行われる。ステップＳ２０８では、全コマンドのソースプログラムの作成が終了したかどうかがチェックされ、全てのコマンドのプログラム作成が終了していない場合は、ステップＳ２０１に進み、ステップＳ２０１〜Ｓ２０７の処理が繰り返して行われる。
【００２６】
全てのコマンドのソースプログラム作成が終了した場合は、作成したソースプログラムがコンパイルされてオブジェクトコードが生成され、更に、そのオブジェクトコードがヘキサフォーマットに変換されて組み込みプログラム３のヘキサファイルが生成される（ステップＳ２０９）。更に、そのヘキサファイルがＲＯＭライターによってＲＯＭに格納される（ステップＳ２１０）。このようにしてＲＯＭに格納される組み込みプログラム３には、アドレス管理リストが組み込まれることに留意されたい。
【００２７】
図４は、組み込みプログラム３に組み込まれるアドレス管理リストの構成を示す概念図である。各コマンドについて作成されたアドレス管理リストは、統合されて組み込みプログラム３に組み込まれる。
【００２８】
ステップＳ２０６においてアドレス管理リストに各ファンクションがＲＡＭに配置されるアドレスを定義する際には、ＥＱＵ定義が使用されることが好ましい。ＥＱＵ定義とは、ソースプログラム内で使用する数値データをネーム（文字列）として定義し、命令のオペランドに数値データの代わりに記述するものである。ＥＱＵ定義を使用することで、ＲＯＭ２の容量を費やすことなく、各ファンクションのＲＡＭ４に配置されるアドレスの定義が行える。例えば、コマンド”Ａ”のアドレス管理リスト１１Ａは、以下のように作成される：
Com_A_SUB_B   EQU Com_A_SUB_A+( SUB_A_END -SUB_A_START)
Com_A_SUB_C   EQU Com_A_SUB_B+( SUB_B_END -SUB_B_START)
Com_A_SUB_D   EQU Com_A_SUB_C+( SUB_C_END -SUB_C_START)
また、コマンド”Ｂ”のアドレス管理リスト１１Ｂは、以下のように作成される：
Com_B_SUB_B   EQU Com_B_SUB_A+( SUB_A_END -SUB_A_START)
Com_B_SUB_M   EQU Com_B_SUB_B+( SUB_B_END -SUB_B_START)
Com_B_SUB_Q   EQU Com_B_SUB_M+( SUB_M_END -SUB_M_START)
Com_B_SUB_S   EQU Com_B_SUB_Q+( SUB_Q_END -SUB_Q_START)
【００２９】
図５は、上記の手順を実行するために使用される組み込みプログラム作成装置２０の構成の例を示すブロック図である。組み込みプログラム作成装置２０は、演算装置として機能するＣＰＵ２１と、ＲＡＭ２２と、入力装置２３と、出力装置２４と、外部記憶装置２５とを備えている。外部記憶装置２５には、組み込みプログラム３の作成を支援するために使用される各種ソフトウェア：プログラミングツール２６、コンパイラ２７、及びヘキサコンバータ２８がインストールされている。
【００３０】
詳細には、図２のソースプログラムの作成（ステップＳ２０１）は、プログラマがプログラミングツール２６のエディタを操作することによって作成される。ファンクションの抽出（ステップＳ２０２、Ｓ２０３）、ヘッダとボトムへのシンボルの定義（ステップＳ２０４）、ファンクションのＲＡＭ４上の配置の決定（ステップＳ２０５）、ＲＡＭ配置アドレスのアドレス管理リストへの定義（ステップＳ２０６）、及びソースプログラムの修正（ステップＳ２０７）は、プログラミングツール２６に用意された支援ツールによって行われる。また、ステップＳ２０９におけるコンパイルは、コンパイラ２７によって行われ、オブジェクトコードのヘキサフォーマットへの変換はヘキサコンバータ２８によって行われる。図２の各ステップにおいて作成された様々なデータ（例えば、アドレス管理データ）は、適宜に外部記憶装置２５に保存され、保存されたデータが引き続くステップで使用される。
【００３１】
（組み込みプログラムの実行）
続いて、組み込みプログラム３が実行されたときのマイクロコンピュータ１０の動作について説明する。図６は、組み込みプログラム３が実行されたときに行われる処理を説明する図である。
【００３２】
ＲＯＭに格納される組み込みプログラム３の実行がスタートされると、実行コマンドがＲＡＭで実行するファンクションを含んでいるかどうかが判断される（ステップＳ２１２）。実行コマンドが、ＲＯＭ２上のみで実行されるコマンドであれば、処理はステップＳ２１６に進む。
【００３３】
実行コマンドがＲＡＭ４で実行するファンクションを含む場合、ＲＯＭ２でのプログラム実行からＲＡＭ４でのプログラム実行に切り替えるために、当該ＲＡＭ４で実行するファンクションが、順次ＲＯＭ２からＲＡＭ４にコピーされる（ステップＳ２１３）。ファンクションをＲＡＭ４にコピーする際のコピー元のＲＯＭ２のアドレスとしては、ファンクションのヘッダ及びボトムのシンボルが配置されたアドレスが使用される。即ち、コピー関数は、前記ＲＯＭに格納された組み込みプログラム３のうちの、ヘッダのシンボルが配置されたアドレスからボトムのシンボルが配置されたアドレスまでの部分をＲＡＭ４にコピーする。一方、コピー先のＲＡＭ４のアドレスとしては、組み込みプログラム３に組み込まれたアドレス管理リストに記述された各ファンクションのＲＡＭ配置アドレスが使用される。これにより、ファンクションは、ステップＳ２０５で決定した配置でＲＡＭ４にコピーされる。このような手法によれば、ファンクションをＲＡＭ４にコピーする際に使用するコピー関数が使用する情報を、ＲＡＭ４に格納せずにコピー関数の実行が可能になる。
【００３４】
次にＲＡＭ４で実行される全てのファンクションのコピーが終了したら、プログラムカウンタの値がＲＯＭ２のアドレスからＲＡＭ４のアドレスに移され、ＲＡＭ４にコピーしたファンクションが実行される（ステップＳ２１４）。ステップＳ２０７で修正されたソースプログラムの命令コードにはＲＡＭ４におけるファンクションのＲＡＭ配置アドレスが記述されているため、ＲＡＭ４で当該ファンクションが実行される際の分岐先アドレスや、サブルーチン読み出し先のアドレスを意識する必要がなく、当該ファンクションを実行することが可能である。
【００３５】
ＲＡＭ４でのファンクションの実行が終了したら、プログラムカウンタの値がＲＡＭ４のアドレスからＲＯＭ２のアドレスに移され、ＲＯＭ２に処理が移される（ステップＳ２１５）。続いて、次に実行するコマンドがあるかどうかがチェックされ（ステップＳ２１６）、実行するコマンドがあれば、ステップＳ２１２に分岐しステップＳ２１２〜Ｓ２１５の処理が実行される。実行するコマンドがなければ処理を終了する。
【００３６】
本実施形態の手法によれば、コピー関数の実行時にＲＡＭ４のプログラム格納用領域にコピー関数の実行に必要なデータを格納することが不要になり、ＲＡＭ４のサイズを削減することができる。
【００３７】
加えて、本実施形態では、ＲＡＭ４にコピーされるプログラム部分のヘッダとボトムにシンボルが定義され、このシンボルを用いて、コピー元のＲＯＭ２のアドレスが認識される。これにより、ＲＡＭ４にコピーするプログラム部分の最小単位が”関数”に限定されない；本実施形態の手法によれば、関数の中の一部の処理（“ファンクション”）を最小単位としてプログラム部分をＲＡＭ４にコピーして実行することが可能である。ファンクションを最小単位としてプログラム部分をコピーすることにより、関数の処理の全てをＲＡＭ４にコピーする必要がなく、ＲＡＭ４での実行が必要なプログラム（“ファンクション”）のみをＲＡＭ４にコピーするため、ＲＡＭ４のサイズを削減することができる。また、ＲＯＭ２に格納する組み込みプログラム３においても、ＲＡＭ４にコピーする最小単位が関数である場合、ＲＡＭ４のサイズを削減するためには、必要なプログラムのみを選択的に関数化する必要があるためＲＯＭ２のサイズが増加してしまう。ＲＯＭ２のサイズが増加する一例を示すと、関数Ａ内に複数のファンクション（ファンクションＡ、ファンクションＢ、ファンクションＣ）が存在するとする。ＲＡＭ２にコピーする最小単位が関数である場合では、ファンクションＡ、ファンクションＢ、ファンクションＣのそれぞれを関数としてプログラム作成する必要がある。しかし、ＲＡＭ２にコピーする最小単位がファンクション単位であれば、関数Ａのみをプログラム作成し、内部を３つのファンクションに分けるだけで良いため、ＲＯＭ２のサイズが削減できる。したがって、関数の中の一部の処理（“ファンクション”）を最小単位としてプログラム部分をＲＡＭ４にコピーして実行する手法によりＲＯＭ２やＲＡＭ４のサイズを削減することができる。ＲＯＭ２やＲＡＭ４のサイズの削減は、チップサイズの削減に有効である。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明の一実施形態のマイクロコンピュータの構成を示すブロック図である。
【図２】図２は、本発明の一実施形態における組み込みプログラムの作成手順及び当該組み込みプログラムをＲＯＭに格納する手順を示すフローチャートである。
【図３】図３は、組み込みプログラムの作成手順を示す概念図である。
【図４】図４は、アドレス管理テーブルの構成の例を示す概念図である。
【図５】図５は、本発明の一実施形態の組み込みプログラム作成装置の構成を示すブロック図である。
【図６】図６は、本発明の一実施形態において、組み込みプログラムが実行されたときに行われる処理を示すフローチャートである。
【図７】図７は、従来の組み込みプログラムの作成手順を示す概念図である。
【図８】図８は、初期値ありデータ及びプログラムコードのＲＯＭからＲＡＭへのコピーを概念的に示す図である。
【図９】図９は、従来技術における実行可能オブジェクト及びＲＯＭ化用オブジェクトのメモリ配置及びＲＯＭ化オブジェクトを組み込みプログラムとしてＲＯＭに格納する手順を示す概念図である。
【図１０】図１０は、ソースプログラムとリンク・ディレクティブの内容の例を示す図である。
【図１１】図１１は、従来技術における、組み込みプログラムの作成手順及び当該組み込みプログラムをＲＯＭに格納する手順を示すフローチャートである。
【図１２】図１２は、従来技術において、組み込みプログラムが実行されたときに行われる処理を示すフローチャートである。
【符号の説明】
【００３９】
１０：マイクロコンピュータ
１：ＣＰＵ
２：ＲＯＭ
３：組み込みプログラム
４：ＲＡＭ
５：組み込みプログラム
２０：組み込みプログラム作成装置
２１：ＣＰＵ
２２：ＲＡＭ
２３：入力装置
２４：出力装置
２５：外部記憶装置
２６：プログラミングツール
２７：コンパイラ
２８：ヘキサコンバータ
５０１：ソースプログラム
５０２：コピー関数
５０３：ＲＯＭ化領域確保コード
５０４：ＲＯＭ化ライブラリ
５０５：実行可能オブジェクト
５０６：ＲＯＭ化プロセッサ
５０７：ＲＯＭ化用オブジェクト
５０８：オブジェクト
５１１：アドレス領域
５１２：rompsecセクション
５１３：コピー情報
５１４：ヘキサコンバータ
５１５：ヘキサファイル
５１６：ＲＯＭライター
６０１：ＲＯＭ領域
６０２：ＲＡＭ領域
６０３：初期値有りデータ／プログラムコード領域
６０４：初期値有りデータ用ＲＡＭ領域
６０５：ＲＡＭ配置プログラム領域
【図１】
2009211193.tif 000003
【図２】
2009211193.tif 000004
【図３】
2009211193.tif 000005
【図４】
2009211193.tif 000006
【図５】
2009211193.tif 000007
【図６】
2009211193.tif 000008
【図７】
2009211193.tif 000009
【図８】
2009211193.tif 000010
【図９】
2009211193.tif 000011
【図１０】
2009211193.tif 000012
【図１１】
2009211193.tif 000013
【図１２】
2009211193.tif 000014