(57)【要約】      （修正有）【課題】プログラムやデータの追加、変更、削除時に、自動的にリンカファイルを生成できるようにする。【解決手段】プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、複数のソースファイルを記憶するソースファイル記憶手段と、オブジェクトファイルを生成するコンパイル手段１０４と、オブジェクトコードの、メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、ソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段１０３と、リンカルール記憶手段と、ソースファイルの追加、変更、あるいは削除が検出されたとき、リンカルールに従ってリンカファイルの内容を更新するリンカファイル更新手段とを有する。【選択図】図２
2007226739.tif 000002
【特許請求の範囲】
【請求項１】
固有のメモリ空間を有するプロセッサに実行させるソフトウェアを開発するソフトウェア開発装置であって、
前記プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、
前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、
前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、
前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、
前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、
前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と
前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段と
を有するソフトウェア開発装置。
【請求項２】
ユーザから、ソースファイルの追加、変更、あるいは削除の指示を受け付けるグラフィカルユーザインターフェースをさらに有する請求項１に記載のソフトウェア開発装置。
【請求項３】
前記グラフィカルユーザインターフェースが、前記リンカルール記憶手段に記憶された記述ルールの変更の指示を受け付け、
前記ソフトウェア開発装置が、前記グラフィカルユーザインターフェースを介して入力された指示に従って前記リンカルール記憶手段に記憶された記述ルールを変更するリンカルール更新手段をさらに有する
ことを特徴とする請求項２に記載のソフトウェア開発装置。
【請求項４】
前記コンパイル手段におけるコンパイル条件を記述したメイクファイルを記憶するメイクファイル記憶手段と、
前記メイクファイルにおける記述ルールを記憶するメイクルール記憶手段と、
前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記メイクルール記憶手段に記憶された記述ルールに従って前記メイクファイルの内容を更新するメイクファイル更新手段と
を有し、
前記コンパイル手段が、前記メイクファイル記憶手段に記憶されたメイクファイルに従ってオブジェクトファイルを生成する
ことを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項５】
コンピュータ装置を、
固有のメモリ空間を有するプロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、
前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、
前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、
前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、
前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、
前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と
前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み機器におけるソフトウェアの開発ツールに関する。
【背景技術】
【０００２】
いわゆる組み込み機器に搭載されたＣＰＵ（Central Processing Unit）に動作させるソフトウェアを開発するには、開発者は専門の知識を要求される。例えば、開発者は、メモリ空間（メモリマップ）上におけるデータの配置、プログラムの配置などを自ら定義する必要がある。メモリ空間は、開発対象となるハードウェア（ターゲット）の構成により異なるのが通常である。したがって、開発者は、ターゲットのハードウェア構成を考慮して、データやプログラムをメモリ空間の適切な位置に配置する必要があった。これらの定義情報は、例えば、リンカファイル（あるいはリンカスクリプトファイル）と呼ばれるテキストファイルに記述される。従来、開発者は、テキストエディタを用いてリンカファイルを編集することにより、メモリ空間における配置を定義していた。
【０００３】
このように、開発者がいわば手作業でメモリ空間の配置を定義することは、開発者にとって煩雑な作業である。また、このように手作業でメモリ空間の配置を定義するには、開発者は、ターゲットにより異なるメモリ空間についての知識を有している必要がある。すなわち、この作業が組み込み機器用ソフトウェア開発の障壁を高くしているという問題があった。ここで、メモリ空間の配置を自動的に行う技術としては、例えば特許文献１に記載された技術がある。
【特許文献１】特開平１１−０９５９８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで、特許文献１は、メモリ空間の再配置を自動的に行うことにより、メモリ空間の空き領域を拡大する技術を開示している。しかし、特定のハードウェア構成に適合するようにメモリ空間における配置を決定するものではなかった。すなわち、特許文献１によっても、組み込み機器など、特定のハードウェア構成に適合するリンカファイル（メモリ空間におけるデータやプログラムの配置を定義するファイル）を生成することはできなかった。
【０００５】
また、開発者が手作業でリンカファイルの編集を行った場合、開発者は、単純なタイプミスや、メモリ配置の不整合を含んだリンカファイルを生成してしまうという問題があった。これらのミスは、コンパイル・ビルドやプログラムの実行を行うまで発見できないことが多く、開発効率を低下させる一因となっていた。また、プログラムやデータが追加、変更、あるいは削除された場合に、開発者は手作業でリンカファイルを書き換える必要があるという問題があった。
【０００６】
本発明は上述の事情に鑑みてなされたものであり、プログラムやデータの追加、変更、削除時に、自動的にリンカファイルを生成することができるソフトウェア開発技術を提供する。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明は、固有のメモリ空間を有するプロセッサに実行させるソフトウェアを開発するソフトウェア開発装置であって、前記プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段とを有するソフトウェア開発装置を提供する。
【０００８】
好ましい態様において、このソフトウェア開発装置は、ユーザから、ソースファイルの追加、変更、あるいは削除の指示を受け付けるグラフィカルユーザインターフェースをさらに有してもよい。
この態様において、このソフトウェア開発装置は、前記グラフィカルユーザインターフェースが、前記リンカルール記憶手段に記憶された記述ルールの変更の指示を受け付け、前記ソフトウェア開発装置が、前記グラフィカルユーザインターフェースを介して入力された指示に従って前記リンカルール記憶手段に記憶された記述ルールを変更するリンカルール更新手段をさらに有してもよい。
【０００９】
別の好ましい態様において、このソフトウェア開発装置は、前記コンパイル手段におけるコンパイル条件を記述したメイクファイルを記憶するメイクファイル記憶手段と、前記メイクファイルにおける記述ルールを記憶するメイクルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記メイクルール記憶手段に記憶された記述ルールに従って前記メイクファイルの内容を更新するメイクファイル更新手段とを有し、前記コンパイル手段が、前記メイクファイル記憶手段に記憶されたメイクファイルに従ってオブジェクトファイルを生成してもよい。
【００１０】
また、本発明は、コンピュータ装置を、固有のメモリ空間を有するプロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段として機能させるプログラムを提供する。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の一実施形態について説明する。
図１は、本発明の一実施形態に係るソフトウェア開発システム１の構成を示す図である。マイクロコンピュータ２００は、ソフトウェア開発システム１により開発されるソフトウェアを実行する電子機器、すなわち、開発対象となるターゲットである。マイクロコンピュータ２００は、例えば、携帯電話機、時計、家電製品、自動販売機など、ＣＰＵとメモリを有する電子機器であればどのようなものでもよい。ＰＣ１００は、マイクロコンピュータ２００に実行させるソフトウェアを開発するソフトウェア開発装置である。マイクロコンピュータ２００とＰＣ１００とは、ＩＣＥ（In-Circuit Emulator）３００を介して接続されている。ＩＣＥ３００は、ハードウェア（マイクロコンピュータ２００）とソフトウェア（プログラム）の動作確認を行うための装置である。ＩＣＥ３００は、例えば以下の機能を提供する。（１）マイクロコンピュータ２００にプログラムを１ステップずつ実行させる機能。（２）メモリの内容を表示したり、編集したりする機能。（３）マイクロコンピュータ２００の動作を、プログラムのアドレスなど任意の条件で停止させる機能。さらに、このときのレジスタの値を表示、編集する機能。（４）プログラムの動作を表示、記録する機能。（５）デバッグ対象ハードウェア（マイクロコンピュータ２００）とのインターフェース。ＰＣ１００は、ＩＣＥ３００を介してマイクロコンピュータ２００にプログラムを実行させることができる。
【００１２】
マイクロコンピュータ２００は、次の構成を有する。ＣＰＵ２１０は、プログラムを実行し、マイクロコンピュータ２００の各部を制御する制御装置（プロセッサ）である。ＣＰＵ２１０は固有のメモリ空間を有している。ＲＯＭ（Read Only Memory）２３０は、ＣＰＵ２１０が実行するプログラムおよびプログラムの実行に必要なデータを記憶する。ＲＡＭ（Random Access Memory）２２０は、ＣＰＵ２１０がプログラムを実行する際の作業領域として機能するメモリである。
【００１３】
図２は、ＰＣ１００の機能構成を示す図である。記憶部１０１は、各種の情報を記憶する。詳細は後述するが、記憶部１０１は、例えば、ＣＰＵ２１０のメモリ空間情報、メイクファイルおよびリンカファイル（リンカスクリプトファイルと呼ばれることもある）、メイクファイルおよびリンカファイルの記述ルール、ソースファイル、およびオブジェクトファイルを記憶する。ＧＵＩ（Graphical User Interface）１０２は、ユーザからＰＣ１００に対する指示入力を受け付け、また、システムの処理状況を表示するユーザインターフェースである。ソースファイル追加監視部１０３は、記憶部１０１におけるソースファイルが追加、変更、あるいは削除されたことを監視する。ソースファイルは、ＣＰＵ２１０に実行させる処理またはその処理に必要なデータを記述したテキスト形式のファイルである。コンパイラ１０４は、メイクファイルに記述された情報に基づいて、ソースファイルをコンパイルしてオブジェクトファイルを生成する。オブジェクトファイルとは、ＣＰＵ２１０が実行可能なオブジェクトコードを含むバイナリ形式のファイルである。リンカ１０５は、リンカファイルに記述された情報に基づいて、複数のオブジェクトファイルから、ＣＰＵ２１０が実行可能なソフトウェアを生成する。エディタ１０６は、リンカファイルを編集する機能を有する。
【００１４】
図３は、ＰＣ１００のハードウェア構成を示す図である。ＣＰＵ１１０は、ＰＣ１００の各部を制御する制御装置である。ＲＯＭ１２０は、ＰＣ１００の起動に必要なプログラムおよびデータを記憶する。ＲＡＭ１３０は、ＣＰＵ１１０がプログラムを実行する際の作業領域として機能する。Ｉ／Ｆ１４０は、ＩＣＥ３００など他の機器との間でデータや制御信号の入出力を行うインターフェースである。ＨＤＤ（Hard Disk Drive）１５０は、プログラムおよび各種データを記憶する記憶装置である。キーボード・マウス１６０は、ユーザがＰＣ１００に対して指示入力を行う入力装置である。ディスプレイ１７０は、プログラムの処理状況などを表示する出力装置である。ＨＤＤ１５０は、ＣＰＵ２１０に実行させるプログラムを含むソフトウェアを開発するソフトウェア開発プログラムを記憶している。ＣＰＵ１１０がソフトウェア開発プログラムを実行することにより、ＰＣ１００は、図２に示される機能構成を具備する。図２に示される各機能構成要素は、例えば、プログラムモジュールにより実現される。
【００１５】
図４は、ソフトウェア開発システム１の動作を示すフローチャートである。ステップＳ１００において、ユーザは、ターゲット（ＣＰＵ２１０）のメモリ空間において特定の位置に配置する必要があるオブジェクトファイルを指定する。例えば、あるＣＰＵにおいては、トラップベクターテーブル（Trap Vector Table）と呼ばれるテーブルを、すべてのプログラムの先頭に配置しなければならない。したがって、ユーザは、トラップベクターテーブルを含むオブジェクトファイルを指定する必要がある。本実施形態において、ＣＰＵ２１０のメモリ空間は、複数の領域に区分されている。各領域を「セクション」という。特に、すべてのプログラムの先頭に位置するセクションを、「．ｖｅｃｔｏｒ」セクションという。
【００１６】
図５は、トラップベクターテーブルを含むオブジェクトファイルを選択するＵＩを例示する図である。ユーザがキーボード・マウス１６０を操作することにより、チェックボックス５０１にチェックを付けると、指定されたファイルが「．ｖｅｃｔｏｒ」セクションに割り当てられる設定が有効になる。図５には、チェックボックス５０１にチェックが付けられた状態が示されている。なお、以下の説明においてチェックボックスにチェックを付けることを「チェックボックスをオンにする」という。逆に、チェックが付けられたチェックボックスからチェックを外すことを、「チェックボックスをオフにする」という。
【００１７】
チェックボックスをオンにすると、ユーザは、プルダウンメニュー５０２により、トラップベクターテーブルを含むオブジェクトファイルを指定することができる。ＨＤＤ１５０は、トラップベクターテーブルを含むオブジェクトファイルの候補を記憶している。ユーザがプルダウンメニュー５０２の右端にある矢印部分をクリックすると、ＣＰＵ１１０は、オブジェクトファイルの候補をディスプレイ１７０に表示させる。図５の例では、「ｖｅｃｔｏｒ．ｏ」および「ｂｏｏｔ．ｏ」の２つのファイルが候補として表示されている。ユーザは、キーボード・マウス１６０を操作することにより、これらのうちから一つを選択する。あるいは、ユーザは、キーボード・マウス１６０を操作して、これらの候補とは別のファイル名を新たに入力してもよい。ユーザが終了ボタン５０３をクリックすると、ＣＰＵ１１０は、ユーザに指定されたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にＨＤＤ１５０に記憶する。
【００１８】
ユーザがキャンセルボタン５０４をクリックすると、ＣＰＵ１１０は、トラップベクターテーブルを含むファイル名を更新しない。また、チェックボックスをオフにすると、ＣＰＵ１１０は、あらかじめ決められたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にＨＤＤ１５０に記憶する。あるいは、チェックボックスをオフにした場合、ＣＰＵ２１０は、後述するリンクの際に、トラップベクターテーブルを含むファイルを特定する情報の入力を促す画面をディスプレイ１７０に表示させてもよい。ユーザは、表示される画面に従ってトラップベクターテーブルを指定する。ＣＰＵ１１０は、この時点で、ユーザに指定されたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にＨＤＤ１５０に記憶する。
【００１９】
再び図４を参照して説明する。ステップＳ１１０において、ＣＰＵ１１０は、ソースファイルが変更されたか判断する。ＣＰＵ１１０は、現在処理対象となっているプロジェクトに含まれるソースファイルの数、ファイルサイズ、あるいはファイル名のうち一または複数の情報を定期的に監視している。ここで、プロジェクトとは、開発対象となるソフトウェアの生成に必要なソースファイル、オブジェクトファイル、およびライブラリの集合をいう。ライブラリとは、オブジェクトファイルのうち、特に、他のプログラムから利用できるように部品化されたものをいう。ＣＰＵ１１０は、例えば、定期的に監視している情報の差分に基づいてソースファイルに変更（追加あるいは削除も含む）があったか判断する。
【００２０】
ソースファイルに変更があった場合（ステップＳ１１０：ＹＥＳ）、ステップＳ１２０において、ＣＰＵ１１０は、メイクファイルの更新を行う。ＨＤＤ１５０は、メイクファイルの自動更新を行うための記述ルールを記憶している。ＣＰＵ１１０は、ＨＤＤ１５０に記憶された記述ルールに従ってメイクファイルを更新する。
【００２１】
図６は、更新前後のメイクファイルの一部を例示する図である。なお、図６においては、変更に関係する部分のみ示されており、変更に関係しない部分については省略されている。記述ルールは、例えば、変更されたソースファイルに対応するオブジェクトファイルのファイル名を決定するルールを含んでいる。ファイル名を決定するルールは、例えば、ソースファイル名の特定の文字列（例えば「．ｃ」）を、別の文字列（例えば「．ｏ」）に置換するルールである。例えば「ｔｅｓｔ．ｃ」というファイル名のソースファイルが追加されると、ＣＰＵ１１０は、対応するオブジェクトファイル名を「ｔｅｓｔ．ｏ」と決定する。また、記述ルールは、追加されたソースファイルに対応するオブジェクトファイルのファイル名を、メイクファイル中の所定の文字列（例えば、「ＯＢＪＳ＝」）の後ろの所定の位置（例えば、「ｖｅｃｔｏｒ．ｏ」の前）に配置するというルールを含んでいる。
【００２２】
さらに、記述ルールは、メイクファイル中の所定の位置に、追加されたソースファイル名および対応するオブジェクトファイル名を含む文字列を追加するルールを含んでいる。図６に示される例では、以下の文字列が追加されている。なお、「（ソースファイル名）」および「（オブジェクトファイル名）」は、追加されたソースファイル名および対応するオブジェクトファイル名を示す。
【００２３】
＃＃（ソースファイル名）
（オブジェクトファイル名）：（ソースファイル名）
＄（ＣＣ＿ＫＦＩＬＴ）＄（ＣＦＬＡＧＳ）  −ｏ  ＄＠  ＄＜
＄（ＤＥＰＣＭＤ＿ＣＣ）
【００２４】
あるソースファイルが削除された場合の処理は、ソースファイルが追加されたときの処理とほぼ逆の処理になる。記述ルールは、削除されたソースファイル名および対応するオブジェクトファイル名を含む特定の文字列を削除するルールを含んでいる。例えば、この前の段落で示された文字列が削除される。また、記述ルールは、削除されたソースファイルに対応するオブジェクトファイルのファイル名を、メイクファイル中の所定の文字列（例えば、「ＯＢＪＳ＝」）の後ろの所定の位置（例えば、「ｖｅｃｔｏｒ．ｏ」の前）から削除するというルールを含んでいる。ＣＰＵ１１０は、これらの記述ルールに従ってメイクファイルを更新する。
【００２５】
また、あるソースファイル名が変更された場合、ＣＰＵ１１０は、メイクファイル中に含まれる変更前のソースファイル名およびオブジェクトファイル名を、変更後のソースファイル名およびオブジェクトファイル名に置換する。
【００２６】
再び図４を参照して説明する。メイクファイルを更新すると、ステップＳ１３０において、ＣＰＵ１１０は、追加されたソースファイルをコンパイルして、オブジェクトファイルを生成する。ＨＤＤ１５０は、生成されたオブジェクトファイルを記憶する。次に、ステップＳ１４０において、ＣＰＵ１１０は、リンカファイルを更新する。ＨＤＤ１５０は、リンカファイルの自動更新を行うための記述ルールを記憶している。ＣＰＵ１１０は、ＨＤＤ１５０に記憶された記述ルールに従ってリンカファイルを更新する。
【００２７】
図７は、リンカファイル更新処理の詳細を示すフローチャートである。ステップＳ１４１において、ＣＰＵ１１０は、処理対象となっているプロジェクト内のオブジェクトファイルおよびライブラリをすべて検出する。次に、ステップＳ１４２において、ＣＰＵ１１０は、指定されたオブジェクトファイルを、ＣＰＵ２１０のメモリ空間上の指定された位置（「．ｖｅｃｔｏｒ」セクション）に配置する。指定されたオブジェクトファイルとは、ステップＳ１００において指定されたオブジェクトファイルである。次に、ステップＳ１４３において、ＣＰＵ１１０は、その他のオブジェクトファイルおよびライブラリを、検出順に、ＣＰＵ２１０のメモリ空間上に配置する。ＣＰＵ１１０は、オブジェクトファイルおよびライブラリを特定する識別子と、検出順を示す情報と共にＲＡＭ１３０に記憶する。次に、ステップＳ１４４において、ＣＰＵ１１０は、上記の配置に対応する文字列をリンカファイルに出力する。リンカファイルの記述ルールは、メモリ空間上の配置を文字列に変換するルールを含んでいる。
【００２８】
図８は、更新前後のリンカファイルの一部を例示する図である。メイクファイルの場合と同様に、追加されたオブジェクトファイルに対応する文字列が、所定の位置に挿入されている。また、リンカファイルは、ターゲットであるＣＰＵ２１０のメモリ空間に依存した情報を含んでいる。ＨＤＤ１５０は、ＣＰＵ２１０のメモリ空間の構成を示すメモリ空間情報を記憶している。リンカファイルの記述ルールは、メモリ空間情報の少なくとも一部をリンカファイルに含めるルールを記憶している。例えば、ＣＰＵ２１０のメモリ空間情報は、「．ｂｓｓ」セクションがメモリ空間のアドレス「００００００００」から開始するという情報、および「．ｖｅｃｔｏｒ」セクションがアドレス「００Ｃ０００００」から開始するという情報を含んでいる。ＣＰＵ２１０は、メモリ空間情報および記述ルールに従って、これらの情報をリンカファイルに含めるように更新する。
【００２９】
再び図４を参照して説明する。リンカファイルを更新すると、ステップＳ１５０において、ＣＰＵ１１０は、リンクを行う。すなわち、リンカファイルに従って、オブジェクトファイルおよびライブラリに含まれるオブジェクトコードをＣＰＵ２１０のメモリ空間に配置し、ＣＰＵ２１０が実行可能な実行ファイル（ソフトウェア）を生成する。
【００３０】
以上で説明したように、本実施形態によれば、ユーザ（開発者）は、ＧＵＩに従ってプロジェクトにソースファイルを追加するだけでよく、メイクファイルやリンカファイル（リンカスクリプトファイル）を手作業で編集する必要がない。すなわち、ＰＣ１００は、あらかじめ決められた記述ルールにしたがって、メイクファイルの内容を更新する。さらに、ＰＣ１００は、自動的にコンパイルを行う。こうして、オブジェクトファイルが自動的に生成され、また、ＣＰＵ２１０のメモリ空間に適合したリンカファイルが自動的に生成される。したがって、ユーザは、ＣＰＵ２１０のメモリ空間について専門的知識がなくても、ＣＰＵ２１０に実行させるソフトウェアを開発することができる。
【００３１】
また、本実施形態に係るソフトウェア開発プログラムは、ＰＣ１００にＧＵＩによるリンカファイルの編集機能も提供する。すなわち、ユーザ（開発者）は、上記のように自動生成されたリンカファイルを、ＧＵＩを介して編集することができる。
【００３２】
図９は、ＧＵＩによるリンカファイルの編集処理を示すフローチャートである。ＣＰＵ１１０は、ユーザの指示入力に応じて、リンカファイルエディタを起動する。リンカファイルエディタが起動されると、ステップＳ２００において、ＣＰＵ１１０は、ＨＤＤ１５０からリンカファイルを読み込む。ＣＰＵ１１０は、読み込んだリンカファイルに対応する画像（ユーザインターフェース、ＵＩ）をディスプレイ１７０に表示させる。
【００３３】
図１０は、リンカファイルエディタのＵＩを例示する図である。ウインドウ１００１は、ソフトウェア開発プログラムの機能モジュールを表示するウインドウである。例えば、ユーザが、「ＧＮＵ３３  Ｌｉｎｋｅｒ  Ｓｃｒｉｐｔ  Ｓｅｔｔｉｎｇｓ」の表示をクリックすると、ＣＰＵ１１０はリンカファイルエディタを起動する。ウインドウ１００２は、ＣＰＵ２１０のメモリ空間情報を表示するウインドウである。ＶＭＡ（Virtual Memory Address）のフィールドは実行時のアドレスを、ＬＭＡ（Load Memory Address）のフィールドは読み込み時のアドレスを示している。セクション名のフィールドは、メモリ空間におけるセクション名を示している。図１０の例では、例えば、「．ｂｓｓ」セクションがアドレス「００００００００」から、「．ｖｅｃｔｏｒ」セクションがアドレス「００Ｃ０００００」から開始することが示されている。ユーザは、キーボード・マウス１６０を操作することにより、複数のセクションのうち任意のセクションを処理対象のセクションとして指定することができる。例えば、ユーザが、「．ｒｏｄａｔａ」の表示をクリックすると、ＣＰＵ１１０は、「．ｒｏｄａｔａ」セクションを処理対象として特定する。ＣＰＵ１１０は、例えば背景色を他のセクションと異なる色で表示する等の方法により、処理対象のセクション名をユーザに明示する。
【００３４】
追加ボタン１００３、編集ボタン１００４、削除ボタン１００５は、セクション名の追加、編集、削除を行うためのボタンである。例えば「．ｒｏｄａｔａ」セクションが処理対象セクションとして指定されている状態で、ユーザが追加ボタン１００３をクリックすると、「．ｒｏｄａｔａ」の上（または下）に、新たなセクションが挿入される。また、「．ｒｏｄａｔａ」セクションが処理対象セクションとして指定されている状態で、ユーザが削除ボタン１００５をクリックすると、「．ｒｏｄａｔａ」セクションが削除される。
【００３５】
さらに、「．ｒｏｄａｔａ」セクションが処理対象セクションとして指定されている状態で、ユーザが編集ボタン１００４をクリックすると、ＣＰＵ１１０は、次に説明する別のウインドウをディスプレイ１７０に表示させる。ユーザは、この画面上を操作することにより、リンカファイルのうち、「．ｒｏｄａｔａ」セクションに関する部分を編集することができる。
【００３６】
図１１は、リンカファイルエディタのＵＩを例示する図である。ウインドウ１１０１は、現在処理対象となっているセクション名を表示するウインドウである。ウインドウ１１０１はプルダウンメニューになっている。ユーザがウインドウ右部の矢印部分をクリックすると、ＣＰＵ２１０のセクション名が複数表示される。ここでユーザが他のセクション名をクリックすると、ＣＰＵ１１０はクリックされたセクション名に対応するセクションを処理対象セクションとする。チェックボックス１１０４は、オブジェクトファイルおよびリンカファイルの自動更新を指定するチェックボックスである。チェックボックス１１０４がオンになっていると、ＣＰＵ１１０は、ＨＤＤ１５０に、オブジェクトファイルおよびリンカファイルの自動更新を行うことを示すフラグを記憶する。このフラグが記憶されているときは、上述のように、ソースファイルの変更に応じてオブジェクトファイルおよびリンカファイルが自動更新される処理が行われる。チェックボックス１１０４がオフになっているときは、オブジェクトファイルおよびリンカファイルの自動更新は行われない。
【００３７】
オブジェクトファイルの自動更新が行われたときでも、ユーザは、チェックボックス１１０４をオフにすることにより、リンカファイルの内容を任意に編集することができる。ウインドウ１１０５は、処理対象セクションである「．ｒｏｄａｔａ」セクションに含まれないオブジェクトファイルを示している。ウインドウ１１０６は、「．ｒｏｄａｔａ」セクションに含まれるオブジェクトファイルを示している。ユーザは、移動ボタン１１０７および移動ボタン１１０８をクリックすることにより、所望のオブジェクトファイルを一方のウインドウから他方のウインドウに移動することができる。例えば、ユーザがウインドウ１１０５の「ｖｅｃｔｏｒ．ｏ」の表示をクリックすると、ＣＰＵ１１０は、オブジェクトファイル「ｖｅｃｔｏｒ．ｏ」を処理対象として特定する。この状態でユーザが移動ボタン１１０７をクリックすると、ＣＰＵ１１０は、「ｖｅｃｔｏｒ．ｏ」の表示をウインドウ１１０５からウインドウ１１０６に移動させる。このとき、ウインドウ１１０６において、「ｖｅｃｔｏｒ．ｏ」の表示は、「ｔｅｓｔ．ｏ」の表示の下に位置する。ユーザが移動ボタン１１０９をクリックすると、ＣＰＵ１１０は、「ｖｅｃｔｏｒ．ｏ」の表示を、「ｔｅｓｔ．ｏ」の表示の上に移動する。この状態でユーザが移動ボタン１１１０をクリックすると、ＣＰＵ１１０は、「ｖｅｃｔｏｒ．ｏ」の表示を、「ｔｅｓｔ．ｏ」の表示の下に移動する。ユーザは、このようにして、リンカファイルの内容を編集することができる。以上の処理は、図９のステップＳ２１０に対応する。
【００３８】
リンカファイルを編集した後、ユーザが、ＯＫボタン１１１１をクリックすると、ＣＰＵ１１０は、その時点のウインドウ１１０６の表示内容と適合するように、リンカファイルの内容を更新する。さらに、ＣＰＵ１１０は、更新後のリンカファイルの内容が、ターゲットであるＣＰＵ２１０のメモリ空間に適合したものであるか判断する（図９：ステップＳ２２０）。例えば、ＨＤＤ１５０がトラップベクターテーブルを含むオブジェクトファイルとして、ファイル名「ｖｅｃｔｏｒ．ｏ」を記憶していた場合、オブジェクトファイル「ｖｅｃｔｏｒ．ｏ」を、「．ｒｏｄａｔａ」セクションに追加することは、ＣＰＵ２１０のメモリ空間に適合しない（ステップＳ２２０：ＮＯ）。このような場合、ＣＰＵ１１０は、修正を促す画面をディスプレイ１７０に表示する（ステップＳ２３０）。ＣＰＵ１１０は、修正後のリンカファイルについて、ＣＰＵ２１０のメモリ空間に適合するか再度判断を行う。
【００３９】
更新後のリンカファイルの内容がターゲットのメモリ空間に適合したものである場合（ステップＳ２２０：ＹＥＳ）、ＣＰＵ１１０は、更新後のリンカファイルをＨＤＤ１５０に記憶する。こうして、リンカファイルの更新が完了する。
【００４０】
リンカファイルの更新が完了すると、ＣＰＵ１１０は、ディスプレイ１７０に、図１０のウインドウを再び表示させる。ここで、ユーザが、元に戻すボタン１００６をクリックすると、ＣＰＵ１１０は、ＨＤＤ１５０から更新後のリンカファイルを削除し、更新前のリンカファイルを元に戻す。ＨＤＤ１５０は、更新前のリンカファイルをバックアップとして記憶している。また、ユーザが、適用ボタン１００７をクリックすると、リンカファイルの更新が確定する。
【００４１】
以上で説明したように本実施形態によれば、ユーザは、ＧＵＩによりリンカファイルの編集を行うことができる。ユーザはリンカファイルに含まれる要素などを視覚的に確認することができるので、単純なタイプミスは発生しない。したがって、ソフトウェアの開発効率を向上させることができる。
【図面の簡単な説明】
【００４２】
【図１】一実施形態に係るソフトウェア開発システム１の構成を示す図である。
【図２】ＰＣ１００の機能構成を示す図である。
【図３】ＰＣ１００のハードウェア構成を示す図である。
【図４】ソフトウェア開発システム１の動作を示すフローチャートである。
【図５】オブジェクトファイルを選択するＵＩを例示する図である。
【図６】更新前後のメイクファイルの一部を例示する図である。
【図７】リンカファイル更新処理の詳細を示すフローチャートである。
【図８】更新前後のリンカファイルの一部を例示する図である。
【図９】ＧＵＩによるリンカファイルの編集処理を示すフローチャートである。
【図１０】リンカファイルエディタのＵＩを例示する図である。
【図１１】リンカファイルエディタのＵＩを例示する図である。
【符号の説明】
【００４３】
１…ソフトウェア開発システム、１００…ＰＣ、１０１…記憶部、１０２…ＧＵＩ、１０３…ソースファイル追加監視部、１０４…コンパイラ、１０５…リンカ、１０６…エディタ、１１０…ＣＰＵ、１２０…ＲＯＭ、１３０…ＲＡＭ、１４０…Ｉ／Ｆ、１５０…ＨＤＤ、１６０…キーボード・マウス、１７０…ディスプレイ、２００…マイクロコンピュータ、２１０…ＣＰＵ、２２０…ＲＡＭ、２３０…ＲＯＭ、３００…ＩＣＥ、５０１…チェックボックス、５０２…プルダウンメニュー、５０３…終了ボタン、５０４…キャンセルボタン、１００１…ウインドウ、１００２…ウインドウ、１００３…追加ボタン、１００４…編集ボタン、１００５…削除ボタン、１００６…元に戻すボタン、１００７…適用ボタン、１１０１…ウインドウ、１１０４…チェックボックス、１１０５…ウインドウ、１１０６…ウインドウ、１１０７…移動ボタン、１１０８…移動ボタン、１１０９…移動ボタン、１１１０…移動ボタン、１１１１…ＯＫボタン
【図１】
2007226739.tif 000003
【図２】
2007226739.tif 000004
【図３】
2007226739.tif 000005
【図４】
2007226739.tif 000006
【図５】
2007226739.tif 000007
【図６】
2007226739.tif 000008
【図７】
2007226739.tif 000009
【図８】
2007226739.tif 000010
【図９】
2007226739.tif 000011
【図１０】
2007226739.tif 000012
【図１１】
2007226739.tif 000013