JP6188895B1 - 車載制御プログラムの実行時データ取得方法および車載制御装置 - Google Patents

車載制御プログラムの実行時データ取得方法および車載制御装置 Download PDF

Info

Publication number
JP6188895B1
JP6188895B1 JP2016172544A JP2016172544A JP6188895B1 JP 6188895 B1 JP6188895 B1 JP 6188895B1 JP 2016172544 A JP2016172544 A JP 2016172544A JP 2016172544 A JP2016172544 A JP 2016172544A JP 6188895 B1 JP6188895 B1 JP 6188895B1
Authority
JP
Japan
Prior art keywords
dma transfer
data
channel
execution
dma
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.)
Active
Application number
JP2016172544A
Other languages
English (en)
Other versions
JP2018041130A (ja
Inventor
石原 健太郎
健太郎 石原
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2016172544A priority Critical patent/JP6188895B1/ja
Application granted granted Critical
Publication of JP6188895B1 publication Critical patent/JP6188895B1/ja
Publication of JP2018041130A publication Critical patent/JP2018041130A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】車載制御プログラムの動作検証を行うことを目的に、特に、短周期処理の実行時データを作成/送信する際に、その処理自体によって生じるCPU負荷の増加量と本来の処理タイミングの変化量を最小に抑える。【解決手段】複数の処理を有する車載制御プログラムを実行するCPUと、複数のチャネルを有し、CPUがアクセス可能なアドレス空間内のデータを、CPUを使用せずにDMA転送することができるDMACとを備え、実行時データの作成、および実行時データの送信の少なくともいずれか一方を、CPUを介さずにDMA転送により実行する。【選択図】図1

Description

本発明は、複数の処理を有する車載制御プログラムの動作検証を行う目的で、複数の処理のそれぞれの実行タイミングあるいは実行内容をモニタリングするための実行時データを取得する、車載制御プログラムの実行時データ取得方法および車載制御装置に関する。
昨今の車載制御装置では、その制御プログラムの規模が増加しており、その構造も複雑化し、多様化している。これに伴って、制御プログラムを実行するCPUも、高機能化および高速化のために、アーキテクチャが複雑化し、また、キャッシュメモリを備える等の構成を採用している。このことにより、制御プログラムの実行結果の予測が容易でなくなっている。
このようなハードウェアの変化に加え、ソフトウェアの変化もある。制御プログラムの開発費用を削減するために、ソフトウェアの再利用性を向上させる必要がある。そして、その一手段として、制御プログラムの基本部分にリアルタイムオペレーティングシステム(以下、「RTOS」と記す)を採用することで、ソフトウェアの再利用性の向上が図られている。
RTOSにおける基本的な実行単位は、タスクであり、通常は、RTOS上で複数動作するように作成され、各タスクは、優先度に基づいて動作するように設定される。タスクの優先度は、RTOS内のスケジューラによって評価され、より優先度の高いタスクにCPUが割り当てられる。
このような優先度に基づいたRTOSのスケジューラの挙動は、RTOSを使用しない従来のスケジューラの挙動と異なることが多い。従って、新規にRTOSを採用した場合、例えば、処理が開始および終了するタイミングなど、制御プログラム内の各処理の実行タイミングが変化することがある。その結果、制御プログラムが正しく動作しなくなることがある。
また、新規にRTOSを使用せず、同一のRTOSを継続使用して製品の差分開発を行う場合においても、マイコンの変更、制御プログラムの仕様変更、機能の追加等の要因で、制御プログラム内の各処理の実行タイミング等が変化する。
上述したようなハードウェアおよびソフトウェアの変化の中で、制御プログラム内の各処理の挙動または実行タイミングをあらかじめ十分な精度で予測することは難しい。また、高い精度で予測できていると考えられる場合であっても、その予測が妥当であることを確認する必要がある。
このため、制御プログラムの挙動や実行タイミング等に問題がないことを、車載制御装置およびその制御プログラムを実際の使用条件の下で動作させながら確認する手段が必要になる。
確認のために用いられる手段の一例としては、リアルタイムトレース機能が知られている。具体例としては、例えば、Green Hills Software社により製品化されている「Super Trace Probe」が挙げられ、以下の説明では、この「Super Trace Probe」に相当する技術を、従来技術1と称することとする。
この従来技術1は、マイコンに備えられているオンチップデバッガと専用ピンを介して接続することで、制御プログラム実行中にオンチップデバッガから各処理の実行タイミングや、処理実行時の実行内容を示す変数の値等を取得することで、リアルタイムトレース機能を実現している。ここで、各処理の実行タイミングや、処理実行時の実行内容を示す変数の値等のことを、以下の説明では、「実行時データ」と称することとする。
従来技術1によれば、例えば、CPUが実行するアドレスおよびその時刻など、マイコンのCPUの実行時データを取得可能である。従って、実行時データをPCに転送し、PC上で解析して可視化することにより、プログラムのどの処理がいつ実行されたかを知ることができる。
従来技術1は、実行時データを、オンチップデバッガに備えられているトレースメモリまたはトレースバッファと呼ばれるRAMに蓄積する。さらに、従来技術1は、このRAMが満杯となった時点で、実行時データの蓄積を終了するか、あるいは新しいデータを古いデータに上書きしながら実行時データの取得を継続することになる。
例えば、モータ駆動用インバータや照明駆動用コンバータの制御を行う車載制御装置では、その制御のために数十〜数百μ秒といった短い周期の処理が複数必要になることがある。なお、以下の説明では、このような制御を行う車載制御装置を単に「ECU」と称し、上述した短い周期の処理を、「短周期処理」と称することとする。
このような短周期処理の実行時データを従来技術1で取得すると、制御プログラムの挙動の確認ができる量のデータが得られないうちに、トレースバッファが満杯になってしまうという課題がある。
例えば、100μ秒周期で20バイトの実行時データをPCに送信する場合を考える。この場合には、毎秒200kバイトのトレースバッファを消費することとなり、一般に、オンチップデバッガに備えられているトレースバッファでは、容量が不足する。このため、大容量のトレースバッファをオンチップデバッガの外部に追加し、オンチップデバッガと高速に通信しながらデータを蓄積する機能を備えた、高価なデバッグ装置を使用する必要がある。
また、従来技術1を用いる場合には、マイコンのオンチップデバッガと通信を行うために、配線を行う必要がある。しかしながら、ECUの開発において、テスト実施の際のECUは、装置の中に組み込まれており、高速な通信を行う信号線を装置の外まで延長することが困難な場合も多い。
そこで、制御プログラムを実際の使用条件の下で動作させながら確認する別の手段としては、例えば、Tracealyzer for FreeRTOSがある(例えば、非特許文献1参照)。このTracealyzer for FreeRTOSは、実行時データを提供する手段を制御プログラム内の必要な箇所に組み込み、制御プログラム実行時に、マイコンが備える外部通信インターフェイスを用いて実行時データをPCへ転送し、PC上で可視化するものである。
図10は、非特許文献1における従来の実行時データ取得手法を適用した場合の各処理の開始および終了の際に実行時データを作成する手順を示したフローチャートである。また、図11は、非特許文献1における従来の実行時データ取得手法を適用した場合の実行時データを外部通信インターフェイスに転送する手順を示したフローチャートである。
非特許文献1によれば、図10および図11に例示したように、マイコン内に備えられたRAMに実行時データ蓄積用のバッファを設け、このRAMバッファにデータが満たされたところで、マイコンからPCへデータを送信する手段が提供されている。
図11を実行する処理は、通常、図10を実行する処理とは別のタイミングで、CPUの空き時間を利用して実行するものである。従って、RTOSを使用する場合には、図11を実行する処理は、本来の制御処理にできるだけ影響を及ぼさないように、優先度が最も低いタスクとして実行される。
マイコンから提供する実行時データを一部に限定することで、単位時間あたりに実行時データをRAMバッファに蓄積する量を外部通信インターフェイスのデータ転送量よりも少なくすることができる。このような場合には、実行時データを蓄積するRAMバッファを2つの領域に分け、図11の処理が片方の領域を転送している間に、これに並行して図10の処理が次のデータを蓄積することが可能となる。このような並行した処理を行うことで、実行時データを滞りなく提供し続けることができる。
Tracealyzer for FreeRTOS、インターネット <URL : http://percepio.com/docs/FreeRTOS/manual>
しかしながら、従来技術には、以下のような課題がある。
モータ制御用のインバータやコンバータの制御を行うECUにおいて、非特許文献1を用いて実行タイミングを確認する場合を考える。この場合、例えば、実行時データとして、ある処理が開始および終了する際には、図10のステップS1003〜ステップS1005で示したように、その処理の開始を識別可能な番号およびその処理の終了を識別可能な番号を、それぞれの処理を実行した際の時刻とともにRAMバッファに記憶する必要がある。
なお、以下の説明では、どの処理が開始したかを識別可能とする番号のことを、「処理開始識別番号」と称し、どの処理が終了したかを識別可能とする番号のことを、「処理終了識別番号」と称することとする。
実行時データは、制御プログラムの各処理が開始および終了する際に作成する必要がある。ステップS1003のような、実行時データにおける処理実行時刻を取得する処理の例として、制御プログラムは、マイコン内に備えられているハードウェアタイマを、十分な時間分解能が得られる周期でカウントするように常時動作させておく。
その上で、制御プログラムは、各処理を開始または終了する際に、その時点のハードウェアタイマのカウント値を読み出し、この値に処理開始識別番号または処理終了識別番号を付加し、これをRAMバッファに追記する処理を、各タスクまたは処理の先頭および末尾で実施する。
上述したデータ作成処理例によれば、制御プログラムは、作成したハードウェアタイマのカウント値と処理開始識別番号または処理終了識別番号をRAMバッファに追加する必要がある。このような作成処理を、例えば、割り込み許可状態で実行されるタスク、およびこのタスクを割り込むことが可能なタスクの両方に適用した場合を考える。
このような場合には、前者のタスクが実行時データをRAMバッファの先頭に記憶する直前に、つまり、ステップS1004を実行する直前に、後者のタスクがこれに割り込んで開始され、その実行時データをRAMバッファの先頭に追加するといった状態が発生する。
このような状態が発生した場合には、後者のタスクが終了した後、前者のタスクが処理を再開し、その実行時データをRAMバッファの先頭に追加することで、後者のタスクの実行時データが上書きされ、消失する。
このような上書きによる実行時データの消失を回避するために、実行時データをRAMバッファに追加するタスク処理は、同じように実行時データをバッファに追加する別のタスク処理に割り込まれないように、実行時データをRAMバッファに追加する前に割り込みを禁止し(ステップS1001に相当)、RAMバッファにデータを追加した後割り込み禁止を解除する操作(ステップS1006に相当)が必要である。
特に、RTOSを使用した制御プログラムのタスク処理は、CPUの動作モードをユーザモードとする場合が多い。従って、この場合の割り込み禁止および禁止解除の処理は、CPUの動作モードをユーザモードからスーパバイザモードに切り替えてから実行し、その後、再びユーザモードに戻す必要がある。このため、割り込み禁止および禁止解除が実行時データ取得にかかるCPU時間の多くを占めてしまうことがある。
上述したような、割り込み禁止処理および禁止解除処理を伴う実行時データの追加処理は、それ自体が、CPUに一定の処理時間を追加することになる。このため、非特許文献1の方法で実行タイミングを取得すると、制御プログラム本来の処理タイミングを大幅に変化させてしまうという課題がある。
特に、ECUに必要な短周期処理に、上述した実行時データの追加処理を行う場合には、本来実行される処理に対して、実行時データの取得処理の割合が大きくなる。このため、この課題は、深刻である。
また、制御プログラム本来の処理がすでに高いCPU負荷の下で動作していた場合には、実行時データの取得のために追加消費されるCPU時間のために、低優先度の処理を実行するためのCPU時間が確保できなくなり、制御プログラムが正しく動作しなくなることが生じるおそれがある。
さらに、高いCPU負荷の下では、図11の実行時データ送信処理を実行する時間が十分に確保できないという課題がある。
本発明は、上記のような課題を解決するためになされたものであり、特に、短周期処理の実行時データを作成および送信する際に、その処理自体によって生じるCPU負荷の増加量と本来の処理タイミングの変化量を最小に抑え、ECUの挙動および動作タイミングを確認するために必要なデータを、最小限のRAMバッファで継続的に取得することのできる車載制御プログラムの実行時データ取得方法および車載制御装置を得ることを目的とする。
本発明に係る車載制御プログラムの実行時データ取得方法は、複数の処理を有する車載制御プログラムを実行するCPUと、複数のチャネルを有し、CPUがアクセス可能なアドレス空間内のデータを、CPUを使用せずにDMA転送することができるダイレクトアクセスメモリコントローラであるDMACと、DMA転送でカウント値を取得可能なハードウェアタイマと、車載制御プログラムを格納するとともに、DMA転送でアクセス可能なROMと、DMA転送でアクセス可能なRAMと、外部機器とデータ通信を行う外部通信インターフェイスとを備えた車載制御装置において、車載制御プログラムを実行する際に、複数の処理のそれぞれの実行タイミングあるいは実行内容をモニタリングするための実行時データの作成および送信を行うための、車載制御プログラムの実行時データ取得方法であって、実行時データの作成、および実行時データの送信の少なくともいずれか一方を、CPUを介さずにDMA転送により実行するに当たり、DMACは、実行時データの作成をDMA転送により実行する場合には、実行時データを取得する時点で、第1のチャネルによる第1のDMA転送によりハードウェアタイマのカウント値を読み出すことで時刻データを収集し、時刻データの収集後、第2のチャネルによる第2のDMA転送により、複数の処理の実行順序に従ってあらかじめROM内に格納された、複数の処理を識別するための識別番号を読み出し、時刻データに対応した識別番号を収集することで、実行時データを作成し、実行時データの送信をDMA転送により実行する場合には、あらかじめ決められた制御1周期分に相当する実行時データが作成された後に、第1のチャネルおよび第2のチャネル以外のチャネルによるDMA転送により、制御1周期分の実行時データを、外部通信インターフェイスを介して外部機器に送信するものである。
また、本発明に係る車載制御装置は、複数の処理を有する車載制御プログラムを実行するCPUと、複数のチャネルを有し、CPUがアクセス可能なアドレス空間内のデータを、CPUを使用せずにDMA転送することができるダイレクトアクセスメモリコントローラであるDMACと、DMA転送でカウント値を取得可能なハードウェアタイマと、車載制御プログラムを格納するとともに、DMA転送でアクセス可能なROMと、DMA転送でアクセス可能なRAMと、外部機器とデータ通信を行う外部通信インターフェイスとを備え、車載制御プログラムを実行する際に、複数の処理のそれぞれの実行タイミングあるいは実行内容をモニタリングするための実行時データの作成および送信を行う車載制御装置であって、DMACは、実行時データの作成、および実行時データの送信の少なくともいずれか一方を、CPUを介さずにDMA転送により実行するに当たり、実行時データの作成をDMA転送により実行する場合には、実行時データを取得する時点で、第1のチャネルによる第1のDMA転送によりハードウェアタイマのカウント値を読み出すことで時刻データを収集し、時刻データの収集後、第2のチャネルによる第2のDMA転送により、複数の処理の実行順序に従ってあらかじめROM内に格納された、複数の処理を識別するための識別番号を読み出し、時刻データに対応した識別番号を収集することで、実行時データを作成し、実行時データの送信をDMA転送により実行する場合には、あらかじめ決められた制御1周期分に相当する実行時データが作成された後に、第1のチャネルおよび第2のチャネル以外のチャネルによるDMA転送により、制御1周期分の実行時データを、外部通信インターフェイスを介して外部機器に送信するものである。
本発明によれば、実行時データの作成、および実行時データの送信の少なくともいずれか一方を、CPUを介さずにDMA転送により実行する構成を備えている。このような構成を備えることで、実行時データの作成にDMA転送を適用した場合には、CPUによる実行時データの作成処理が一切不要となり、実行時データの作成に必要なCPU時間が最小に抑えられる。また、実行時データの送信にDMA転送を適用した場合には、CPUが実行時データを外部通信インターフェイスに転送する処理が不要となり、データ転送に必要なCPU時間を最小に抑えられる。この結果、特に、短周期処理の実行時データを作成/送信する際に、その処理自体によって生じるCPU負荷の増加量と本来の処理タイミングの変化量を最小に抑え、ECUの挙動および動作タイミングを確認するために必要なデータを、最小限のRAMバッファで継続的に取得することのできる車載制御プログラムの実行時データ取得方法および車載制御装置を得ることができる。
本発明の実施の形態1の車載制御装置において、制御対象の制御を実行するとともに、実行時データの作成および送信を実行するECUの構成の一例を示す図である。 本発明の実施の形態1におけるROMに格納されたプログラムの各処理を例示した図である。 本発明の実施の形態1におけるROMに記憶された処理の実行タイミングを例示した図である。 本発明の実施の形態1におけるROMに設けられた識別番号表を例示した図である。 本発明の実施の形態1におけるRAMに設けられた実行時データ記憶部を例示した図である。 本発明の実施の形態1に係るECUにおける初期化処理の処理手順を示したフローチャートである。 本発明の実施の形態1に係るECUにおける第1のDMAチャネルおよび第2のDMAチャネルの初期設定の一例を表形式にまとめたものである。 本発明の実施の形態1に係るECUにおける第3のDMAチャネル〜第6のDMAチャネルの初期設定の一例を表形式にまとめたものである。 本発明の実施の形態1に係るECUにおける実行時データ取得の際の処理手順を示したフローチャートである。 非特許文献1における従来の実行時データ取得手法を適用した場合の各処理の開始および終了の際に実行時データを作成する手順を示したフローチャートである。 非特許文献1における従来の実行時データ取得手法を適用した場合の実行時データを外部通信インターフェイスに転送する手順を示したフローチャートである。
以下、本発明の車載制御プログラムの実行時データ取得方法および車載制御装置の好適な実施の形態につき図面を用いて説明する。より具体的には、以下の実施の形態では、制御プログラム内の4つの周期処理が開始および終了するタイミングを実行時データとして取得する例について詳述する。なお、全ての図において、図中、同一、相当部分には、同一符号を付している。
実施の形態1.
図1は、本発明の実施の形態1の車載制御装置において、制御対象の制御を実行するとともに、実行時データの作成および送信を実行するECUの構成の一例を示す図である。図1に示すECU1は、入力回路2、マイコン3、駆動回路11を備えて構成され、モータ12を制御するとともに、外部通信線13と接続されている。
ECU1内のマイコン3は、I/O(入出力インターフェイス)4、CPU5、ROM6、RAM7、タイマ8、DMAC(Direct Memory Access Controller)9、および外部通信インターフェイス10を含んで構成されている。
入力回路2は、外部からの信号、あるいは制御対象であるモータ12からのセンサ信号を電圧として読み取る。そして、I/O4は、入力回路2で読み取られた電圧をマイコン3内に取り込み、また、駆動回路11への制御信号出力も行う。
駆動回路11は、本実施の形態1においては、モータ12を駆動する。また、外部通信インターフェイス10は、CAN、CAN FD、FlexRay、Ethernet(登録商標)等の、ECUで使用される一般的な通信線に接続されている。
なお、本実施の形態1では、ECU1がモータ12を駆動する例を示しているが、本発明を適用し得るECU1の構成は、この例に限定されるものではない。例えば、駆動回路11をコンバータとし、制御対象をモータ12からLEDに代えて、LEDの照度制御を行う際にも、短周期処理が必要になることがあり、このような構成に対しても、本実施の形態1に係る発明を効果的に適用し得る。
また、外部通信インターフェイス10についても、上述したいずれかに限定されることはない。例えば、上述した構成の組み合わせを適用する場合、あるいは同一の通信方式を複数個使用する場合も考えられる。また、ECU1に配線を追加することが可能な場合には、マイコン3が備える各種シリアル通信(UART、SPI等)や汎用デジタル入出力(GPIO)等も、外部通信インターフェイス10として適用し得る。
本実施の形態1では、モータを制御する例を示している。このため、図1では省略しているが、I/O4において、センサ電圧をマイコン3内に取り込む際には、AD変換器を使用し、駆動回路11へ制御出力を行う際には、PWMを使用することを仮定している。
しかしながら、本発明は、本実施の形態1のみに適用可能とするものではない。例えば、制御処理の要因が、単なるタイマ割込みであったとしても、その処理周期がマイコンの処理能力からみて短ければ短いほど、本発明を効果的に適用することができる。
CPU5は、周知のアーキテクチャを用いたマイクロプロセッサであり、ROM6に記憶される制御プログラム60を実行可能である。また、CPU5は、RAM7、タイマ8、DMAC9にアクセスすることができれば、単一コアでも複数コアでもよい。
ROM6は、CPU5およびDMAC9の各チャネルから読み出し可能であり、制御プログラム60を含んでいる。図2は、本発明の実施の形態1におけるROM6に格納されたプログラム60の各処理を例示した図である。制御プログラム60の処理としては、図2に例示したように、初期化処理61、周期割り込み処理62〜63、短い周期で実行する短周期処理64、および短周期処理64よりも長い周期で実行する長周期処理65が記憶されている。なお、以下の説明において、特に処理の形態に拘らない場合には、単に「処理61〜65」のように表記することとする。
また、制御プログラム60の固定値データとしては、図2に例示したように、識別番号表66、第6DMA許可値67、および送信要求指示値68が記憶されている。
図3は、本発明の実施の形態1におけるROM6に記憶された処理62〜65の実行タイミングを例示した図である。本実施の形態1において、処理62〜65は、図3に例示したタイミングチャートのように動作するように、静的に設計されているものとする。また、処理の優先度は、処理62>処理63>処理64>処理65とする。
図3において、各処理62〜65のタイミングチャートの立ち上がりが、処理の開始または続行を意味し、立ち下がりが、処理の中断または終了を意味している。また、それぞれの処理周期は、処理62〜63が50μ秒、短周期処理64が100μ秒、長周期処理65が1ミリ秒であるとする。
図3において、処理62〜65の挙動を時間の経過に沿って説明する。処理62が開始し、処理62が終了し、処理64が開始する。次に、処理64は、実行中において処理63の開始のため中断され、処理63が開始する。次に、処理63が終了し、処理64が再開し、処理64が終了し、処理65が開始する。
次に、処理65は、実行中において処理62の開始のため中断され、処理62が開始する。次に、処理62が終了し、処理65が再開する。次に、処理65、は実行中において処理63の開始のため中断され、処理63が開始し、処理63が終了し、処理65が再開し、処理65が終了する。
処理62〜64については、上述した処理62の2サイクル分を実行した後、すなわち、100μ秒経過後に、再び処理62が開始するところから、上述した挙動を繰り返すものとする。一方、処理65については、処理周期が1ミリ秒であることから、処理62〜64が図3に示した100μ秒の挙動を10回繰り返す毎に、図3に示すタイミングで開始および終了するものとする。
本実施の形態1では、例として、処理62の最初の開始時刻を起点とする1ミリ秒の期間を、制御の1周期とみなすこととする。ただし、制御の1周期を前記のようにとる必要はなく、例えば、処理62の最初の開始時刻を起点として100μ秒の期間を処理62〜64による制御の1周期とみなしてもよい。
次に、識別番号表66について説明する。図4は、本発明の実施の形態1におけるROM6に設けられた識別番号表66を例示した図である。本実施の形態1における識別番号表66は、図4に例示したように、処理62〜65についての識別番号表660〜663と、無効な識別番号664とを含んでいる。
識別番号表660は、処理62の開始であることを識別可能な処理開始識別番号と、処理62の終了であることを識別可能な処理終了識別番号とを交互に保持している。なお、図4では省略しているが、識別番号表661〜663は、記憶される処理開始識別番号および処理終了識別番号の値が異なることを除き、識別番号表660と同様の構成を有している。
処理62〜65は、それぞれの周期毎に処理を開始および終了する。このため、一対の処理開始識別番号および処理終了識別番号が、各処理の1周期中に参照される。
各処理の識別番号表の長さは、上述した制御の1周期と、それぞれの処理62〜65の処理周期との関係から決まり、固定長である。例えば、本実施の形態1では、処理62の周期を50μ秒とし、制御プログラムの制御の1周期を1ミリ秒とした。従って、処理62は、1ミリ秒の間に20回処理を実行することとなり、その開始と終了を合わせた数は40回となる。従って、識別番号表660の長さは、40になる。
処理63〜65に対応する識別番号表661〜663の長さについても、同様に、制御の1周期と、それぞれの処理の処理周期との関係から算出され、それぞれ固定長である。
RAM7は、CPU5、およびDMAC9の各DMAチャネルからアクセス可能である。図5は、本発明の実施の形態1におけるRAM7に設けられた実行時データ記憶部を例示した図である。本実施の形態1では、実行時データ記憶部として、図5に例示したように、割り込み処理62の識別番号記憶配列711と、これに対応する時刻記憶配列712、さらに、周期処理63〜65の識別番号記憶配列721、731、741と、これらのそれぞれに対応する時刻記憶配列722、732、742を確保した場合を示している。
処理62〜65のそれぞれに対応する実行時データ記憶部71〜74は、図4を用いて説明した識別番号表660〜663と同様に、制御の1周期と処理62〜65のそれぞれの処理周期との関係から決まり、固定長である。
例えば、本実施の形態1では、処理64の周期を100μ秒とし、制御プログラムの制御の1周期を1ミリ秒とした。このため、処理64は、1ミリ秒の間に10回処理を実行することとなり、識別番号記憶配列731および時刻記憶配列732の要素数は、それぞれ10になる。
実行時データ記憶部71、72、74の各記憶配列711、721、741についても、同様に、制御の1周期と、それぞれの処理の処理周期との関係から、それぞれ、20、20、2と算出される。従って、実行時データ記憶部70の各配列の要素数の合計は、本実施の形態では、104になる。本実施の形態1では、各要素に1バイトを割り当てることとし、104バイトとする。
実行時データ記憶部70内の各配列単位の配置の順序は、任意である。ただし、実行時データ記憶部70が複数の領域に分割されないように、各配列単位が互いに隣接するように配置する。
タイマ8は、複数のチャネルからなるハードウェアタイマである。そして、タイマ8は、RTOSのスケジューラまたは従来型のスケジューラが処理を開始する時刻を検知するために使用するほか、本実施の形態1では、実行時データ取得の際の時刻を示すタイムスタンプを生成するためにも使用する。
DMAC9は、複数のDMAチャネルからなるハードウェア機能であり、CPU5がアクセス可能なアドレス空間内のデータを、CPU5を使用せずに転送することができる。さらに、DMAC9は、その転送の実行を開始するタイミングとして、マイコン3の内部または外部のハードウェアの要因か、ソフトウェアの指示か、をあらかじめ設定することができる。
ハードウェアの要因を設定する場合には、さらにDMAC9が対応可能なハードウェア要因の中から指定可能である。DMAC9が対応可能なハードウェアの要因として、マイコンが内部に備える周辺機能からの各種割込み要求が設定可能であることに加え、DMAC9内の別のDMAチャネルのDMA転送処理完了を設定することも可能である。
各DMAチャネルは、転送回数を指定することができ、その最終回のDMA転送を完了した際に、転送元のアドレスと、転送先のアドレスと、転送回数を、あらかじめ指定した値に設定し直すリロード機能を有している。
各DMAチャネルは、それぞれシングル転送モードとブロック転送モードを有しており、いずれかを選択・設定可能である。シングル転送モードは、1回のDMAサイクル(つまり、転送元からのデータ読み出しと転送先へのデータ書き込み)につき、転送回数を1とする転送モードである。また、ブロック転送モードは、あらかじめ設定された、連続したデータ領域(ブロック転送サイズ)の転送が完了するまでDMAサイクルを繰り返し、データ領域内のすべてのデータの転送完了をもって、転送回数を1とする転送モードである。なお、本実施の形態1では、ブロック転送モードで使用するDMAチャネルについてのみ、その旨を明記し、転送モードについて指定のないDMAチャネルは、シングル転送モードで使用することとする。
各DMAチャネルは、DMA転送を許可または禁止するレジスタを有しており、CPU5およびDMAC9から許可状態または禁止状態を設定することができる。また、各DMAチャネルは、最終回のDMA転送を完了した際に、以後のDMA転送を禁止状態にするか、許可状態を継続するかを設定することができる。
外部通信インターフェイス10は、マイコン3と外部との情報の送受信を行うものである。そして、外部通信インターフェイス10は、データの送受信が完了した際に、CPU5への割り込み要因として、この送受信が完了したことを通知することができる。また、外部通信インターフェイス10は、送受信の完了をハードウェアの要因としてDMAC9に通知し、各DMAチャネルの転送を開始させることができる。
次に、ECU1で実行される制御プログラム60のうち、本発明に係る初期化処理61の処理手順例について説明する。図6は、本発明の実施の形態1に係るECU1における初期化処理61の処理手順を示したフローチャートである。
先ず、ステップS601において、ECU1は、処理時刻を取得するためのタイマ8を初期化し、カウントを開始する。ここで、ハードウェアタイマのカウント周期は、処理時間に対して十分な時間分解能が得られるように設定する。
次に、ステップS603〜ステップS605を繰り返すことで、処理ごとに必要となる第1のDMAチャネルおよび第2のDMAチャネルを初期化する。図7は、本発明の実施の形態1に係るECU1における第1のDMAチャネルおよび第2のDMAチャネルの初期設定の一例を表形式にまとめたものである。ECU1は、図7に例示したように、処理62〜65のそれぞれに対して各DMAチャネルを設定する。
第1のDMAチャネルおよび第2のDMAチャネルは、常に許可状態の設定で使用する。また、処理62〜65に対応するそれぞれの第1のDMAチャネルは、転送元アドレスを、タイマ8のカウント値を読み出し可能なアドレスに設定し、各転送の完了の際にインクリメントせずに、固定とする。
転送先アドレスは、各処理に対応する時刻記憶配列712、722、732、742の先頭に設定し、各DMAチャネルの転送が完了する毎にインクリメントするように、つまり、転送先アドレスが次の配列要素を指し示すように、設定する。
本実施の形態1では、処理62、処理63の処理周期を50μ秒、処理64の処理周期を100μ秒、処理65の処理周期を1m秒、制御の1周期を1ミリ秒としている。このことから、処理62、処理63の転送回数は、制御の1周期に20回処理が開始および終了するため、その開始回数と終了回数の合計である40回を設定する。同様の計算を行い、処理64の第1のDMAの転送回数は、20を設定し、処理65の第1のDMAの転送回数は、2を設定する。
各処理の第1のDMAチャネルが転送を完了する毎に、各処理に対応する第2のDMAチャネルを開始する。また、上記転送回数の最終の転送が完了した際に、転送先アドレスおよび転送回数をリロードする。
処理62〜処理65に対応するそれぞれの第2のDMAチャネルは、転送元アドレスを、各処理の識別番号表660〜663の先頭に設定し、各DMA転送の完了の際にインクリメントするように設定する。
転送先アドレスは、各処理に対応する識別番号記憶配列711、721、731、741の先頭に設定し、各DMA転送の完了の際にインクリメントするように設定する。
転送回数は、各処理に対応する第1のDMAと同一の値を設定する。
各処理の第2のDMAチャネルの最終のDMA転送が完了した際に、転送元アドレスと、転送先アドレスと、転送回数をリロードする。
本実施の形態1においては、制御の1周期の最後の処理63の終了が、実行時データ記憶部70に記憶される最後の実行時データとなる。このため、処理63に対応する第2のDMAの最終転送が完了した際に、第3のDMAチャネルを開始するように、処理63に対応する第2のDMAチャネルを設定する。
先の図6のフローチャートの説明に戻り、ステップS605の次に、ステップS606において、第3〜第6のDMAチャネルを初期化する。図8は、本発明の実施の形態1に係るECU1における第3のDMAチャネル〜第6のDMAチャネルの初期設定の一例を表形式にまとめたものである。各DMAチャネルは、例えば、図8に例示したように設定する。
第6のDMAチャネルのみ、転送完了後、チャネルを禁止するように設定し、他のチャネルは、常に許可状態の設定で使用する。
第3のDMAチャネルは、制御の1周期分の実行時データ記憶部70の内容を外部通信インターフェイス10に転送する最初のDMAチャネルである。そこで、第3のDMAチャネルの転送元アドレスは、実行時データ記憶部70に設定し、第3のDMAチャネルの転送先アドレスは、外部通信インターフェイス10の送信バッファに設定する。
第3のDMAチャネルは、ブロック転送を1回行う。そこで、ブロック転送サイズを外部通信インターフェイス10の送信バッファ長に設定し、転送回数を1に設定する。
例えば、外部通信インターフェイス10がCAN FDで、送信フレームのデータ長を最大にとることができる場合には、ブロック転送サイズを64バイトに設定する。また、各転送が完了した際には、転送元アドレスおよび転送先アドレスは、インクリメントするように設定する。
第3のDMA転送が完了した際に、転送元アドレスと転送先アドレスを初期化の値にリロードし、第4のDMAチャネルを開始するように設定する。
第4のDMAチャネルは、第6のDMAチャネルを許可状態に設定するために、その転送を許可する値を第6のDMAチャネルに設定するためのDMA転送を実行するものである。
転送元アドレスは、第6DMA許可値67に設定し、転送先アドレスは、第6のDMAチャネルの転送許可レジスタに設定する。各転送完了の際の転送元および転送先アドレスは、固定に設定する。
第4のDMAチャネルの転送回数は、1回に設定し、DMA転送が完了した際に、転送回数をリロードし、第5のDMAチャネルを開始するように設定する。
第5のDMAチャネルは、第3のDMA転送によって外部通信インターフェイス10の送信バッファに転送されたデータに対して、送信を要求するためのDMA転送を実行するものである。
転送元アドレスは、送信要求指示値68に設定し、転送先アドレスは、外部通信インターフェイス10の送信要求レジスタに設定する。各転送完了の際の転送元および転送先アドレスは、固定に設定する。
第5のDMAチャネルの転送回数は、1回に設定し、DMA転送が完了した際に、転送回数をリロードするように設定する。
第6のDMAチャネルは、第5のDMA転送によって外部通信インターフェイス10へ要求されたデータ送信が完了した際に、そのハードウェア要因によって開始し、第3のDMAチャネルが未送信の実行時データ記憶部70のデータを転送するものである。
第6のDMAチャネルの開始は、ハードウェア要因とし、その要因を、外部通信インターフェイス10の送信完了に設定する。
第6のDMAチャネルの転送元アドレスは、第3のDMAチャネルで転送されていない、実行時データ記憶部70のデータ箇所に設定する。例えば、上述した第3のDMAチャネルの設定例にならえば、実行時データ記憶部70の先頭+64である。
第6のDMAチャネルの転送先アドレスは、外部通信インターフェイス10の送信バッファに設定する。また、転送元および転送先アドレスは、インクリメントするように設定する。
第6のDMAチャネルは、ブロック転送モードで使用する。そこで、ブロック転送サイズを外部通信インターフェイス10の送信バッファ長に設定する。また、転送回数には、実行時データ記憶部70の未送信データを全て送信完了するのに必要なブロック転送回数を設定する。本実施の形態1では、実行時データ記憶部70は、104バイトであり、上述した第3のDMAチャネルの設定例にならえば、本DMAチャネル開始の時点で、そのうちの64バイトは転送が完了している。このため、残りは、40バイトであり、外部通信インターフェイス10の送信バッファに入るサイズであるため、転送回数は、1に設定する。
第6のDMA転送が完了した際に、転送回数をリロードし、第5のDMAチャネルを開始し、チャネルが禁止状態になるように設定する。
次に、上述した本実施の形態1における第1のDMAチャネル〜第6のDMAチャネルの各処理の開始および終了に対する動作について、詳細に説明する。
処理62が割り込み要因で開始した際に、ソフトウェアで第1のDMAチャネルによる転送を開始する。第1のDMAチャネルによる転送が開始され、タイマ8のカウンタの値を読み出し、時刻格納配列712の第1要素に記憶した後、転送先アドレスをインクリメントして時刻格納配列712の第2要素の箇所とし、第2のDMAチャネルを開始させる。
第2のDMAチャネルは、割り込み処理62の識別番号表660の先頭に記憶されている処理62開始番号を読み出し、識別番号格納配列711の第1要素に記憶する。その後、転送元アドレスをインクリメントして、割り込み処理62の識別番号表660の第2要素である処理62終了識別番号の箇所とし、転送先アドレスをインクリメントして、識別番号格納配列711の第2要素の箇所とする。
処理62の終了の際に、ソフトウェアから第1のDMAチャネルを開始する。第1のDMA転送は、処理62の開始の場合と同様に、タイマ8のカウンタの値を読み出し、時刻格納配列712の第2要素に記憶する。その後、転送先アドレスをインクリメントして時刻格納配列712の第3要素の箇所とし、第2のDMAチャネルを開始させる。
第2のDMAチャネルは、割り込み処理62の識別番号表660の第2要素である処理62終了識別番号を読み出し、識別番号格納配列711の第2要素に記憶する。その後、転送元アドレスをインクリメントして割り込み処理62の識別番号表660の第3要素である処理62開始識別番号の箇所とし、転送先アドレスをインクリメントして識別番号格納配列711の第3要素の箇所とする。
上記の処理62の開始および終了の際の第1のDMA転送および第2のDMA転送は、それぞれのDMAチャネルに設定された回数の転送が完了するまで繰り返される。そして、最終回のDMA転送完了後に、第1のDMAチャネルの転送先アドレスおよび転送回数は、それぞれ時刻格納配列712の第1要素のアドレスおよび40回に、つまり初期化完了時の値に、DMAチャネルのリロード機能によって自動的に再設定される。
また、第2のDMAチャネルについても第1のDMAチャネルと同様に、最終回のDMA転送完了後に、転送元アドレス、転送先アドレス、転送回数がそれぞれDMAチャネルのリロード機能によって自動的に初期化完了時の値に再設定される。
処理63〜65についても、第1のDMA転送および第2のDMA転送の開始および終了方法は、処理62の場合と同様である。本実施の形態1では、処理63の終了の際に実行される最終回の第2のDMA転送が、制御の1周期の中で最後に実行される第2のDMA転送となる。このため、このDMAの転送の完了が、第3のDMA転送を開始するように設定している。
処理62、処理63のように、割り込み要因で処理を開始する場合であり、かつ割り込み要因で第1のDMA転送を開始することが可能な場合には、第1のDMA転送開始の要因をハードウェアに設定し、処理62、処理63の処理開始の割り込み要因を設定することで、ソフトウェアで第1のDMA転送の開始を指示することなく、第1のDMA転送を開始することができる。
第1のDMAチャネルにDMA転送開始の要因としてソフトウェアとハードウェアの両方を設定できない場合には、ソフトウェアで開始する第1のDMAに加え、ハードウェア要因で開始する第1’のDMAを別に用意し、処理開始の際には、第1’のDMA転送および第2のDMA転送を実行し、処理終了の際には、第1のDMA転送および第2のDMA転送を実行してもよい。
第3のDMAチャネルは、実行時データ70の先頭から、外部通信インターフェイス10が持つ送信バッファの長さのデータを、その送信バッファにブロック転送する。
第3のDMA転送が完了すると、第3のDMAチャネルの転送元アドレス、転送先アドレス、転送回数は、DMAチャネルのリロード機能によって自動的に初期化完了時の値に再設定され、さらに、第4のDMAチャネルの転送を開始する。
第4のDMAチャネルは、後に開始する第6のDMAチャネルを許可状態に変更する第6DMA許可値67をROM6から第6のDMAチャネルのチャネル転送許可レジスタに転送する。
第4のDMA転送完了が完了すると、第4のDMAチャネルの転送回数は、DMAチャネルのリロード機能によって自動的に初期化完了時の値に再設定され、第5のDMAチャネルの転送を開始する。
第5のDMAチャネルは、外部通信インターフェイス10への送信要求指示値68をROM6から外部通信インターフェイス10の送信要求レジスタに転送する。
第5のDMA転送が完了すると、第5のDMAチャネルの転送回数は、DMAチャネルのリロード機能によって自動的に初期化完了時の値に再設定される。
第6のDMAチャネルは、外部通信インターフェイス10のデータ送信完了のハードウェア要因で開始する。第6のDMAチャネルは、実行時データ記憶部70の、第3のDMA転送で未転送のアドレスからデータ転送を引き継ぎ、外部通信インターフェイス10が持つ送信バッファの長さのデータをその送信バッファにブロック転送する。
第6のDMA転送が1回完了する毎に、第5のDMAチャネルの転送を開始し、外部通信インターフェイス10に対して送信要求を行う。第6のDMA転送が指定の回数だけ完了すると、第6のDMAチャネルは、禁止状態になる。このため、この回の外部通信インターフェイス10からの送信完了の要因で第6のDMAチャネルを開始しない。
以上のように、処理62〜処理65が各処理を開始および終了するタイミングで、処理毎に用意した第1のDMA転送および第2のDMA転送を実行する。このことにより、各処理の開始および終了の際に、実行時データ記憶部70の内容をプログラムの処理で作成および蓄積する必要がなくなり、かわりに第1のDMAを開始するだけでよくなる。
ここで、処理の開始がハードウェアの要因の場合には、その要因を第1のDMAの開始条件に設定することで、処理開始の際にプログラムで第1のDMAの開始の指示を行う処理も不要になる。
図9は、本発明の実施の形態1に係るECU1における実行時データ取得の際の処理手順を示したフローチャートである。非特許文献1では必要であった図10に例示の処理は、本実施の形態1では、図9に例示したように、ステップS901による第1のDMA転送を開始する指示一つになるか、あるいは省略可能になる。
また、本実施の形態1は、実行時データ記憶部70に最後にデータを転送する第2のDMA転送が完了した際に、第3のDMAチャネルを開始する。このことにより、実行時データ記憶部70の内容を送信するためにプログラムの処理で外部通信インターフェイス10に実行時データ記憶部70の内容を転送する必要がなくなる。その結果、非特許文献1では必要であった図11に例示の処理は、本実施の形態1では不要になる。
以上のように、実施の形態1によれば、処理の中で、実行時データの取得が必要な箇所に追加する、先の図10のようなソフトウェア処理を最小とすることができる。この結果、実行時データを取得する処理自体によるCPU時間を最小に抑え、本来の制御プログラムの処理タイミングの変化を最小に抑えることができる。
特に、短い処理周期で処理を実行する、例えば車載インバータ制御装置のような制御装置において、処理の開始時刻および終了時刻をはじめとする実行タイミングを取得する際に、その取得処理自体に掛かるCPU時間に起因する実行タイミングの変化を低く抑える対処策として利用することができる。
また、実施の形態1によれば、実行時データを転送する、先の図11のようなソフトウェア処理を不要とすることができる。この結果、本来の制御プログラムのCPU負荷が高く、データ転送処理を実行のためのCPU時間が確保できない場合にも、実行時データの転送が可能になる。
なお、上述した実施の形態1では、実行時データの作成、および実行時データの送信の両方に対して、CPUを介さずにDMA転送を適用する場合について説明した。しかしながら、作成、送信のいずれか一方にだけDMA転送を適用することも可能である。
例えば、マイコンが備えるDMAチャネル数が実施の形態1で使用する数よりも少ない場合は、第1〜2のDMAチャネルによる実行時データの作成部または第3〜第6のDMAチャネルによる実行時データの送信部において、一部のDMAチャネルをソフトウェアによる転送処理で代替することができる。
また、上述した実施の形態1では、処理62〜処理65は、全て周期処理としている場合について説明した。一方、マイコン外部で発生する事象や制御プログラム内で特定条件が成立する等の要因で非周期的に開始する非周期処理の実行時データを、周期処理に加えて取得する場合には、非周期処理に対応する第7のDMAチャネルを追加し、第6のDMA転送が完了した際に、第7のDMAチャネルを開始させる。
第7のDMAは、非周期処理の実行時データ記憶部の識別番号記憶配列の第1要素に、無効な識別番号664を転送する。これにより、制御の1周期の期間に非周期処理が実行されなかった場合には、非周期処理の識別番号格納配列の第1要素が無効な識別番号664が記憶されたままとなる。このため、この期間内に非周期処理が一度も実行されなかったことを判別することができる。
このような非周期処理への対策は、例えば、周期処理が時々その周期通りに実行されないことがある不具合を調査する際にも、適用することができる。
また、本実施の形態1では、本発明に係る実行時データ取得手法の適用の一例を示すために、処理の開始および終了のタイミングを取得している。しかしながら、本発明に係る実行時データ取得手法で取得可能なデータは、これに限らず、例えば、処理開始の時点におけるセンサのAD変換値やデジタルI/Oの入力レベルを取得する場合にも、適用可能である。
また、データを取得する箇所も処理開始および終了の時点に限らない。制御プログラム処理内の任意の箇所で、第1のDMAチャネルを開始させることで、その時点のデータを取得することが可能であり、その時点でのデータの取得およびデータ転送に掛かるCPUの処理時間を、最小限に抑えることができる。
1 車載制御装置(ECU)、2 入力回路、3 マイコン、4 I/O、5 CPU、6 ROM、7 RAM、8 タイマ、9 DMAC、10 外部通信インターフェイス、11 駆動回路、12 モータ、13 外部通信線、60 制御プログラム(車載制御プログラム)、61 初期化処理、62、63 周期割り込み処理、64 短周期処理、65 長周期処理、66 識別番号表、67 第6DMA許可値、68 送信要求指示値、70 実行時データ記憶部、71 処理62実行時データ記憶部、72 処理63実行時データ記憶部、73 処理64実行時データ記憶部、74 処理65実行時データ記憶部、660 処理62の識別番号表、661 処理63の識別番号表、662 処理64の識別番号表、663 処理65の識別番号表、664 無効な識別番号、711、721、731、741 識別番号記憶配列、712、722、732、742 時刻記憶配列。

Claims (6)

  1. 複数の処理を有する車載制御プログラムを実行するCPUと、
    複数のチャネルを有し、前記CPUがアクセス可能なアドレス空間内のデータを、前記CPUを使用せずにDMA転送することができるダイレクトアクセスメモリコントローラであるDMACと、
    前記DMA転送でカウント値を取得可能なハードウェアタイマと、
    前記車載制御プログラムを格納するとともに、前記DMA転送でアクセス可能なROMと、
    前記DMA転送でアクセス可能なRAMと、
    外部機器とデータ通信を行う外部通信インターフェイスと
    を備えた車載制御装置において、前記車載制御プログラムを実行する際に、前記複数の処理のそれぞれの実行タイミングあるいは実行内容をモニタリングするための実行時データの作成および送信を行うための、車載制御プログラムの実行時データ取得方法であって、
    前記実行時データの作成、および前記実行時データの送信の少なくともいずれか一方を、前記CPUを介さずに前記DMA転送により実行するに当たり、前記DMACは、
    前記実行時データの作成を前記DMA転送により実行する場合には、
    実行時データを取得する時点で、第1のチャネルによる第1のDMA転送により前記ハードウェアタイマのカウント値を読み出すことで時刻データを収集し、
    前記時刻データの収集後、第2のチャネルによる第2のDMA転送により、前記複数の処理の実行順序に従ってあらかじめ前記ROM内に格納された、前記複数の処理を識別するための識別番号を読み出し、前記時刻データに対応した前記識別番号を収集することで、前記実行時データを作成し、
    前記実行時データの送信を前記DMA転送により実行する場合には、
    あらかじめ決められた制御1周期分に相当する実行時データが作成された後に、前記第1のチャネルおよび前記第2のチャネル以外のチャネルによるDMA転送により、前記制御1周期分の前記実行時データを、前記外部通信インターフェイスを介して前記外部機器に送信する
    車載制御プログラムの実行時データ取得方法。
  2. 前記DMACは、
    前記車載制御プログラムの処理が実行時データを取得する時点で前記第1のチャネルによる前記第1のDMA転送を開始する第1ステップと、
    前記第1のDMA転送により前記ハードウェアタイマのカウント値を読み出し、読み出し結果を前記RAM内に設けられた実行時データ記憶領域内の時刻記憶配列へ転送する第2ステップと、
    前記第1のDMA転送の完了により、前記第2のチャネルによる前記第2のDMA転送を開始する第3ステップと、
    前記第2のDMA転送により、実行時データの前記識別番号を前記ROMから読み出し、前記RAM内に設けられた前記実行時データ記憶領域内の識別番号記憶配列へ転送する第4ステップと
    を実行することで、前記時刻記憶配列および前記識別番号記憶配列からなる前記実行時データを、前記DMA転送を実行することにより作成する
    請求項1に記載の車載制御プログラムの実行時データ取得方法。
  3. 前記DMACは、
    前記制御1周期分の実行時データが作成された後に、第3のチャネルによる第3のDMA転送を開始する第5ステップと、
    前記第3のDMA転送により、前記制御1周期分の実行時データをその先頭から前記外部通信インターフェイスが持つ送信バッファの分だけ転送する第6ステップと、
    前記第3のDMA転送の完了により第4のチャネルによる第4のDMA転送を開始する第7ステップと、
    前記第4のDMA転送により、前記ROM内にあらかじめ記憶された第6のチャネルを許可状態にする値を、前記第6のチャネルのレジスタに転送する第8ステップと、
    前記第4のDMA転送の完了により、第5のチャネルによる第5のDMA転送を開始する第9ステップと、
    前記第5のDMA転送により、前記ROM内にあらかじめ記憶された前記外部通信インターフェイスへの送信要求値を、前記ROMから転送する第10ステップと、
    前記外部通信インターフェイスが前記送信バッファの分のデータ送信を完了した際に前記第6のチャネルによる第6のDMA転送を開始する第11ステップと、
    前記第6のDMA転送により、前記制御1周期分の実行時データのうち、前記第3のDMA転送で未転送のデータを引き継いで前記外部通信インターフェイスへ転送する第12ステップと、
    前記第6のDMA転送の完了により、前記第5のチャネルによる前記第5のDMA転送を開始する第13ステップと、
    以後、前記外部通信インターフェイスに対して前記制御1周期分の実行時データの全ての提供が完了するまで、前記第5のDMA転送および前記第6のDMA転送を繰り返す第14ステップと、
    前記第6のDMA転送により前記制御1周期分の実行時データの全てを転送完了した際に、前記第6のチャネルを禁止状態にする第15ステップと
    を有する請求項1に記載の車載制御プログラムの実行時データ取得方法。
  4. 前記DMACは、
    前記第4ステップによる前記第2のDMA転送の完了により、前記制御1周期分の実行時データが作成された後に、第3のチャネルによる第3のDMA転送を開始する第5ステップと、
    前記第3のDMA転送により、前記制御1周期分の実行時データを先頭から前記外部通信インターフェイスが持つ送信バッファの分だけ転送する第6ステップと、
    前記第3のDMA転送の完了により第4のチャネルによる第4のDMA転送を開始する第7ステップと、
    前記第4のDMA転送により、前記ROM内にあらかじめ記憶された第6のチャネルを許可状態にする値を、前記第6のチャネルのレジスタに転送する第8ステップと、
    前記第4のDMA転送の完了により、第5のチャネルによる第5のDMA転送を開始する第9ステップと、
    前記第5のDMA転送により、前記ROM内にあらかじめ記憶された前記外部通信インターフェイスへの送信要求値を、前記ROMから転送する第10ステップと、
    前記外部通信インターフェイスが前記送信バッファの分のデータ送信を完了した際に前記第6のチャネルによる第6のDMA転送を開始する第11ステップと、
    前記第6のDMA転送により、前記制御1周期分の実行時データのうち、前記第3のDMA転送で未転送のデータを引き継いで前記外部通信インターフェイスへ転送する第12ステップと、
    前記第6のDMA転送の完了により、前記第5のチャネルによる前記第5のDMA転送を開始する第13ステップと、
    以後、前記外部通信インターフェイスに対して前記制御1周期分の実行時データの全ての提供が完了するまで、前記第5のDMA転送および前記第6のDMA転送を繰り返す第14ステップと、
    前記第6のDMA転送により前記制御1周期分の実行時データの全てを転送完了した際に、前記第6のチャネルを禁止状態にする第15ステップと
    を有する請求項2に記載の車載制御プログラムの実行時データ取得方法。
  5. 前記DMACは、非周期的に開始する非周期処理の実行時データを作成する場合には、
    前記第6のDMA転送が完了した際に、前記非周期処理に対応する第7のチャネルによる第7のDMA転送を開始させ、前記実行時データ記憶領域内の非周期処理に対応する識別番号記憶配列の第1要素に、無効な識別番号を転送する第16ステップ
    を有する請求項4に記載の車載制御プログラムの実行時データ取得方法。
  6. 複数の処理を有する車載制御プログラムを実行するCPUと、
    複数のチャネルを有し、前記CPUがアクセス可能なアドレス空間内のデータを、前記CPUを使用せずにDMA転送することができるダイレクトアクセスメモリコントローラであるDMACと、
    前記DMA転送でカウント値を取得可能なハードウェアタイマと、
    前記車載制御プログラムを格納するとともに、前記DMA転送でアクセス可能なROMと、
    前記DMA転送でアクセス可能なRAMと、
    外部機器とデータ通信を行う外部通信インターフェイスと
    を備え、前記車載制御プログラムを実行する際に、前記複数の処理のそれぞれの実行タイミングあるいは実行内容をモニタリングするための実行時データの作成および送信を行う車載制御装置であって、
    前記DMACは、前記実行時データの作成、および前記実行時データの送信の少なくともいずれか一方を、前記CPUを介さずに前記DMA転送により実行するに当たり、
    前記実行時データの作成を前記DMA転送により実行する場合には、
    実行時データを取得する時点で、第1のチャネルによる第1のDMA転送により前記ハードウェアタイマのカウント値を読み出すことで時刻データを収集し、
    前記時刻データの収集後、第2のチャネルによる第2のDMA転送により、前記複数の処理の実行順序に従ってあらかじめ前記ROM内に格納された、前記複数の処理を識別するための識別番号を読み出し、前記時刻データに対応した前記識別番号を収集することで、前記実行時データを作成し、
    前記実行時データの送信を前記DMA転送により実行する場合には、
    あらかじめ決められた制御1周期分に相当する実行時データが作成された後に、前記第1のチャネルおよび前記第2のチャネル以外のチャネルによるDMA転送により、前記制御1周期分の前記実行時データを、前記外部通信インターフェイスを介して前記外部機器に送信する
    車載制御装置。
JP2016172544A 2016-09-05 2016-09-05 車載制御プログラムの実行時データ取得方法および車載制御装置 Active JP6188895B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016172544A JP6188895B1 (ja) 2016-09-05 2016-09-05 車載制御プログラムの実行時データ取得方法および車載制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016172544A JP6188895B1 (ja) 2016-09-05 2016-09-05 車載制御プログラムの実行時データ取得方法および車載制御装置

Publications (2)

Publication Number Publication Date
JP6188895B1 true JP6188895B1 (ja) 2017-08-30
JP2018041130A JP2018041130A (ja) 2018-03-15

Family

ID=59720327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016172544A Active JP6188895B1 (ja) 2016-09-05 2016-09-05 車載制御プログラムの実行時データ取得方法および車載制御装置

Country Status (1)

Country Link
JP (1) JP6188895B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7072697B1 (ja) * 2021-03-12 2022-05-20 三菱電機株式会社 電子制御装置、電子制御装置の試験装置、及び電子制御装置の試験方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62232055A (ja) * 1986-04-02 1987-10-12 Hitachi Ltd イベントトレ−スデ−タ作成方法
JP2005025601A (ja) * 2003-07-04 2005-01-27 Fujitsu Ten Ltd マイコンのロジック開発装置
JP2014211813A (ja) * 2013-04-19 2014-11-13 三菱電機株式会社 トレース収集回路及びトレース収集方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62232055A (ja) * 1986-04-02 1987-10-12 Hitachi Ltd イベントトレ−スデ−タ作成方法
JP2005025601A (ja) * 2003-07-04 2005-01-27 Fujitsu Ten Ltd マイコンのロジック開発装置
JP2014211813A (ja) * 2013-04-19 2014-11-13 三菱電機株式会社 トレース収集回路及びトレース収集方法

Also Published As

Publication number Publication date
JP2018041130A (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
EP1899828B1 (en) Device and method for arbitrating between direct memory access task requests
US9400617B2 (en) Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
EP1899826B1 (en) Device and method for controlling an execution of a dma task
JP4531773B2 (ja) Dmaデバイス用リアルタイムデバッグサポート及びその方法
US8874959B2 (en) Information processing apparatus, image forming apparatus, and information processing program
US9727497B2 (en) Resolving contention between data bursts
JP4652394B2 (ja) マルチバーストプロトコルデバイスコントローラ
US7013357B2 (en) Arbiter having programmable arbitration points for undefined length burst accesses and method
EP1899825A1 (en) Device and method for controlling multiple dma tasks
JP4834362B2 (ja) メモリ制御装置。
KR100868395B1 (ko) Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체
EP1899827B1 (en) Device and method for executing a dma task
JP6188895B1 (ja) 車載制御プログラムの実行時データ取得方法および車載制御装置
JP5982845B2 (ja) トレース制御装置及びトレース制御方法
KR100633742B1 (ko) 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
Visconti et al. Operation principle, advanced procedures and validation of a new Flex-SPI communication Protocol for smart IoT devices
US20120011295A1 (en) Method and apparatus for wireless broadband systems direct data transfer
JP2003167756A5 (ja)
JP2009230425A (ja) 情報処理装置
JP6142182B2 (ja) 集積回路装置
CN111143141B (zh) 一种状态机设置方法及系统
US20230418472A1 (en) Methods and apparatus to schedule memory operations
CN117369870A (zh) 一种子实时处理器、实时处理器和系统级芯片
Vallina Processor Control of Vivado HLS Designs
JPH0336654A (ja) Dma転送方式、および、シングルチッププロセッサユニット

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170801

R150 Certificate of patent or registration of utility model

Ref document number: 6188895

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250