JP2007226739A - ソフトウェア開発装置およびプログラム - Google Patents

ソフトウェア開発装置およびプログラム Download PDF

Info

Publication number
JP2007226739A
JP2007226739A JP2006050344A JP2006050344A JP2007226739A JP 2007226739 A JP2007226739 A JP 2007226739A JP 2006050344 A JP2006050344 A JP 2006050344A JP 2006050344 A JP2006050344 A JP 2006050344A JP 2007226739 A JP2007226739 A JP 2007226739A
Authority
JP
Japan
Prior art keywords
file
linker
storage means
memory space
rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006050344A
Other languages
English (en)
Other versions
JP2007226739A5 (ja
Inventor
Masaru Kai
優 甲斐
Tsutomu Nakayama
力 中山
Daichi Fujimoto
大地 藤本
Tetsuya Tazaki
徹也 田▲崎▼
Katsuhiko Watanabe
克彦 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2006050344A priority Critical patent/JP2007226739A/ja
Publication of JP2007226739A publication Critical patent/JP2007226739A/ja
Publication of JP2007226739A5 publication Critical patent/JP2007226739A5/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】プログラムやデータの追加、変更、削除時に、自動的にリンカファイルを生成できるようにする。
【解決手段】プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、複数のソースファイルを記憶するソースファイル記憶手段と、オブジェクトファイルを生成するコンパイル手段104と、オブジェクトコードの、メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、ソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段103と、リンカルール記憶手段と、ソースファイルの追加、変更、あるいは削除が検出されたとき、リンカルールに従ってリンカファイルの内容を更新するリンカファイル更新手段とを有する。
【選択図】図2

Description

本発明は、組み込み機器におけるソフトウェアの開発ツールに関する。
いわゆる組み込み機器に搭載されたCPU(Central Processing Unit)に動作させるソフトウェアを開発するには、開発者は専門の知識を要求される。例えば、開発者は、メモリ空間(メモリマップ)上におけるデータの配置、プログラムの配置などを自ら定義する必要がある。メモリ空間は、開発対象となるハードウェア(ターゲット)の構成により異なるのが通常である。したがって、開発者は、ターゲットのハードウェア構成を考慮して、データやプログラムをメモリ空間の適切な位置に配置する必要があった。これらの定義情報は、例えば、リンカファイル(あるいはリンカスクリプトファイル)と呼ばれるテキストファイルに記述される。従来、開発者は、テキストエディタを用いてリンカファイルを編集することにより、メモリ空間における配置を定義していた。
このように、開発者がいわば手作業でメモリ空間の配置を定義することは、開発者にとって煩雑な作業である。また、このように手作業でメモリ空間の配置を定義するには、開発者は、ターゲットにより異なるメモリ空間についての知識を有している必要がある。すなわち、この作業が組み込み機器用ソフトウェア開発の障壁を高くしているという問題があった。ここで、メモリ空間の配置を自動的に行う技術としては、例えば特許文献1に記載された技術がある。
特開平11−095987号公報
ここで、特許文献1は、メモリ空間の再配置を自動的に行うことにより、メモリ空間の空き領域を拡大する技術を開示している。しかし、特定のハードウェア構成に適合するようにメモリ空間における配置を決定するものではなかった。すなわち、特許文献1によっても、組み込み機器など、特定のハードウェア構成に適合するリンカファイル(メモリ空間におけるデータやプログラムの配置を定義するファイル)を生成することはできなかった。
また、開発者が手作業でリンカファイルの編集を行った場合、開発者は、単純なタイプミスや、メモリ配置の不整合を含んだリンカファイルを生成してしまうという問題があった。これらのミスは、コンパイル・ビルドやプログラムの実行を行うまで発見できないことが多く、開発効率を低下させる一因となっていた。また、プログラムやデータが追加、変更、あるいは削除された場合に、開発者は手作業でリンカファイルを書き換える必要があるという問題があった。
本発明は上述の事情に鑑みてなされたものであり、プログラムやデータの追加、変更、削除時に、自動的にリンカファイルを生成することができるソフトウェア開発技術を提供する。
上述の課題を解決するため、本発明は、固有のメモリ空間を有するプロセッサに実行させるソフトウェアを開発するソフトウェア開発装置であって、前記プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段とを有するソフトウェア開発装置を提供する。
好ましい態様において、このソフトウェア開発装置は、ユーザから、ソースファイルの追加、変更、あるいは削除の指示を受け付けるグラフィカルユーザインターフェースをさらに有してもよい。
この態様において、このソフトウェア開発装置は、前記グラフィカルユーザインターフェースが、前記リンカルール記憶手段に記憶された記述ルールの変更の指示を受け付け、前記ソフトウェア開発装置が、前記グラフィカルユーザインターフェースを介して入力された指示に従って前記リンカルール記憶手段に記憶された記述ルールを変更するリンカルール更新手段をさらに有してもよい。
別の好ましい態様において、このソフトウェア開発装置は、前記コンパイル手段におけるコンパイル条件を記述したメイクファイルを記憶するメイクファイル記憶手段と、前記メイクファイルにおける記述ルールを記憶するメイクルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記メイクルール記憶手段に記憶された記述ルールに従って前記メイクファイルの内容を更新するメイクファイル更新手段とを有し、前記コンパイル手段が、前記メイクファイル記憶手段に記憶されたメイクファイルに従ってオブジェクトファイルを生成してもよい。
また、本発明は、コンピュータ装置を、固有のメモリ空間を有するプロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段として機能させるプログラムを提供する。
以下、図面を参照して本発明の一実施形態について説明する。
図1は、本発明の一実施形態に係るソフトウェア開発システム1の構成を示す図である。マイクロコンピュータ200は、ソフトウェア開発システム1により開発されるソフトウェアを実行する電子機器、すなわち、開発対象となるターゲットである。マイクロコンピュータ200は、例えば、携帯電話機、時計、家電製品、自動販売機など、CPUとメモリを有する電子機器であればどのようなものでもよい。PC100は、マイクロコンピュータ200に実行させるソフトウェアを開発するソフトウェア開発装置である。マイクロコンピュータ200とPC100とは、ICE(In-Circuit Emulator)300を介して接続されている。ICE300は、ハードウェア(マイクロコンピュータ200)とソフトウェア(プログラム)の動作確認を行うための装置である。ICE300は、例えば以下の機能を提供する。(1)マイクロコンピュータ200にプログラムを1ステップずつ実行させる機能。(2)メモリの内容を表示したり、編集したりする機能。(3)マイクロコンピュータ200の動作を、プログラムのアドレスなど任意の条件で停止させる機能。さらに、このときのレジスタの値を表示、編集する機能。(4)プログラムの動作を表示、記録する機能。(5)デバッグ対象ハードウェア(マイクロコンピュータ200)とのインターフェース。PC100は、ICE300を介してマイクロコンピュータ200にプログラムを実行させることができる。
マイクロコンピュータ200は、次の構成を有する。CPU210は、プログラムを実行し、マイクロコンピュータ200の各部を制御する制御装置(プロセッサ)である。CPU210は固有のメモリ空間を有している。ROM(Read Only Memory)230は、CPU210が実行するプログラムおよびプログラムの実行に必要なデータを記憶する。RAM(Random Access Memory)220は、CPU210がプログラムを実行する際の作業領域として機能するメモリである。
図2は、PC100の機能構成を示す図である。記憶部101は、各種の情報を記憶する。詳細は後述するが、記憶部101は、例えば、CPU210のメモリ空間情報、メイクファイルおよびリンカファイル(リンカスクリプトファイルと呼ばれることもある)、メイクファイルおよびリンカファイルの記述ルール、ソースファイル、およびオブジェクトファイルを記憶する。GUI(Graphical User Interface)102は、ユーザからPC100に対する指示入力を受け付け、また、システムの処理状況を表示するユーザインターフェースである。ソースファイル追加監視部103は、記憶部101におけるソースファイルが追加、変更、あるいは削除されたことを監視する。ソースファイルは、CPU210に実行させる処理またはその処理に必要なデータを記述したテキスト形式のファイルである。コンパイラ104は、メイクファイルに記述された情報に基づいて、ソースファイルをコンパイルしてオブジェクトファイルを生成する。オブジェクトファイルとは、CPU210が実行可能なオブジェクトコードを含むバイナリ形式のファイルである。リンカ105は、リンカファイルに記述された情報に基づいて、複数のオブジェクトファイルから、CPU210が実行可能なソフトウェアを生成する。エディタ106は、リンカファイルを編集する機能を有する。
図3は、PC100のハードウェア構成を示す図である。CPU110は、PC100の各部を制御する制御装置である。ROM120は、PC100の起動に必要なプログラムおよびデータを記憶する。RAM130は、CPU110がプログラムを実行する際の作業領域として機能する。I/F140は、ICE300など他の機器との間でデータや制御信号の入出力を行うインターフェースである。HDD(Hard Disk Drive)150は、プログラムおよび各種データを記憶する記憶装置である。キーボード・マウス160は、ユーザがPC100に対して指示入力を行う入力装置である。ディスプレイ170は、プログラムの処理状況などを表示する出力装置である。HDD150は、CPU210に実行させるプログラムを含むソフトウェアを開発するソフトウェア開発プログラムを記憶している。CPU110がソフトウェア開発プログラムを実行することにより、PC100は、図2に示される機能構成を具備する。図2に示される各機能構成要素は、例えば、プログラムモジュールにより実現される。
図4は、ソフトウェア開発システム1の動作を示すフローチャートである。ステップS100において、ユーザは、ターゲット(CPU210)のメモリ空間において特定の位置に配置する必要があるオブジェクトファイルを指定する。例えば、あるCPUにおいては、トラップベクターテーブル(Trap Vector Table)と呼ばれるテーブルを、すべてのプログラムの先頭に配置しなければならない。したがって、ユーザは、トラップベクターテーブルを含むオブジェクトファイルを指定する必要がある。本実施形態において、CPU210のメモリ空間は、複数の領域に区分されている。各領域を「セクション」という。特に、すべてのプログラムの先頭に位置するセクションを、「.vector」セクションという。
図5は、トラップベクターテーブルを含むオブジェクトファイルを選択するUIを例示する図である。ユーザがキーボード・マウス160を操作することにより、チェックボックス501にチェックを付けると、指定されたファイルが「.vector」セクションに割り当てられる設定が有効になる。図5には、チェックボックス501にチェックが付けられた状態が示されている。なお、以下の説明においてチェックボックスにチェックを付けることを「チェックボックスをオンにする」という。逆に、チェックが付けられたチェックボックスからチェックを外すことを、「チェックボックスをオフにする」という。
チェックボックスをオンにすると、ユーザは、プルダウンメニュー502により、トラップベクターテーブルを含むオブジェクトファイルを指定することができる。HDD150は、トラップベクターテーブルを含むオブジェクトファイルの候補を記憶している。ユーザがプルダウンメニュー502の右端にある矢印部分をクリックすると、CPU110は、オブジェクトファイルの候補をディスプレイ170に表示させる。図5の例では、「vector.o」および「boot.o」の2つのファイルが候補として表示されている。ユーザは、キーボード・マウス160を操作することにより、これらのうちから一つを選択する。あるいは、ユーザは、キーボード・マウス160を操作して、これらの候補とは別のファイル名を新たに入力してもよい。ユーザが終了ボタン503をクリックすると、CPU110は、ユーザに指定されたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にHDD150に記憶する。
ユーザがキャンセルボタン504をクリックすると、CPU110は、トラップベクターテーブルを含むファイル名を更新しない。また、チェックボックスをオフにすると、CPU110は、あらかじめ決められたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にHDD150に記憶する。あるいは、チェックボックスをオフにした場合、CPU210は、後述するリンクの際に、トラップベクターテーブルを含むファイルを特定する情報の入力を促す画面をディスプレイ170に表示させてもよい。ユーザは、表示される画面に従ってトラップベクターテーブルを指定する。CPU110は、この時点で、ユーザに指定されたファイル名を、トラップベクターテーブルを含むファイルであることを示す識別子と共にHDD150に記憶する。
再び図4を参照して説明する。ステップS110において、CPU110は、ソースファイルが変更されたか判断する。CPU110は、現在処理対象となっているプロジェクトに含まれるソースファイルの数、ファイルサイズ、あるいはファイル名のうち一または複数の情報を定期的に監視している。ここで、プロジェクトとは、開発対象となるソフトウェアの生成に必要なソースファイル、オブジェクトファイル、およびライブラリの集合をいう。ライブラリとは、オブジェクトファイルのうち、特に、他のプログラムから利用できるように部品化されたものをいう。CPU110は、例えば、定期的に監視している情報の差分に基づいてソースファイルに変更(追加あるいは削除も含む)があったか判断する。
ソースファイルに変更があった場合(ステップS110:YES)、ステップS120において、CPU110は、メイクファイルの更新を行う。HDD150は、メイクファイルの自動更新を行うための記述ルールを記憶している。CPU110は、HDD150に記憶された記述ルールに従ってメイクファイルを更新する。
図6は、更新前後のメイクファイルの一部を例示する図である。なお、図6においては、変更に関係する部分のみ示されており、変更に関係しない部分については省略されている。記述ルールは、例えば、変更されたソースファイルに対応するオブジェクトファイルのファイル名を決定するルールを含んでいる。ファイル名を決定するルールは、例えば、ソースファイル名の特定の文字列(例えば「.c」)を、別の文字列(例えば「.o」)に置換するルールである。例えば「test.c」というファイル名のソースファイルが追加されると、CPU110は、対応するオブジェクトファイル名を「test.o」と決定する。また、記述ルールは、追加されたソースファイルに対応するオブジェクトファイルのファイル名を、メイクファイル中の所定の文字列(例えば、「OBJS=」)の後ろの所定の位置(例えば、「vector.o」の前)に配置するというルールを含んでいる。
さらに、記述ルールは、メイクファイル中の所定の位置に、追加されたソースファイル名および対応するオブジェクトファイル名を含む文字列を追加するルールを含んでいる。図6に示される例では、以下の文字列が追加されている。なお、「(ソースファイル名)」および「(オブジェクトファイル名)」は、追加されたソースファイル名および対応するオブジェクトファイル名を示す。
##(ソースファイル名)
(オブジェクトファイル名):(ソースファイル名)
$(CC_KFILT)$(CFLAGS) −o $@ $<
$(DEPCMD_CC)
あるソースファイルが削除された場合の処理は、ソースファイルが追加されたときの処理とほぼ逆の処理になる。記述ルールは、削除されたソースファイル名および対応するオブジェクトファイル名を含む特定の文字列を削除するルールを含んでいる。例えば、この前の段落で示された文字列が削除される。また、記述ルールは、削除されたソースファイルに対応するオブジェクトファイルのファイル名を、メイクファイル中の所定の文字列(例えば、「OBJS=」)の後ろの所定の位置(例えば、「vector.o」の前)から削除するというルールを含んでいる。CPU110は、これらの記述ルールに従ってメイクファイルを更新する。
また、あるソースファイル名が変更された場合、CPU110は、メイクファイル中に含まれる変更前のソースファイル名およびオブジェクトファイル名を、変更後のソースファイル名およびオブジェクトファイル名に置換する。
再び図4を参照して説明する。メイクファイルを更新すると、ステップS130において、CPU110は、追加されたソースファイルをコンパイルして、オブジェクトファイルを生成する。HDD150は、生成されたオブジェクトファイルを記憶する。次に、ステップS140において、CPU110は、リンカファイルを更新する。HDD150は、リンカファイルの自動更新を行うための記述ルールを記憶している。CPU110は、HDD150に記憶された記述ルールに従ってリンカファイルを更新する。
図7は、リンカファイル更新処理の詳細を示すフローチャートである。ステップS141において、CPU110は、処理対象となっているプロジェクト内のオブジェクトファイルおよびライブラリをすべて検出する。次に、ステップS142において、CPU110は、指定されたオブジェクトファイルを、CPU210のメモリ空間上の指定された位置(「.vector」セクション)に配置する。指定されたオブジェクトファイルとは、ステップS100において指定されたオブジェクトファイルである。次に、ステップS143において、CPU110は、その他のオブジェクトファイルおよびライブラリを、検出順に、CPU210のメモリ空間上に配置する。CPU110は、オブジェクトファイルおよびライブラリを特定する識別子と、検出順を示す情報と共にRAM130に記憶する。次に、ステップS144において、CPU110は、上記の配置に対応する文字列をリンカファイルに出力する。リンカファイルの記述ルールは、メモリ空間上の配置を文字列に変換するルールを含んでいる。
図8は、更新前後のリンカファイルの一部を例示する図である。メイクファイルの場合と同様に、追加されたオブジェクトファイルに対応する文字列が、所定の位置に挿入されている。また、リンカファイルは、ターゲットであるCPU210のメモリ空間に依存した情報を含んでいる。HDD150は、CPU210のメモリ空間の構成を示すメモリ空間情報を記憶している。リンカファイルの記述ルールは、メモリ空間情報の少なくとも一部をリンカファイルに含めるルールを記憶している。例えば、CPU210のメモリ空間情報は、「.bss」セクションがメモリ空間のアドレス「00000000」から開始するという情報、および「.vector」セクションがアドレス「00C00000」から開始するという情報を含んでいる。CPU210は、メモリ空間情報および記述ルールに従って、これらの情報をリンカファイルに含めるように更新する。
再び図4を参照して説明する。リンカファイルを更新すると、ステップS150において、CPU110は、リンクを行う。すなわち、リンカファイルに従って、オブジェクトファイルおよびライブラリに含まれるオブジェクトコードをCPU210のメモリ空間に配置し、CPU210が実行可能な実行ファイル(ソフトウェア)を生成する。
以上で説明したように、本実施形態によれば、ユーザ(開発者)は、GUIに従ってプロジェクトにソースファイルを追加するだけでよく、メイクファイルやリンカファイル(リンカスクリプトファイル)を手作業で編集する必要がない。すなわち、PC100は、あらかじめ決められた記述ルールにしたがって、メイクファイルの内容を更新する。さらに、PC100は、自動的にコンパイルを行う。こうして、オブジェクトファイルが自動的に生成され、また、CPU210のメモリ空間に適合したリンカファイルが自動的に生成される。したがって、ユーザは、CPU210のメモリ空間について専門的知識がなくても、CPU210に実行させるソフトウェアを開発することができる。
また、本実施形態に係るソフトウェア開発プログラムは、PC100にGUIによるリンカファイルの編集機能も提供する。すなわち、ユーザ(開発者)は、上記のように自動生成されたリンカファイルを、GUIを介して編集することができる。
図9は、GUIによるリンカファイルの編集処理を示すフローチャートである。CPU110は、ユーザの指示入力に応じて、リンカファイルエディタを起動する。リンカファイルエディタが起動されると、ステップS200において、CPU110は、HDD150からリンカファイルを読み込む。CPU110は、読み込んだリンカファイルに対応する画像(ユーザインターフェース、UI)をディスプレイ170に表示させる。
図10は、リンカファイルエディタのUIを例示する図である。ウインドウ1001は、ソフトウェア開発プログラムの機能モジュールを表示するウインドウである。例えば、ユーザが、「GNU33 Linker Script Settings」の表示をクリックすると、CPU110はリンカファイルエディタを起動する。ウインドウ1002は、CPU210のメモリ空間情報を表示するウインドウである。VMA(Virtual Memory Address)のフィールドは実行時のアドレスを、LMA(Load Memory Address)のフィールドは読み込み時のアドレスを示している。セクション名のフィールドは、メモリ空間におけるセクション名を示している。図10の例では、例えば、「.bss」セクションがアドレス「00000000」から、「.vector」セクションがアドレス「00C00000」から開始することが示されている。ユーザは、キーボード・マウス160を操作することにより、複数のセクションのうち任意のセクションを処理対象のセクションとして指定することができる。例えば、ユーザが、「.rodata」の表示をクリックすると、CPU110は、「.rodata」セクションを処理対象として特定する。CPU110は、例えば背景色を他のセクションと異なる色で表示する等の方法により、処理対象のセクション名をユーザに明示する。
追加ボタン1003、編集ボタン1004、削除ボタン1005は、セクション名の追加、編集、削除を行うためのボタンである。例えば「.rodata」セクションが処理対象セクションとして指定されている状態で、ユーザが追加ボタン1003をクリックすると、「.rodata」の上(または下)に、新たなセクションが挿入される。また、「.rodata」セクションが処理対象セクションとして指定されている状態で、ユーザが削除ボタン1005をクリックすると、「.rodata」セクションが削除される。
さらに、「.rodata」セクションが処理対象セクションとして指定されている状態で、ユーザが編集ボタン1004をクリックすると、CPU110は、次に説明する別のウインドウをディスプレイ170に表示させる。ユーザは、この画面上を操作することにより、リンカファイルのうち、「.rodata」セクションに関する部分を編集することができる。
図11は、リンカファイルエディタのUIを例示する図である。ウインドウ1101は、現在処理対象となっているセクション名を表示するウインドウである。ウインドウ1101はプルダウンメニューになっている。ユーザがウインドウ右部の矢印部分をクリックすると、CPU210のセクション名が複数表示される。ここでユーザが他のセクション名をクリックすると、CPU110はクリックされたセクション名に対応するセクションを処理対象セクションとする。チェックボックス1104は、オブジェクトファイルおよびリンカファイルの自動更新を指定するチェックボックスである。チェックボックス1104がオンになっていると、CPU110は、HDD150に、オブジェクトファイルおよびリンカファイルの自動更新を行うことを示すフラグを記憶する。このフラグが記憶されているときは、上述のように、ソースファイルの変更に応じてオブジェクトファイルおよびリンカファイルが自動更新される処理が行われる。チェックボックス1104がオフになっているときは、オブジェクトファイルおよびリンカファイルの自動更新は行われない。
オブジェクトファイルの自動更新が行われたときでも、ユーザは、チェックボックス1104をオフにすることにより、リンカファイルの内容を任意に編集することができる。ウインドウ1105は、処理対象セクションである「.rodata」セクションに含まれないオブジェクトファイルを示している。ウインドウ1106は、「.rodata」セクションに含まれるオブジェクトファイルを示している。ユーザは、移動ボタン1107および移動ボタン1108をクリックすることにより、所望のオブジェクトファイルを一方のウインドウから他方のウインドウに移動することができる。例えば、ユーザがウインドウ1105の「vector.o」の表示をクリックすると、CPU110は、オブジェクトファイル「vector.o」を処理対象として特定する。この状態でユーザが移動ボタン1107をクリックすると、CPU110は、「vector.o」の表示をウインドウ1105からウインドウ1106に移動させる。このとき、ウインドウ1106において、「vector.o」の表示は、「test.o」の表示の下に位置する。ユーザが移動ボタン1109をクリックすると、CPU110は、「vector.o」の表示を、「test.o」の表示の上に移動する。この状態でユーザが移動ボタン1110をクリックすると、CPU110は、「vector.o」の表示を、「test.o」の表示の下に移動する。ユーザは、このようにして、リンカファイルの内容を編集することができる。以上の処理は、図9のステップS210に対応する。
リンカファイルを編集した後、ユーザが、OKボタン1111をクリックすると、CPU110は、その時点のウインドウ1106の表示内容と適合するように、リンカファイルの内容を更新する。さらに、CPU110は、更新後のリンカファイルの内容が、ターゲットであるCPU210のメモリ空間に適合したものであるか判断する(図9:ステップS220)。例えば、HDD150がトラップベクターテーブルを含むオブジェクトファイルとして、ファイル名「vector.o」を記憶していた場合、オブジェクトファイル「vector.o」を、「.rodata」セクションに追加することは、CPU210のメモリ空間に適合しない(ステップS220:NO)。このような場合、CPU110は、修正を促す画面をディスプレイ170に表示する(ステップS230)。CPU110は、修正後のリンカファイルについて、CPU210のメモリ空間に適合するか再度判断を行う。
更新後のリンカファイルの内容がターゲットのメモリ空間に適合したものである場合(ステップS220:YES)、CPU110は、更新後のリンカファイルをHDD150に記憶する。こうして、リンカファイルの更新が完了する。
リンカファイルの更新が完了すると、CPU110は、ディスプレイ170に、図10のウインドウを再び表示させる。ここで、ユーザが、元に戻すボタン1006をクリックすると、CPU110は、HDD150から更新後のリンカファイルを削除し、更新前のリンカファイルを元に戻す。HDD150は、更新前のリンカファイルをバックアップとして記憶している。また、ユーザが、適用ボタン1007をクリックすると、リンカファイルの更新が確定する。
以上で説明したように本実施形態によれば、ユーザは、GUIによりリンカファイルの編集を行うことができる。ユーザはリンカファイルに含まれる要素などを視覚的に確認することができるので、単純なタイプミスは発生しない。したがって、ソフトウェアの開発効率を向上させることができる。
一実施形態に係るソフトウェア開発システム1の構成を示す図である。 PC100の機能構成を示す図である。 PC100のハードウェア構成を示す図である。 ソフトウェア開発システム1の動作を示すフローチャートである。 オブジェクトファイルを選択するUIを例示する図である。 更新前後のメイクファイルの一部を例示する図である。 リンカファイル更新処理の詳細を示すフローチャートである。 更新前後のリンカファイルの一部を例示する図である。 GUIによるリンカファイルの編集処理を示すフローチャートである。 リンカファイルエディタのUIを例示する図である。 リンカファイルエディタのUIを例示する図である。
符号の説明
1…ソフトウェア開発システム、100…PC、101…記憶部、102…GUI、103…ソースファイル追加監視部、104…コンパイラ、105…リンカ、106…エディタ、110…CPU、120…ROM、130…RAM、140…I/F、150…HDD、160…キーボード・マウス、170…ディスプレイ、200…マイクロコンピュータ、210…CPU、220…RAM、230…ROM、300…ICE、501…チェックボックス、502…プルダウンメニュー、503…終了ボタン、504…キャンセルボタン、1001…ウインドウ、1002…ウインドウ、1003…追加ボタン、1004…編集ボタン、1005…削除ボタン、1006…元に戻すボタン、1007…適用ボタン、1101…ウインドウ、1104…チェックボックス、1105…ウインドウ、1106…ウインドウ、1107…移動ボタン、1108…移動ボタン、1109…移動ボタン、1110…移動ボタン、1111…OKボタン

Claims (5)

  1. 固有のメモリ空間を有するプロセッサに実行させるソフトウェアを開発するソフトウェア開発装置であって、
    前記プロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、
    前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、
    前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、
    前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、
    前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、
    前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、
    前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、
    前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と
    前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段と
    を有するソフトウェア開発装置。
  2. ユーザから、ソースファイルの追加、変更、あるいは削除の指示を受け付けるグラフィカルユーザインターフェースをさらに有する請求項1に記載のソフトウェア開発装置。
  3. 前記グラフィカルユーザインターフェースが、前記リンカルール記憶手段に記憶された記述ルールの変更の指示を受け付け、
    前記ソフトウェア開発装置が、前記グラフィカルユーザインターフェースを介して入力された指示に従って前記リンカルール記憶手段に記憶された記述ルールを変更するリンカルール更新手段をさらに有する
    ことを特徴とする請求項2に記載のソフトウェア開発装置。
  4. 前記コンパイル手段におけるコンパイル条件を記述したメイクファイルを記憶するメイクファイル記憶手段と、
    前記メイクファイルにおける記述ルールを記憶するメイクルール記憶手段と、
    前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記メイクルール記憶手段に記憶された記述ルールに従って前記メイクファイルの内容を更新するメイクファイル更新手段と
    を有し、
    前記コンパイル手段が、前記メイクファイル記憶手段に記憶されたメイクファイルに従ってオブジェクトファイルを生成する
    ことを特徴とする請求項1に記載のソフトウェア開発装置。
  5. コンピュータ装置を、
    固有のメモリ空間を有するプロセッサのメモリ空間の構成を示すメモリ空間情報を記憶するメモリ空間情報記憶手段と、
    前記プロセッサに実行させる処理またはその処理に必要なデータを記述した複数のソースファイルを記憶するソースファイル記憶手段と、
    前記ソースファイル記憶手段に記憶されたソースファイルから、前記プロセッサが実行可能なオブジェクトコードを含むオブジェクトファイルを生成するコンパイル手段と、
    前記コンパイル手段により生成された複数のオブジェクトファイルを記憶するオブジェクトファイル記憶手段と、
    前記複数のオブジェクトファイルに含まれるオブジェクトコードの、前記メモリ空間における配置を決定する情報を記述したリンカファイルを記憶するリンカファイル記憶手段と、
    前記ソースファイル記憶手段に記憶されたソースファイルが、追加、変更、あるいは削除されたことを監視する監視手段と、
    前記リンカファイルにおける記述ルールを記憶するリンカルール記憶手段と、
    前記監視手段によりソースファイルの追加、変更、あるいは削除が検出されたとき、前記リンカルール記憶手段に記憶された記述ルールに従って前記リンカファイルの内容を更新するリンカファイル更新手段と
    前記複数のオブジェクトファイルおよび前記リンカファイルから、前記プロセッサが実行可能なソフトウェアを生成するリンク手段と
    して機能させるプログラム。
JP2006050344A 2006-02-27 2006-02-27 ソフトウェア開発装置およびプログラム Withdrawn JP2007226739A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006050344A JP2007226739A (ja) 2006-02-27 2006-02-27 ソフトウェア開発装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006050344A JP2007226739A (ja) 2006-02-27 2006-02-27 ソフトウェア開発装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2007226739A true JP2007226739A (ja) 2007-09-06
JP2007226739A5 JP2007226739A5 (ja) 2009-03-12

Family

ID=38548468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006050344A Withdrawn JP2007226739A (ja) 2006-02-27 2006-02-27 ソフトウェア開発装置およびプログラム

Country Status (1)

Country Link
JP (1) JP2007226739A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016192152A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2016192154A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03198127A (ja) * 1989-12-27 1991-08-29 Fujitsu Ltd コンピュータプログラムの開発工程管理装置
JPH11338709A (ja) * 1998-03-27 1999-12-10 Nec Corp リンクディレクティブファイルの作成方法及び該ファイル作成用ツ―ル

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03198127A (ja) * 1989-12-27 1991-08-29 Fujitsu Ltd コンピュータプログラムの開発工程管理装置
JPH11338709A (ja) * 1998-03-27 1999-12-10 Nec Corp リンクディレクティブファイルの作成方法及び該ファイル作成用ツ―ル

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016192152A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2016192154A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置

Similar Documents

Publication Publication Date Title
JP3729640B2 (ja) 画面フローによるビジュアルプログラミング装置
JP2795244B2 (ja) プログラムデバッグシステム
US9632754B2 (en) Auto generation and linkage of source code to test cases
JP3407809B2 (ja) コンピュータ・アプリケーション・ソフトウェアの自動化試験システム
US20070245339A1 (en) Creating documentation screenshots on demand
JP2006277435A (ja) ソースファイルバージョン管理システム
JP2005267644A (ja) 共通言語ランタイム言語におけるリソースのアドレスサポート
US7856623B2 (en) Method and system for providing an enumeration assistant
JP2007226739A (ja) ソフトウェア開発装置およびプログラム
US8561057B2 (en) Information processing apparatus, processing method, and computer-readable recording medium having processing program recorded thereon
US20240256268A1 (en) Updating a deployed app method and system
JP4767309B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
JP4977681B2 (ja) データパターン/テストデータ生成・蓄積方法及びシステム
JP2009009494A (ja) 情報処理装置、情報処理方法、制御プログラム
JP2007257077A (ja) プログラムデバッグ装置、プログラムデバッグ方法およびデバッグプログラム
JP2006338399A (ja) プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体
JP4983027B2 (ja) チェックプログラム及びチェック方法
JP2020091766A (ja) 電子計算機、方法及びプログラム
JP5958655B2 (ja) 試験プログラム、試験装置及び試験方法
JP7479188B2 (ja) デバッグ支援装置、デバッグ支援方法およびプログラム
JP4387288B2 (ja) 制御用表示装置、エディタ装置、プログラムおよび記録媒体
JP2013137716A (ja) マクロ展開装置及びプログラム
JP2006268292A (ja) テンプレート編集装置およびテンプレート編集用プログラム
JP2017091027A (ja) システム開発支援システム
JPH11259280A (ja) プログラム開発支援装置及びコンピュータシステムに適用されるプログラムを記録した記録媒体

Legal Events

Date Code Title Description
A521 Written amendment

Effective date: 20090122

Free format text: JAPANESE INTERMEDIATE CODE: A523

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110810

A131 Notification of reasons for refusal

Effective date: 20110920

Free format text: JAPANESE INTERMEDIATE CODE: A131

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20111121