(57)【要約】【課題】新システムを開発時にコントローラモデルの再利用を可能にすること【解決手段】モデルベース開発支援部１００は、ターゲットコントローラを模擬するコントローラモデルから、汎用周辺ＩＯモデル情報１６０と、デバイス固有の入出力に応じた処理に書き換え可能な置換命令を有するデバイス非依存ソースコード１５０を生成する。デバイスドライバー生成部２００は、特定のデバイスに応じた固有のデバイスドライバーソースコード２１０を生成する。デバイス依存ソースコード生成部３００は、汎用周辺ＩＯモデル情報１６０と、ターゲットコントローラを構成するデバイス各々に固有の入出力情報であるデバイス周辺ＩＯ情報２２０と、に基づいて置換命令を書き換えたソースコードを生成する。当該ソースコードと、デバイスドライバーソースコード２１０と、を組み合わせたデバイス依存ソースコード４００を生成する。【選択図】図１
2011204087.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットコントローラを模擬するコントローラモデルに基づいて、前記ターゲットターゲットコントローラを構成するデバイスの入出力にかかる汎用的な性質を示す汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス固有の入出力に応じた処理に書き換え可能な置換命令を有するデバイス非依存ソースコードと、を生成するモデルベース開発支援部と、
前記ターゲットコントローラを構成する特定のデバイスに応じた固有のソースコードであるデバイスドライバーソースコードを生成するデバイスドライバー生成部と、
前記汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス各々に固有の入出力情報であるデバイス周辺ＩＯ情報と、に基づいて前記置換命令を前記特定のデバイスの入出力に対応した命令に書き換えたソースコードを生成すると共に、生成した当該ソースコードと、前記デバイスドライバーソースコードと、を組み合わせたデバイス依存ソースコードを生成するデバイス依存ソースコード生成部と、を備えるソースコード生成システム。
【請求項２】
前記デバイスドライバー生成部は、指定された特定のデバイスにかかる前記デバイス周辺ＩＯ情報を抽出し、
前記デバイス依存ソースコード生成部は、抽出された当該デバイス周辺ＩＯ情報を用いて前記デバイス依存ソースコードを生成することを特徴とする請求項１に記載のソースコード生成システム。
【請求項３】
前記汎用周辺ＩＯモデル情報及び前記周辺ＩＯ情報は、ポート種別、端子情報、及びプルアップ設定のうち少なくとも１つに関する情報を含み、
前記デバイス依存ソースコード生成部は、前記汎用周辺ＩＯモデル情報と対応する前記周辺ＩＯ情報を抽出し、抽出した情報に応じて前記置換命令を書き換える置換ルールを生成することを特徴とする請求項１または請求項２に記載のソースコード生成システム。
【請求項４】
前記モデルベース開発部は、置換用のコメントを任意の命令に付与することにより前記置換命令であるか否かを識別することを特徴とする請求項１乃至請求項３のいずれか１項に記載のソースコード生成システム。
【請求項５】
前記置換命令を無効化したうえで前記デバイス依存ソースコード内に記述を残すか否かを前記デバイス依存ソースコード生成部に対して外部から指定できることを特徴とする請求項１乃至請求項４のいずれか１項に記載のソースコード生成システム。
【請求項６】
前記ソースコード生成システムは、前記置換ルールを記憶するためのライブラリを備え、
前記デバイス依存ソースコード生成部は、前記ライブラリを参照可能に構成されたことを特徴とする請求項３乃至請求項５のいずれか１項に記載のソースコード生成システム。
【請求項７】
ターゲットコントローラを模擬するコントローラモデルに基づいて、前記ターゲットターゲットコントローラを構成するデバイスの入出力にかかる汎用的な性質を示す汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス固有の入出力に応じた処理に書き換え可能な置換命令を有するデバイス非依存ソースコードと、を生成し、
前記ターゲットコントローラを構成する特定のデバイスに応じた固有のソースコードであるデバイスドライバーソースコードを生成し、
前記汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス各々に固有の入出力情報であるデバイス周辺ＩＯ情報と、に基づいて前記置換命令を前記特定のデバイスの入出力に対応した命令に書き換えたソースコードを生成すると共に、生成した当該ソースコードと、前記デバイスドライバーソースコードと、を組み合わせたデバイス依存ソースコードを生成するソースコード生成方法。
【請求項８】
指定された特定のデバイスにかかる前記デバイス周辺ＩＯ情報のみを抽出し、
抽出された当該デバイス周辺ＩＯ情報を用いて前記デバイス依存ソースコードを生成することを特徴とする請求項７に記載のソースコード生成方法。
【請求項９】
前記汎用周辺ＩＯモデル情報及び前記周辺ＩＯ情報は、ポート種別、端子情報、及びプルアップ設定のうち少なくとも１つに関する情報を含み、
前記汎用周辺ＩＯモデル情報と対応する前記周辺ＩＯ情報を抽出し、抽出した情報に応じて前記置換命令を書き換える置換ルールを生成することを特徴とする請求項７または請求項８に記載のソースコード生成方法。
【請求項１０】
置換用のコメントを任意の命令に付与することにより前記置換命令であるか否かを識別することを特徴とする請求項７乃至請求項９のいずれか１項に記載のソースコード生成方法。
【請求項１１】
前記置換命令を無効化したうえで前記デバイス依存ソースコード内に記述を残すか否かを外部から指定できることを特徴とする請求項７乃至請求項１０のいずれか１項に記載のソースコード生成方法。
【請求項１２】
前記置換ルールを記憶するためのライブラリを備え、
前記ライブラリに格納された置換ルール、または生成した置換ルールの少なくともいずれか一方を用いて前記デバイス依存ソースコードを生成する特徴とする請求項９乃至請求項１１のいずれか１項に記載のソースコード生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソースコード生成システム及びソースコード生成方法に関し、特にデバイスに依存した処理を含んだソースコードを生成するソースコード生成システム及びソースコード生成方法に関する。
【背景技術】
【０００２】
自動車の制御に用いられるＥＣＵ（Electronic Control Unit）の開発を行うために、モデルベースの開発手法が用いられる。モデルベースの開発手法は、従来のソフトウェア開発フロー（たとえば、ウォーターフォール開発プロセス）に代わって用いられる手法である。モデルベースの開発は、ＥＣＵ制御ソフトウェアの開発ＴＡＴ（turnaround time）を短縮するために用いられる。モデルベース開発を行う場合、科学技術計算ソフトウェアであるＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）が広く用いられている。
【０００３】
モデルベース開発では、実現する機能仕様を抽象的なブロック線図などにより記述したモデルを作成する。このモデルを基にソフトウェア設計を行う。モデルに対してシミュレーションを行うことにより、期待通りの機能が実現できているか否かを確認する。シミュレーションによるモデルの動作検証が正常に終了した場合、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋのオートコード生成機能によって、モデルからソースコードを生成することが可能である。
【０００４】
しかし、オートコード生成機能により生成されたソースコードには、組み込み用のマイクロプロセッサであるＭＣＵ（Micro Control Unit）の周辺ＩＯを制御する処理を記述したソースコードが含まれない。そのため、実際のＭＣＵを用いた処理において動作するソースコードを作成するためには、ＭＣＵの周辺ＩＯを制御するソースコードを追加する必要がある。近年のＥＣＵは実現する機能が多いため、開発するソースコードの量が１００万行を超えるほど大規模になることも少なくない。これに伴い、周辺ＩＯを制御するためのソースコードの開発も大規模なものになる。開発規模の大規模化により、当該周辺ＩＯを制御するためのソースコードを追加するために多大な期間と工数が必要となる。当該開発期間と開発工数を削減するために、モデルから周辺ＩＯを制御するソースコードをも自動生成することが望まれている。
【０００５】
特許文献１には、デバイスドライバー等のハードウェアに依存する部分についてもソースコードの自動生成を可能とするシミュレーションシステムが記載されている。図１６は特許文献１にかかるシミュレーションシステムを用いて設計するターゲットボード、及び当該ターゲットボードが制御する処理部（スイッチ部４２０、モータ部４３０）を示している。モデルベース開発では、図１６に示したターゲットボード４１０等に関するシミュレーションモデル（図１７）をＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋを用いて作成する。
【０００６】
シミュレーションモデル５００は、ターゲットボード４１０を模擬するコントローラモデル５１０と、スイッチ部４２０を模擬するスイッチモデル５２０と、モータ部４３０を模擬するパワーウインドウモデル５３０とを有する。コントローラモデル５１０、スイッチモデル５２０、及びパワーウインドウモデル５３０はモデルベース開発補助ブロック（ＣＡＮブロック）を備える。モデルベース開発補助ブロックは、デバイスドライバー等のハードウェアに依存する部分についてもソースコードの自動生成を可能とする処理ブロックである。
【０００７】
モデルベース開発処理ブロックの構成を図１８に示す。モデルベース開発処理ブロックは、シミュレーション時規定情報保持部６１０と、ドライバーインターフェイス部６２０と、ライブラリ７００と、を備える。シミュレーション時規定情報保持部６１０は、ターゲットボード４１０等のシミュレーションを行った際に算出された入出力信号・情報を規定した情報を保持する。ここで、対応するモデルベース開発補助ブロック（たとえばＣＡＮブロック５２０ＢとＣＡＮブロック５３０Ｂ）はシミュレーション時規定情報保持部内に同一の情報を持つ。ライブラリ７００には、ターゲットボード４１０に搭載され得る各種ＣＰＵ対応のデバイスドライバーが格納される。ドライバーインターフェイス部６２０は、ライブラリ７００にアクセスし、ターゲットボード４１０に搭載される各種ＣＰＵに対応するデバイスドライバーへのインターフェイスとなる処理部である。上述の構成により、ドライバーインターフェイス部６２０に対応する部分のみが自動コード生成され、ライブラリ７００内のデバイスドライバーは予め準備されたコードが用いられる。これにより、ハードウェアに依存するコードをエンドユーザが作成する必要がなくなる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−７７４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載のシミュレーションシステムによっては、新しいシステムを開発する場合に、コントローラモデルの修正したうえで、再シミュレーションを行う必要が生じる。この結果、開発期間が長くなるという問題を生じる。以下に、当該問題の詳細を説明する。
【００１０】
特許文献１に記載のシミュレーションシステムにより作成したシミュレーションモデル（図１７）を再利用して、新たなシミュレーションモデルを作成することを検討する。ここで新たに作成するコントローラモデル５１０に対応するターゲットボード４１０に搭載されるＣＰＵが、既存のコントローラモデル５１０に対応するターゲットボード４１０に搭載されるＣＰＵと異なる場合、前述のドライバーインターフェイス部６２０の変更を行う必要がある。これは、ドライバーインターフェイス部６２０が参照するライブラリ７００内のデバイスドライバーを差し替え必要があるためである。ドライバーインターフェイス部６２０の変更を行ったことにより、動作確認のためのシミュレーションを再度行う必要がある。このように、コントローラモデルに搭載されるＣＰＵが変更するたびにドライバーインターフェイス部６２０の変更、及びシミュレーションの再実行が必要となるため、開発期間が長くなる恐れがある。
【課題を解決するための手段】
【００１１】
本発明にかかるソースコード生成システムの一態様は、ターゲットコントローラを模擬するコントローラモデルに基づいて、前記ターゲットターゲットコントローラを構成するデバイスの入出力にかかる汎用的な性質を示す汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス固有の入出力に応じた処理に書き換え可能な置換命令を有するデバイス非依存ソースコードと、を生成するモデルベース開発支援部と、前記ターゲットコントローラを構成する特定のデバイスに応じた固有のソースコードであるデバイスドライバーソースコードを生成するデバイスドライバー生成部と、前記汎用周辺ＩＯモデル情報と、前記ターゲットコントローラを構成するデバイス各々に固有の入出力情報であるデバイス周辺ＩＯ情報と、に基づいて前記置換命令を前記特定のデバイスの入出力に対応した命令に書き換えたソースコードを生成すると共に、生成した当該ソースコードと、前記デバイスドライバーソースコードと、を組み合わせたデバイス依存ソースコードを生成するデバイス依存ソースコード生成部と、を備えるものである。
【００１２】
本発明においては、コントローラモデルを用いることにより、ターゲットコントローラの動作検証を行うことができる。モデルベース開発支援部は、コントローラモデルからデバイスに依存する処理を含まない汎用周辺ＩＯモデル情報と、デバイス非依存ソースコードとを生成する。デバイス依存ソースコード生成部は、デバイス固有のソースコードであるデバイスドライバーソースコードと、デバイスに依存しない汎用周辺ＩＯモデル情報及びデバイス非依存ソースコードと、からデバイスに固有のデバイス依存ソースコードを生成する。これにより、動作検証を行ったコントローラモデルを流用しつつ、デバイス固有のソースコードを生成することが可能になる。コントローラモデルの修正が不要となるため、開発期間の短縮が可能となる。
【発明の効果】
【００１３】
本発明によれば、新しいシステムを開発する場合に、コントローラモデルの再利用が可能なソースコード生成システム及びソースコード生成方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるソースコード生成システムのブロック図である。
【図２】実施の形態１にかかる汎用周辺ＩＯ情報ブロックの構成図である。
【図３】実施の形態１にかかる汎用周辺ＩＯ情報ブロック用シミュレーションモデルの概念図である。
【図４】実施の形態１にかかるコントローラモデルの構成図である。
【図５】実施の形態１にかかるデバイス非依存周辺ＩＯソースコードをＣ言語のソースプログラムで表した例である。
【図６】実施の形態１にかかる置換コメントの情報に関する図である。
【図７】実施の形態１にかかる汎用周辺ＩＯモデル情報の一例を示す図である。
【図８】実施の形態１にかかるデバイスドライバーソースコードを示す図である。
【図９】実施の形態１にかかるデバイス周辺ＩＯ情報の一例を示す図である。
【図１０】実施の形態１にかかる置換ルールの一例を示す図である。
【図１１】実施の形態１にかかるデバイス依存周辺ＩＯソースコードの図である。
【図１２】実施の形態１にかかるデバイス依存周辺ＩＯソースコードの図である。
【図１３】実施の形態１にかかるソースコード生成システム１の動作を示すフローチャートである。
【図１４】実施の形態２にかかるソースコード生成システムのブロック図である。
【図１５】実施の形態２にかかるソースコード生成システム１の動作を示すフローチャートである。
【図１６】特許文献１にかかるシミュレーションシステムを用いて設計する他＾ゲットボード等の図である。
【図１７】特許文献１にかかるシミュレーションシステムを用いて設計したシミュレーションモデルの図である。
【図１８】特許文献１にかかるモデルベース開発処理ブロックの図である。
【発明を実施するための形態】
【００１５】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１６】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるソースコード生成システム１は、モデルベース開発支援部１００と、デバイスドライバー生成部２００と、デバイス依存ソースコード生成部３００と、を備える。
【００１７】
モデルベース開発支援部１００は、モデルＧＵＩ処理部１０１と、モデルシミュレーション処理部１０２と、オートコード生成部１０３とを備える。モデルベース開発支援部１００には、汎用周辺ＩＯ情報ブロック１１０と、モデル１３０と、が入力される。
【００１８】
汎用周辺ＩＯ情報ブロック１１０は、周辺ＩＯの情報を抽象的に記載した情報である。図２に汎用周辺ＩＯ情報ブロック１１０の構成を示す。汎用周辺ＩＯ情報ブロック１１０は、汎用周辺ＩＯ情報ブロック用シミュレーションモデル１１０１と、プロパティ情報１１０２と、を含む。
【００１９】
汎用周辺ＩＯ情報ブロック用シミュレーションモデル１１０１は、周辺ＩＯの挙動を記述したモデルである。図３は汎用周辺ＩＯ情報ブロック用シミュレーションモデル１１０１の概念図である。図３は、周辺ＩＯの情報として入力ポートの情報を示している。図３では、入力ポートはポート名"Ｐｏｒｔ＿Ｉｎ１"からプルアップ抵抗により電源に接続されており、ポートサイズ情報により示されるデータ型（unsigned char型）のデータが入力されることを示す。
【００２０】
プロパティ情報１１０２は、汎用周辺ＩＯ情報ブロック用シミュレーションモデル１１０１の入出力のいずれであるかという属性、入出力データのデータサイズ属性等の情報を含む。汎用周辺ＩＯ情報ブロック用シミュレーションモデル１１０１が図３に示す入力ポート構成である場合、プロパティ情報１１０２には"ポート名＝Ｐｏｒｔ＿Ｉｎ１"及び"ポートサイズ情報＝unsigned char型"の情報が含まれる。
【００２１】
モデル１３０は、モデルベース開発で用いられる任意のツールを用いて、実現する機能仕様を抽象的なブロック線図などで記述したデータである。
【００２２】
モデルＧＵＩ処理部１０１は、汎用周辺ＩＯ情報ブロック１１０と、モデル１３０と、が入力される。モデルＧＵＩ処理部１０１は、ユーザが操作可能なＧＵＩ（Graphical User Interface）形式のエディタ等を備え、当該エディタ上においてブロック線図などを用いて開発対象のターゲットコントローラを含むシステムをモデル化する。モデルＧＵＩ処理部１０１は、開発されたモデル（コントローラモデル１４０）をモデルシミュレーション処理部１０２に出力する。なお、モデルＧＵＩ処理部１０１は、汎用周辺ＩＯ情報ブロック１１０及びモデル１３０の入力がない場合であってもコントローラモデル１４０を作成可能である。この場合、ユーザは、モデル作成専用のエディタ等を用いて当該モデルを最初から作成する必要がある。
【００２３】
モデルシミュレーション処理部１０２には、コントローラモデル１４０が入力される。モデルシミュレーション処理部１０２は、入力されたコントローラモデル１４０をシミュレーションし、検証済みのコントローラモデル１４０をオートコード生成部１０３に出力する。
【００２４】
コントローラモデル１４０の一例を図４に示す。コントローラモデル１４０は、スイッチブロック１４０１と、コントロールブロック１４０２と、コントロール対象ブロック１４０３と、データ表示ブロック１４０４と、を有する。スイッチブロック１４０１は、たとえばパワーウインドシステムの入力スイッチを模擬する処理ブロックである。
【００２５】
コントロールブロック１４０２は、ＩＯポートブロック１４０２１と、ＩＯポートブロック１４０２２と、コントロールロジックブロック１４０２３と、ＩＯポートブロック１４０２４と、を備える。ＩＯポートブロック１４０２１は、スイッチブロック１４０１からのデータ入力を受け付ける。ＩＯポートブロック１４０２２は、コントロール対象ブロック１４０３からのデータ入力を受け付ける。コントロールロジックブロック１４０２３は、ＩＯポートブロック１４０２１及び１４０２２からデータが入力され、所定の処理を行った後にＩＯポートブロック１４０２４にデータ出力を行う。ＩＯポートブロック１４０２４は、当該処理の結果、すなわちシミュレーションの結果をデータ表示ブロック１４０４に出力する。
【００２６】
ＩＯポートブロック１４０２１、１４０２２、及び１４０２４は、ハードウェアに依存する処理を行う処理ブロックとのインターフェイスとなる。ＩＯポートブロックは汎用周辺ＩＯ情報ブロック１１０の情報に基づいて構成が定まる。たとえば、汎用周辺ＩＯ情報ブロック１１０のポート情報に基づいて、対応するＩＯポートブロックが入力ポートであるか否かが定まる。
【００２７】
コントロール対象ブロック１４０３は、制御対象となる処理部、自動車開発の例では、ターゲットボードに制御されるモータ部を模擬する処理ブロックである。コントロール対象ブロック１４０３は、コントロールブロック１４０２により制御される。
【００２８】
データ表示ブロック１４０４は、シミュレーション結果をユーザに表示するための処理ブロックである。ユーザはデータ表示ブロックに表示されたシミュレーション結果を参照し、結果に問題がなければその旨をマウス等の入力装置を介して入力する。
【００２９】
オートコード生成部１０３は、検証済みのコントローラモデル１４０が入力される。オートコード生成部１０３は、当該コントローラモデル１４０を基にデバイス非依存周辺ＩＯソースコード１５０と、汎用周辺ＩＯモデル情報１６０を生成してデバイス依存ソースコード生成部３００に出力する。
【００３０】
デバイス非依存周辺ＩＯソースコード１５０をＣ言語のソースプログラムで表した例を図５に示す。デバイス非依存周辺ＩＯソースコード１５０は、通常の命令に加えて、後にハードウェア固有の処理に書き換え可能な置換命令を含んでいる。置換命令は、図６に示した特定のコメント形式をハードウェアに依存した命令に付することにより記述する。当該コメントは、識別用固定文字列、識別番号、周辺ＩＯ種別、及び置換方法種別を備える。なお、当該コメントを以下の説明では置換コメントとも記述する。置換命令は、本来であればハードウェアに依存した処理が記載されている箇所の命令である。
【００３１】
図６に示した置換コメントの情報について説明する。識別用固定文字列は、通常のコメントと、置換命令とを区別するために用いる文字列である。たとえば、コメント行の最初に"ＰＩＯ＿ＣＭＴ"と記述されていた場合、後述のターゲットデバイス周辺ＩＯ置換処理部３０２は、当該コメントの付された命令を置換命令と判断する。
【００３２】
識別番号は、周辺ＩＯモデル情報１６０と当該置換命令を対応づけるための文字列である。周辺ＩＯ種別は、置換命令がたとえば入力ポート（"ＰＯＲＴ＿ＩＮ"）に関するものであるのか、または出力ポート（"ＰＯＲＴ＿ＯＵＴ"）に関するものであるのかを示す情報である。置換方法種別は、置換命令が後述するターゲットデバイス周辺ＩＯ置換処理部３０２によりどのように置換されるかを示す情報である。たとえば、置換方法種別が"ＤＥＬ＿ＬＩＮＥ"である場合、当該置換命令はターゲットデバイス周辺ＩＯ置換処理部３０２によって削除される。置換方法種別が"ＥＸＣ＿ＶＡＲＩＡＢＬＥ"である場合、当該置換命令はターゲットデバイス周辺ＩＯ置換処理部３０２によって別の命令に置換される。  
【００３３】
たとえば図５に示したソースプログラムの一行目には"/* PIO_CMT 001 PORT_IN DEL_LINE */"という置換コメントが付されている。そのため、当該命令は置換命令であり、かつ、識別番号"００１"が付され、"入力ポート（ＰＯＲＴ＿ＩＮ）"にかかるものであり、最終出力となるデバイス依存ソースコード４００では削除される。
【００３４】
図７は、汎用周辺ＩＯモデル情報１６０の一例を示す情報である。汎用周辺ＩＯモデル情報１６０は、コントローラモデル１４０のシミュレーションにおける周辺ＩＯ（入出力）の情報が格納される。汎用周辺ＩＯモデル情報１６０は、識別番号と、周辺ＩＯ種別と、変数型と、各種プロパティ情報と、変数名とを含む情報である。
【００３５】
識別番号は、デバイス非依存周辺ＩＯソースコード１５０を当該汎用周辺モデル情報１６０と関連付けるための識別番号である。周辺ＩＯ種別は、ＩＯの種別を指し、たとえば"ＰＯＲＴ＿ＩＮ"（入力用ポート）等の値となる。変数型は、当該ＩＯがどのような変数を使用可能かについての情報を示す。各種プロパティ情報は、当該ＩＯがどのような性質を持つかを示す情報である。変数名は、当該ＩＯに関する変数がデバイス非依存周辺ＩＯソースコード１５０内でどのような変数名により記載されるかを示す。
【００３６】
図７の例では、モデルシミュレーション時に周辺ＩＯを入力ポート（"ＰＯＲＴ＿ＩＮ"）として用い、当該周辺ＩＯは"unsigned char"（８ビット操作可能）データを扱うことができ、プルアップ設定されていることを示す。また、当該周辺ＩＯは、デバイス非依存周辺ＩＯソースコード１５０内では、"port_in1"という変数名により扱われていることを示している。
【００３７】
デバイスドライバー生成部２００は、デバイスドライバーソース生成部２０１と、デバイス周辺ＩＯ情報設定部２０２を備える。デバイスドライバー生成部２００は、デバイスユーザーズマニュアル２２１から情報を抽出して生成したデバイス周辺ＩＯ情報２２０と、デバイス指定情報２３０と、デバイスドライバー基本情報２４０と、が入力される。
【００３８】
デバイスドライバーソース生成部２０１は、デバイス指定情報２３０により指定されたデバイスに関するデバイスドライバーソースコード２１０を生成し、デバイス依存ソースコード生成部３００に出力する。デバイスドライバーソース生成部２０１が生成したデバイスドライバーソースコード２１０の一例を図８に示す。
【００３９】
デバイス周辺ＩＯ情報設定部２０２は、デバイス指定情報２３０を参照してデバイス周辺ＩＯ情報２２０の情報から、当該指定されたデバイスに必要なデバイス周辺ＩＯ情報を抽出する。デバイス周辺ＩＯ情報設定部２０２は、選択したデバイス周辺ＩＯ情報のみをデバイス周辺ＩＯ情報２２０として再設定する。
【００４０】
デバイス周辺ＩＯ情報２２０は、各デバイスの入出力についての詳細な情報である。デバイス周辺ＩＯ情報２２０は、デバイスユーザーズマニュアル２２１から情報を抽出して生成される。デバイス周辺ＩＯ情報の一例を図９に示す。デバイス周辺ＩＯ情報２２０は、各種ポートの名称、ポートを設定するレジスタの情報、端子の状態、略号等を含む。略号とは、デバイス依存周辺ＩＯソースコード３１０に記載される変数名、すなわち置換命令に代わって記載される情報を指す。
【００４１】
デバイスユーザーズマニュアル２２１は、各種デバイスの情報（ＩＯに関する情報等）が記載されたドキュメントである。デバイスユーザーズマニュアル２２１は、アプリケーションが自動処理できるように記載されている必要はなく、自然言語等で記載されていてもよい。
【００４２】
デバイス指定情報２３０は、実際に使用するデバイス（たとえばＣＰＵの種類）を指定した情報である。すなわち、ユーザはコントロールブロック１４０２が模擬するターゲットボードのＣＰＵ等のデバイス情報を指定する。ユーザが外部アプリケーション等からデバイス指定情報２３０を指定する。デバイス指定情報２３０は、デバイスの名前等を含む情報である。デバイスドライバー基本情報２４０は、デバイスドライバーに共通する基本的な情報である。
【００４３】
デバイス依存ソースコード生成部３００は、ターゲットデバイス周辺ＩＯ置換部３０１と、ソースコードマージ処理部３０２と、ソースコード出力部３０３と、デバイス依存周辺ＩＯソースコード３１０と、を備える。
【００４４】
ターゲットデバイス周辺ＩＯ置換部３０１は、デバイス非依存周辺ＩＯソースコード１５０内の置換命令を、デバイス指定情報２３０により指定したデバイスに特化した処理に置換したデバイス依存周辺ＩＯソースコード３１０を生成する処理部である。ターゲットデバイス周辺ＩＯ置換部３０１は、置換命令を置換するための置換ルールを汎用周辺ＩＯモデル情報１６０と、デバイス周辺ＩＯ情報２２０と、に基づいて生成する。
【００４５】
以下に置換ルールの生成についての詳細を説明する。まず、ターゲットデバイス周辺ＩＯ置換部３０１は汎用周辺ＩＯモデル情報１６０（図７）からデバイス周辺ＩＯ情報２２０の検索に用いる情報を取得する。たとえば、ターゲットデバイス周辺ＩＯ置換部３０１は周辺ＩＯ種別、変数型、プロパティ情報を取得する。図７の例では、識別番号"００１"を含むコメントが付された命令は、入力用ポート（"ＰＯＲＴ＿ＩＮ"）にかかるものであり、８ビット操作が可能（unsigned char）であり、プルアップ設定がなされているデバイス周辺ＩＯ情報に対応する。
【００４６】
ターゲットデバイス周辺ＩＯ置換部３０１は、汎用周辺ＩＯモデル情報１６０（図７）から抽出した情報を用いて、当該情報と合致するデバイス周辺ＩＯ情報２２０を検索する。たとえば、ターゲットデバイス周辺ＩＯ置換部３０１は、識別番号"００１"に対応するデバイス周辺ＩＯ情報２２０として図９の１行目（"ポートレジスタ４"、"Ｐ４"―――）が検索にヒットしたとする。この場合、ターゲットデバイス周辺ＩＯ置換部３０１は、識別番号"００１"にかかる置換ルールを生成する。置換ルールの生成には、デバイス周辺ＩＯ情報２２０の略号（図９の１行目の場合は"Ｐ４"）を置換データとして用いる。識別番号"００１"にかかる置換ルールの一例を図１０に示す。
【００４７】
図１０では、識別番号が"００１"であり、置換種別が"ＤＥＬ_ＬＩＮＥ"であるコメントが付された置換命令を削除（もしくはコメントアウト）するルールが記述されている。また、識別番号が"００１"であり、置換種別が"ＥＸＣ_ＶＡＲＩＡＢＬＥ"であるコメントが付された置換命令を変数"Ｐ４"に置換するルールが記述されている。置換ルールの生成は、全ての識別番号に対して実施される。
【００４８】
ターゲットデバイス周辺ＩＯ置換部３０１は、当該置換ルールを用いてデバイス非依存周辺ＩＯソースコード１５０内の置換命令を置き換えたデバイス依存周辺ＩＯソースコード３１０を生成する。すなわち、図７の例では、置換命令（先頭に"ＰＩＯ＿ＣＭＴ"で始まるコメントが付された命令）を、置換ルールを用いて全て置換することによりデバイス依存周辺ＩＯソースコード３１０を生成する。
【００４９】
ターゲットデバイス周辺ＩＯ置換部３０１には、コード出力形式情報１７０が入力される。コード出力形式情報１７０は、置換命令及び置換コメントの情報をデバイス依存周辺ＩＯソースコード３１０に残すか否かを指定するための情報である。コード出力形式情報１７０において"置換前のソースコードを残す"と指定した場合、デバイス依存周辺ＩＯソースコード３１０の当該記述が残っている個所は、ターゲットデバイス周辺ＩＯ置換部３０１により自動置換されたことが分かる。一方、コード出力形式情報１７０において"置換前のソースコードを残さない"と指定した場合、当該記述を削除するため、デバイス依存周辺ＩＯソースコード３１０のファイルサイズを小さくすることができる。
【００５０】
図１１はコード出力形式情報１７０において"置換前のソースコードを残す"と指定した場合に生成されるデバイス依存周辺ＩＯソースコード３１０の例である。図１２はコード出力形式情報１７０において"置換前のソースコードを残さない"と指定した場合に生成されるデバイス依存周辺ＩＯソースコード３１０の例である。
【００５１】
ソースコードマージ処理部３０２は、デバイス依存周辺ＩＯソースコード３１０と、デバイスドライバーソースコード２１０と、をマージ、すなわち組み合わせる。当該マージ処理により、デバイス依存のソースコードであるデバイス依存ソースコード４００が生成される。ソースコードマージ処理部３０２は、デバイス依存ソースコード４００をソースコード出力部３０３に出力する。ソースコード出力部３０３は、生成したデバイス依存のソースコードを二次記憶装置等に出力する処理部である。
【００５２】
続いて、図１３のフローチャートを用いて本実施の形態にかかるソースコード生成システム１の動作について説明する。ＥＣＵをはじめとするターゲットコントローラ用のソースコードを作成するユーザは、モデルＧＵＩ処理部１０１の機能を用いてコントローラモデル１４０を生成する（Ｓ１００）。
【００５３】
ユーザは、生成したコントローラモデル１４０をモデルシミュレーション処理部１０２に入力する。ユーザは、コントローラモデル１４０が想定通りに動作するか否かをデータ表示部１４０４に表示されたタイミングチャート等を参照することにより検証する（Ｓ１０１）。
【００５４】
コントローラモデル１４０の検証に成功しなかった場合（Ｓ１０２：Ｎｏ）、ユーザは、モデルＧＵＩ処理部１０１を介してコントローラモデル１４０の編集を行う。コントローラモデル１４０の検証に成功した場合（Ｓ１０２：Ｙｅｓ）、ユーザは当該コントローラモデル１４０をオートコード生成部１０３に入力することを指示する。オートコード生成部１０３は、コントローラモデル１４０の入出力（周辺ＩＯ）に関する汎用周辺ＩＯモデル情報１６０を生成する（Ｓ１０３）。
【００５５】
オートコード生成部１０３は、汎用ＩＯモデル情報１０３と、コントローラモデル１４０内のコントロールブロック１４０２と、からデバイス非依存周辺ＩＯソースコード１５０を生成する。デバイス非依存周辺ＩＯソースコード１５０は、図５に示すように置換コメントの付された置換命令を含むソースコードである。オートコード生成部１０３は、生成したデバイス非依存周辺ＩＯソースコード１５０をファイル形式により二次記憶装置に格納する（Ｓ１０４）。
【００５６】
ここでは、デバイス周辺ＩＯ情報２２０は、予めデバイスのデバイスユーザーズマニュアル２２１などデバイスに関する情報が記述された資料を元に作成されていると想定する。
【００５７】
次にユーザは、実際に用いるデバイスの情報をデバイス指定情報２３０としてデバイスドライバー生成部２００と、デバイス依存ソースコード生成部３００に入力する（Ｓ２００）。デバイス周辺ＩＯ情報設定部２０２は、指定されたデバイス指定情報２３０に対応するデバイス周辺ＩＯ情報２２０を選択する。デバイス周辺ＩＯ情報設定部２０２は、選択した情報のみを設定した状態になるようにデバイス周辺ＩＯ情報２２０を更新する（Ｓ２０１）。
【００５８】
デバイスドライバーソース生成部２０１は、入力されたデバイス指定情報２３０に対応する情報をデバイス周辺ＩＯ情報２２０と、デバイスドライバー基本情報２４０と、から読み出す。デバイスドライバーソース生成部２０１は読み出した情報を用いてデバイスドライバーソースコード２１０を生成する。デバイスドライバーソース生成部２０１は、生成したデバイスドライバーソースコード２１０をデバイス依存ソースコード生成処理部３００に出力する（Ｓ２０２）。
【００５９】
ターゲットデバイス周辺ＩＯ置換部３０１は、デバイス非依存周辺ＩＯソースコード１５０を二次記憶装置から読み出す（Ｓ３００）。ターゲットデバイス周辺ＩＯ置換部３０１は、デバイス非依存周辺ＩＯソースコード１５０から図６に示すような置換コメントを検索する。ターゲットデバイス周辺ＩＯ置換部３０１は、検索により取得した置換コメントから識別番号を取り出す（Ｓ３０１）。
【００６０】
ターゲットデバイス周辺ＩＯ置換部３０１は、当該識別番号と合致する番号を持つ汎用周辺ＩＯモデル情報１６０を抽出する。ターゲットデバイス周辺ＩＯ置換部３０１は、当該汎用周辺ＩＯモデル情報１６０から周辺ＩＯ種別情報、変数型情報、変数名情報等を取り出す（Ｓ３０２）。
【００６１】
ターゲットデバイス周辺ＩＯ置換部３０１は、読み出した情報（周辺ＩＯ種別情報、変数型情報、変数名情報等）を用いてデバイス周辺ＩＯ情報２２０を検索する。たとえば、図４に示したＩＯポートブロック１４０２１を置換するためのデバイス周辺ＩＯ情報２２０を検索する場合、入力ポートであること、８ビットのデータ幅を扱うこと、プルアップ設定がされていることを条件に検索を行う（Ｓ３０３）。
【００６２】
ターゲットデバイス周辺ＩＯ置換部３０１は、Ｓ３０３の検索により抽出されたデバイス周辺ＩＯ情報２２０の内容と、デバイス非依存周辺ＩＯソースコード１５０の置換コメントの内容と、から置換ルール（図１０）を生成する（Ｓ３０４）。
【００６３】
ターゲットデバイス周辺ＩＯ置換部３０１は、ユーザが入力したコード出力形式情報１７０が"置換前のソースコードを残す"ことを指定するものか否かを判定する（Ｓ３０５）。
【００６４】
"置換前のソースコードを残す"ことを指定するものである場合（Ｓ３０５：Ｙｅｓ）、ターゲットデバイス周辺ＩＯ置換部３０１は、置換命令及び置換コメントの情報がコメントとして残ったデバイス依存周辺ＩＯソースコード３１０を生成する（Ｓ３０６）。
【００６５】
一方、"置換前のソースコードを残さない"ことを指定するものである場合（Ｓ３０５：Ｎｏ）、ターゲットデバイス周辺ＩＯ置換部３０１は、置換命令及び置換コメントの情報を削除したデバイス依存周辺ＩＯソースコード３１０を生成する（Ｓ３０７）。
【００６６】
ソースコードマージ処理部３０３は、生成されたデバイス依存周辺ＩＯソースコード３１０と、デバイスドライバーソースコード２１０を組み合わせてデバイス依存ソースコード４００を生成する（Ｓ３０８）。
【００６７】
ソースコード出力部３０４は、生成されたデバイス依存ソースコード４００を二次記憶装置に出力する（Ｓ３０９）。デバイス依存ソースコード４００は、たとえばＥＣＵのコントローラのソースコードとして使用可能である。
【００６８】
続いて、本実施の形態にかかるソースコード生成システムの効果について説明する。モデルベース開発支援部１００は、ターゲットコントローラ（たとえばターゲットボード）をシミュレーションするためのコントローラモデル１４０から汎用周辺ＩＯモデル情報１６０と、デバイス非依存周辺ＩＯソースコード１５０と、を生成する。汎用周辺ＩＯモデル情報１６０は、デバイス特有の情報を含まない。また、デバイス非依存周辺ＩＯソースコードは、書き換え可能な置換命令を有し、デバイスに非依存なソースコードである。すなわち、モデルベース開発支援部１００が生成する情報は、デバイスの情報に依存しない情報である。そのため、ターゲットコントローラを構成する（搭載される）デバイス（たとえばＣＰＵ）を変更した場合であっても、コントローラモデル１４０の再度のシミュレーションを行う必要がなくなる。これにより、コントローラモデル１４０を様々なデバイスに対して再利用することが可能となる。このコントローラモデル１４０の再利用により、開発ＴＡＴの短縮につながる。
【００６９】
また、デバイスドライバー生成部２００及びデバイス依存ソースコード生成部３００は、汎用周辺ＩＯモデル情報１６０と、デバイス周辺ＩＯ情報２２０とを用いることによりデバイスに特有のデバイス依存ソースコード４００を生成することができる。これにより、ターゲットコントローラを構成する（搭載される）デバイスに応じたソースコードを得ることができる。
【００７０】
実施の形態２
本発明の実施の形態２は、以前に使用した置換ルールを保存しておくことを特徴とする。以下に、本実施の形態にかかるソースコード生成システムについて、第１の実施の形態と異なる部分について説明を行う。
【００７１】
図１４は、本実施の形態にかかるソースコード生成システムの構成を示す図である。ソースコード生成システム１は、実施の形態１にかかるソースコード生成システム１に加えて周辺ＩＯライブラリ１２０を備える。周辺ＩＯライブラリ１２０は、デバイス指定情報２３０と、当該デバイス指定情報２３０を基に生成された置換ルールが関連付けられて格納される。また、ソースコード生成システム１は、ターゲットデバイス周辺ＩＯ置換部３０１に代わり、ライブラリ対応ターゲットデバイス周辺ＩＯ置換部３０４を備える。
【００７２】
続いて、本実施の形態にかかるソースコード生成システム１の動作について、図１５のフローチャートを用いて説明する。モデル編集（Ｓ１００）から置換デバイス周辺ＩＯ検索（Ｓ３０３）までの処理は、本実施の形態１にかかるソースコード生成システムの動作と同様である。
【００７３】
ライブラリ対応ターゲットデバイス周辺ＩＯ置換部３０４は、指定されたデバイス指定情報２３０を基に生成された置換ルールが周辺ＩＯライブラリ１２０内に存在するか否かを判定する（Ｓ３１０、Ｓ３１１）。置換ルールが周辺ＩＯライブラリ１２０内に存在する場合（Ｓ３１１：Ｙｅｓ）、ライブラリ対応ターゲットデバイス周辺ＩＯ置換部３０４は、周辺ＩＯライブラリ１２０から置換ルールと、デバイス指定情報とを取得する。
【００７４】
置換ルールが周辺ＩＯライブラリ１２０内に存在しない場合（Ｓ３１１：Ｎｏ）、ライブラリ対応ターゲットデバイス周辺ＩＯ置換部３０４は、置換ルールの生成処理を行う。当該生成処理は、ターゲットデバイス周辺ＩＯ置換部３０１による処理（Ｓ３０４）と同様である。続いて、ライブラリ対応ターゲットデバイス周辺ＩＯ置換部３０４は、生成した置換ルールをデバイス指定情報２３０と関連付けて周辺ＩＯライブラリ１２０に登録する（Ｓ３１２）。
【００７５】
置換前のソースコードを残すか否かの判定（Ｓ３０５）からデバイス依存ソースコードの生成（Ｓ３０８）までの処理は、実施の形態１と同様である。デバイス指定情報２３０により指定された全ての汎用周辺ＩＯモデル情報１６０についての検索が終了するまでＳ３１１〜Ｓ３０８の処理を継続する（Ｓ３１４）。検索が終了した場合（Ｓ３１４：Ｙｅｓ）、ソースコード出力部３０３はデバイス依存ソースコードを出力する（Ｓ３１５）。
【００７６】
続いて、本実施の形態にかかるソースコード生成システムの効果について説明する。本実施の形態にかかるソースコード生成システムは、一度生成した置換ルールを周辺ＩＯライブラリ１２０に格納し、後の処理において当該格納した置換ルールを利用する。一度生成した置換ルールの生成処理が省略できるため、実施の形態１のソースコード生成システムに比べて処理時間の軽減が図れる。
【００７７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７８】
１      ソースコード生成システム
１００  モデルベース開発支援部
１０１  モデルＧＵＩ処理部
１０２  モデルシミュレーション処理部
１０３  オートコード生成部
１１０  汎用周辺ＩＯ情報ブロック
１２０  周辺ＩＯライブラリ
１３０  モデル
１４０  コントローラモデル
１５０  デバイス非依存周辺ＩＯソースコード
１６０  汎用周辺ＩＯモデル情報
１７０  コード出力形式情報
２００  デバイスドライバー生成部
２０１  デバイスドライバーソース生成部
２０２  デバイス周辺ＩＯ情報設定部
２１０  デバイスドライバーソースコード
２２０  デバイス周辺ＩＯ情報
２２１  デバイスユーザーズマニュアル
２３０  デバイス指定情報
２４０  デバイスドライバー基本情報
３００  デバイス依存ソースコード生成部
３０１  ターゲットデバイス周辺ＩＯ置換部
３０２  ソースコードマージ処理部
３０３  ソースコード出力部
３０４  ライブラリ対応ターゲットデバイス周辺ＩＯ置換部
３１０  デバイス依存周辺ＩＯソースコード
４００  デバイス依存ソースコード
【図１】
2011204087.tif 000003
【図２】
2011204087.tif 000004
【図３】
2011204087.tif 000005
【図４】
2011204087.tif 000006
【図５】
2011204087.tif 000007
【図６】
2011204087.tif 000008
【図７】
2011204087.tif 000009
【図８】
2011204087.tif 000010
【図９】
2011204087.tif 000011
【図１０】
2011204087.tif 000012
【図１１】
2011204087.tif 000013
【図１２】
2011204087.tif 000014
【図１３】
2011204087.tif 000015
【図１４】
2011204087.tif 000016
【図１５】
2011204087.tif 000017
【図１６】
2011204087.tif 000018
【図１７】
2011204087.tif 000019
【図１８】
2011204087.tif 000020