特許第5723675号(P5723675)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社 日立産業制御ソリューションズの特許一覧

特許5723675シミュレーション装置及びシミュレーション方法
<>
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000002
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000003
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000004
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000005
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000006
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000007
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000008
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000009
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000010
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000011
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000012
  • 特許5723675-シミュレーション装置及びシミュレーション方法 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5723675
(24)【登録日】2015年4月3日
(45)【発行日】2015年5月27日
(54)【発明の名称】シミュレーション装置及びシミュレーション方法
(51)【国際特許分類】
   G06F 11/28 20060101AFI20150507BHJP
   G06F 17/50 20060101ALI20150507BHJP
【FI】
   G06F11/28 340C
   G06F11/28 P
   G06F17/50 680Z
【請求項の数】14
【全頁数】16
(21)【出願番号】特願2011-120222(P2011-120222)
(22)【出願日】2011年5月30日
(65)【公開番号】特開2012-248055(P2012-248055A)
(43)【公開日】2012年12月13日
【審査請求日】2014年1月17日
(73)【特許権者】
【識別番号】000153443
【氏名又は名称】株式会社 日立産業制御ソリューションズ
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜特許業務法人
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール特許業務法人
(72)【発明者】
【氏名】伊藤 康宏
(72)【発明者】
【氏名】松下 正裕
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特開2010−218143(JP,A)
【文献】 特開2004−252585(JP,A)
【文献】 特開2004−145830(JP,A)
【文献】 特開2002−244883(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/28
G06F 11/36
G06F 17/50
(57)【特許請求の範囲】
【請求項1】
計算機システムでシミュレーション対象機器のシミュレーションを行うことにより、当該機器を制御対象とするソフトウェアの検証を行うシミュレーション装置であって、
前記計算機システムは、前記機器のシミュレーション対象モデルのデータを記憶するシミュレーション対象モデルデータ記憶部を有しており、
計算機システムの外部に設けられた、ユーザインターフェイス部とデバッグ情報インポーザとを備え、
前記ユーザインターフェイス部は、前記シミュレーション内部で実行される前記ソフトウェアの実行状況を出力する機能と、前記シミュレーション対象モデルの実行状況に異常が発生したとき該異常を表示する機能と、該異常状態を解決するためのデバッグシーケンスをユーザが構築するのをサポートする機能とを有し、
前記デバッグ情報インポーザは、前記デバッグシーケンスを前記シミュレーション対象モデルにおいて割込み処理により実行する機能を有する
ことを特徴とするシミュレーション装置。
【請求項2】
請求項1において、
前記ユーザインターフェイス部において、前記異常として無限ループが出力された場合に、前記デバッグシーケンスがループ条件を変更する命令であり、
前記デバッグ情報インポーザは、前記命令列を前記シミュレーション対象モデルにおいて実行し、該シミュレーション対象モデルの異常状態を解決する機能を有することを特徴とするシミュレーション装置。
【請求項3】
請求項2において、
前記デバッグ情報インポーザは、前記シミュレーション対象モデル中のメモリ領域に対し、前記命令列を転送し、
前記計算機システムのCPUに対して前記命令列を実行させる割込み処理を発生させることにより、前記CPUにおける前記ソフトウェアの実行状況を更新可能である
ことを特徴とするシミュレーション装置。
【請求項4】
請求項1において、
前記デバッグ情報インポーザは、
前記シミュレーション実行状態における前記ソフトウェア実行の継続性に不具合を来す前記異常状態に関する情報を抽出し、前記ユーザインターフェイス部に表示する情報として生成する機能を有する異常状態抽出部と、
前記デバッグシーケンスに従い、デバッグ操作を前記計算機システムのCPUに実行させるための操作を、割込み信号コントローラ及び、バスマスタモデルを用いて行う機能を有するデバッグシーケンス実行部とを備えていることを特徴とするシミュレーション装置。
【請求項5】
請求項において、
前記バスマスタモデルは、前記シミュレーション対象モデル中への前記デバッグシーケンスの注入及び、前記計算機システムのRAMに対するメモリ操作を行う機能を有し、
前記割込み信号コントローラは、前記デバッグシーケンスの実行を前記計算機システムのCPUに行わせるためのトリガをかける機能を有することを特徴とするシミュレーション装置。
【請求項6】
請求項1において、
前記ユーザインターフェイス部は、
前記シミュレーション対象モデル中の前記ソフトウェアの実行状態を表示する画面を有するソフト実行状況表示部と、
前記ソフトウェアに対して注入する命令列を構築するためのシーケンス構築用の画面を有するシーケンス構築部と、
前記シミュレーション対象モデルに異常が発生したとき、該異常状態を変更する命令を生成し、該命令列を前記シミュレーション対象モデルに送信するための画面を有するシーケンス送出部とを有する
ことを特徴とするシミュレーション装置。
【請求項7】
請求項6において、
前記ユーザインターフェイス部は、
前記ユーザに対し、前記シミュレーション対象モデル中の前記計算機システムのRAMに対する操作を行って、前記デバッグシーケンスを構築するのをサポートする
ことを特徴とするシミュレーション装置。
【請求項8】
請求項6において、
前記ソフト実行状況表示部は、
前記シミュレーション実行途中において前記ソフトウェアの不具合の個所を抽出して前記画面に表示する機能、及び、
前記抽出された不具合に関してあらかじめデータベースに蓄積された情報からその回避条件、あるいはプログラムの継続条件を抽出し、前記画面に表示する機能を有する
ことを特徴とするシミュレーション装置。
【請求項9】
請求項6において、
前記シーケンス構築用の画面は、
編集対象シーケンスを選択するリスト、編集中シーケンスを表示するシーケンス内操作リスト、及び、前記デバッグシーケンスに追加するコマンドーを選択するコマンドー選択リストを表示する画面を有している
ことを特徴とするシミュレーション装置。
【請求項10】
計算機システムでシミュレーション対象機器のシミュレーションを行うことにより、当該機器を制御対象とするソフトウェアの検証を行うシミュレーション装置であって、
シミュレーション対象モデルデータ記憶部に、前記機器のシミュレーション対象モデルのデータを記憶し、
前記シミュレーション内部で実行される前記ソフトウェアの実行状況をユーザインターフェイス部に出力し、
前記シミュレーション対象モデルの実行状況に異常が発生したとき、該異常を前記ユーザインターフェイス部に表示し、
前記ユーザインターフェイス部において、該異常状態を解決するためのデバッグシーケンスを受け付け、
デバッグ情報インポーザにより、前記デバッグシーケンスを前記シミュレーション対象モデルにおいて割込み処理により実行する
ことを特徴とするシミュレーション方法。
【請求項11】
請求項10において、
前記ユーザインターフェイス部に表示された前記シミュレーション対象モデルで発生した異常が、ループ条件における無限ループであったとき、前記ユーザインターフェイス部において該ループ条件を変更する命令を生成し、
該変更されたループ条件を前記デバッグ情報インポーザに送信し、
前記命令列を前記シミュレーション対象モデルにおいて実行し、前記シミュレーション対象モデルの異常状態を解決する
ことを特徴とするシミュレーション方法。
【請求項12】
請求項11において、
前記デバッグ情報インポーザにより、前記シミュレーション対象モデル中のメモリ領域に対し、前記命令列を転送し、
前記計算機システムのCPUに対して前記命令列を実行させる割込み処理を発生させることにより、前記CPUにおける前記ソフトウェアの実行状況を更新する
ことを特徴とするシミュレーション方法。
【請求項13】
請求項10において、
前記計算機システムの外部に、前記シミュレーションの実行状況の確認と、前記シミュレーション実行継続条件の構築が可能なデバッグ情報インポーザ及びユーザインターフェイスを備え、
前記計算機システムは、
前記ユーザインターフェイスから送信される前記シミュレーション実行継続条件を受け取り、
該シミュレーション実行継続条件を未使用のメモリ空間と割込み要因を用いて、前記シミュレーション対象モデルである組込みシステム内部で実行させ、
前記シミュレーションの終了状態まで継続させる
ことを特徴とするシミュレーション方法。
【請求項14】
請求項13において、
異種シミュレータの相互接続により前記組込みシステムの全体レベルの協調シミュレーションを行なう
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーション装置及びシミュレーション方法に係り、特に、組込みシステムの開発にシミュレータを用いる場面に於いて、シミュレーションの外部から利用者の望む動作を注入する技術に関する。
【背景技術】
【0002】
組込みシステムとは、制御対象を構成するメカニズムと、メカニズムから受け取った物理量を元に制御演算を行い、メカニズムに制御値の出力を行なうハードウェアと、ハードウェア上で動作するソフトウェアから構成されるシステムである。 例えば、自動車エンジン制御向けの組込みシステムでは、制御対象であるエンジンとエンジンを制御するマイコン等の電子機器とその上で動作するソフトウェアを指す。
【0003】
組込みシステムに含まれるソフトウェアの挙動は、制御対象のメカニズムとハードウェアの構成に強く依存するため、メカニズム、ハードウェア、ソフトウェアを併せた挙動の解析が必要である。
【0004】
近年、自動車、電気機器等の高信頼化、高機能化により組込みシステムが複雑化しており、作業期間短縮のためハードウェア、ソフトウェアの各部品を細分化して分業化が行なわれ、複数拠点での同時開発が行われている。 分業化が進むにあたり、部品毎の動作確認だけではなく、部品の組み立て時に判明する性能不足、仕様の不具合が増加し、製品出荷前の最終段階での手戻りによる開発期間の遅延が多発しており、開発効率の悪化が問題となっている。
【0005】
この問題を解決するため、設計時点でのメカニズム・ハードウェア・ソフトウェアを協調させたシミュレーションによる性能評価、検証手法が用いられ始めている。
【0006】
シミュレーション実行時の不具合回避に関する先行技術として、特許文献1に示されるように、専用デバッグ回路を有するプロセッサを備えたシミュレーションが知られている。すなわち、特許文献1には、一度シミュレーションを行った際の動作と、開発者が予め入力した期待値とを比較し、差異が生じた部分を不具合発生箇所とし、次回以降のシミュレーションにおいて、該当部分の動作をシミュレータの機能を用いて省略するという専用デバッグ回路を備えた技術が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001−022610号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
メカニズム・ハードウェア・ソフトウェア協調のシミュレーションでは、シミュレーション対象となるメカニズムやハードウェアの構成によって利用できるシミュレータが異なる事と、すでに特定のシミュレータ用に作成されたシミュレーションモデルの蓄積がある事から、異種シミュレータの相互接続による製品全体レベルの協調シミュレーションが行なわれる。
【0009】
一方、組込みシステムの開発は複数拠点での同時に行われるため、シミュレーションはオフラインシミュレーションとして実行される場合が多い。
【0010】
オフラインシミュレーションで上記協調シミュレーションを実行する際の問題として、シミュレーション対象の構成部品、例えば機械系の一部品、ソフトウェアの一部の関数が未実装であった場合、それらの結果を用いる部分のシミュレーションが動作不能となり、結果としてシミュレーションの実行がその時点で停止する現象が発生し得る。
【0011】
この現象は、協調シミュレーション環境の構築時に頻発する問題である。 従来は、問題が発生する度にシミュレーション停止に至った原因を調査し、不足している部品を追加実装してシミュレーションを再度最初から実行しなおすというプロセスを用いていた。
【0012】
図11を用いて、従来のデバッグプロセスの一例を概説する。 まず、ユーザがシミュレーションを開始する(ステップ1100)。 そして不具合Aによって、シミュレーションが異常状態、例えば、機械系の一部品が未実装である等の要因で、無限ループに陥る(ステップ1101)。
その、際ユーザは、シミュレーションを一旦終了させ、不具合Aに対して部品を実装する等の回避策を実装して、シミュレーション対象モデル106に組込む(ステップ1102)。そして、最初からシミュレーションを再実行する(ステップ1103)。さらに、別の不具合B、例えば、ソフトウェアの一部の関数が未実装である等の要因によって、シミュレーションが無限ループに陥る(ステップ1104)。その際ユーザは、シミュレーションを一旦終了させ、不具合Bに対して関数を実装する等の回避策を実装して、シミュレーション対象モデル106に組込む(ステップ1105)。この繰り返しを、シミュレーションが終了状態にいたるまで繰り返すこととなる(ステップ1106)。
【0013】
このようなステップの場合、回避策の実装工数を事前に見積もることが非常に困難となるのが問題であった。すなわち、このような逐次的な不具合対策では、完成にいたるまでに必要となる追加実装部分の全体像を把握することが困難であり、効率的な環境構築への障害となっていた。
【0014】
一方、特許文献1に開示された技術は、専用デバッグ回路を有しないプロセッサには適用できない。
【0015】
本発明の目的は、異種複数のシミュレーションが動作する計算機環境において、逐次的な不具合対策を必要とせず、シミュレーション実行継続を可能とする、シミュレーション装置及びシミュレーション方法を提供することにある。
【0016】
本発明の他の目的は、専用デバッグ回路を有しない組込みシステムにおいても、ソフトウェアの構成に影響を与えること無く、シミュレーションの実行継続を可能にする、シミュレーション装置及びシミュレーション方法を提供することにある。
【課題を解決するための手段】
【0017】
本願において開示される発明のうちの代表的なものについて簡単に説明すれば下記のとおりである。すなわち、本発明のシミュレーション装置は、計算機システムでシミュレーション対象機器のシミュレーションを行うことにより、当該機器を制御対象とするソフトウェアの検証を行うシミュレーション装置であって、前記計算機システムは、前記機器のシミュレーション対象モデルのデータを記憶するシミュレーション対象モデルデータ記憶部を有しており、計算機システムの外部に設けられた、ユーザインターフェイス部とデバッグ情報インポーザとを備え、前記ユーザインターフェイス部は、前記シミュレーション内部で実行される前記ソフトウェアの実行状況を出力する機能と、前記シミュレーション対象モデルの実行状況に異常が発生したとき該異常を表示する機能と、該異常状態を解決するためのデバッグシーケンスをユーザが構築するのをサポートする機能とを有し、前記デバッグ情報インポーザは、前記デバッグシーケンスを前記シミュレーション対象モデルにおいて割込み処理により実行する機能を有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、ユーザに対し、シミュレーション対象モデルの外部からその実行継続条件を注入可能とする機能を提供することにより、システム挙動の把握を容易にし、シミュレーションの停止を回避する事が可能となる。
【図面の簡単な説明】
【0019】
図1】本発明の第一の実施例になる組込みシステムのシミュレーション装置の全体的な構成例を概説する、機能ブロック図。
図2】本発明の適用対象となる、組込みシステムの構成例を概説する図。
図3図1のUI部の画面構成例(ソフト実行状況表示部分)を示す図。
図4図1のUI部の画面構成例(シーケンス構築部分)を示す図。
図5図1のUI部の画面構成例(シーケンス送出部)を示す図。
図6図1のデバッグ情報インポーザの構成例を示す図。
図7】第一の実施例の全体の動作フローを示す図。
図8】本発明におけるデバッグプロセスの概念を示す図。
図9】第一の実施例を利用したデバッグプロセスの全体のフローの例を示す図。
図10】第一の実施例におけるデバッグプロセスの具体例を示す図。
図11】従来技術によるデバッグの全体のフローの例を示す図。
図12】本発明の課題を説明する図。
【発明を実施するための形態】
【0020】
組込みシステムでは動作の流れを決定する要因は、前記システム中のプロセッサ上で実行されるソフトウェアである。図12により、本発明の課題を説明する。ここでは、処理Aでステップ120〜ステップ124を実行し、それに続くステップ130以下の処理Bがあり、ステップ121に不具合がある場合を想定する。ステップ121に不具合があると、それに続く分岐命令の読出し(ステップ122)、分岐比較の実行(ステップ123)、分岐命令の実行(ステップ124)が適切に処理されず、シミュレーション停止に至る。このような異常状態は、図11で述べたような無限ループとして観測される事が大半を占める。このループ条件等の不具合は、そのソフトウェアの外部から変更可能なものである。
【0021】
よって、本発明のシミュレーション装置は、シミュレーション対象中のソフトウェアが参照するループ条件等の不具合を、シミュレーション対象モデルの外部から変更するための手段を実装する点に特徴がある。
【0022】
本発明のシミュレーション装置は、ユーザに対して、シミュレーション対象モデルの実行条件を提示し、ユーザがそのシミュレーションの実行継続条件を構築することを可能にする。そして、ユーザが構築したシミュレーション実行継続条件をシミュレーション対象モデルが受け取り、対象とするシミュレーション環境のメモリ空き領域と、割込みを用いることにより、そのシミュレーションの実行継続条件を構築する。これによって、無限ループ等の不具合により停止したシミュレーションを継続して実行する。
【0023】
本発明によれば、シミュレーション停止に至った場合でも、外部から内部状態を更新することにより、シミュレーションを終了させること無く、終了状態まで実行継続を可能にする事で、一度のシミュレーションで追加実装が必要な部分の洗い出しを可能とする。 以下、図面を参照しながら、本発明の実施例を詳細に説明する。
【実施例1】
【0024】
図1は、本発明の第一の実施例になる組込みシステムのシミュレーション装置の全体的な構成例を概説する機能ブロック図である。本発明のシミュレーション装置は、組込みシステムのシミュレーションが、その構成要素の不具合によって停止状態に入った場合に、ユーザがその停止状態を回避するための命令列(以降デバッグシーケンスと呼称)を構築して、シミュレーション内部に反映させることを可能にする計算機システムである。
【0025】
本計算機システムにはシミュレーション対象モデル106が搭載され、さらにこのシミュレーション対象モデル106中に搭載されたデバッグ情報インポーザ101と、外部のユーザインターフェイス部100とを備えている。
【0026】
デバッグ情報インポーザ101は、シミュレーション対象モデルに異常が発生した場合に、その異常を解決する命令列をシミュレーション対象モデル106において実行する機能を有している。
【0027】
ユーザインターフェイス部100は、ユーザが対話的な処理により、デバッグシーケンスの構築と、シミュレーション内部で実行されるソフトウェアの実行状況の確認を可能にする機能を有している。すなわち、ユーザインターフェイス部100は、通常のユーザインターフェイスとしての機能のほかに、デバッグ用ユーザインターフェイス部107を備えており、このインターフェイス部は、ソフト実行状況表示機能108、シーケンス構築機能109、及び、シーケンス送出機能110を有している。
【0028】
シミュレーション対象モデル106は、基本シミュレータ106Aと、デバッグ情報インポーザ101を有する拡張シミュレータ106Bとで構成される。基本シミュレータ106Aは、計算機システム(コンピュータ)により構成され、バスを介して接続された割込みコントローラ102、RAM 103、ROM 104、CPU 105、及び、システムモデル120を備えている。シミュレーション対象モデル、すなわちシステムモデル120のデータは、RAM 103のシミュレーション対象モデルデータ記憶部に保持される。
【0029】
ユーザインターフェイス部100とシミュレーション対象モデル106は、別個のソフトウェアとして動作することが可能であり、このソフトウェア間では各々が動作する計算機がサポートする通信規格を用いて、ソフトウェア実行状況及びデバッグシーケンスがやり取りされる。
【0030】
次に、本発明の適用対象となる、組込みシステム210の構成例を概説する。
一般に、組込みシステムは、機械部品207〜209、通信インターフェイス205、と制御マイコン200の組合せによって構成される。制御マイコン200の内部ではメモリバス204を中心として、CPU201があり、その上でソフトウェア202が動作する。また、割込みコントローラ203がCPU201と接続されており、周辺機器206が制御マイコン200の外部にある機械部品207〜209、及び、通信インターフェイス205と接続された構成となっている。ここでは、組込みシステム210の構成要素として自動車の制御システムを例にとると、機械部品207には、例えば、エンジン制御ユニット、起動、発電制御ユニット、車両の駆動機構制御ユニット、車体制御ユニット、その他の各種の制御ユニット(図示略)がある。各制御ユニットは、各々、ソフトウェア(コンピュータプログラム)を実行することで所定の機能が実現される複数のモジュールによって構成されている。また、これらのソフトウェアでは、エンジンや車両の各種の状態を検知する各種のセンサ208の出力、車両の操作状態を示すスイッチ類209の各イベントや状態などを示すデータが用いられる。これら、制御マイコン200の周辺機器206、すなわち機械部品207〜209、及び、通信インターフェイス205が、図1のシステムモデル120に対応するものである。
【0031】
このような組込みシステム210が動作する際のデータの流れとしては、通信インターフェイス205または機械部品207〜209から周辺機器206がデータを受け取ると、割込みコントローラ203がCPU210上でのデータ処理を割込させ、処理された結果が、再度周辺機器206を通し、通信インターフェイス205または機械部品207〜209に指令される、という形をとる。
【0032】
従って、組込みシステム210の構成要素における不具合の存在は、ソフトウェア202がCPU201の外部からデータ入力を待つ状態で停止している状態として外部から観測される。
【0033】
本発明は、組込みシステム210の不具合が、ソフトウェアの実行の停滞に帰結される現象に着目して、それを回避する手段を提供し、組込みシステム210の実行継続を可能にすることで、組込システム210におけるユーザの不具合事象の把握を補助するものである。
【0034】
次に、図3に、図1のユーザインターフェイス部100における、ソフト実行状況表示部108の表示画面300の構成例を示す。ソフト実行状況表示部108は、ユーザに対しシミュレーションの実行状況を提示する機能を提供するものであり、ソフトの不具合の個所を抽出する機能、抽出された不具合に関してあらかじめデータベースに蓄積された情報からその回避条件、あるいはプログラムの継続条件などを抽出し、ユーザに提示する機能を有する。ソフト実行状況表示画面300には、ソフト実行状況表示部301と、ソフト実行状況キャプチャ開始ボタン302がある。
【0035】
すなわち、シミュレーション対象内のCPU201の動作トレース(CPUトレース)は、そのシミュレータの機能によって捕捉できるものとする。シミュレーション実行途中においてソフト実行状況キャプチャ開始ボタン302を押すことにより、その機能が有効となり(図7のS700−2参照)、CPUトレースが採集される。そのCPUトレースを解析することにより、シミュレーション内部の無限ループ状態を検出する。検出方法としては、CPUトレースの内、プログラムカウンタ値の遷移記録をとり、短い期間で周期的な動作をしている箇所を抜き出す。
【0036】
この時抜出した、プログラムカウンタの範囲、動作周期、ループ条件となっている条件式が、ソフト実行状況表示部301に提示される。さらに、不具合の個所や、データベースに蓄積された情報に基づく不具合の回避条件、あるいはプログラムの継続条件などが表示される。図3の例では、プログラムカウンタの範囲に、不具合のある特定の命令列の範囲が表示され、その動作周期が203μsec、であり、さらに、ループの脱出条件式も表示されている。
【0037】
次に、図4は、ユーザインターフェイス部100のシーケンス構築部109の画面400の構成例を示す。
【0038】
ユーザは、提供された情報に基づき、この画面400を用いてデバッグシーケンスを構築し、そのデータはシミュレーション対象モデル106のメモリに記録される。すなわち、デバッグシーケンスは、シミュレーション対象中のRAM103に対する操作と言う形で表現される。
【0039】
よって、シーケンス構築部109の画面400は、編集対象シーケンスを選択するリスト401、編集中シーケンスを表示するシーケンス内操作リスト402、追加するコマンドーを選択するコマンドー選択リスト403を有している。シーケンス内操作リスト402により追加可能なコマンドーには、指定アドレスに対する、書込操作、読出し操作、指定時間のウェイト(待機)の3種が存在する。さらに、アドレス入力フィールド404は、操作対象となるアドレス値を指定するものであり、アクセス値入力フィールド405は、メモリ値を書き換える値を指定するものである。ユーザは、シーケンス追加ボタン406の操作により、コマンドー選択リスト403で選択した「コマンドー」と、アドレス入力フィールド404とアクセス値入力フィールド405で指定された「アドレス」及び「値」に関するメモリ操作を、編集対象であるシーケンス内操作リスト402に表示されたデバッグシーケンスに追加することができる。
【0040】
次に、図5は、ユーザインターフェイス部100のシーケンス送出部110の画面500の構成例を示すものである。ユーザは、シーケンス構築部109で構築した、デバッグシーケンスの送出指示をこの画面500から行う。
【0041】
このため、シーケンス送出部109の画面500は、「送出対象デバッグシーケンス」を選択するシーケンス選択リスト501、選択されたデバッグシーケンスの「送出タイミング」を選択する送出タイミング選択リスト502、送出タイミング選択リスト502で時間指定オプションが選択された時その「送出時間」を指定するミュレーション時間入力フィールド503を備えている。画面500はさらに、シーケンス送出ボタン504を備えており、ユーザがこのシーケンス送出ボタン504を操作することにより、シーケンス選択リスト501と送出タイミング選択リスト502とシミュレーション時間入力フィールド503で指定された情報を用いて、実際にデバッグシーケンスの送出を行う。
【0042】
次に、図6は、図1におけるデバッグ情報インポーザ101の内部構成及び、シミュレーション対象モデル106との接続関係を示す図である。
【0043】
デバッグ情報インポーザ101は、シミュレーション対象モデル106中で動作する、割込み発生モデル及びバスマスタとして機能する。
【0044】
デバッグ情報インポーザ101のプロセス間通信I/F600は、プロセス間通信によってユーザインターフェイス部100と接続しており、ユーザインターフェイス部100より送出されるデバッグシーケンスと送出タイミング情報を受け取って解釈する機能を持つ。
【0045】
バスマスタモデル604は、シーケンス送出部110の画面500での操作を受けて、シミュレーション対象モデル106中へのデバッグシーケンスの注入及び、RAM104に対するメモリ操作を行う機能を有する。 割込み信号コントローラ603は、デバッグシーケンスの実行をCPU105に行わせるためのトリガをかける機能を有する。
異常状態抽出部601は、ユーザインターフェイス部100のソフト実行状況表示部108で表示するための、シミュレーション実行状態におけるプログラム(ソフトウェア)実行の継続性に不具合を来す異常状態の情報を抽出し、生成する機能を有する。異常状態としては、無限ループ、変数値異常、RAM値の異常、CPUの動作範囲の異常、などが挙げられる。
デバッグシーケンス実行部602は、プロセス間通信I/F600が受け取ったデバッグシーケンスに従い、デバッグ操作をCPU105に実行させるための操作を、割込み信号コントローラ603及び、バスマスタモデル604を用いて行う機能を有する。
【0046】
次に、図7を用いて、本実施例による、組込みシステムのシミュレーションの動作フローを概説する。図7は、横軸に、ユーザ、ユーザI/F、拡張シミュレータ、基本シミュレータを示し、縦軸に全体の処理の流れを示している。
【0047】
まず、ユーザはシミュレーションを開始する。この時、デバッグ情報インポーザ101の初期化が行われ、ユーザインターフェイス部からの接続待ちが行われる(ステップ700、ステップ701、ステップ711)。
【0048】
次に、ユーザは、ユーザインターフェイス部100のソフト実行状況表示部の画面300のソフト実行状況キャプチャ開始ボタン302を押して、シミュレーションの実行状態キャプチャの開始を指示する。これによってデバッグ情報インポーザ101中の異常状態抽出部の機能が有効化される (ステップ700−2、ステップ702−1)。
【0049】
これによって、ユーザインターフェイス部100の画面300のソフト実行状況表示部301に、異常状態、例えば無限ループ状態の有無、そのループのプログラムカウンタ範囲、ループ周期、ループ脱出の条件式が表示される (ステップ702−2)。
【0050】
この情報を元に、ユーザはユーザインターフェイス部100のシーケンス構築画面400で、異常状態を解消するためのデバッグシーケンスを構築する (ステップ703−1、ステップ703−2)。 同時に、ユーザインターフェイス部100のシーケンス送出画面500で、構築したデバッグシーケンスの送出タイミングを指定し、ユーザインターフェイス部100のシーケンス送出画面500のシーケンス送出ボタン504を押して、送出の指示をする(ステップ704) 。
【0051】
デバッグシーケンスの送出が指示されると、ユーザインターフェイス部100内部では、シーケンスに含まれるコマンドーをシミュレーション対象モデル106中のCPU105のアーキテクチャのバイナリ列へと変換する (ステップ705) 。 さらに、変換されたバイナリ列と、ステップ704で指定された送出タイミングとをセットとしたデバッグシーケンスを、プロセス間通信I/F600を通して、拡張シミュレータのデバッグ情報インポーザ101に送出する (ステップ706) 。
【0052】
送出されたデバッグシーケンスは、デバッグ情報インポーザ101のプロセス間通信インターフェイス600で受信され、命令が解釈される(ステップ707)。 この時、デバッグシーケンス中のバイナリ列部分と送出タイミングが分割される。
【0053】
次に、デバッグシーケンス中のバイナリ列がデバッグ情報インポーザ101のバスマスタモデル604を通して、シミュレーション対象モデル106の基本シミュレータ106AのRAM103上の、予め指定された未使用領域へコピーされる (ステップ708) 。
デバッグシーケンス中の送出タイミングに記載される時間までデバッグシーケンスの実行は一時停止され、デバッグシーケンス実行部602で待機する(ステップ709)。なお、デバッグシーケンスの送出タイミングが即時であった場合、送出から待機を経ること無く実行される。
【0054】
デバッグシーケンスの送出タイミングにシミュレーションが到達すると、デバッグシーケンス実行部602によってデバッグシーケンスの実行が再開される。 この時、デバッグ情報インポーザ101の割込み信号コントローラ603を通し、シミュレーション対象モデル106中のCPU105に対して割り込みを発生させる(ステップ710) 。なお、割り込みのない状態では、基本シミュレータ106AはそのCPU105で動作するソフトウェア202を実行している(ステップ712)。ソフトウェア202には、この割込み専用の割込みベクタが割当てられている。割り込みを受けて、ソフトウェア202はこの割込みベクタから、デバッグ操作注入専用の割込みハンドラに対してジャンプする。この割込みハンドラには、前述のステップ708でコピーされたバイナリ列の先頭へのジャンプ命令のみが記述されている。(ステップ713) するとCPU105の処理は、注入されたバイナリ列の実行へと遷移し、デバッグシーケンスを実行する。すなわち、ループ条件式を格納する変数のメモリ上での値が更新される(ステップ714)。
【0055】
そして、この割込みから退避すると、ソフトウェア202の実行が継続される (ステップ715) 。この時、デバッグシーケンスの実行によりループ条件が解除されているため、ソフトウェアの実行継続が可能な状態になる (ステップ716) 。
【0056】
このようにして、ソフトウェア202はその異常が解消され、シミュレーションが継続される。変数値異常、RAM値の異常、CPUの動作範囲の異常、などその他の異常の場合も、同様に、ユーザがソフト実行状況表示部301の情報を基に、異常状態解消のデバッグシーケンスを構築し、このデバッグシーケンス実行する。
【0057】
図8に、本発明におけるデバッグプロセスの概念を示す。ここでは、ステップ10、ステップ11、ステップ13〜ステップ15を実行する処理Aと、それに続く処理Bがあり、処理Aのループ条件に不具合がある場合を想定する。本発明では、ソフトウェアの実行を継続させるために、異常状態にあるソフトウェア、例えば無限にループするソフトウェアに対して、そのループ条件を上書きする命令列をステップ12として割り込ませ、ループ条件が格納されたメモリアドレスの値を書き換える。
【0058】
なお、この命令列を予めソフトウェアに組込む事は、割り込ませる命令列の柔軟性とROM使用量の観点から、コストが大きい。そこで、適切な命令列を都度メモリ上に読出し、ソフトウェアにはそのメモリ空間の先頭領域へのジャンプ命令のみを配置する方法を採用する。この場合、シミュレーション対象モデルに、特定の割込み要因に対応する特定アドレスに対するジャンプ命令のみで構成された割り込みハンドラを組込むだけで、利用可能となる(図7のステップ713、714)。
【0059】
次に、図9を用いて、本発明によるデバッグプロセスの変化を、図11と比較して概説する。
【0060】
ユーザがシミュレーションを開始し(ステップ900)、そして不具合Aによって、シミュレーションが無限ループに陥る(ステップ901)までは、本発明も従来例と同様である。
【0061】
次に、ユーザが不具合Aに対応するデバッグシーケンスを構築し注入する(ステップ902)。この時シミュレーションは停止せずそのまま実行が継続される(ステップ903)。次に、不具合Bによってシミュレーションが無限ループに陥った場合も(ステップ904)、同様に不具合Bに対応するデバッグシーケンスを構築して、注入することにより(ステップ905)、シミュレーションの実行継続が可能になる。(ステップ906)。このようにシミュレーションの終了と再実行をすることなく、シミュレーションの終了まで実行可能になる(ステップ907)。
【0062】
これによって、1回のシミュレーションが終了したときには、修正するべき不具合が網羅可能となり、後にまとめて、デバッグ用ユーザインターフェイス部107にデータを表示し(ステップ908)、このデータを基にユーザが必要な箇所の回避策を実装可能となる (ステップ910) 。
【0063】
本発明によるデバッグプロセスを、自動車の制御システムの組込みシステムに適用した場合の、デバッグシーケンスの一例を図10に示す。ここでは、ステップ10〜ステップ15からなる処理Aにおいて、そのステップ11が、センサ2のデータを入手して演算する処理を含むものであり、センサ2が未実装のためその出力が得られないで無限ループになっていると仮定する。この場合には、デバッグプロセスにより、センサ2の出力として分岐条件を満たす値、例えば12Vとしてループ条件を上書きする命令列をステップ120として割り込ませ、ループ条件が格納されたメモリアドレスの値を書き換える。これにより、センサ2が未実装のままでシミュレーションの処理Aを実行してさらに処理Bに進む、実行継続が可能になる。
【0064】
ステップ11の不具合がシミュレーション対象の構成部品、例えば機械系の一部品が未実装であった場合には、その部品に関する情報、ソフトウェアの一部の関数が未実装であった場合にはその関数に関する情報を、夫々書き換えることにより、シミュレーションの処理Aを実行してさらに処理Bに進む、シミュレーションの実行継続が可能になる。
【0065】
このように、本実施例によれば、ユーザに対し、シミュレーション対象モデルの外部からその実行継続条件を注入可能とする機能を提供することにより、ユーザがシステム挙動の把握及び回避策の実装を容易に行う事が可能である。
【0066】
また、本実施例によれば、専用デバッグ回路を有しないプロセッサを含むいかなる組込みシステムにおいても、ソフトウェアの構成に影響を与えること無く、上記のシミュレーションの実行継続を可能にしている。
【0067】
なお、上記組込みシステム210は、自動車の制御システムに限定されるものではなく、例えば、テレビ、ハードディスクコントローラ等、その他、種々のシステムに適用可能であることは言うまでもない。
【産業上の利用可能性】
【0068】
本発明は、複数のソフトウェアが連動して動作する計算機システム、または開発システムのプログラムに適用することができる。
【符号の説明】
【0069】
100: ユーザインターフェイス部101: デバッグ情報インポーザ102: 割込みコントローラ103: RAM104: ROM105: CPU106: シミュレーション対象モデル106A:基本シミュレータ
106B:拡張シミュレータ
200: マイコン201: CPU202: ソフトウェア203: 割込みコントローラ204: メモリバス205: 通信インターフェイス206: 周辺機器207: 機械部品210: 組込みシステム400: シーケンス構築画面401: 構築対象シーケンス選択リスト402: シーケンス内操作リスト403: コマンドー選択リスト404: アドレス入力フィールド405: アクセス値入力フィールド406: シーケンス追加ボタン300: ソフト実行状況表示画面301: ソフト実行状況表示部302: ソフト実行状況キャプチャ開始ボタン500: シーケンス送出画面501: シーケンス選択リスト502: 送出タイミング選択リスト503: シミュレーション時間入力フィールド504: シーケンス送出ボタン600: プロセス間通信インターフェイス601: 異常状態抽出部602: デバッグシーケンス実行部603: 割込み信号コントローラ604: バスマスタモデル700: シミュレーションの開始ステップ701: 実行状態キャプチャの開始ステップ702: 無限ループ状態の検出と提示ステップ703: デバッグシーケンスの作成ステップ704: デバッグ注入時期の指定ステップ705: デバッグシーケンスのバイナリ列への変換ステップ706: デバッグシーケンスのデバッグ注入部への送出ステップ707: 命令の解釈ステップ
708: デバッグシーケンスをメモリ上の予約領域へと転送するステップ709: 指定された注入時期まで待機するステップ710: 割込みを発生させるステップ711: 専用割込みベクタから予約領域の先頭へジャンプするステップ
712: 指定されたデバッグシーケンスの実行ステップ713: ソフトウェアの実行継続ステップ714: 無限ループからの脱出ステップ900: シミュレーションの開始ステップ901: 不具合Aによるシミュレーション停止ステップ902: 不具合Aに対するデバッグコード注入のステップ903: シミュレーションの再実行ステップ904: 不具合Bによるシミュレーション停止ステップ905: 不具合Bに対するデバッグコード注入のステップ906: シミュレーションの終了ステップ907: 不具合Aの回避策を実装するステップ908: 不具合Bの回避策を実装するステップS1100: シミュレーションの開始ステップS1101: 不具合Aによるシミュレーション停止ステップS1102: 不具合Aの回避策を実装するステップS1103: シミュレーションの再実行ステップS1104: 不具合Bによるシミュレーション停止ステップS1105: 不具合Bの回避策を実装するステップS1106: シミュレーションの再実行ステップ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12