JP2004348291A - シミュレーション装置およびシミュレーション方法 - Google Patents
シミュレーション装置およびシミュレーション方法 Download PDFInfo
- Publication number
- JP2004348291A JP2004348291A JP2003142658A JP2003142658A JP2004348291A JP 2004348291 A JP2004348291 A JP 2004348291A JP 2003142658 A JP2003142658 A JP 2003142658A JP 2003142658 A JP2003142658 A JP 2003142658A JP 2004348291 A JP2004348291 A JP 2004348291A
- Authority
- JP
- Japan
- Prior art keywords
- task
- simulation
- embedded software
- software
- simulator
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】ハードウェアのモデルと並列動作することができ、また、特別の機能の実装を必要とすることなく、シミュレーション動作を実行することができるシミュレーション装置を提供する。
【解決手段】シミュレーション装置は、実行中のアプリケーション・タスク16(1−N)の優先度に関係なくソフトウェアとハードウェア・モデル19(1−N)との並行動作を模倣させるためにソフトウェアの状態に基づいてソフトウェアを制御するため、ソフトウェアの状態をハードウェア・モデルのタスクとは独立に管理するOSシミュレータ12と、その情報をもとに次に動作すべきタスクを起床させるレイザー14と、その情報をもとに各タスクが自身の実行を停止する自己停止機能15(1−N)とを設けている。
【選択図】 図2
【解決手段】シミュレーション装置は、実行中のアプリケーション・タスク16(1−N)の優先度に関係なくソフトウェアとハードウェア・モデル19(1−N)との並行動作を模倣させるためにソフトウェアの状態に基づいてソフトウェアを制御するため、ソフトウェアの状態をハードウェア・モデルのタスクとは独立に管理するOSシミュレータ12と、その情報をもとに次に動作すべきタスクを起床させるレイザー14と、その情報をもとに各タスクが自身の実行を停止する自己停止機能15(1−N)とを設けている。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、例えば、組込み制御システムの開発に用いられる情報処理装置に関するものである。
【0002】
【従来の技術】
システム・オン・チップなどの開発では、ハードウェアとソフトウェアをC言語プログラムで模倣し、開発マシン上で並列動作させるシミュレーション装置(以下、協調シミュレータと呼ぶ)が広く用いられる。
【0003】
協調シミュレータには、組込みソフトウェアをターゲットとなるプロセッサで実行される場合と同じ命令列に変換 (コンパイル)し、それをプロセッサのシミュレータが実行する方式の装置(ターゲット・コード・シミュレータ)と、組込みソフトウェアを開発マシンが実行可能な命令列に変換して実行する方式の装置(ネイティブ・コード・シミュレータ)とに大別される。
【0004】
これらのうち、後者の方式は前者よりも10〜100倍の速度でシミュレーションが実行できるという利点があるが、ハードウェアのモデルと組込みソフトウェアを並列動作させるための制御が難しいという問題点がある。
【0005】
ネイティブ・コード・シミュレータの並列動作の制御方式には、ハードウェアの機能を関数として実装する方法と、ハードウェアの機能を独立したタスクまたはスレッドとして実装する方法の二種類がある。
【0006】
前者は制御が比較的容易であるが、ハードウェアは関数呼び出しによってしか動作せず、関数からリターンする時点で既に動作が完了しているというモデルにならざるを得ないため、組込みシステムにとって重要なハードウェアとソフトウェアの並列動作の十分な検証が出来ないという欠点がある。後者はハードウェアが独立して動作できるため、ソフトウェアとの並列動作の再現性に優れる。
【0007】
また、特許文献1には、テキストプログラム中の命令が実行されるタイミングに同期してイベントがスケジュールされ、しかも高い信頼性の論理検証を行うことができるイベント発生装置、ハードウエアシミュレーション装置およびその方法が開示されている。
【0008】
【特許文献1】
特開平11−110429号公報
【0009】
【発明が解決しようとする課題】
近年、組込みに用いられるソフトウェアが急速に複雑化するにつれ、ソフトウェア自身もリアルタイムOSを用いてマルチタスクとして実装されるようになってきた。これにより、協調シミュレータ上でソフトウェア・タスクを一つではなく複数実行させねばならなくなり、かつそのタスク間で優先度の制御や排他制御をしなくてはならなくなった。
【0010】
ところが従来の、ハードウェアとソフトウェアを独立したタスク、あるいはスレッドとして実行するタイプのネイティブ・コード・シミュレータでは、図3Aの従来技術のシミュレーションに示すように、ソフトウェアがタスク1(16−1)、タスク2(16−2)間で、T5−T7期間の32またはT12−T14期間の35のようにタスク2(16−2)の優先度を高くまたは低くする優先度の制御や、T8−T10期間の33のようにタスク2(16−2)を実行状態(wake up)として排他制御を行うと、T6期間またはT13期間のようにタスク2(16−2)の優先度を高くまたは低くする情報をシミュレータ12に報告し、T9期間のようにタスク2(16−2)を実行状態(wake up)とする情報をシミュレータ12に報告することによりシミュレータ12はこれを認識するため、ハードウェアHW19のモデルを実行させることができなくなり、36のようにハードウェアHW19のモデルまで停止してしまうという問題があり、高速なネイティブ・コード・シミュレータを用いることができなかったという不都合があった。
【0011】
また、ターゲット装置で使用するリアルタイムOSの持つタスク間通信機構やメモリ管理機構のうち、協調シミュレータの機能として実装されていないものについても使用できなかったという不都合があった。
【0012】
また、特許文献1では、命令が実行されるタイミングに同期してイベントが確実に発生する点が記載されているのみで、ハードウェアとソフトウェアを独立したタスクとして実行するものではなく、本願発明と異なる。
【0013】
そこで、本発明は、かかる点に鑑みてなされたものであり、ハードウェアのモデルと並列動作することができ、また、特別の機能の実装を必要とすることなく、シミュレーション動作を実行することができるシミュレーション装置を提供することを課題とする。
【0014】
【課題を解決するための手段】
本発明のシミュレーション装置は、上述した課題を解決するために、組込みソフトウェアの実行中のタスクの優先度に関係なく組込みソフトウェアとハードウェア・デバイス・モデルとの並行動作を模倣させるために組込みソフトウェアのタスクの状態に基づいて組込みソフトウェアのタスクを制御する並行動作模倣手段を備えるものである。
【0015】
また、本発明のシミュレーション装置における並行動作模倣手段は、ソフトウェアのタスクの状態をハードウェアのタスクとは独立に管理するタスク管理手段と、その情報をもとに次に動作すべきタスクを起床させるタスク起床手段と、その情報をもとに各タスクが自身の実行を停止する停止手段とを設けている。
【0016】
従って本発明によれば、以下の作用をする。
本発明では、シミュレーション対象の組込みソフトウェアが提供するシステム・コールを共有関数として準備し、その中にタスクの実行順序を管理する機能としてタスク管理手段を付加してある。
【0017】
組込みソフトウェアのアプリケーション・タスクがシステム・コールを実行したことにより、タスクの実行順序が変わり、タスクのディスパッチが必要となると、停止手段によりアプリケーション・タスクは自ら停止状態となる。
【0018】
一方、他のタスクを起床させるためのタスクとしてタスク起床手段を用意してあり、このタスク起床手段が次に実行されるべきタスクを起床させる。
【0019】
【発明の実施の形態】
以下に、本発明の実施の形態について適宜図面を参照しながら説明する。
【0020】
以下、図面を参照し、本発明の実施の形態について説明する。
図1は、本発明の実施の形態による自己停止と起床のアルゴリズムを示すためのフローチャートであり、図1Aはアプリケーション・タスク、図1Bはレイザーである。
【0021】
図2は本発明の一実施の形態によるOSシミュレーション装置を備えた情報処理装置の構成を示すブロック図である。
図2において、10はパーソナルコンピュータであり、この上で動作するプログラムである、ハード/ソフト協調シミュレータ11を有して構成される。ハード/ソフト協調シミュレータ11は複数のデバイスのハードウェア・モデル19−1,19−2・・・19−Nとソフトウェアのモデルをアプリケーション・タスク16−1,16−2・・・16−Nとして並列に動作させる機能を持つものである。
【0022】
このOSシミュレーション装置は、組込みソフトウェアであるOSの実行中のアプリケーション・タスク16−1,16−2・・・16−Nの優先度に関係なく組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nとハードウェア・デバイス・モデル19−1,19−2・・・19−Nとの並行動作を模倣させるために組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nの状態に基づいて組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nを制御する並行動作模倣手段を有して構成される。
【0023】
また、並行動作模倣手段は、ソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nの状態をハードウェア・デバイス・モデル19−1,19−2・・・19−Nのタスクとは独立に管理するOSシミュレータ12(タスク管理手段)と、その情報をもとに次に動作すべきタスクを起床させるレイザー14(タスク起床手段)と、その情報をもとに各タスクが自身の実行を停止する自己停止機構15−1、15−2、・・・15−N(停止手段)とを設けている。なお、オブジェクト管理部17はシミュレーション対象を管理する。
【0024】
以下、タスクを停止・起床させる動作を示す。
OSシミュレータ12によりこのハード/ソフト協調シミュレータ11が実行されると、各タスクは実行可能状態となるが、ソフトウェアのタスクのうち、14のレイザー(raiser)のみを実行可能状態とし、その他のアプリケーション・タスク16−1,16−2・・・16−Nは停止状態にしておく。これは、図1Bにおいて、レイザーが動作を開始する状態である。
【0025】
システムの初期化が完了すると、レイザー14は自らが管理するタスク管理情報17を参照し、次に実行すべきアプリケーション・タスク16−1を実行可能状態とし、自タスクの実行を中断する。これは、図1Aにおいて、アプリケーション・タスクが動作を開始する状態である。本実施の形態では、シミュレーション対象のOS(operating system)が提供するシステム・コールを共有関数として準備し、その中にタスクの実行順序を管理する機能を付加してある。
【0026】
これを受けてOSシミュレータ12はディスパッチを行い、各ハードウェア・モデル19−1,19−2・・・19−Nを実行した後にタスク16−1に制御を移す。
【0027】
アプリケーション・タスク16−1はハードウェア・モデル19−1,19−2・・・19−Nと同等のタスクとしてOSシミュレータ12上で並列動作を行う。これは、図1Aにおいて、アプリケーション・タスクがステップS1でタスク・コンテクストであるか否かを判断においてタスク・コンテクストである動作をする状態、および図1Bにおいて、レイザーがステップS11でタスク・コンテクストであるか否かを判断においてタスク・コンテクストである動作をする状態である。
【0028】
このとき、レイザー14も並列に動作しているが、レイザー14はタスク管理情報17からディスパッチする必要がないことを判断し、すぐに他のアプリケーション・タスク16−1,16−2・・・16−Nに制御を明け渡す。これは、図1Bにおいて、レイザーがステップS12でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS13で実行中のタスクと実行中であるべきタスクは同一であるか否かを判断において実行中のタスクと実行中であるべきタスクは同一である動作をする状態である。またこのとき、図1Aにおいて、アプリケーション・タスクがステップS2でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS3で実行中であるべきタスクは自分自身であるか否かを判断において実行中であるべきタスクは自分自身である動作をする状態である。
【0029】
アプリケーション・タスク16−1がOS−API(applicationprogram interface)13の実行によって待ち状態になる場合は、タスクOS−API13内で自ら停止状態となり、他のアプリケーション・タスク16−1,16−2・・・16−Nへ制御を明け渡す。これは、図1Aにおいて、アプリケーション・タスクがステップS2でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS3で実行中であるべきタスクは自分自身であるか否かを判断において実行中であるべきタスクは自分自身でない動作をする状態であり、ステップS4で自タスクを停止状態にする動作をする状態である。アプリケーション・タスクがシステム・コールを実行したことにより、タスクの実行順序が変わり、タスクのディスパッチが必要となると、アプリケーション・タスクは図1AのステップS4により、自ら停止状態となる。
【0030】
次にレイザー14に実行権がまわってくると、レイザー14はタスク管理情報17によってディスパッチの必要があることを検知し、タスク16−2を実行可能状態にする。これは、図1Bにおいて、レイザーがステップS14で実行中であるべきタスクを起床する動作をする状態である。またこのとき、図1Aにおいて、アプリケーション・タスクがステップ52で起床する動作をする状態である。本実施の形態では他のタスクを起床させるためのタスク(レイズ・タスク)を示すレイザーを用意してあり、このタスクが次に実行されるべきタスクを起床させる。
【0031】
図3Aの本発明によるシミュレーションの動作を説明する。
図3Aに示すように、T28−T30期間の43のようにタスク2(16−2)の優先度を高くするとき、T29期間でタスク2(16−2)は優先度を高くしたことをレイザー14にのみ報告し、シミュレータ12には報告しない。これにより、シミュレータ12はタスク2(16−2)は優先度を高くしたことを認識していないため、T31−T32期間でハードウェアHW19のモデルと並列動作をさせることができる。
【0032】
また、T42−T45期間の45のようにタスク2(16−2)の優先度を低くするとき、T43期間でタスク2(16−2)は優先度を低くしたことをレイザー14にのみ報告し、シミュレータ12には報告しない。これにより、シミュレータ12はタスク2(16−2)は優先度を低くしたことを認識していないため、T46−T47期間でハードウェアHW19のモデルと並列動作をさせることができる。
【0033】
また、T35−T37期間の44のようにタスク2(16−2)を実行状態(wake up)として排他制御を行った場合であっても、T38−T39期間の48のようにハードウェアHW19のモデルと並列動作をさせることができる。なお、実行状態(wake up)を解除する動作を解除状態(sleep)とする。
【0034】
これにより、ソフトウェアがタスク間で、タスクの優先度を高くまたは低くする優先度の制御や、排他制御を行った場合であっても、ハードウェアのモデルと並列動作をさせることができ、高速なネイティブ・コード・シミュレータを実現することができる。
【0035】
図4は、詳細動作を示すフローチャートである。
T61期間までシミュレータ12はハードウェアHW19のモデルに対するタスク生成66を行う。T61−T62期間の51のようにハードウェアHW19のモデルはタスク初期化を行い、制御をシミュレータ12に離す。
【0036】
T62−T63期間でシミュレータ12はレイザー14に対するタスク生成67を行う。T63−T64期間の52のようにレイザー14はタスク初期化を行い、シミュレータ12にタスク1生成要求を行う。
【0037】
T65−T66期間でシミュレータ12はソフトウエアタスク1(16−1)に対するタスク生成68を行う。T65−T66期間の53のようにソフトウエアタスク1(16−1)はタスク初期化を行い、シミュレータ12に自タスクの停止の報告を行う。
【0038】
T67−T68期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。T69−T70期間でレイザー14はシミュレータ12にタスク2生成要求54を行う。
【0039】
T70−T71期間でシミュレータ12はソフトウエアタスク2(16−2)に対するタスク生成69を行う。T71−T72期間の55のようにソフトウエアタスク2(16−2)はタスク初期化を行い、シミュレータ12に自タスクの停止の報告を行う。
【0040】
T73−T74期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。T75−T76期間でレイザー14はシミュレータ12にタスク1起床要求56を行う。
【0041】
T77−T78期間の57のようにソフトウエアタスク1(16−1)はタスク1処理開始を行い、シミュレータ12に報告を行う。
【0042】
T79−T80期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0043】
T81−T82期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T83−T84期間でソフトウエアタスク1(16−1)はタスク1処理を行い、シミュレータ12に報告を行う。
【0044】
T85−T86期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0045】
T87−T88期間でレイザー14はシミュレータ12にタスク1OS−API実行要求を行う。T89−T90期間の58のようにソフトウエアタスク1(16−1)はタスク1OS−API実行処理を行い、シミュレータ12に報告を行う。T90−T91期間の59のようにソフトウエアタスク1(16−1)は、シミュレータ12に自タスクの停止の報告を行う。
【0046】
T92−T93期間でレイザー14はシミュレータ12にタスク2起床要求60を行う。T94−T95期間の61のようにソフトウエアタスク2(16−2)はタスク2処理開始を行い、シミュレータ12に報告を行う。
【0047】
T96−T97期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0048】
T98−T99期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T100−T10期間でソフトウエアタスク2(16−2)はタスク2処理を行い、シミュレータ12に報告を行う。
【0049】
T102−T103期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0050】
T104−T105期間でレイザー14はシミュレータ12にタスク2OS−API実行要求を行う。T106−T107期間の62のようにソフトウエアタスク2(16−2)はタスク2OS−API実行処理を行い、シミュレータ12に報告を行う。T107−T108期間の63のようにソフトウエアタスク2(16−2)は、シミュレータ12に自タスクの停止の報告を行う。
【0051】
T109−T110期間でレイザー14はシミュレータ12にタスク1起床要求64を行う。T111−T112期間の65のようにソフトウエアタスク1(16−1)はタスク1処理再開を行い、シミュレータ12に報告を行う。
【0052】
T113−T114期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0053】
T114−T115期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T117−T118期間でソフトウエアタスク1(16−1)はタスク1処理を行い、シミュレータ12に報告を行う。
【0054】
これにより、ソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)による自タスクの停止、およびレイザー14のソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)に対するタスクの起床の動作の制御することにより、ソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)の実行順序の制御を行うことができ、また、ハードウェアHW19のモデルとソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)との並列動作をさせることができる。
【0055】
本発明はこの様な協調シミュレータの上で動作するものであり、協調シミュレータの提供する・自タスクをいったん中断し、他のタスクに制御を明け渡す機能・自タスクを停止状態にする機能・他のタスクを実行可能状態にする機能のみを用いてソフトウエアタスクの優先度に応じた切り替えをシミュレーションできるものであり、ベースとなるシミュレータのタスク管理機能が最小限でよいため、本発明はこの実施の形態にのみ限定されるものではなく、広く応用可能である。
【0056】
例えば、ITRON OSを代表とする組込みシステムのリアルタイムOSはこの発明が要求する機能を備えているため、そこにこの発明を適用することによりリアルタイムOS上で他のリアルタイムOSと同等機能のシミュレータを動かすことが可能となる。これは、複数種類のOS用のアプリケーションをひとつのプロセッサ上で動作させることや、複数のマルチタスク・アプリケーションを互いの優先度の干渉を起こさせずにひとつのプロセッサ上で動作させることを可能とし、ソフトウェアの再利用性を大きく高めることができることを意味するものである。
【0057】
なお、上述した本発明の実施の形態に限らず、本発明の特許請求の範囲を逸脱しない限り、適宜他の構成をとりうることができることは言うまでもない。
【0058】
【発明の効果】
以上説明したように、本発明によれば、ハードウェア/プロセッサ/マルチタスク・ソフトウェアを含むシステムを高速に機能検証できるという効果を奏する。また、ベースとなるシミュレータやOSのシステム・コールを最小限しか用いないため、ソフトウェア資産の流用や組み合わせが容易になるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の実施の形態による自己停止と起床のアルゴリズムを示すためのフローチャートであり、図1Aはアプリケーション・タスク、図1Bはレイザーである。
【図2】本発明の一実施の形態によるOSシミュレーション装置を備えた情報処理装置の構成を示すブロック図である。
【図3】動作を示すタイムチャートであり、図3Aは従来技術によるシミュレーション、図3Bは本発明によるシミュレーションである。
【図4】動作を示すタイムチャートである。
【符号の説明】
10……パーソナルコンピュータ、11……ハード/ソフト協調シミュレータ、12……OSシミュレータ、13……OS−API、14……レイザー、15……自己停止機能、16(1−N)……アプリケーション・タスク、17……タスク管理部、18……オブジェクト管理部、19(1−N)……ハードウェア・モデル
【発明の属する技術分野】
本発明は、例えば、組込み制御システムの開発に用いられる情報処理装置に関するものである。
【0002】
【従来の技術】
システム・オン・チップなどの開発では、ハードウェアとソフトウェアをC言語プログラムで模倣し、開発マシン上で並列動作させるシミュレーション装置(以下、協調シミュレータと呼ぶ)が広く用いられる。
【0003】
協調シミュレータには、組込みソフトウェアをターゲットとなるプロセッサで実行される場合と同じ命令列に変換 (コンパイル)し、それをプロセッサのシミュレータが実行する方式の装置(ターゲット・コード・シミュレータ)と、組込みソフトウェアを開発マシンが実行可能な命令列に変換して実行する方式の装置(ネイティブ・コード・シミュレータ)とに大別される。
【0004】
これらのうち、後者の方式は前者よりも10〜100倍の速度でシミュレーションが実行できるという利点があるが、ハードウェアのモデルと組込みソフトウェアを並列動作させるための制御が難しいという問題点がある。
【0005】
ネイティブ・コード・シミュレータの並列動作の制御方式には、ハードウェアの機能を関数として実装する方法と、ハードウェアの機能を独立したタスクまたはスレッドとして実装する方法の二種類がある。
【0006】
前者は制御が比較的容易であるが、ハードウェアは関数呼び出しによってしか動作せず、関数からリターンする時点で既に動作が完了しているというモデルにならざるを得ないため、組込みシステムにとって重要なハードウェアとソフトウェアの並列動作の十分な検証が出来ないという欠点がある。後者はハードウェアが独立して動作できるため、ソフトウェアとの並列動作の再現性に優れる。
【0007】
また、特許文献1には、テキストプログラム中の命令が実行されるタイミングに同期してイベントがスケジュールされ、しかも高い信頼性の論理検証を行うことができるイベント発生装置、ハードウエアシミュレーション装置およびその方法が開示されている。
【0008】
【特許文献1】
特開平11−110429号公報
【0009】
【発明が解決しようとする課題】
近年、組込みに用いられるソフトウェアが急速に複雑化するにつれ、ソフトウェア自身もリアルタイムOSを用いてマルチタスクとして実装されるようになってきた。これにより、協調シミュレータ上でソフトウェア・タスクを一つではなく複数実行させねばならなくなり、かつそのタスク間で優先度の制御や排他制御をしなくてはならなくなった。
【0010】
ところが従来の、ハードウェアとソフトウェアを独立したタスク、あるいはスレッドとして実行するタイプのネイティブ・コード・シミュレータでは、図3Aの従来技術のシミュレーションに示すように、ソフトウェアがタスク1(16−1)、タスク2(16−2)間で、T5−T7期間の32またはT12−T14期間の35のようにタスク2(16−2)の優先度を高くまたは低くする優先度の制御や、T8−T10期間の33のようにタスク2(16−2)を実行状態(wake up)として排他制御を行うと、T6期間またはT13期間のようにタスク2(16−2)の優先度を高くまたは低くする情報をシミュレータ12に報告し、T9期間のようにタスク2(16−2)を実行状態(wake up)とする情報をシミュレータ12に報告することによりシミュレータ12はこれを認識するため、ハードウェアHW19のモデルを実行させることができなくなり、36のようにハードウェアHW19のモデルまで停止してしまうという問題があり、高速なネイティブ・コード・シミュレータを用いることができなかったという不都合があった。
【0011】
また、ターゲット装置で使用するリアルタイムOSの持つタスク間通信機構やメモリ管理機構のうち、協調シミュレータの機能として実装されていないものについても使用できなかったという不都合があった。
【0012】
また、特許文献1では、命令が実行されるタイミングに同期してイベントが確実に発生する点が記載されているのみで、ハードウェアとソフトウェアを独立したタスクとして実行するものではなく、本願発明と異なる。
【0013】
そこで、本発明は、かかる点に鑑みてなされたものであり、ハードウェアのモデルと並列動作することができ、また、特別の機能の実装を必要とすることなく、シミュレーション動作を実行することができるシミュレーション装置を提供することを課題とする。
【0014】
【課題を解決するための手段】
本発明のシミュレーション装置は、上述した課題を解決するために、組込みソフトウェアの実行中のタスクの優先度に関係なく組込みソフトウェアとハードウェア・デバイス・モデルとの並行動作を模倣させるために組込みソフトウェアのタスクの状態に基づいて組込みソフトウェアのタスクを制御する並行動作模倣手段を備えるものである。
【0015】
また、本発明のシミュレーション装置における並行動作模倣手段は、ソフトウェアのタスクの状態をハードウェアのタスクとは独立に管理するタスク管理手段と、その情報をもとに次に動作すべきタスクを起床させるタスク起床手段と、その情報をもとに各タスクが自身の実行を停止する停止手段とを設けている。
【0016】
従って本発明によれば、以下の作用をする。
本発明では、シミュレーション対象の組込みソフトウェアが提供するシステム・コールを共有関数として準備し、その中にタスクの実行順序を管理する機能としてタスク管理手段を付加してある。
【0017】
組込みソフトウェアのアプリケーション・タスクがシステム・コールを実行したことにより、タスクの実行順序が変わり、タスクのディスパッチが必要となると、停止手段によりアプリケーション・タスクは自ら停止状態となる。
【0018】
一方、他のタスクを起床させるためのタスクとしてタスク起床手段を用意してあり、このタスク起床手段が次に実行されるべきタスクを起床させる。
【0019】
【発明の実施の形態】
以下に、本発明の実施の形態について適宜図面を参照しながら説明する。
【0020】
以下、図面を参照し、本発明の実施の形態について説明する。
図1は、本発明の実施の形態による自己停止と起床のアルゴリズムを示すためのフローチャートであり、図1Aはアプリケーション・タスク、図1Bはレイザーである。
【0021】
図2は本発明の一実施の形態によるOSシミュレーション装置を備えた情報処理装置の構成を示すブロック図である。
図2において、10はパーソナルコンピュータであり、この上で動作するプログラムである、ハード/ソフト協調シミュレータ11を有して構成される。ハード/ソフト協調シミュレータ11は複数のデバイスのハードウェア・モデル19−1,19−2・・・19−Nとソフトウェアのモデルをアプリケーション・タスク16−1,16−2・・・16−Nとして並列に動作させる機能を持つものである。
【0022】
このOSシミュレーション装置は、組込みソフトウェアであるOSの実行中のアプリケーション・タスク16−1,16−2・・・16−Nの優先度に関係なく組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nとハードウェア・デバイス・モデル19−1,19−2・・・19−Nとの並行動作を模倣させるために組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nの状態に基づいて組込みソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nを制御する並行動作模倣手段を有して構成される。
【0023】
また、並行動作模倣手段は、ソフトウェアのアプリケーション・タスク16−1,16−2・・・16−Nの状態をハードウェア・デバイス・モデル19−1,19−2・・・19−Nのタスクとは独立に管理するOSシミュレータ12(タスク管理手段)と、その情報をもとに次に動作すべきタスクを起床させるレイザー14(タスク起床手段)と、その情報をもとに各タスクが自身の実行を停止する自己停止機構15−1、15−2、・・・15−N(停止手段)とを設けている。なお、オブジェクト管理部17はシミュレーション対象を管理する。
【0024】
以下、タスクを停止・起床させる動作を示す。
OSシミュレータ12によりこのハード/ソフト協調シミュレータ11が実行されると、各タスクは実行可能状態となるが、ソフトウェアのタスクのうち、14のレイザー(raiser)のみを実行可能状態とし、その他のアプリケーション・タスク16−1,16−2・・・16−Nは停止状態にしておく。これは、図1Bにおいて、レイザーが動作を開始する状態である。
【0025】
システムの初期化が完了すると、レイザー14は自らが管理するタスク管理情報17を参照し、次に実行すべきアプリケーション・タスク16−1を実行可能状態とし、自タスクの実行を中断する。これは、図1Aにおいて、アプリケーション・タスクが動作を開始する状態である。本実施の形態では、シミュレーション対象のOS(operating system)が提供するシステム・コールを共有関数として準備し、その中にタスクの実行順序を管理する機能を付加してある。
【0026】
これを受けてOSシミュレータ12はディスパッチを行い、各ハードウェア・モデル19−1,19−2・・・19−Nを実行した後にタスク16−1に制御を移す。
【0027】
アプリケーション・タスク16−1はハードウェア・モデル19−1,19−2・・・19−Nと同等のタスクとしてOSシミュレータ12上で並列動作を行う。これは、図1Aにおいて、アプリケーション・タスクがステップS1でタスク・コンテクストであるか否かを判断においてタスク・コンテクストである動作をする状態、および図1Bにおいて、レイザーがステップS11でタスク・コンテクストであるか否かを判断においてタスク・コンテクストである動作をする状態である。
【0028】
このとき、レイザー14も並列に動作しているが、レイザー14はタスク管理情報17からディスパッチする必要がないことを判断し、すぐに他のアプリケーション・タスク16−1,16−2・・・16−Nに制御を明け渡す。これは、図1Bにおいて、レイザーがステップS12でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS13で実行中のタスクと実行中であるべきタスクは同一であるか否かを判断において実行中のタスクと実行中であるべきタスクは同一である動作をする状態である。またこのとき、図1Aにおいて、アプリケーション・タスクがステップS2でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS3で実行中であるべきタスクは自分自身であるか否かを判断において実行中であるべきタスクは自分自身である動作をする状態である。
【0029】
アプリケーション・タスク16−1がOS−API(applicationprogram interface)13の実行によって待ち状態になる場合は、タスクOS−API13内で自ら停止状態となり、他のアプリケーション・タスク16−1,16−2・・・16−Nへ制御を明け渡す。これは、図1Aにおいて、アプリケーション・タスクがステップS2でディスパッチ許可状態であるか否かを判断においてディスパッチ許可状態であり、ステップS3で実行中であるべきタスクは自分自身であるか否かを判断において実行中であるべきタスクは自分自身でない動作をする状態であり、ステップS4で自タスクを停止状態にする動作をする状態である。アプリケーション・タスクがシステム・コールを実行したことにより、タスクの実行順序が変わり、タスクのディスパッチが必要となると、アプリケーション・タスクは図1AのステップS4により、自ら停止状態となる。
【0030】
次にレイザー14に実行権がまわってくると、レイザー14はタスク管理情報17によってディスパッチの必要があることを検知し、タスク16−2を実行可能状態にする。これは、図1Bにおいて、レイザーがステップS14で実行中であるべきタスクを起床する動作をする状態である。またこのとき、図1Aにおいて、アプリケーション・タスクがステップ52で起床する動作をする状態である。本実施の形態では他のタスクを起床させるためのタスク(レイズ・タスク)を示すレイザーを用意してあり、このタスクが次に実行されるべきタスクを起床させる。
【0031】
図3Aの本発明によるシミュレーションの動作を説明する。
図3Aに示すように、T28−T30期間の43のようにタスク2(16−2)の優先度を高くするとき、T29期間でタスク2(16−2)は優先度を高くしたことをレイザー14にのみ報告し、シミュレータ12には報告しない。これにより、シミュレータ12はタスク2(16−2)は優先度を高くしたことを認識していないため、T31−T32期間でハードウェアHW19のモデルと並列動作をさせることができる。
【0032】
また、T42−T45期間の45のようにタスク2(16−2)の優先度を低くするとき、T43期間でタスク2(16−2)は優先度を低くしたことをレイザー14にのみ報告し、シミュレータ12には報告しない。これにより、シミュレータ12はタスク2(16−2)は優先度を低くしたことを認識していないため、T46−T47期間でハードウェアHW19のモデルと並列動作をさせることができる。
【0033】
また、T35−T37期間の44のようにタスク2(16−2)を実行状態(wake up)として排他制御を行った場合であっても、T38−T39期間の48のようにハードウェアHW19のモデルと並列動作をさせることができる。なお、実行状態(wake up)を解除する動作を解除状態(sleep)とする。
【0034】
これにより、ソフトウェアがタスク間で、タスクの優先度を高くまたは低くする優先度の制御や、排他制御を行った場合であっても、ハードウェアのモデルと並列動作をさせることができ、高速なネイティブ・コード・シミュレータを実現することができる。
【0035】
図4は、詳細動作を示すフローチャートである。
T61期間までシミュレータ12はハードウェアHW19のモデルに対するタスク生成66を行う。T61−T62期間の51のようにハードウェアHW19のモデルはタスク初期化を行い、制御をシミュレータ12に離す。
【0036】
T62−T63期間でシミュレータ12はレイザー14に対するタスク生成67を行う。T63−T64期間の52のようにレイザー14はタスク初期化を行い、シミュレータ12にタスク1生成要求を行う。
【0037】
T65−T66期間でシミュレータ12はソフトウエアタスク1(16−1)に対するタスク生成68を行う。T65−T66期間の53のようにソフトウエアタスク1(16−1)はタスク初期化を行い、シミュレータ12に自タスクの停止の報告を行う。
【0038】
T67−T68期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。T69−T70期間でレイザー14はシミュレータ12にタスク2生成要求54を行う。
【0039】
T70−T71期間でシミュレータ12はソフトウエアタスク2(16−2)に対するタスク生成69を行う。T71−T72期間の55のようにソフトウエアタスク2(16−2)はタスク初期化を行い、シミュレータ12に自タスクの停止の報告を行う。
【0040】
T73−T74期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。T75−T76期間でレイザー14はシミュレータ12にタスク1起床要求56を行う。
【0041】
T77−T78期間の57のようにソフトウエアタスク1(16−1)はタスク1処理開始を行い、シミュレータ12に報告を行う。
【0042】
T79−T80期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0043】
T81−T82期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T83−T84期間でソフトウエアタスク1(16−1)はタスク1処理を行い、シミュレータ12に報告を行う。
【0044】
T85−T86期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0045】
T87−T88期間でレイザー14はシミュレータ12にタスク1OS−API実行要求を行う。T89−T90期間の58のようにソフトウエアタスク1(16−1)はタスク1OS−API実行処理を行い、シミュレータ12に報告を行う。T90−T91期間の59のようにソフトウエアタスク1(16−1)は、シミュレータ12に自タスクの停止の報告を行う。
【0046】
T92−T93期間でレイザー14はシミュレータ12にタスク2起床要求60を行う。T94−T95期間の61のようにソフトウエアタスク2(16−2)はタスク2処理開始を行い、シミュレータ12に報告を行う。
【0047】
T96−T97期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0048】
T98−T99期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T100−T10期間でソフトウエアタスク2(16−2)はタスク2処理を行い、シミュレータ12に報告を行う。
【0049】
T102−T103期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0050】
T104−T105期間でレイザー14はシミュレータ12にタスク2OS−API実行要求を行う。T106−T107期間の62のようにソフトウエアタスク2(16−2)はタスク2OS−API実行処理を行い、シミュレータ12に報告を行う。T107−T108期間の63のようにソフトウエアタスク2(16−2)は、シミュレータ12に自タスクの停止の報告を行う。
【0051】
T109−T110期間でレイザー14はシミュレータ12にタスク1起床要求64を行う。T111−T112期間の65のようにソフトウエアタスク1(16−1)はタスク1処理再開を行い、シミュレータ12に報告を行う。
【0052】
T113−T114期間でハードウェアHW19のモデルの実行状態の後に、制御をシミュレータ12に離す。
【0053】
T114−T115期間でレイザー14はシミュレータ12にタスク1処理要求を行う。T117−T118期間でソフトウエアタスク1(16−1)はタスク1処理を行い、シミュレータ12に報告を行う。
【0054】
これにより、ソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)による自タスクの停止、およびレイザー14のソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)に対するタスクの起床の動作の制御することにより、ソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)の実行順序の制御を行うことができ、また、ハードウェアHW19のモデルとソフトウエアタスク1(16−1)およびソフトウエアタスク2(16−2)との並列動作をさせることができる。
【0055】
本発明はこの様な協調シミュレータの上で動作するものであり、協調シミュレータの提供する・自タスクをいったん中断し、他のタスクに制御を明け渡す機能・自タスクを停止状態にする機能・他のタスクを実行可能状態にする機能のみを用いてソフトウエアタスクの優先度に応じた切り替えをシミュレーションできるものであり、ベースとなるシミュレータのタスク管理機能が最小限でよいため、本発明はこの実施の形態にのみ限定されるものではなく、広く応用可能である。
【0056】
例えば、ITRON OSを代表とする組込みシステムのリアルタイムOSはこの発明が要求する機能を備えているため、そこにこの発明を適用することによりリアルタイムOS上で他のリアルタイムOSと同等機能のシミュレータを動かすことが可能となる。これは、複数種類のOS用のアプリケーションをひとつのプロセッサ上で動作させることや、複数のマルチタスク・アプリケーションを互いの優先度の干渉を起こさせずにひとつのプロセッサ上で動作させることを可能とし、ソフトウェアの再利用性を大きく高めることができることを意味するものである。
【0057】
なお、上述した本発明の実施の形態に限らず、本発明の特許請求の範囲を逸脱しない限り、適宜他の構成をとりうることができることは言うまでもない。
【0058】
【発明の効果】
以上説明したように、本発明によれば、ハードウェア/プロセッサ/マルチタスク・ソフトウェアを含むシステムを高速に機能検証できるという効果を奏する。また、ベースとなるシミュレータやOSのシステム・コールを最小限しか用いないため、ソフトウェア資産の流用や組み合わせが容易になるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の実施の形態による自己停止と起床のアルゴリズムを示すためのフローチャートであり、図1Aはアプリケーション・タスク、図1Bはレイザーである。
【図2】本発明の一実施の形態によるOSシミュレーション装置を備えた情報処理装置の構成を示すブロック図である。
【図3】動作を示すタイムチャートであり、図3Aは従来技術によるシミュレーション、図3Bは本発明によるシミュレーションである。
【図4】動作を示すタイムチャートである。
【符号の説明】
10……パーソナルコンピュータ、11……ハード/ソフト協調シミュレータ、12……OSシミュレータ、13……OS−API、14……レイザー、15……自己停止機能、16(1−N)……アプリケーション・タスク、17……タスク管理部、18……オブジェクト管理部、19(1−N)……ハードウェア・モデル
Claims (8)
- 組込みソフトウェアとその制御対象であるハードウェア・デバイスの協調動作を模倣するシミュレーション装置のうち、上記組込みソフトウェアと上記ハードウェア・デバイス・モデルをともに開発用コンピュータ装置自身のプログラムに変換して実行するシミュレーション装置において、
上記組込みソフトウェアの実行中のタスクの優先度に関係なく上記組込みソフトウェアと上記ハードウェア・デバイス・モデルとの並行動作を模倣させるために上記組込みソフトウェアのタスクの状態に基づいて上記組込みソフトウェアのタスクを制御する並行動作模倣手段を備えることを特徴とするシミュレーション装置。 - 請求項1記載のシミュレーション装置において、
上記並行動作模倣手段は、
上記組込みソフトウェアのタスクの状態を上記ハードウェア・デバイス・モデルのタスクとは独立に管理するタスク管理手段を備えることを特徴とするシミュレーション装置。 - 請求項2記載のシミュレーション装置において、
上記並行動作模倣手段は、
上記タスク管理手段の管理情報をもとに次に動作すべきタスクを起床させるタスク起床手段を備えることを特徴とするシミュレーション装置。 - 請求項3記載のシミュレーション装置において、
上記並行動作模倣手段は、
上記タスク起床手段の情報をもとに各タスクが自身の実行を停止する停止手段を備えることを特徴とするシミュレーション装置。 - 組込みソフトウェアとその制御対象であるハードウェア・デバイスの協調動作を模倣するシミュレーション装置に対して、上記組込みソフトウェアと上記ハードウェア・デバイス・モデルをともに開発用コンピュータ装置自身のプログラムに変換して実行するシミュレーション方法において、
上記組込みソフトウェアの実行中のタスクの優先度に関係なく上記組込みソフトウェアと上記ハードウェア・デバイス・モデルとの並行動作を模倣させるために上記組込みソフトウェアのタスクの状態に基づいて上記組込みソフトウェアのタスクを制御する並行動作模倣ステップを備えることを特徴とするシミュレーション方法。 - 請求項5記載のシミュレーション方法において、
上記並行動作模倣ステップは、
上記組込みソフトウェアのタスクの状態を上記ハードウェア・デバイス・モデルのタスクとは独立に管理するタスク管理ステップを備えることを特徴とするシミュレーション方法。 - 請求項6記載のシミュレーション方法において、
上記並行動作模倣ステップは、
上記タスク管理ステップの管理情報をもとに次に動作すべきタスクを起床させるタスク起床ステップを備えることを特徴とするシミュレーション方法。 - 請求項7記載のシミュレーション方法において、
上記並行動作模倣ステップは、
上記タスク起床ステップの情報をもとに各タスクが自身の実行を停止する停止ステップを備えることを特徴とするシミュレーション方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003142658A JP2004348291A (ja) | 2003-05-20 | 2003-05-20 | シミュレーション装置およびシミュレーション方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003142658A JP2004348291A (ja) | 2003-05-20 | 2003-05-20 | シミュレーション装置およびシミュレーション方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004348291A true JP2004348291A (ja) | 2004-12-09 |
Family
ID=33530680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003142658A Pending JP2004348291A (ja) | 2003-05-20 | 2003-05-20 | シミュレーション装置およびシミュレーション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004348291A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008021142A (ja) * | 2006-07-13 | 2008-01-31 | Sony Corp | 情報処理装置およびその方法 |
JP2008123315A (ja) * | 2006-11-14 | 2008-05-29 | Sony Corp | 情報処理装置およびその方法、並びにプログラム |
JP2009026113A (ja) * | 2007-07-20 | 2009-02-05 | Fujitsu Microelectronics Ltd | シミュレーション装置及びプログラム |
KR101701800B1 (ko) | 2015-10-27 | 2017-02-02 | 경북대학교 산학협력단 | 차량 전장용 제어 소프트웨어를 위한 타스크 작동순서 가시화 방법, 이를 수행하기 위한 기록 매체 및 장치 |
-
2003
- 2003-05-20 JP JP2003142658A patent/JP2004348291A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008021142A (ja) * | 2006-07-13 | 2008-01-31 | Sony Corp | 情報処理装置およびその方法 |
JP2008123315A (ja) * | 2006-11-14 | 2008-05-29 | Sony Corp | 情報処理装置およびその方法、並びにプログラム |
JP2009026113A (ja) * | 2007-07-20 | 2009-02-05 | Fujitsu Microelectronics Ltd | シミュレーション装置及びプログラム |
KR101701800B1 (ko) | 2015-10-27 | 2017-02-02 | 경북대학교 산학협력단 | 차량 전장용 제어 소프트웨어를 위한 타스크 작동순서 가시화 방법, 이를 수행하기 위한 기록 매체 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105278940B (zh) | 一种基于多核处理器架构的机器人混合系统应用框架 | |
JP4975544B2 (ja) | シミュレーション装置及びプログラム | |
CN103514038B (zh) | 一种虚拟系统的平滑关闭方法及系统 | |
US20170203436A1 (en) | Robotic hybrid system application framework based on multi-core processor architecture | |
CN101714091B (zh) | 用于在操作系统初始化期间显示平台图形的方法和系统 | |
CN102279769B (zh) | 一种面向嵌入式Hypervisor 的中断虚拟化操作方法 | |
Reusing | Comparison of operating systems tinyos and contiki | |
Pinto et al. | Towards a lightweight embedded virtualization architecture exploiting arm trustzone | |
WO2005098616A3 (en) | Providing support for single stepping a virtual machine in a virtual machine environment | |
KR20070075957A (ko) | 멀티 타스킹을 위한 타스크 기반 로봇 제어시스템 | |
CN108958157A (zh) | 控制程序控制调度方法、装置、计算机设备以及存储介质 | |
CN101272564A (zh) | 一种软实时定时器调度的方法及软实时定时器模块 | |
CN103955373A (zh) | 一种sdn应用集成开发环境的设计方法 | |
JP2008186175A (ja) | オペレーティングシステムの起動制御方法及び情報処理装置 | |
WO2015058478A1 (zh) | 一种电器的快速启动ui系统及快速启动方法 | |
JP2005190207A5 (ja) | ||
JP2004348291A (ja) | シミュレーション装置およびシミュレーション方法 | |
CN205003526U (zh) | 一种基于sopc技术的plc协同控制装置 | |
CN103729219A (zh) | 一种uefi bios架构方法及系统 | |
KR100952680B1 (ko) | 이동통신 단말의 플랫폼 개발검증 시스템 | |
CN110851239B (zh) | 一种type-i型硬实时高可靠性全虚拟化方法 | |
CN107453959B (zh) | 一种网卡的管理方法及其装置 | |
Gu et al. | Design and implementation of an automotive telematics gateway based on virtualization | |
CN105159696A (zh) | 一种独立于Linux内核的硬件驱动实现方法及装置 | |
JP2005018623A (ja) | シミュレーション装置およびシミュレーション方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060426 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081008 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090519 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091006 |