JP2016057798A - Program embedding device - Google Patents
Program embedding device Download PDFInfo
- Publication number
- JP2016057798A JP2016057798A JP2014182980A JP2014182980A JP2016057798A JP 2016057798 A JP2016057798 A JP 2016057798A JP 2014182980 A JP2014182980 A JP 2014182980A JP 2014182980 A JP2014182980 A JP 2014182980A JP 2016057798 A JP2016057798 A JP 2016057798A
- Authority
- JP
- Japan
- Prior art keywords
- embedding
- code
- program
- periodic
- unit
- 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.)
- Granted
Links
Images
Abstract
Description
本発明は、プログラムに周期処理を埋め込む装置に関するものである。 The present invention relates to an apparatus for embedding periodic processing in a program.
制御システムのような高い信頼性が要求されるシステムでは、システム内のOS(Operating System)および実行中のアプリケーションの異常を検知するための手段としてWDT(Watch Dog Timer)を用いて定期的に監視することが一般的である。
WDTとはハードウェア内部のタイマであり、所定の時間が経過(タイムアップ)すると、システムに異常が発生していると判断し、H/W(Hard Ware)を強制的にリセットするという特徴を持つ。システムはリセットすることによって異常を回避することができる。
これに対し、システム内のOSおよび実行中のアプリケーションは、このWDTがタイムアップする前にWDTのカウントを設定し直す処理(周期処理)を一定の時間(周期時間)おきに実行する必要がある。
In a system that requires high reliability such as a control system, WDT (Watch Dog Timer) is regularly monitored as a means for detecting abnormalities in the OS (Operating System) and running applications in the system. It is common to do.
WDT is a hardware internal timer. When a predetermined time elapses (time up), it is determined that an abnormality has occurred in the system, and H / W (Hard Wear) is forcibly reset. Have. The system can avoid anomalies by resetting.
On the other hand, the OS in the system and the application being executed need to execute a process for resetting the WDT count (periodic process) at regular intervals (periodic time) before this WDT times out. .
このような周期処理は、マイコンのタイマ割り込みを利用した割り込み処理ルーチンで実現するのが一般的である。しかし、ブートローダ起動時およびOS起動の初期段階では、利用できるH/Wが制約されるため、周期処理をタイマ割り込みに依存した割り込み処理ルーチンで記述することができない。このため、通常時に実行するプログラム(メインプログラム)のソースコードに直接周期処理を埋め込む必要がある。
例えば、特許文献1では、CPU資源の利用を制御するため、周期処理を関数呼出し単位、プログラム行、基本ブロックなどの間隔でプログラムのソースコードに埋め込む技術について開示されている。
Such periodic processing is generally realized by an interrupt processing routine using a timer interrupt of a microcomputer. However, at the time of boot loader activation and at the initial stage of OS activation, the available H / W is restricted, so that periodic processing cannot be described by an interrupt processing routine that relies on a timer interrupt. For this reason, it is necessary to embed periodic processing directly in the source code of the program (main program) that is normally executed.
For example,
従来のプログラム埋め込み装置は、関数呼出し単位、プログラム行、基本ブロックなどプログラムの記述内容に従った間隔で埋め込みを実現していた。しかし、プログラムの実行時間については考慮されていないため、埋め込まれたプログラムが過度に実行する、もしくは周期時間内に実行できないといった課題がある。 The conventional program embedding device has realized embedding at intervals according to the description contents of the program such as a function call unit, a program line, and a basic block. However, since the execution time of the program is not considered, there is a problem that the embedded program is excessively executed or cannot be executed within the period time.
本発明は、上記のような課題を解決するためのものであり、プログラムの実行時間を計測しつつ周期時間内に周期処理を実行するよう、ソースコードへ周期処理実行命令の埋め込みを実現することを目的とする。 The present invention is to solve the above-described problems, and implements embedding a periodic processing execution instruction in a source code so as to execute periodic processing within the periodic time while measuring the execution time of the program. With the goal.
本発明のプログラム埋め込み装置は、アセンブリコードに変換したプログラムソースの中から、一定間隔で繰り返し実行する周期処理を埋め込むための分岐先を探索する分岐先探索部と、前記分岐先に対し、前記周期処理と前記周期処理の実行を前記周期処理が前回実行されてからの経過時間で判定する判定処理を埋め込む第1のプログラム埋め込み部とを備える。 The program embedding device of the present invention includes a branch destination search unit for searching for a branch destination for embedding a periodic process that is repeatedly executed at regular intervals, from the program source converted into assembly code, and the cycle with respect to the branch destination. A first program embedding unit that embeds a determination process for determining the process and the execution of the periodic process based on an elapsed time from the previous execution of the periodic process.
本発明によれば、タイマ割り込みが利用できない状況においても、周期処理を周期時間に間に合う間隔で実行できるよう、周期処理をプログラムに埋め込むことが可能となる。 According to the present invention, it is possible to embed periodic processing in a program so that the periodic processing can be executed at an interval in time for the periodic time even in a situation where a timer interrupt cannot be used.
実施の形態1.
図1は、本実施の形態におけるシステム構成図の一例である。本実施の形態におけるシステムでは、開発用装置10、プログラム埋め込み装置20、実行用装置30で構成される。
なお、開発用装置10からプログラム埋め込み装置20に対し、メインプログラムのソースコード21および埋め込み用周期処理コード22が渡され、プログラム埋め込み装置20から実行用装置30に対し、周期処理埋め込みバイナリ23が渡される。
FIG. 1 is an example of a system configuration diagram in the present embodiment. The system according to the present embodiment includes a
Note that the
開発用装置10は、実行用装置30上で動作するプログラムを開発するための装置である。開発用装置10で開発されたメインプログラムのソースコード21と埋め込み用周期処理コード22が、プログラム埋め込み装置20に渡される。
The
メインプログラムのソースコード21は、実行用装置30上で動作させたいプログラムのソースコードである。また、メインプログラムのソースコード21は、CやC++などのコンパイル可能なプログラミング言語で記述されたものであり、複数のファイルから構成されていてもよい。
The
埋め込み用周期処理コード22は、本来、実行用装置30上でタイマ割り込みを使用することができた場合に実行する周期処理プログラムのアセンブリコードである。埋め込み用周期処理コード22は、周期処理及び、前記周期処理を周期的に実行するためのプログラムのアセンブリコードで構成される。
埋め込み用周期処理コード22はアセンブリコードであるが、メインプログラムのソースコード21と同様、CやC++などのコンパイル可能なプログラミング言語で記述されたものであっても良い。しかし、その場合は以降で説明するアセンブリコード変換部201により、埋め込み前にアセンブリコードに変換する必要がある。
The
The embedded
プログラム埋め込み装置20は、開発用装置10から受け取ったメインプログラムのソースコード21と埋め込み用周期処理コード22から周期処理埋め込みバイナリ23を生成し、実行用装置30に渡す。
The
実行用装置30は、プログラム埋め込み装置20から渡された周期処理埋め込みバイナリ23を実行する。
The
なお、本実施の形態では、開発用装置10とプログラム埋め込み装置20を別の装置として説明をしたが、同一の装置上で、メインプログラムのソースコード21と埋め込み用周期処理コード22の開発および、周期処理埋め込みバイナリ23の生成を行っても良い。
In the present embodiment, the
図2は、本実施の形態における、プログラム埋め込み装置20および実行用装置30のハードウェア構成図の一例である。なお、プログラム埋め込み装置20および実行用装置30のハードウェア構成は、いずれかもしくはどちらも図2に示す構成と異なる構成であっても構わない。
FIG. 2 is an example of a hardware configuration diagram of the
図2において、プログラム埋め込み装置20および実行用装置30は、プログラムを実行するCPU1(Central Processor Unit)、プログラムやデータを記憶するROM2(Read Only Memory)、プログラムが使用・参照できるよう一時的にデータを記憶するRAM3(Random Access Memory)に加え、開発用装置10、プログラム埋め込み装置20、実行用装置30との間でファイルのやりとりを行うための通信モジュール4、時刻やプログラムの実行時間、デバイス7への出力タイミングなどを計測するタイマ5など複数のハードウェアを備えている。
In FIG. 2, a
ROM2は、プログラムや固定データを格納する領域を提供する。フラッシュメモリなどが相当し、書き込まれたプログラム内容を書き換えることが可能である。
RAM3は、プログラムが使用するデータを保存及び参照するための作業領域を提供する。
The
The
通信モジュール4は、ネットワークを通じて、開発用装置10、プログラム埋め込み装置20、実行用装置30との間でファイルの受け渡しを行う。なお、本実施の形態では、通信モジュール4を用いたハードウェア構成の一例を示したが、通信モジュール4を用いず、例えば、開発用装置10、プログラム埋め込み装置20、実行用装置30との間でMT(磁気テープ)、FD(フレキシブルディスク)などのメディア媒体で受け渡しを行ってもよい。
タイマ5は、時刻のほか、周期処理を実行するタイミングなどを計測する。
The
The
図3は、実施の形態1におけるプログラム埋め込み装置20上で動作するソフトウェアの全体構成図である。これらのソフトウェアは、プログラム埋め込み装置20のROM2またはRAM3上に記憶され、CPU1により実行される。
FIG. 3 is an overall configuration diagram of software that operates on the
図3において、プログラム埋め込み装置20は、プログラミング言語で記述されたソースコードをアセンブリコードに変換するアセンブリコード変換部201と、埋め込み用周期処理コード22をアセンブリレベルでメインプログラムへ埋め込む周期処理埋め込み部202と、周期処理の埋め込みが完了したアセンブリコードをCPU1で実行可能なオブジェクトコードに変換するオブジェクトコード変換部203と、オブジェクトコード(複数でもよい)との共有とライブラリとを結合するバイナリ変換部204を備えている。
なお、周期処理埋め込み部202は、アセンブリコードの中から分岐先ラベルを探索する分岐先ラベル探索部(分岐先探索部)2020と、埋め込み用周期処理コード22をアセンブリコードへ埋め込む処理を行うプログラム埋め込み部(第1のプログラム埋め込み部)2021を備えている。
In FIG. 3, a
The periodic
プログラム埋め込み装置20上で動作するソフトウェアの詳細について説明する。
Details of the software operating on the
アセンブリコード変換部201は、開発用装置10からメインプログラムのソースコード21を受け取り、アセンブリコードに変換を行う。アセンブリコード変換部201は、変換したアセンブリコードを周期処理埋め込み部202に渡す。
The assembly
周期処理埋め込み部202は、アセンブリコード変換部201からメインプログラムのアセンブリコードを受け取り、分岐先ラベル探索部2020で、周期処理コードを埋め込む位置を決定する。分岐先ラベル探索部2020は、例えば、アセンブリコードで使用されている全てのラベルの探索を行う。
なお、本実施の形態では、ラベルを埋め込み箇所としているが、例えば、条件分岐命令があった箇所を分岐先ラベルの埋め込み箇所としても良い。条件分岐命令があった箇所を分岐先ラベルの埋め込み箇所とした場合、アセンブリコードの中から条件分岐命令の探索を行う。分岐先として探索するラベルは、一つだけとしても良いし、複数の組み合わせ、例えば「条件分岐命令と加算命令」のような組み合わせであってもよい。
The periodic
In the present embodiment, the label is embedded as a place to embed, but for example, a place where a conditional branch instruction is present may be set as a place to embed a branch destination label. When the location where the conditional branch instruction is present is set as the location where the branch destination label is embedded, the conditional branch instruction is searched from the assembly code. There may be only one label searched as a branch destination, or a plurality of combinations, for example, a combination such as “conditional branch instruction and addition instruction” may be used.
プログラム埋め込み部2021は、分岐先ラベル探索部2020が決定した埋め込む位置に、埋め込み用周期処理コード22を埋め込む。図4を用いて、埋め込まれるアセンブリコードについて詳しく説明する。
The
図4は、埋め込み用周期処理コード22の一例を示す図である。埋め込み用周期処理コード22は、経過時間計測処理コード(判定処理)220と周期処理コード221を備える。
FIG. 4 is a diagram illustrating an example of the embedded
経過時間計測処理コード220は、現在の時刻を獲得し、同処理コードが前回呼び出された際の時刻との差分から経過時間を計測し、予め設定した時間を経過していた場合、周期処理を呼び出す処理が記述されたアセンブリコードである。
例えば、周期時間が10ミリ秒の周期処理であった場合、周期処理が前回実行した時刻から8ミリ秒経過していた場合、周期処理を実行し、現在の時刻を記録する。次に経過時間計測処理コード220が呼び出された際には、この記録された時刻が、前回の時刻となる。
The elapsed time
For example, if the periodic process is a periodic process of 10 milliseconds, if the periodic process has passed 8 milliseconds since the previous execution, the periodic process is executed and the current time is recorded. Next, when the elapsed time
周期処理コード221は、周期処理を行うアセンブリコードである。本実施の形態では、周期処理コード221を開発用装置10で開発し、プログラム埋め込み装置20へ渡す構成で説明を行ったが、周期処理コード221を予めオブジェクトコードで提供しておき、バイナリ変換部204でバイナリ変換を行う際、同時に行ってもよい。
このような埋め込み用周期処理コード22の場合、前述したプログラム埋め込み部2021は、分岐先ラベル探索部2020が決定した埋め込む位置に、経過時間計測処理コード220と周期処理コード221を埋め込む。
The
In the case of such a
なお、周期処理コード221は、全ての位置に経過時間計測処理コード220と同時に埋め込んでもよいし、一か所だけ関数として埋め込み、経過時間計測処理コード220から呼び出すようにしても良い。前者の全ての位置に埋め込む方法であれば、処理速度を向上でき、後者の一か所だけ関数として埋め込む方法だと、メモリを節約できる。
また、関数呼び出しとした場合、アセンブリコードとして周期処理コード221を用いるのではなく、オブジェクトコードとして用い(図示せず)、実行バイナリへ変換する際、一緒に変換しても良い。埋め込み用周期処理コード22の埋め込みを完了した後のアセンブリコードの一例を図5に示す。
The
In the case of a function call, the
オブジェクトコード変換部203は、周期処理埋め込み部202から、埋め込み用周期処理コード22の埋め込みを完了した後のアセンブリコードを受け取り、オブジェクトコードへの変換を行う。
オブジェクトコード変換部203は、変換したオブジェクトコードをバイナリ変換部204に渡す。
The object
The object
バイナリ変換部204は、オブジェクトコード変換部203からオブジェクトコードを受け取り、実行用装置30上で実行が可能なバイナリ、周期処理埋め込みバイナリ23への変換を行う。
バイナリ変換部204は、変換した周期処理埋め込みバイナリ23を実行用装置30へ渡す。
The
The
周期処理埋め込みバイナリ23は、実行用装置30上のROM2またはRAM3に記憶され、実行用装置30上のCPU1が実行するソフトウェアである。実行用装置30上のCPU1は、周期処理埋め込みバイナリ23を実行する際、分岐先ラベルを通過する度に経過時間計測処理コードを実行し、予め設定された周期時間が経過したか否かを判定する。例えば8割以上経過していた場合、実行用装置30上のCPU1は、周期処理コードを実行する。
The cyclic processing embedded
次に図6を用いて、本実施の形態におけるプログラム埋め込み装置20の動作について説明する。なお、本実施の形態では、周期処理が一周経過する時間(周期時間)の間に分岐先ラベルを複数回通過すると仮定し、周期処理を埋め込む位置を分岐先ラベルの先頭に設定している。
Next, the operation of the
まず、アセンブリコード変換部201が、開発用装置10から受け取ったメインプログラムのソースコード21をアセンブリコードに変換する(S101)。メインプログラムのソースコード21をアセンブリコードに変換する方法は、例えば、gcc(GNU C Compiler)を用いた場合であれば、オプション“S”を設定することによって、行っても良い。
First, the assembly
アセンブリコード変換部201は、変換したアセンブリコードを周期処理埋め込み部202に渡す。
次に、分岐先ラベル探索部2020が、アセンブリコード変換部201から受け取ったアセンブリコードの先頭から1行ずつ読み込み(S102)、分岐先ラベルが記述されているかを判定する(S103)。
The assembly
Next, the branch destination
分岐先ラベルが記述されていなかった場合(S103:NO)、分岐先ラベル探索部2020は、現在読み込んだ1行が、アセンブリコードの終端であるかを確認する(S105)。
一方、分岐先ラベルが記述されていた場合(S103:YES)、分岐先ラベル探索部2020は、プログラム埋め込み部2021を呼び出す。
If the branch destination label is not described (S103: NO), the branch destination
On the other hand, when the branch destination label is described (S103: YES), the branch destination
プログラム埋め込み部2021は、分岐先ラベル探索部2020が読み込んだ行の次の行へ、経過時間計測処理コード220を埋め込む(S104)。
次に分岐先ラベル探索部2020は、現在読み込んだ1行が、アセンブリコードの終端であるかを確認する(S105)。
The
Next, the branch destination
アセンブリコードの終端ではなかった場合(S105:NO)、分岐先ラベル探索部2020は、アセンブリコードの1行読み込み(S102)を再度実行し、次の1行を読み込む。
アセンブリコードの終端であった場合(S105:YES)、分岐先ラベル探索部2020は、プログラム埋め込み部2021を呼び出す。
When it is not the end of the assembly code (S105: NO), the branch destination
If it is the end of the assembly code (S105: YES), the branch
プログラム埋め込み部2021は、周期処理コード221をアセンブリコードに埋め込む(S106)。周期処理コード221を埋め込む位置はアセンブリコード内のどこでもよい。また、本実施の形態では、分岐先ラベルを抽出する処理の後に周期処理コード221を埋め込んだが、分岐先ラベルを抽出する前に行っても良い。
The
次にオブジェクトコード変換部203は、周期処理埋め込み部202が出力した埋め込み完了後アセンブリコードを、バイナリ形式であるオブジェクトコードに変換する(S107)。なお、本実施の形態では、周期処理コード221を埋め込み完了後アセンブリコードの一部となるよう埋め込んだが、埋め込み完了後アセンブリコードとは別のファイルとし、埋め込み完了後アセンブリコードとは別にオブジェクトコードに変換しても良い。
Next, the object
最後にバイナリ変換部204が、オブジェクトコード(複数でもよい)と共有ライブラリを結合し、実行用装置上のCPU1で実行可能な形式である周期処理埋め込みバイナリ23を出力する。
Finally, the
次に図7を用いて、周期処理埋め込みバイナリ23に埋め込まれた経過時間計測処理コード220の動作について説明する。なお、周期処理埋め込みバイナリ23は、実行用装置30上のROM2またはRAM3上に記憶され、実行用装置30上のCPU1により実行される。周期処理埋め込みバイナリ23に埋め込まれた経過時間計測処理コード220が参照するタイマ5も、実行用装置30上のものである。
Next, the operation of the elapsed time
経過時間計測処理コード220は、タイマ5の値を読み込み、周期処理コード221が前回実行された時間との差分を計算する(S201)。
なお、本実施の形態では、タイマ5の初期値は0であり、周期処理埋め込みバイナリ23の実行開始と同時にカウントを開始していることを前提とする。つまり、経過時間計測処理コード220が読み込んだタイマ5の値は、前回周期処理コード221を実行してからの経過時間(差分)となる。
The elapsed time
In this embodiment, the initial value of the
次に、経過時間計測処理コード220は、S201にて算出した差分が周期時間の8割以上であるかを判定する(S202)。なお、本実施の形態では、周期処理を周期時間内に確実に実行することを目的としているため、周期処理の実行条件を周期時間の8割経過時と定義としたが、周期時間を越えなければ特に8割以外であってもよい。
Next, the elapsed time
判定した結果、8割以上であった場合(S202:YES)、経過時間計測処理コード220は、周期処理コード221を呼び出す(S203)。
経過時間計測処理コード220は、周期処理コード221を呼び出した後、現在のタイマ5のカウント値を前回実行時の値として記録(更新)する(S204)。
If the result of the determination is 80% or more (S202: YES), the elapsed time
The elapsed time
判定した結果8割未満であった場合(S202:NO)、経過時間計測処理コード220は、何もせずに終了する。
If the determination result is less than 80% (S202: NO), the elapsed time
以上のように、メインプログラムのソースコード21を変換したアセンブリコードの中から分岐先ラベルを探索する分岐先ラベル探索部2020と、埋め込み用周期処理コード22をアセンブリコードへ埋め込む処理を行うプログラム埋め込み部2021を備えることにより、タイマ割り込みを利用せずとも周期処理を実行するバイナリ(周期処理埋め込みバイナリ23)を生成することが可能となる。
As described above, the branch destination
また、周期処理埋め込みバイナリ23を実行用装置30上で実行する際には、タイマ5のカウント値を確認しながら周期処理コード221を実行するか否かを判断するため、周期処理コード221の実行を必要最低限に留めることが可能となる。
Further, when the periodic process embedded binary 23 is executed on the
さらに、タイマ5のカウント値を確認しながら周期処理コード221を実行するか否かを判断しているため、メインプログラムのソースコード21の内容が変化した場合でも、確実に周期処理を周期時間内に実行することが可能である。
Furthermore, since it is determined whether or not to execute the
実施の形態2.
実施の形態1では、メインプログラムのソースコード21を変換したアセンブリコードの中から分岐先ラベルを探索する分岐先ラベル探索部2020と、埋め込み用周期処理コード22をアセンブリコードへ埋め込む処理を行うプログラム埋め込み部2021を備えることにより、実行用装置30上で、タイマ割り込みを利用せずとも周期処理を実行するバイナリを生成するプログラム埋め込み装置20について述べた。
実施の形態1で生成されたバイナリ(周期処理埋め込みバイナリ23)は、全ての分岐先ラベルの通過時に、周期処理を実行するか否かの判定を行っている。
本実施の形態では、実行用装置30で予めメインプログラムを実行しておき、各分岐先ラベルで計測した経過時間のログから周期処理が周期時間内に実行するために必要な分岐先ラベルの通過時のみ、周期処理の実行命令を埋め込むプログラム埋め込み装置20について述べる。
図8は、本実施の形態におけるシステムの構成図の一例である。本実施の形態におけるシステムでは、開発用装置10、プログラム埋め込み装置20、実行用装置30で構成される。
開発用装置10からプログラム埋め込み装置20に対し、メインプログラムのソースコード21、埋め込み用時間計測処理コード24および埋め込み用周期処理コード27が渡され、プログラム埋め込み装置20から実行用装置30に対し、測定用周期処理埋め込みバイナリ25と周期処理埋め込みバイナリ28が渡され、実行用装置30からプログラム埋め込み装置20に対し、経過時間ログ26が渡される。
なお、本実施の形態におけるプログラム埋め込み装置20は、第1の動作と第2の動作の2種類の動作を順に行う。このため、図9〜11を用いて、プログラム埋め込み装置20が第1の動作を行う場合のシステム構成(図9)、第1の動作によって生成された測定用周期処理埋め込みバイナリ25を受け取った実行用装置30が動作を行う場合のシステム構成(図10)、プログラム埋め込み装置20が第2の動作を行う場合のシステム構成(図11)について説明する。なお、図9〜11において、それぞれの各動作に関係のない構成要素については点線とした。
In the first embodiment, a program for embedding a branch destination
The binary (periodic processing embedded binary 23) generated in the first embodiment determines whether or not to execute periodic processing when all branch destination labels pass.
In the present embodiment, the main program is executed in advance by the
FIG. 8 is an example of a system configuration diagram in the present embodiment. The system according to the present embodiment includes a
The
Note that the
図9は、プログラム埋め込み装置20が第1の動作を行う場合のシステム構成図である。開発用装置10は、実行用装置30上で動作するプログラムを開発するための装置である。開発用装置10で開発されたメインプログラムのソースコード21と、埋め込み用時間計測処理コード24は、プログラム埋め込み装置20に渡される。
FIG. 9 is a system configuration diagram when the
メインプログラムのソースコード21は、実行用装置30上で動作させたいプログラムのソースコードである。また、メインプログラムのソースコード21は、CやC++などのコンパイル可能なプログラミング言語で記述されたものであり、複数のファイルから構成されていてもよい。
The
埋め込み用時間計測処理コード24は、プログラムの実行(経過)時間を記録するアセンブリコードである。
埋め込み用時間計測処理コード24は、アセンブリコードであるが、メインプログラムのソースコード21と同様、CやC++などのコンパイル可能なプログラミング言語で記述されたものであっても良い。しかし、その場合はアセンブリコード変換部201により、埋め込み前にアセンブリコードに変換する必要がある。
第1の動作において、プログラム埋め込み装置20は、開発用装置10から受け取ったメインプログラムのソースコード21と埋め込み用時間計測処理コード24から測定用周期処理埋め込みバイナリ25を生成し、実行用装置30に渡す。
The embedded time
The embedding time
In the first operation, the
図10は、プログラム埋め込み装置20の第1の動作によって生成された測定用周期処理埋め込みバイナリ25を受け取った実行用装置30が動作を行う場合のシステム構成図である。実行用装置30は、プログラム埋め込み装置20から渡された測定用周期処理埋め込みバイナリ25を実行し、経過時間ログ26を出力する。実行用装置30が出力した経過時間ログ26は、プログラム埋め込み装置20に渡される。
FIG. 10 is a system configuration diagram in the case where the
図11は、プログラム埋め込み装置20が第2の動作を行う場合のシステム構成図である。開発用装置10で開発されたメインプログラムのソースコード21と埋め込み用周期処理コード27および、実行用装置30が測定用周期処理埋め込みバイナリ25を実行した結果出力した経過時間ログ26がプログラム埋め込み装置20に渡される。
FIG. 11 is a system configuration diagram when the
埋め込み用周期処理コード27は、本来、実行用装置30上でタイマ割り込みを使用することができた場合に実行する周期処理プログラムのアセンブリコードである。埋め込み用周期処理コード27は、周期処理及び、前期周期処理を実行するか否かを判定するためのプログラムのアセンブリコードで構成される。
埋め込み用周期処理コード27はアセンブリコードであるが、メインプログラムのソースコード21と同様、CやC++などのコンパイル可能なプログラミング言語で記述されたものであっても良い。しかし、その場合はアセンブリコード変換部201により、埋め込み前にアセンブリコードに変換する必要がある。
第2の動作において、プログラム埋め込み装置20は、開発用装置10から受け取ったメインプログラムのソースコード21と埋め込み用周期処理コード27および、実行用装置30から受け取った経過時間ログ26から、周期処理埋め込みバイナリ28を生成し、実行用装置30に渡す。
The
The embedded
In the second operation, the
図12は、本実施の形態2におけるプログラム埋め込み装置20上で動作するソフトウェアの全体構成図である。これらのソフトウェアは、プログラム埋め込み装置20のROM2またはRAM3上に記憶され、CPU1により実行される。
FIG. 12 is an overall configuration diagram of software that operates on the
図12において、プログラム埋め込み装置20は、プログラミング言語で記述されたソースコードをアセンブリコードに変換するアセンブリコード変換部201と、埋め込み用時間計測処理コード24をアセンブリレベルでメインプログラムへ埋め込む第1の周期処理埋め込み部205と、経過時間ログ26を参照しつつ、埋め込み用周期処理コード27をアセンブリレベルでメインプログラムへ埋め込む第2の周期処理埋め込み部206と、埋め込み用時間計測処理コード24もしくは埋め込み用周期処理コード27の埋め込みが完了したアセンブリコードを(実行用装置30上の)CPU1で実行可能なオブジェクトコードに変換するオブジェクトコード変換部203と、オブジェクトコード(複数でもよい)との共有とライブラリとを結合するバイナリ変換部204を備えている。
In FIG. 12, a
なお、第1の周期処理埋め込み部205は、アセンブリコードの中から分岐先ラベルを探索する分岐先ラベル探索部2020と、埋め込み用時間計測処理コード24をアセンブリコードへ埋め込む処理を行うプログラム埋め込み部(第2のプログラム埋め込み部)2050を備えており、第2の周期処理埋め込み部206は、経過時間ログ26を参照し、アセンブリコードの中に埋め込み用周期処理コード27を埋め込む位置を決定する埋め込み位置決定部2060と、埋め込み用周期処理コード27をアセンブリコードへ埋め込む処理を行うプログラム埋め込み部2021を備えている。
The first periodic
前述したように、本実施の形態におけるプログラム埋め込み装置20は、第1の動作と第2の動作の2種類の動作を順に行う。それぞれの動作に着目した場合のプログラム埋め込み装置20上で動作するソフトウェアの全体構成図を図13と図14に示す。
本実施の形態では、2種類の周期処理埋め込み部から構成されており、実行動作に応じて処理を切り替える必要がある。処理の切替は、ソフトウェア実行時の引数などからプログラム埋め込み装置20が経過時間ログ26を受け取っているかどうかで判断させてもよい。また、経過時間ログ26が入力された場合には、第2の周期処理埋め込み部206を実行するように判断しても良い。
As described above, the
In this embodiment, it is composed of two types of periodic processing embedding units, and it is necessary to switch processing according to the execution operation. The process switching may be determined based on whether or not the
図13は、本実施の形態2におけるプログラム埋め込み装置20上で動作するソフトウェアの全体構成のうち、第1の動作を行う場合に着目したソフトウェア構成図である。
図13において、埋め込み用時間計測処理コード24は、実行用装置30上のタイマ5のカウント値、埋め込み用時間計測処理コード24が埋め込まれたファイル名、および分岐先ラベルを記録する命令が記述されたアセンブリコードである。
プログラム埋め込み部2050は、入力されたコードに関わらず、分岐先ラベル探索部2020が決定した埋め込む位置への埋め込みを実現する。
FIG. 13 is a software configuration diagram focusing on performing the first operation among the entire configuration of software operating on the
In FIG. 13, the embedding time
The
図14は、本実施の形態2におけるプログラム埋め込み装置20上で動作するソフトウェアの全体構成のうち、第2の動作を行う場合に着目したソフトウェア構成図である。
図14において、埋め込み位置決定部2060は、経過時間ログ26を参照して周期処理を実行する分岐先ラベルの位置を決定するものである。また、ループ処理などの場合は、同じ分岐先ラベルを複数回通過することが想定されるため、埋め込み位置決定部2060は、周期処理を実行する分岐先ラベルと通過回数を含めて埋め込み位置を決定する。
FIG. 14 is a software configuration diagram focusing on performing the second operation among the entire configuration of software operating on the
In FIG. 14, the embedding
図15を用いて、埋め込み用周期処理コード27を説明する。
埋め込み用周期処理コード27は、分岐先ラベルが通過した回数を計測しながら周期処理の実行を判定する通過回数計測コード270、および周期処理コード221から構成される。
プログラム埋め込み部2021は、埋め込み位置決定部2060にて決定した位置にコードの埋め込みを行う。なお、通過回数が1回の場合には、周期処理コード221のみを埋め込み、複数回通過する場合には、通過回数計測コード270と併せて周期処理コード221を埋め込む。
The embedding
The
The
第1、第2の動作に共通してオブジェクトコード変換部203は、埋め込みが完了したアセンブリコードを受け取り、オブジェクトコードへの変換を行う。
オブジェクトコード変換部203は、変換したオブジェクトコードをバイナリ変換部204に渡す。
バイナリ変換部204は、オブジェクトコード変換部203からオブジェクトコードを受け取り、実行用装置30上で実行が可能なバイナリへの変換を行う。
第1の動作の際は、測定用周期処理埋め込みバイナリ25へと変換し、第2の動作の際は、周期処理埋め込みバイナリ28へと変換する。
In common with the first and second operations, the object
The object
The
In the first operation, it is converted into the periodic processing embedded
測定用周期処理埋め込みバイナリ25は、実行用装置30上のROM2またはRAM3に記憶され、実行用装置30上のCPU1が実行するソフトウェアである。
実行用装置30上のCPU1は、測定用周期処理埋め込みバイナリ25を実行する際、分岐先ラベルを通過する度にタイマ5の値を記録し、メインプログラムの経過時間を測定する。
The measurement periodic process embedded binary 25 is software stored in the
When executing the periodic processing embedded
周期処理埋め込みバイナリ28は、実行用装置30上のROM2またはRAM3に記憶され、実行用装置30上のCPU1が実行するソフトウェアである。
実行用装置30上のCPU1は、周期処理埋め込みバイナリ28を実行する際、埋め込み用周期処理コードが埋め込まれた分岐先ラベルを通過する度に、周期処理コード221を実行する。
The periodic processing embedded
When executing the periodic process embedded binary 28, the
次に、図16を用いて、本実施の形態におけるプログラム埋め込み装置20の第1の動作について説明する。
第1の動作とは、プログラム埋め込み装置20がメインプログラムのソースコード21と埋め込み用時間計測処理コード24から、実行用装置30で動作可能な測定用周期処理埋め込みバイナリ25を生成することを示す。
第1の動作においてプログラム埋め込み装置20は、分岐先ラベルの先頭行に埋め込み用時間計測処理コード24を挿入する(S301)。その他の動作内容については、実施の形態1で示した図6と同じである。
Next, the first operation of the
The first operation indicates that the
In the first operation, the
次に、図17を用いて、測定用周期処理埋め込みバイナリ25に挿入された埋め込み用時間計測処理コード24の動作について説明する。なお、測定用周期処理埋め込みバイナリ25は、実行用装置30上のROM2またはRAM3上に記憶され、実行用装置30上のCPU1により実行される。測定用周期処理埋め込みバイナリ25に挿入された埋め込み用時間計測処理コード24が参照するタイマ5も実行用装置30上のものである。
Next, the operation of the embedding time
埋め込み用時間計測処理コード24は、埋め込まれたプログラムのファイル名、および分岐先ラベル名を取得する(S206、S207)。
次に、埋め込み用時間計測処理コード24は、タイマ5の値を読み込む(S208)。最後に、取得した情報(ファイル名、分岐先ラベル、タイマ5の値)を経過ログに記録する(S209)。
The embedding time
Next, the embedding time
図16、17では、埋め込み用時間計測処理コード24内にログを記録する命令を記述する場合の例を示したが、これらの命令は一か所だけ関数として埋め込み、埋め込み用時間計測処理コード24から呼び出すようにしても良い。
FIGS. 16 and 17 show an example in which an instruction for recording a log is described in the embedding time measuring
第1の動作によって生成された、測定用周期処理埋め込みバイナリ25を実行用装置30上で実行することによって経過時間ログ26が出力される。
図18は、実行用装置30上で測定用周期処理埋め込みバイナリ25を動作させた結果出力された、経過時間ログ26の一例である。
By executing the measurement periodic process embedded binary 25 generated by the first operation on the
FIG. 18 is an example of the elapsed
次に、図19を用いて、本実施の形態におけるプログラム埋め込み装置20の第2の動作について説明する。
第2の動作とは、プログラム埋め込み装置20がメインプログラムのソースコード21と埋め込み用周期処理コード27を用いて、実行用装置30で動作可能な周期処理埋め込みバイナリ28を生成することを示す。
Next, the second operation of the
The second operation indicates that the
第2に動作において、まずアセンブリコード変換部201が開発用装置10から受け取ったメインプログラムのソースコード21をアセンブリコードに変換する(S101)。
アセンブリコード変換部201は、変換したアセンブリコードを第2の周期処理埋め込み部206に渡す。
次に、埋め込み位置決定部2060が、実行用装置30から受け取った経過時間ログ26に基づいて、埋め込み用周期処理コード27を挿入する位置を決定し、埋め込み位置テーブルに記録する(S302)。
Secondly, in the operation, first, the assembly
The assembly
Next, the embedding
埋め込み位置テーブルは、周期処理を行うファイル名、分岐先ラベル、通過回数を記録するためのものである。図20に埋め込み位置テーブルの一例を示す。S302の詳細な動作フローについては後述する。 The embedding position table is for recording the name of a file to be periodically processed, the branch destination label, and the number of passages. FIG. 20 shows an example of the embedded position table. The detailed operation flow of S302 will be described later.
埋め込み位置決定部2060は、埋め込み位置テーブルに記録された分岐先ラベルを1行ずつ読み込む(S303)。
次に、埋め込み位置決定部2060は、アセンブリコード変換部201から受け取ったメインプログラムのアセンブリコードの先頭から1行ずつ読み込み(S304)、S303で読み込んだ分岐先ラベルと一致するか判定する(S305)。
The embedding
Next, the embedding
埋め込み位置テーブルの分岐先ラベルと一致しなかった場合(S305:NO)、埋め込み位置決定部2060は、アセンブリコードの1行読み込み(S304)を再度実行し、次の行を読み込む。
一方、埋め込み位置テーブルの分岐先ラベルと一致した場合(S305:YES)、埋め込み位置決定部2060は、埋め込み位置テーブルに記録されている分岐先ラベルの通過回数を判定する(S306)。
If it does not match the branching destination label in the embedding position table (S305: NO), the embedding
On the other hand, when it matches with the branch destination label of the embedded position table (S305: YES), the embedded
埋め込み位置テーブルの通過回数が一回であった場合(S306:一回)、埋め込み位置決定部2060は、プログラム埋め込み部2021を呼び出す。
プログラム埋め込み部2021は、埋め込み位置決定部2060がアセンブリコードから読み込んだ分岐先ラベルの次の行へ周期処理コード221を挿入する(S308)。
なお、周期処理コード221は、全ての位置に埋め込んでもよいし、一か所だけ関数として埋め込み、分岐先ラベルには関数の呼び出し命令のみを挿入するようにしても良い。前者の全ての位置に埋め込む方法であれば、処理速度を向上でき、後者の一か所だけ関数として埋め込む方法だと、メモリを節約できる。
When the number of passes through the embedding position table is once (S306: once), the embedding
The
The
埋め込み位置テーブルの通過回数が複数回であった場合、埋め込み位置決定部2060は、アセンブリコードから読み込んだ分岐先ラベルの次の行へ通過回数計測コード270を挿入するよう、プログラム埋め込み部2021を呼び出し(S307)、さらに周期処理コード221を挿入するよう、プログラム埋め込み部2021を呼び出す(S308)。
なお、周期処理コード221は、全ての位置に通過回数計測コード270と同時に埋め込んでもよいし、一か所だけ関数として埋め込み、通過回数計測コード270から呼び出すようにしても良い。前者の全ての位置に埋め込む方法であれば、処理速度を向上でき、後者の一か所だけ関数として埋め込む方法だと、メモリを節約できる。
When the number of times of passage through the embedding position table is plural, the embedding
The
次に、埋め込み位置決定部2060は、現在読み込んだ分岐先ラベルが埋め込み位置テーブルの終端であるかを確認する(S309)。
埋め込み位置テーブルの終端でなかった場合(S309:NO)、埋め込み位置決定部2060は、埋め込み位置テーブルの分岐先ラベルの読み込みを再度実行し(S303)、次の1行を読み込む。
Next, the embedding
If it is not the end of the embedding position table (S309: NO), the embedding
埋め込み位置テーブルの終端であった場合(S309:YES)、埋め込み位置決定部2060は、オブジェクトコード変換部203を呼び出す。
オブジェクトコード変換部203とバイナリ変換部204の動作内容(S106、S107)は実施の形態1と同様である。
If it is the end of the embedding position table (S309: YES), the embedding
The operation contents (S106, S107) of the object
次に、図21を用いて、周期処理埋め込みバイナリ28に挿入された通過回数計測コード270の動作について説明する。なお、周期処理埋め込みバイナリ28は、実行用装置30上のROM2またはRAM3上に記憶され、実行用装置30上のCPU1により実行される。
Next, the operation of the
通過回数計測コード270は、分岐先ラベルの通過回数をカウントしながら周期処理を実行するべきか判定する。
まず、通過回数計測コード270は、分岐先ラベルの通過回数に1を加算する(S210)。なお、通過回数計測コード270は、各分岐先ラベル毎の通過回数をカウントするためのテーブルなどを保持していることを前提とする。
The passage
First, the pass
次に、通過回数計測コード270は、加算した通過回数が埋め込み位置テーブルに記録された周期処理を行う通過回数であるかを判定する(S203)。
周期処理を行う通過回数と一致した場合(S203:YES)、通過回数計測コード270は、周期処理コード221を呼び出し(S203)、終了する。
一方、周期処理を行う通過回数と一致しなかった場合(S203:NO)、通過回数計測コード270は何もせず終了する。
Next, the passage
When the number of passes that matches the periodic processing (S203: YES), the passage
On the other hand, when it does not coincide with the number of times of passing the periodic process (S203: NO), the number of times of passing
次に、図22を用いて、第2の周期処理埋め込み部206における埋め込み位置決定部2060が、経過ログ26を参照し埋め込み位置テーブルを作成する動作フロー(図19:S302の詳細)について説明する。
Next, an operation flow in which the embedding
まず、埋め込み位置決定部2060は、実行用装置30から受け取った経過時間ログ26を先頭から1行ずつ読み込み(S310)、読み込んだ分岐先ラベルの通過回数に1を加算する(S311)。なお、埋め込み位置決定部2060は、各分岐先ラベル毎の通過回数をカウントするためのテーブルなどを保持していることを前提とする。
First, the embedding
次に、埋め込み位置決定部2060は、経過時間ログ26に記録されているタイマの値を読み込み、周期処理コード221が前回実行された時間との差分を計算する(S312)。なお、本実施の形態では、前回実行時の初期値は0に設定する。
Next, the embedding
次に、埋め込み位置決定部2060は、S312にて算出した差分が周期時間未満であるかを判定する(S313)。
判定した結果、周期時間以上であった場合(S313:YES)、埋め込み位置決定部2060は経過時間ログに記録されている内容を一時バッファに記憶し(S314)、経過時間ログの終端であるか判定する(S317)。
Next, the embedding
As a result of the determination, if it is not less than the cycle time (S313: YES), the embedding
一方、判定した結果が周期時間未満であった場合(S313:YES)、埋め込み位置決定部2060は一時バッファに記録されているファイル名、分岐先ラベル、および該当する分岐先ラベルの通過回数を埋め込み位置テーブルに記録し(S315)、経過時間ログから読み込んだ現在のタイマの値を前回実行時の値として記録(更新)する(S316)。
On the other hand, if the determined result is less than the cycle time (S313: YES), the embedding
最後に、埋め込み位置決定部2060は、読み込んだ行が経過時間ログ26の終端であるかを判定する(S317)。
判定の結果、経過時間ログの終端ではない場合(S317:NO)、埋め込み位置決定部2060は、経過時間ログの1行読み込み(S310)を再度実行し、次の1行を読み込む。
一方、判定の結果、経過時間ログの終端であった場合(S317:YES)、埋め込み位置決定部2060は何もせず終了する。
Finally, the embedding
As a result of the determination, if it is not the end of the elapsed time log (S317: NO), the embedding
On the other hand, as a result of the determination, if it is the end of the elapsed time log (S317: YES), the embedded
以上のように、メインプログラムのソースコード21を変換したアセンブリコードの中から分岐先ラベルを探索する分岐先ラベル探索部2020と、埋め込み用時間計測処理コード24をアセンブリコードへ埋め込む処理を行う第1の周期処理埋め込み部205と、事前に出力したメインプログラムの経過時間ログ26を参照して、周期処理コード221を周期時間内に実行するうえで、最低限必要な埋め込み位置を決定し、アセンブリコードへ埋め込む処理を行う第2の周期処理埋め込み部206とを備えることにより、タイマ割り込みを利用せずとも周期処理を実行するバイナリ(周期処理埋め込みバイナリ28)を生成することが可能となる。
As described above, the branch destination
また、周期処理を埋め込む前に実行用装置30で動作可能な測定用周期処理埋め込みバイナリ25を生成しプログラムの実行時間を計測するため、実施の形態1のように全ての分岐先ラベル通過時に周期処理コード221を実行するべきか判定する必要がなくなる。
さらに、ループ処理のような複数回通過する分岐先ラベルの場合であっても特定の回数通過時にのみ周期処理コード221を実行するため、過度に実行されることもなくなる。
In addition, since the measurement cycle process embedded binary 25 operable by the
Furthermore, even in the case of a branch destination label that passes a plurality of times such as a loop process, the
実施の形態3.
本実施の形態では、メインプログラムのソースコード21に対し、静的な解析を行うことによって、プログラムのおよその実行時間を算出し、周期時間に間に合うよう周期処理の実行命令を、メインプログラムのソースコード21に埋め込む場合について説明する。
In the present embodiment, static analysis is performed on the
図23は、本実施の形態におけるシステム構成図の一例である。実施の形態1と同様に、本実施の形態におけるシステムでは、開発用装置10、プログラム埋め込み装置20、実行用装置30で構成される。
また、実施の形態1と同様に、本実施の形態におけるシステムでは、開発用装置10からプログラム埋め込み装置20に対し、メインプログラムのソースコード21および埋め込み用周期処理コード22が渡され、プログラム埋め込み装置20から実行用装置30に対し、周期処理埋め込みバイナリ40が渡される。
FIG. 23 is an example of a system configuration diagram in the present embodiment. Similar to the first embodiment, the system according to the present embodiment includes a
Similarly to the first embodiment, in the system according to the present embodiment, the
本実施の形態では、実施の形態1と違い、プログラム埋め込み装置20が命令実行クロック数一覧29の参照を行っている。
なお、本実施の形態では、プログラム埋め込み装置20が直接命令実行クロック数一覧29を参照するような構成としたが、開発用装置10が命令実行クロック数一覧29を管理し、開発用装置10からプログラム埋め込み装置20へ渡すようにしてもよい。
In the present embodiment, unlike the first embodiment, the
In this embodiment, the
図24は、本実施の形態におけるプログラム埋め込み装置20上で動作するソフトウェアの全体構成図である。これらのソフトウェアは、プログラム埋め込み装置20のROM2またはRAM3上に記憶され、CPU1により実行される。
FIG. 24 is an overall configuration diagram of software operating on the
図24において、命令実行クロック数一覧29は、命令の実行に必要なクロック数が記述されたものである。図25に命令実行クロック数一覧29の一例を示す。
本実施の形態における周期処理埋め込み部207は、命令実行時間算出部(分岐先探索部)2070と、プログラム埋め込み部2021を備えている。
In FIG. 24, the instruction execution
The periodic
命令実行時間算出部2070は、アセンブリコード変換部201から渡されたアセンブリコードの中から命令を抽出し、命令実行クロック数一覧29を参照し、命令実行時間の算出を行う。
プログラム埋め込み部2021は、埋め込み用周期処理コードをアセンブリコードへ埋め込む処理を行う。
The instruction execution
The
なお、図24において、図3と同一の符号は、同一または相当する部分を表しており、命令実行時間算出部2070および命令実行クロック数一覧29以外については、実施の形態1で用いた図3で記載したものと同じ動作をする。
In FIG. 24, the same reference numerals as those in FIG. 3 represent the same or corresponding parts, and those other than the instruction execution
次に図26を用いて、本実施の形態におけるプログラム埋め込み装置20の動作について説明する。
Next, the operation of the
まず、アセンブリコード変換部201が、開発用装置10から受け取ったメインプログラムのソースコード21をアセンブリコードに変換する(S101)。
アセンブリコード変換部201は、変換したアセンブリコードを周期処理埋め込み部207に渡す。
First, the assembly
The assembly
アセンブリコード変換部201からアセンブリコードを受け取った命令実行時間算出部2070は、経過時間の初期化を行う(S501)。
次に命令実行時間算出部2070は、アセンブリコードの先頭から1行ずつ読み込み(S102)、ループ命令または関数呼び出し命令が記述されているかを判定する(S502)。
The instruction execution
Next, the instruction execution
ループ命令または関数呼び出し命令ではなかった場合(S502:NO)、命令実行時間算出部2070は、命令実行クロック数一覧29を参照し、その命令を実行するのに必要なクロック数を獲得し、実行用装置30で用いられているCPU1のクロック周波数の逆数と掛け合わせることによって実行時間を算出する(S503)。
例えば、実行用装置30で用いられているCPU1のクロック周波数が1GHzであり、読み込んだ命令が「add(命令クロック数は4)」であった場合、実行時間は4ナノ秒となる。
When the instruction is not a loop instruction or a function call instruction (S502: NO), the instruction execution
For example, when the clock frequency of the
命令実行時間算出部2070は、算出した実行時間を経過時間に加算し(S504)、周期時間の8割以上であるかを判定する(S505)。なお、実施の形態1の場合と同様、本実施の形態では、周期処理を周期時間内に確実に実行することを目的としているため、周期処理の実行条件を周期時間の8割経過時と定義としたが、周期時間を越えなければ特に8割以外であってもよい。
The instruction execution
経過時間が周期時間の8割以上であった場合(S505:YES)命令実行時間算出部2070は、プログラム埋め込み部2021を呼び出す。
プログラム埋め込み部2021は、周期処理コード221を呼び出す命令を埋め込む(S506)。
その後、命令実行時間算出部2070は、経過時間を初期化する(S507)。
次に命令実行時間算出部2070は、現在読み込んだ1行が、アセンブリコードの終端であるかを確認する(S105)。
When the elapsed time is 80% or more of the cycle time (S505: YES), the instruction execution
The
Thereafter, the instruction execution
Next, the instruction execution
一方、経過時間が周期時間の8割以上では無かった場合(S505:NO)命令実行時間算出部2070は、現在読み込んだ1行が、アセンブリコードの終端であるかを確認する(S105)。
アセンブリコードの終端であった場合(S105:YES)、命令実行算出部2070は、オブジェクトコード変換部203を呼び出す。
On the other hand, when the elapsed time is not 80% or more of the cycle time (S505: NO), the instruction execution
If it is the end of the assembly code (S105: YES), the instruction
次にオブジェクトコード変換部203は、周期処理埋め込み部207が出力した埋め込み完了後アセンブリコードを、バイナリ形式であるオブジェクトコードに変換する(S107)。なお、本実施の形態では、周期処理コード221を埋め込み完了後アセンブリコードの一部となるよう埋め込みを行ったが、埋め込み完了後アセンブリコードとは別のファイルとし、埋め込み完了後アセンブリコードとは別にオブジェクトコードに変換しても良い。
Next, the object
ループ命令または関数呼び出し命令であった場合(S502:YES)、命令実行時間算出部2070は、プログラム埋め込み部2021を呼び出す。
プログラム埋め込み部2021は、命令の実行直前と命令の実行直後に周期処理コード221を読みだす命令を埋め込む。その後、命令実行時間算出部2070は、経過時間を初期化する(S506)。
If the instruction is a loop instruction or a function call instruction (S502: YES), the instruction execution
The
なお、ループ命令によって繰り返し実行される回数および、呼び出される関数の内部処理はプログラムが実行される条件によって変化するため、実行時間の算出が困難である。
このため、本実施の形態では、ループ命令によって繰り返し実行される周期時間内にループ命令または関数呼び出し命令による処理が終了することを前提とする。
Note that the number of times the loop instruction is repeatedly executed and the internal processing of the function to be called vary depending on the conditions under which the program is executed, so that it is difficult to calculate the execution time.
For this reason, in this embodiment, it is assumed that the processing by the loop instruction or the function call instruction is completed within the cycle time repeatedly executed by the loop instruction.
以上のように、アセンブリの命令種別に基づいて実行時間を算出し、周期処理を埋め込む位置を決定する命令実行時間算出部2070を備えることにより、経過時間計測処理コードを使用せずに周期処理埋め込みバイナリ40を生成することが可能となる。
これにより、実行用装置30にタイマ5が存在しないもしくは使用が制限されており利用できない場合においても、周期時間内に周期処理を実行することが可能となる。
As described above, the execution time is calculated based on the instruction type of the assembly and the instruction execution
As a result, even when the
1 CPU、2 ROM、3 RAM、4 通信モジュール、5 タイマ、10 開発用装置、20 プログラム埋め込み装置、21 メインプログラムのソースコード、22 埋め込み用周期処理コード、23 周期処理埋め込みバイナリ、24 埋め込み用時間計測処理コード、25 測定用周期処理埋め込みバイナリ、26 経過時間ログ、27 埋め込み用周期処理コード、28 周期処理埋め込みバイナリ、30 実行用装置、40 周期処理埋め込みバイナリ、201 アセンブリコード変換部、202 周期処理埋め込み部、203 オブジェクトコード変換部、204 バイナリ変換部、205 第1の周期処理埋め込み部、206 第2の周期処理埋め込み部、207 周期処理埋め込み部、220 経過時間計測処理コード、221 周期処理コード、270 通過回数計測コード、2020 分岐先ラベル探索部、2021 プログラム埋め込み部、2050 プログラム埋め込み部、2060 埋め込み位置決定部、2070 命令実行時間算出部。 1 CPU, 2 ROM, 3 RAM, 4 communication module, 5 timer, 10 development device, 20 program embedding device, 21 source program source code, 22 periodic processing code for embedding, 23 periodic processing embedding binary, 24 embedding time Measurement processing code, 25 measurement periodic processing embedded binary, 26 elapsed time log, 27 embedded periodic processing code, 28 periodic processing embedded binary, 30 execution device, 40 periodic processing embedded binary, 201 assembly code conversion unit, 202 periodic processing Embedding unit, 203 Object code conversion unit, 204 Binary conversion unit, 205 First periodic processing embedding unit, 206 Second periodic processing embedding unit, 207 Periodic processing embedding unit, 220 Elapsed time measurement processing code, 221 cycles Processing code, 270 passage count measurement code, 2020 branch destination label search unit, 2021 program embedding unit, 2050 program embedding unit, 2060 embedding position determination unit, 2070 instruction execution time calculation unit.
Claims (4)
前記分岐先に対し、前記周期処理と前記周期処理の実行を前記周期処理が前回実行されてからの経過時間で判定する判定処理を埋め込む第1のプログラム埋め込み部と、
を備えることを特徴とするプログラム埋め込み装置。 A branch destination search unit for searching for a branch destination for embedding a periodic process to be repeatedly executed at regular intervals from the program source converted into assembly code;
A first program embedding unit that embeds a determination process for determining the execution of the periodic process and the periodic process based on an elapsed time from the previous execution of the periodic process for the branch destination;
A program embedding device comprising:
前記分岐先に対し、前記周期処理の実行を前記第1の周期処理埋め込み部が出力したプログラムを実行した結果得られる経過時間ログを参照し、前記周期処理を埋め込む位置を決定する位置決定部、前記位置決定部が決定した前記分岐先に、前記周期処理を埋め込む前記第1のプログラム埋め込み部、を有する第2の周期処理埋め込み部と、
を備えることを特徴とする請求項1または2に記載のプログラム埋め込み装置。 A first periodic processing embedding unit including a branch program searching unit, a second program embedding unit that embeds a process of measuring time and outputting an elapsed time to a log for the branch destination searched by the branch destination searching unit; ,
A position determination unit that refers to an elapsed time log obtained as a result of executing the program output by the first periodic processing embedding unit with respect to the branch destination, and determines a position where the periodic processing is embedded, A second periodic processing embedding unit having the first program embedding unit for embedding the periodic processing at the branch destination determined by the position determination unit;
The program embedding device according to claim 1, further comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014182980A JP6287709B2 (en) | 2014-09-09 | 2014-09-09 | Program embedding device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014182980A JP6287709B2 (en) | 2014-09-09 | 2014-09-09 | Program embedding device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016057798A true JP2016057798A (en) | 2016-04-21 |
JP6287709B2 JP6287709B2 (en) | 2018-03-07 |
Family
ID=55758582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014182980A Expired - Fee Related JP6287709B2 (en) | 2014-09-09 | 2014-09-09 | Program embedding device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6287709B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210062438A (en) * | 2019-11-21 | 2021-05-31 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120026A (en) * | 1991-10-24 | 1993-05-18 | Nec Corp | Language processing program generation device |
JP2009238051A (en) * | 2008-03-28 | 2009-10-15 | Hitachi Ltd | Program conversion device and program conversion method |
JP2010134494A (en) * | 2008-12-02 | 2010-06-17 | Hitachi Ltd | Program conversion device, conversion method, program control method and program |
-
2014
- 2014-09-09 JP JP2014182980A patent/JP6287709B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120026A (en) * | 1991-10-24 | 1993-05-18 | Nec Corp | Language processing program generation device |
JP2009238051A (en) * | 2008-03-28 | 2009-10-15 | Hitachi Ltd | Program conversion device and program conversion method |
JP2010134494A (en) * | 2008-12-02 | 2010-06-17 | Hitachi Ltd | Program conversion device, conversion method, program control method and program |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210062438A (en) * | 2019-11-21 | 2021-05-31 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
KR102319403B1 (en) | 2019-11-21 | 2021-10-29 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP6287709B2 (en) | 2018-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101957773B (en) | method and system for multiple purpose dynamic analysis | |
CN109783161B (en) | Method and device for determining running information of application program in iOS system | |
US9355003B2 (en) | Capturing trace information using annotated trace output | |
US8578355B1 (en) | Scenario based optimization | |
EP2673703A1 (en) | Controlling the execution of adjacent instructions that are dependent upon a same data condition | |
US10466988B2 (en) | Systems and methods for automatic computer code parallelization | |
KR20110070468A (en) | Apparatus for executing instrumentation and method thereof | |
US10089088B2 (en) | Computer that performs compiling, compiler program, and link program | |
JP6287709B2 (en) | Program embedding device | |
US8904412B2 (en) | Dynamic performance data collection in large computer servers | |
CN103838662A (en) | Dynamic library profiling method and dynamic library profiling system | |
CN112740187A (en) | Method and system for debugging program | |
CN107769987B (en) | Message forwarding performance evaluation method and device | |
US8677335B1 (en) | Performing on-stack replacement for outermost loops | |
JP2008250838A (en) | Software generation device, method and program | |
US20180276106A1 (en) | Trace data representation | |
US7774763B1 (en) | Techniques for forming a multi-tasking executable program and using the same | |
JP2010140233A (en) | Emulation system and emulation method | |
KR20140089044A (en) | Method of detecting software similarity using feature information of executable files and apparatus therefor | |
CN110516445A (en) | Recognition methods, device and the storage medium of reverse-examination survey malicious code | |
US11144238B1 (en) | Background processing during remote memory access | |
JP2007323299A (en) | Apparatus and program for determining review execution order, recording medium with the program stored, and method for determining review execution order | |
US8839207B2 (en) | Debugging extensible markup language | |
JP2014002443A (en) | Use amount calculation device, computer program and use amount calculation method | |
EP3547141B1 (en) | Information processing apparatus, information processing method, and information processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161227 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171005 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171010 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171117 |
|
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: 20180109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180122 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6287709 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |