JP6332091B2 - Electronic control unit - Google Patents
Electronic control unit Download PDFInfo
- Publication number
- JP6332091B2 JP6332091B2 JP2015054839A JP2015054839A JP6332091B2 JP 6332091 B2 JP6332091 B2 JP 6332091B2 JP 2015054839 A JP2015054839 A JP 2015054839A JP 2015054839 A JP2015054839 A JP 2015054839A JP 6332091 B2 JP6332091 B2 JP 6332091B2
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- electronic control
- interrupt
- initialization
- variable
- 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
Links
- 238000004364 calculation method Methods 0.000 claims description 75
- 238000000034 method Methods 0.000 description 154
- 230000008569 process Effects 0.000 description 152
- 101000584535 Corynebacterium glutamicum (strain ATCC 13032 / DSM 20300 / BCRC 11384 / JCM 1318 / LMG 3730 / NCIMB 10025) HTH-type transcriptional regulator RamB Proteins 0.000 description 17
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 230000000052 comparative effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000001994 activation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Description
本発明は、演算を実行する電子制御装置に関する。 The present invention relates to an electronic control device that executes arithmetic operations.
一般に、電子制御装置(ECU:Electronic Control Unit)は、CPUやメモリの他、A/Dコンバータ、タイマ、PWM波形発生回路などの周辺(ペリフェラル)回路を備えたマイクロコンピュータにより、制御対象を制御するための各種の演算を行う。最近では、マイクロコンピュータは、浮動小数点演算プロセッサ(FPU:Floating-Point Unit)を備えることが一般的になっている。FPUを備えることによって、浮動小数点型データによる演算が可能となり、固定小数点型データに比べて細かい精度で演算結果を得られるからである。このような浮動小数点型データでは、数値として表現できない演算結果を非数として表現するようになっている。浮動小数点型データによる演算では、非数が発生すると、この非数を用いた演算結果は全て非数となってしまう。このため、非数が発生した場合には、非数を正常値に書き換える必要がある。 In general, an electronic control unit (ECU) controls an object to be controlled by a microcomputer including peripheral circuits such as an A / D converter, a timer, and a PWM waveform generation circuit in addition to a CPU and a memory. Various operations are performed. Recently, it has become common for a microcomputer to include a floating-point arithmetic processor (FPU). This is because by providing the FPU, it is possible to perform an operation using floating point type data, and an operation result can be obtained with a finer precision than the fixed point type data. In such floating point type data, an operation result that cannot be expressed as a numerical value is expressed as a non-number. In a calculation using floating point type data, when a non-number occurs, all the calculation results using the non-number become non-number. For this reason, when a non-number occurs, it is necessary to rewrite the non-number to a normal value.
特許文献1では、非数が発生したことが検出されたときにRAMにおける非数が発生した領域を初期化する技術が記載されている。 Patent Document 1 describes a technique for initializing a region where a non-number has occurred in a RAM when it is detected that the non-number has occurred.
ところで、前述のようなマイクロコンピュータが備えるCPUは、多くの場合、割り込みに対応可能である。割り込みには、ペリフェラルからの要求に基づくハードウェア割り込みと、CPU自身の命令実行に基づくソフトウェア割り込みとがある。CPUは、いずれの割り込みにおいても、割り込みが生じると、現在実行中の処理を中断し、その処理を再開するのに必要な処理情報を、RAM等の外部の記憶媒体に退避(スタック)させる。処理情報とは、具体的にはプログラムカウンタの内容やフラグ等の処理状態を表す情報である。CPUは、割込処理を実行し、この割込処理が完了した後、退避しておいた処理情報を外部の記憶媒体から読み出し、その情報に基づき、先に中断した処理を再開する。 By the way, the CPU provided in the microcomputer as described above can cope with an interrupt in many cases. Interrupts include hardware interrupts based on requests from peripherals and software interrupts based on CPU instruction execution. In any interrupt, when an interrupt occurs, the CPU suspends processing currently being executed and saves (stacks) processing information necessary for restarting the processing in an external storage medium such as a RAM. Specifically, the processing information is information representing the processing state such as the contents of the program counter and flags. The CPU executes an interrupt process. After the interrupt process is completed, the CPU reads the saved process information from the external storage medium, and resumes the previously interrupted process based on the information.
しかしながら、割込処理における演算において非数が発生した場合、特許文献1に記載のようにRAMにおける非数が発生した領域を初期化したとしても、割り込み終了後に再開された処理において、初期化された領域を書き換えるような演算が実行されることが有り得る。例えば、割込終了後に、処理情報として退避させておいた情報に基づいて、初期化された領域を上書きする演算が実行されるような場合、等である。ここで一例として、該領域の記録内容を用いて制御対象への制御が行われるような場合について考える。この制御は、仮に該領域に非数が発生したときには、該領域の値が所定の初期化値であることを前提にして行われるものとする。このような場合、該領域が初期化されるべき値である初期化値とは異なる想定外の値に書き換えられていると、制御対象への制御に想定外の影響を及ぼすおそれがある。このため、割込処理における演算結果において非数のような、演算における予め定められたエラーが発生した場合には、演算結果を予め定められた初期化値に確実に初期化することが望ましい。 However, if a non-number occurs in the operation in the interrupt process, even if the area where the non-number occurs in the RAM is initialized as described in Patent Document 1, it is initialized in the process resumed after the end of the interrupt. An operation that rewrites the area may be executed. For example, when an operation for overwriting the initialized area is executed based on the information saved as the processing information after the interruption is completed. Here, as an example, consider a case where control of a control target is performed using the recorded contents of the area. This control is performed on the assumption that the value of the area is a predetermined initialization value if a non-number occurs in the area. In such a case, if the area is rewritten to an unexpected value different from the initialization value that is a value to be initialized, there is a risk of unexpectedly affecting the control of the control target. For this reason, when a predetermined error in the operation such as a non-number occurs in the operation result in the interrupt processing, it is desirable to reliably initialize the operation result to a predetermined initialization value.
本発明は、演算結果においてエラーが発生した場合に、より確実に、予め定められた初期化値に演算結果を初期化する技術を提供することを目的としている。 An object of the present invention is to provide a technique for more reliably initializing a calculation result to a predetermined initialization value when an error occurs in the calculation result.
本発明の一側面は、前述のようなマイクロコンピュータであって、各演算に付された優先順位に従って複数の演算を順次実行する。マイクロコンピュータは、順序変更手段と、判断手段と、初期化手段とを備える。順序変更手段は、実行中の演算よりも優先順位が高い演算についての割込要求が入力されると、実行中の演算である割込前演算を中断させ、割込要求に対応する演算の実行が終了した後に割込前演算が再開されるように演算順序を変更する。判断手段は、各演算の演算結果において、予め定められたエラーが発生したか否かを判断する。初期化手段は、判断手段によってエラーが発生したと判断された場合、エラーが発生したときに中断されていた全ての割込前演算が終了した後に、記録部における少なくともエラーとなった演算結果が記録される領域に、予め定められた初期化値を代入する初期化を行う。 One aspect of the present invention is a microcomputer as described above, which sequentially executes a plurality of operations in accordance with the priority assigned to each operation. The microcomputer includes order changing means, determination means, and initialization means. When an interrupt request for an operation having a higher priority than the operation being executed is input, the order changing means interrupts the operation before the interrupt that is being executed and executes the operation corresponding to the interrupt request. The operation order is changed so that the pre-interrupt operation is resumed after the operation ends. The determination means determines whether or not a predetermined error has occurred in the calculation result of each calculation. If it is determined by the determination means that an error has occurred, the initialization means has completed at least the calculation result that caused the error in the recording unit after completion of all the pre-interrupt calculations that were interrupted when the error occurred. Initialization is performed by assigning a predetermined initialization value to the area to be recorded.
このような構成では、演算において予め定められたエラーが発生した場合、中断されていた全ての割込前演算が終了した後に、少なくともエラーとなった演算結果の記録される領域の値が所定の初期化値に初期化される。これによれば、割込要求により中断された割込前演算は全て終了しているため、初期化された領域がこのような割込前演算の再開によって初期化されるべき値である初期化値とは異なる値に書き換えられることが抑制される。このため、エラーとなった演算結果が記録されている領域を、確実に、予め定められた初期化値に初期化することができる。 In such a configuration, when a predetermined error occurs in the calculation, after all of the interrupted pre-interrupt calculations are completed, at least the value of the area where the calculation result in which the error has occurred is a predetermined value. Initialized to the initialization value. According to this, since all the pre-interrupt operations interrupted by the interrupt request have been completed, the initialized area is a value that should be initialized by resuming such pre-interrupt operations. Rewriting to a value different from the value is suppressed. For this reason, it is possible to reliably initialize the area where the calculation result in error is recorded to a predetermined initialization value.
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。 In addition, the code | symbol in the parenthesis described in the claim shows the correspondence with the specific means as described in embodiment mentioned later as one aspect, Comprising: The technical scope of this invention is limited is not.
以下、本発明が適用された実施形態について、図面を用いて説明する。
[1.構成]
図1は、本発明が適用された電子制御装置1の構成を示す図である。電子制御装置1は、CPU10と、ROM20と、RAM30と、FPU40と、割込コントローラ50と、周辺回路60とからなるマイクロコンピュータ2を備える。
Embodiments to which the present invention is applied will be described below with reference to the drawings.
[1. Constitution]
FIG. 1 is a diagram showing a configuration of an electronic control device 1 to which the present invention is applied. The electronic control device 1 includes a microcomputer 2 including a CPU 10, a ROM 20, a RAM 30, an FPU 40, an interrupt controller 50, and a peripheral circuit 60.
CPU10は、予め定められた演算順序に従って予め定められたプログラムを実行する周知のものであり、割り込みに対応可能である。CPU10については後述する。
ROM20には、CPU10によって実行されるプログラム(処理)が記録されている。また、ROM20には、CPU10が実行するこれらのプログラムの優先順位を定めた優先順位テーブルが記録されている。一例として図2に示す優先順位テーブルは、初期化処理、第1タスク処理〜第3タスク処理を実行するプログラムの優先順位を表す。ここでは、初期化処理を実行するプログラムの優先順位が最下位に設定され、第1タスク処理、第2タスク処理、第3タスク処理の順に優先順位が高くなるように設定される。
The CPU 10 is a well-known CPU that executes a predetermined program in accordance with a predetermined calculation order, and can cope with an interrupt. The CPU 10 will be described later.
The ROM 20 stores a program (process) executed by the CPU 10. The ROM 20 stores a priority table that defines the priority of these programs executed by the CPU 10. As an example, the priority order table shown in FIG. 2 represents the priority order of programs that execute the initialization process, the first task process to the third task process. Here, the priority order of the program that executes the initialization process is set to the lowest order, and the priority order is set to increase in the order of the first task process, the second task process, and the third task process.
RAM30には、CPU10による演算結果等が記録される。RAM30は、一例として図3に示すように、予め定められた変数の演算結果を記録するデータ記録領域301と、スタック領域302とを備える。データ記録領域301には、浮動小数点型データの格納領域が確保される。ここでは、一例として、変数RamA、変数RamBが浮動小数点型データとして記録される。 In the RAM 30, the calculation result by the CPU 10 is recorded. As an example, the RAM 30 includes a data recording area 301 for recording a calculation result of a predetermined variable and a stack area 302 as shown in FIG. In the data recording area 301, a storage area for floating point type data is secured. Here, as an example, the variable RamA and the variable RamB are recorded as floating point type data.
FPU40は、プログラムに基づく演算のうち、浮動小数点演算を実行する。浮動小数点演算は浮動小数点型データを用いた演算であり、演算結果の浮動小数点型データは、前述のRAM30のデータ記録領域301(浮動小数点型データの格納領域)に記録される。FPU40は、例えば、IEEE754規格に従ったデータ形式で、浮動小数点型データを表す。 The FPU 40 executes floating point arithmetic among arithmetic operations based on the program. The floating point calculation is an operation using floating point type data, and the floating point type data of the calculation result is recorded in the data recording area 301 (floating point type data storage area) of the RAM 30 described above. The FPU 40 represents floating point type data, for example, in a data format according to the IEEE754 standard.
つまり、IEEE754規格に従う単精度の浮動小数点型データは、図4(a)に示すように、1ビットの符号部、8ビットの指数部、23ビットの仮数部で構成される。この規格の浮動小数点データでは、例えば、数値として表現できない演算結果を、「非数」として表現できるようになっている。0で除する演算や、∞(無限大)を用いた演算等の演算結果が、数値として表現できない演算結果の一例として挙げられる。例えばこの規格では、図4(b)に示すように、指数部の8ビットが全て「1」で、すなわち指数部が10進表記の「255」で、仮数部が「0」以外の場合、この浮動小数点型データは「非数」を表す。また、前述の規格では、指数部の8ビットが全て「1」で仮数部が「0」の場合、この浮動小数点型データは「無限大」を表す。なお、以下では、0で除する演算や、無限大を用いた演算のような、数値として表現できない演算結果となる演算を、無効な演算という。 That is, single-precision floating-point data conforming to the IEEE 754 standard includes a 1-bit sign part, an 8-bit exponent part, and a 23-bit mantissa part, as shown in FIG. In the floating-point data of this standard, for example, an operation result that cannot be expressed as a numerical value can be expressed as “not a number”. An operation result such as an operation that divides by 0 or an operation that uses ∞ (infinity) is an example of an operation result that cannot be expressed as a numerical value. For example, in this standard, as shown in FIG. 4B, when the 8 bits of the exponent part are all “1”, that is, when the exponent part is “255” in decimal notation and the mantissa part is other than “0”, This floating point type data represents “not a number”. In the above-mentioned standard, when all 8 bits of the exponent part are “1” and the mantissa part is “0”, this floating-point type data represents “infinity”. In the following, an operation that results in an operation result that cannot be expressed as a numerical value, such as an operation that divides by 0 or an operation that uses infinity, is referred to as an invalid operation.
CPU10は、プログラムに基づく演算のうち、固定小数点演算を実行し、浮動小数点演算をFPU40に実行させる。CPU10は前述のように割込に対応可能である。なお、割込には、周辺回路60(割込コントローラ50)からの要求に基づくハードウェア割込と、CPU10自身の命令実行に基づくソフトウェア割込とがある。本実施形態では、CPU10がハードウェア割込に対応する場合について説明する。もちろん、CPU10は、ソフトウェア割込に対応するものであってもよいし、これらの両方に対応するものであってもよい。 The CPU 10 executes fixed-point arithmetic among arithmetic operations based on the program, and causes the FPU 40 to execute floating-point arithmetic. As described above, the CPU 10 can cope with interrupts. Note that the interrupt includes a hardware interrupt based on a request from the peripheral circuit 60 (interrupt controller 50) and a software interrupt based on instruction execution of the CPU 10 itself. In the present embodiment, a case where the CPU 10 supports hardware interruption will be described. Of course, the CPU 10 may correspond to a software interrupt, or may correspond to both of them.
CPU10は、プログラムに基づいて、少なくとも、フラグ処理、割込時CPU処理、優先順位出力処理、第1タスク処理〜第3タスク処理、初期化処理を実行する。第1タスク処理〜第3タスク処理、初期化処理については後述する。 Based on the program, the CPU 10 executes at least flag processing, interrupt CPU processing, priority output processing, first task processing to third task processing, and initialization processing. The first task process to the third task process and the initialization process will be described later.
フラグ処理は、FPU40による浮動小数点演算の演算結果において予め定められたエラーが発生した場合に、エラーフラグをセットする処理である。フラグ処理では、CPU10は、FPU40による演算結果が非数を表す場合(演算結果が非数となった場合、FPU40にて無効な演算が行われた場合を含む)、及びFPU40による演算結果が±∞を表す場合に、エラーフラグをセットする。なお、CPU10は、エラーフラグがセットされたときのPCの内容をエラープログラム特定情報としてRAM30に記録するようになっている。エラーフラグは、プログラムごとにプログラム開始時にリセットされる。 The flag process is a process of setting an error flag when a predetermined error occurs in the calculation result of the floating point calculation by the FPU 40. In the flag processing, the CPU 10 determines that the calculation result by the FPU 40 represents a non-number (including a case where an invalid calculation is performed in the FPU 40 when the calculation result is a non-number), and that the calculation result by the FPU 40 is ± Set the error flag to indicate ∞. The CPU 10 records the contents of the PC when the error flag is set in the RAM 30 as error program specifying information. The error flag is reset at the start of the program for each program.
割込時CPU処理は、割り込みが発生したときにCPU10が実行する処理である。一例を簡単に説明する。割込時CPU処理では、割り込みが発生すると、具体的にはCPU割込要求信号が入力されると、CPU10は、現在実行中の処理を中断し、その処理を再開するのに必要な処理情報を、RAM30のスタック領域302に退避(スタック)させる。本実施形態では、CPU割込要求信号は割込コントローラ50から出力される。処理情報は、PCの内容やフラグ等の処理状態を表す情報である。なお、本実施形態では、中断されたプログラム中で用いられていた所謂ローカル変数の内容を表す情報も処理情報に含むものとする。CPU10は、CPU割込要求信号が入力されたときに取得した割込情報に基づいて、実行すべき割込処理を特定する。本実施形態では、割込情報は割込コントローラ50から出力される。CPU10は、特定した割込処理を実行し、この割込処理が完了した後、退避しておいた情報をRAM30のスタック領域302から読み出し、その情報に基づき、先に中断した処理を再開する。なお、以下では、処理情報をスタック領域302に退避させる処理を退避処理といい、退避しておいた情報をスタック領域302から読み出す処理を復帰処理という。 The interrupt CPU process is a process executed by the CPU 10 when an interrupt occurs. An example will be briefly described. In the interrupt CPU process, when an interrupt occurs, specifically, when a CPU interrupt request signal is input, the CPU 10 interrupts the currently executing process and processes information required to restart the process. Are saved (stacked) in the stack area 302 of the RAM 30. In the present embodiment, the CPU interrupt request signal is output from the interrupt controller 50. The processing information is information representing the processing state such as the contents of the PC and flags. In the present embodiment, the processing information also includes information representing the contents of so-called local variables used in the interrupted program. The CPU 10 specifies an interrupt process to be executed based on the interrupt information acquired when the CPU interrupt request signal is input. In the present embodiment, the interrupt information is output from the interrupt controller 50. The CPU 10 executes the specified interrupt process. After the interrupt process is completed, the CPU 10 reads the saved information from the stack area 302 of the RAM 30 and restarts the previously interrupted process based on the information. In the following, processing for saving processing information to the stack area 302 is referred to as saving processing, and processing for reading the saved information from the stack area 302 is referred to as restoration processing.
優先順位出力処理は、CPU10にて現在実行中のプログラムの優先順位を、割込コントローラ50へ出力する処理である。具体的には、CPU10は、現在実行中のプログラムに対応する優先順位をROM20に記録された優先順位テーブルに基づいて特定し、特定した優先順位を割込コントローラ50へ出力する。 The priority order output process is a process for outputting the priority order of the program currently being executed by the CPU 10 to the interrupt controller 50. Specifically, the CPU 10 specifies the priority order corresponding to the currently executing program based on the priority order table recorded in the ROM 20, and outputs the specified priority order to the interrupt controller 50.
割込コントローラ50は、CPU10において実行中のプログラムよりも優先順位が高いプログラムについての割込要求が入力されると、割込要求が入力されたときに実行されていたプログラム(割込前プログラムという)をCPU10に中断させる。そして、割込コントローラ50は、割込要求に対応するプログラムによる割込処理の実行が終了した後に割込前プログラムが再開されるように、CPU10におけるプログラムの実行順序(演算順序)を変更する。 When an interrupt request for a program having a higher priority than the program being executed in the CPU 10 is input, the interrupt controller 50 is called a program that is being executed when the interrupt request is input (referred to as a pre-interrupt program). ) Is interrupted by the CPU 10. Then, the interrupt controller 50 changes the program execution order (calculation order) in the CPU 10 so that the pre-interrupt program is resumed after the execution of the interrupt process by the program corresponding to the interrupt request is completed.
具体的には、割込要求は、周辺回路60にて発生し、該周辺回路60から割込コントローラ50へ入力される。CPU10において実行中のプログラムの優先順位は、CPU10から割込コントローラ50へ入力される。割込コントローラ50は、ROM20に記録されている優先順位テーブルと同様の優先順位テーブルに基づき、割込要求に対応するプログラムとCPU10にて実行中のプログラムとの優先順位を比較する。割込コントローラ50は、CPU10にて実行中の割込前プログラムを中断させる場合は、CPU割込要求をCPU10へ出力する。このとき、割込コントローラ50は、割込要求に対応するプログラムを特定可能な割込情報をCPU10へ出力する。 Specifically, the interrupt request is generated in the peripheral circuit 60 and input from the peripheral circuit 60 to the interrupt controller 50. The priority order of programs being executed in the CPU 10 is input from the CPU 10 to the interrupt controller 50. The interrupt controller 50 compares the priority order of the program corresponding to the interrupt request and the program being executed by the CPU 10 based on the priority order table similar to the priority order table recorded in the ROM 20. When interrupting the pre-interrupt program being executed by the CPU 10, the interrupt controller 50 outputs a CPU interrupt request to the CPU 10. At this time, the interrupt controller 50 outputs to the CPU 10 interrupt information that can specify a program corresponding to the interrupt request.
周辺回路60は、図示しないI/Oや各種レジスタ、A/Dコンバータ、タイマ、PWM波形発生回路などを備える。周辺回路60の構成要素は、所定の割込処理を行わせるための割込要求を、割込コントローラ50へ出力する。 The peripheral circuit 60 includes I / O and various registers (not shown), an A / D converter, a timer, a PWM waveform generation circuit, and the like. The components of the peripheral circuit 60 output an interrupt request for performing a predetermined interrupt process to the interrupt controller 50.
[2.処理]
次に、CPU10が、プログラムに基づいて実行する第1タスク処理〜第3タスク処理、及び初期化処理について説明する。第1タスク処理〜第3タスク処理は、いずれも浮動小数点演算を行う処理である。
[2. processing]
Next, the first task process to the third task process and the initialization process that the CPU 10 executes based on a program will be described. Each of the first task process to the third task process is a process for performing a floating point operation.
[2−1.第1タスク処理]
第1タスク処理は、電子制御装置1に電源が供給されている間、予め定められた周期で、繰り返し実行される処理であるものとする。第1タスク処理の一例を図5のフローチャートを用いて説明する。なお、以下の説明において主語が省略されている文においては、CPU10を主語とする。
[2-1. First task processing]
The first task process is a process that is repeatedly executed at a predetermined cycle while power is supplied to the electronic control unit 1. An example of the first task process will be described with reference to the flowchart of FIG. In the following description, the CPU 10 is the subject in a sentence in which the subject is omitted.
S110では、変数RamAの値を変数tpへ代入する。
次に、S120では、変数tpを6倍する演算(tp×6)を実行し、演算結果を変数tdに代入する。
In S110, the value of the variable RamA is assigned to the variable tp.
Next, in S120, a calculation (tp × 6) for multiplying the variable tp by six is executed, and the calculation result is substituted for the variable td.
続くS130では、S120の演算結果において、非数が発生したか否かを判断する。具体的には、演算エラーフラグがセットされている場合に、非数が発生したと判断する。演算結果において非数が発生しなかった場合は処理をS140へ移行させ、非数が発生した場合は処理をS150へ移行させる。 In subsequent S130, it is determined whether or not a non-number has occurred in the calculation result of S120. Specifically, when the calculation error flag is set, it is determined that a non-number has occurred. If a non-number has not occurred in the calculation result, the process proceeds to S140. If a non-number has occurred, the process proceeds to S150.
S140では、変数tpの値を変数RamBへ代入して、本第1タスク処理を終了する。
S150では、後述する初期化処理を起動し、起動した初期化処理の終了後に、本第1タスク処理を終了する。
In S140, the value of the variable tp is substituted into the variable RamB, and the first task process is terminated.
In S150, an initialization process to be described later is started, and after the started initialization process is finished, the first task process is finished.
つまり、一例として図5に示す第1タスク処理は、変数RamAの値を6倍する演算を行い、演算結果を変数RamBの値として記録する処理である。第1タスク処理は、上述の内容に限らず、浮動小数点演算を行う処理であればどのようなものであってもよい。なお、変数RamA、変数RamBは、第1タスク処理以外においても参照可能な変数、所謂グローバル変数であり、変数tp、及び変数tdは、第1タスク処理でのみ参照される変数、所謂ローカル変数であるものとする。 That is, as an example, the first task process shown in FIG. 5 is a process of performing an operation of multiplying the value of the variable RamA by 6 and recording the operation result as the value of the variable RamB. The first task process is not limited to the above-described contents, and any process may be used as long as it performs a floating point calculation. The variable RamA and the variable RamB are variables that can be referred to in other than the first task process, so-called global variables, and the variables tp and td are variables that are referred to only in the first task process, so-called local variables. It shall be.
[2−2.第2タスク処理、第3タスク処理]
第2タスク処理、及び第3タスク処理は、周辺回路60からの割込要求(ハードウェア割込要求)が発生したときに実行される割込処理である。第2タスク処理及び第3タスク処理は、第1タスク処理よりも優先順位が高く設定され、第3タスク処理は第2タスク処理よりも優先順位が高く設定されている。第2タスク処理、第3タスク処理は、浮動小数点演算を行う処理であればどのような処理であってもよい。ここでは、第2タスク処理の一例を図6のフローチャートを用いて説明する。第3タスク処理は、実行する演算処理(S210)、及び演算結果をRAM30に記録する(S220)際の領域が異なる以外は、第2タスク処理と同様の処理であるものとする。第3タスク処理では、演算結果は、RAM30における変数RamA及び変数RamB以外の変数が記録される領域に記録されるものとする。なお、以下の説明において主語が省略されている文においては、CPU10を主語とする。
[2-2. Second task process, third task process]
The second task process and the third task process are interrupt processes executed when an interrupt request (hardware interrupt request) from the peripheral circuit 60 is generated. The second task process and the third task process are set to have a higher priority than the first task process, and the third task process is set to have a higher priority than the second task process. The second task process and the third task process may be any process as long as the process performs a floating-point operation. Here, an example of the second task process will be described with reference to the flowchart of FIG. The third task process is assumed to be the same process as the second task process except that the calculation process to be executed (S210) and the area when the calculation result is recorded in the RAM 30 (S220) are different. In the third task process, the calculation result is recorded in an area in the RAM 30 where variables other than the variables RamA and RamB are recorded. In the following description, the CPU 10 is the subject in a sentence in which the subject is omitted.
S210では、変数RamAを用いた演算処理を実行する。ここでいう演算処理は、浮動小数点演算を行う処理であればどのような処理であってもよい。
S220では、S210の演算結果を変数RamAへ代入する。ここでは、変数RamAの参照と代入は、第1タスク、第2タスク、及び初期化処理においてのみ実施されることとする。
In S210, an arithmetic process using the variable RamA is executed. The arithmetic processing here may be any processing as long as it is processing for performing floating point arithmetic.
In S220, the calculation result of S210 is substituted into the variable RamA. Here, the reference and substitution of the variable RamA is performed only in the first task, the second task, and the initialization process.
S230では、S210の演算結果において、非数が発生したか否かを判断する。具体的には、演算エラーフラグがセットされている場合に、非数が発生したと判断する。演算結果において非数が発生しなかった場合は本第2タスク処理を終了し、非数が発生した場合、処理をS240へ移行させる。 In S230, it is determined whether or not a non-number has occurred in the calculation result of S210. Specifically, when the calculation error flag is set, it is determined that a non-number has occurred. If a non-number has not occurred in the calculation result, the second task process is terminated. If a non-number has occurred, the process proceeds to S240.
S240では、後述する初期化処理を起動し、本第2タスク処理を終了する。
[2−3.初期化処理]
第1タスク処理のS150、及び第2タスク処理のS240にて起動される初期化処理について図7のフローチャートを用いて説明する。本初期化処理は、少なくとも非数が発生した変数とそれに関係する変数に、予め定められた初期化値を代入する処理である。
In S240, an initialization process described later is started, and the second task process is terminated.
[2-3. Initialization process]
The initialization process started in S150 of the first task process and S240 of the second task process will be described with reference to the flowchart of FIG. This initialization process is a process of substituting a predetermined initialization value for at least a variable in which a non-number has occurred and a variable related thereto.
S300では、RAM30において初期化すべき変数が記録されている領域を初期化領域として特定する。本実施形態では、一例として、エラーフラグがセットされたときに実行されていたプログラム中の変数であって浮動小数点型データで表される変数が記録されている領域を、初期化領域として特定する。さらに、該変数を用いた浮動小数点型演算の実行結果が記録される他の変数が記録される領域を、初期化領域として特定する。これらの初期化領域は、エラープログラム特定情報とROM20に記録されている初期化領域特定テーブルとに基づいて特定される。初期化領域特定テーブルの一例を図8に示す。以下では、第2タスク処理にて変数RamAの演算結果が非数となった場合について説明する。すなわち、変数RamAと、該変数RamAを用いた浮動小数点型演算の実行結果が記録される変数RamBとが、初期化領域として特定された場合について説明する。 In S300, an area in the RAM 30 where a variable to be initialized is recorded is specified as an initialization area. In this embodiment, as an example, an area in which a variable represented by floating-point type data that is being executed when the error flag is set is recorded is specified as an initialization area. . Furthermore, an area in which another variable in which the execution result of the floating point type operation using the variable is recorded is specified as an initialization area. These initialization areas are identified based on the error program identification information and the initialization area identification table recorded in the ROM 20. An example of the initialization area specification table is shown in FIG. Below, the case where the calculation result of the variable RamA becomes a non-number in the second task process will be described. That is, the case where the variable RamA and the variable RamB in which the execution result of the floating-point type operation using the variable RamA is recorded as the initialization area will be described.
S310では、変数RamAに代入する初期化値を算出するための演算を行う。
S320では、変数RamBに代入する初期化値を算出するための演算を行う。
S330では、S310にて算出した初期化値を変数RamAへ代入する。
In S310, an operation for calculating an initialization value to be substituted into the variable RamA is performed.
In S320, an operation for calculating an initialization value to be substituted into the variable RamB is performed.
In S330, the initialization value calculated in S310 is substituted into the variable RamA.
S340では、S320にて算出した初期化値を変数RamBへ代入する。そして、本初期化処理を終了する。
なお、初期化値の算出が不要である場合、例えば初期化値が0であるような場合は、S310及びS320を省略し、S330及びS340にて変数RamA、及び変数RamBのそれぞれに初期化値(例えば0)を代入してもよい。
In S340, the initialization value calculated in S320 is substituted into the variable RamB. Then, the initialization process ends.
If the initialization value is not required to be calculated, for example, if the initialization value is 0, S310 and S320 are omitted, and the initialization value is set for each of the variables RamA and RamB in S330 and S340. (For example, 0) may be substituted.
[3.作動]
本実施形態の電子制御装置1内のCPU10の作動の一例を、図9に基づいて説明する。図9は、第1タスク処理の実行中に周辺回路60から第2タスク処理の実行を要求する割込要求が発生したときに、CPU10が実行する処理を時系列に示した図である。
[3. Operation]
An example of the operation of the CPU 10 in the electronic control device 1 of this embodiment will be described with reference to FIG. FIG. 9 is a diagram showing, in time series, processing executed by the CPU 10 when an interrupt request for requesting execution of the second task processing is generated from the peripheral circuit 60 during execution of the first task processing.
時刻t1では、CPU10は、第1タスク処理を開始する。具体的には、CPU10は、変数RamAの値を変数tpに代入する(S110)。
時刻t2では、CPU割込要求がCPU10に入力される。これにより、CPU10は、退避処理を実行し、割込情報に基づいて、割込処理としての第2タスク処理の実行を開始する。なお、変数tpは、退避処理により、第2タスク処理が実行される前の変数RamAの値が代入された状態でスタック領域302へ退避されている。
At time t1, the CPU 10 starts the first task process. Specifically, the CPU 10 substitutes the value of the variable RamA for the variable tp (S110).
At time t2, a CPU interrupt request is input to the CPU 10. Thereby, the CPU 10 executes the save process and starts executing the second task process as the interrupt process based on the interrupt information. Note that the variable tp is saved in the stack area 302 in a state where the value of the variable RamA before execution of the second task process is substituted by the save process.
時刻t2〜t3では、CPU10は、第2タスク処理を実行する。ここで、CPU10は、第2タスク処理の実行中に、エラーフラグに基づいて変数RamAの演算結果に非数が発生した判断したとする(S230;YES)。CPU10は、初期化処理を起動する。ただし、初期化処理は優先順位が最下位であるため、ここでは初期化処理はまだ開始されない。 At times t2 to t3, the CPU 10 executes the second task process. Here, it is assumed that the CPU 10 determines that a non-number has occurred in the calculation result of the variable RamA based on the error flag during the execution of the second task process (S230; YES). The CPU 10 starts an initialization process. However, since the initialization process has the lowest priority, the initialization process is not yet started here.
時刻t3では、CPU10は第2タスク処理を終了する。続いて、CPU10は、復帰処理を実行し、第1タスク処理を再開する。ここで、変数tpは、第2タスク処理が実行される前の変数RamAの値が代入された状態を維持している。CPU10は、変数tpの値を6倍した値を変数tdに代入する(S120)。ここでは、変数tdの演算において非数が発生していないと判断されるため(S130;NO)、CPU10は、変数tdの値を変数RamBに代入する(S140)。つまり、変数RamBには、第2タスク処理が実行される前の変数RamAの値を6倍した値が代入される。 At time t3, the CPU 10 ends the second task process. Subsequently, the CPU 10 executes a return process and restarts the first task process. Here, the variable tp maintains a state where the value of the variable RamA before the second task process is executed is substituted. The CPU 10 assigns a value obtained by multiplying the value of the variable tp by 6 to the variable td (S120). Here, since it is determined that there is no non-number in the calculation of the variable td (S130; NO), the CPU 10 substitutes the value of the variable td into the variable RamB (S140). That is, a value obtained by multiplying the value of the variable RamA before the execution of the second task process by 6 is assigned to the variable RamB.
時刻t4では、CPU10は、第1タスク処理を終了する。
時刻t5では、CPU10は、他に中断された割込前処理が無いため、初期化処理を開始する。初期化処理により、変数RamA及び変数RamBが所定の初期化値に初期化される(S330、S340)。
At time t4, the CPU 10 ends the first task process.
At time t <b> 5, the CPU 10 starts the initialization process because there is no interrupted pre-interrupt process. By the initialization process, the variable RamA and the variable RamB are initialized to predetermined initialization values (S330, S340).
[4.効果]
以上詳述した実施形態によれば、以下の効果が得られる。
[4A]演算において予め定められたエラーが発生した場合、中断されていた全ての割込前処理が終了した後に、少なくともエラーとなった演算結果の記録される領域の値が所定の初期化値に初期化される。換言すれば、割り込みにおける退避処理によってRAM30(スタック領域302)に退避されていた情報(上記実施形態では、変数tp及び変数td)を利用する処理が全て終了した後に、エラーとなった演算結果の記録される領域(上記実施形態では、変数RamA及び変数RamB)が初期化される。これによれば、割込要求によって中断された割込前演算は全て終了しているため、初期化された領域がこのような割込前演算の再開によって初期化されるべき値である初期化値とは異なる値に書き換えられることが抑制される。つまり、エラーとなった演算結果が記録されている領域を、確実に、正常値である予め定められた初期化値に初期化することができる。この結果、例えば、変数RamA、変数RamBに仮に非数が発生したときに、該領域の値がそれぞれ所定の初期化値であることを前提にして制御対象の制御が行われるような場合、制御対象に対して所定の初期化値に基づく予め定められた制御を確実に行うことができる。
[4. effect]
According to the embodiment detailed above, the following effects can be obtained.
[4A] When a predetermined error occurs in the calculation, after all interrupted pre-interrupt processing is completed, at least the value of the area in which the calculation result in error is recorded is a predetermined initialization value. It is initialized to. In other words, after all processing using the information saved in the RAM 30 (stack area 302) by the saving processing in the interrupt (in the above embodiment, the variable tp and the variable td) is completed, The area to be recorded (in the above embodiment, the variable RamA and the variable RamB) is initialized. According to this, since all the pre-interrupt operations interrupted by the interrupt request have been completed, the initialized area is a value that should be initialized by resuming such pre-interrupt operations. Rewriting to a value different from the value is suppressed. That is, it is possible to reliably initialize the area in which the error calculation result is recorded to a predetermined initialization value that is a normal value. As a result, for example, when a non-numeric value occurs in the variable RamA and the variable RamB, the control target is controlled on the assumption that the value of the area is a predetermined initialization value. Predetermined control based on a predetermined initialization value can be reliably performed on the target.
図10は、仮に、第1タスク処理の実行中に、割込要求によって、第2タスク処理に代えて比較例としての比較例処理が実行されるときの、CPU10の処理を時系列に示した図である。比較例処理は、変数RamAについての浮動小数点演算を実行し、演算結果に非数が発生した場合に、変数RamA及び変数RamBを初期化値に初期化する処理を行うものとする。しかしながら、比較例処理のように割込処理における演算結果に非数が発生したときに初期化を行ったとしても、割込前処理である第1タスク処理が再開されたときに、変数RamBは、退避処理によりスタック領域302に退避されていた変数tp及び変数tdに基づいて初期化値とは異なる値に上書きされてしまう。 FIG. 10 shows the processing of the CPU 10 in time series when the comparative example process as the comparative example is executed instead of the second task process by an interrupt request during the execution of the first task process. FIG. In the comparative example process, a floating-point operation is performed on the variable RamA, and when a non-number occurs in the operation result, the variable RamA and the variable RamB are initialized to initialization values. However, even when initialization is performed when an arithmetic result is generated in the interrupt process as in the comparative example process, when the first task process that is the pre-interrupt process is resumed, the variable RamB is Therefore, a value different from the initialization value is overwritten based on the variable tp and the variable td saved in the stack area 302 by the saving process.
これに対し、本実施形態は、前述のように、中断されていた全ての割込前処理が終了した後に初期化を行う。スタック領域302に退避されていた変数tp及び変数tdを利用する処理は終了しており、変数tp及び変数tdによって変数RamA及び変数RamBが書き換えられることがない。よって、本実施形態は、エラーとなった演算結果が記録されている領域を、確実に、予め定められた初期化値に初期化することができる。 In contrast, in this embodiment, as described above, initialization is performed after all interrupted pre-interrupt processing is completed. The processing using the variable tp and the variable td saved in the stack area 302 is finished, and the variable RamA and the variable RamB are not rewritten by the variable tp and the variable td. Therefore, according to the present embodiment, it is possible to reliably initialize the area in which the calculation result in error is recorded to a predetermined initialization value.
[4B]初期化手段は、割込要求に対応する演算の1つであり、優先順位が最下位に定められている。これによれば、確実に、中断されていた全ての割込前処理が終了した後に初期化を行うことができる。 [4B] The initialization means is one of operations corresponding to the interrupt request, and the priority order is set at the lowest order. According to this, it is possible to reliably perform initialization after all interrupted pre-interrupt processing is completed.
なお、第1実施形態では、電子制御装置1が本発明の一例に相当し、割込コントローラ50が順序変更手段の一例に相当し、CPU10が判断手段、初期化手段、記録手段の一例に相当し、RAM30が記録部の一例に相当する。また、S130、S230が判断手段としての処理の一例に相当し、S150、S240が初期化手段としての処理の一例に相当し、S250が記録手段としての処理の一例に相当する。また、割込前処理が割込前演算の一例に相当する。 In the first embodiment, the electronic control device 1 corresponds to an example of the present invention, the interrupt controller 50 corresponds to an example of an order change unit, and the CPU 10 corresponds to an example of a determination unit, an initialization unit, and a recording unit. The RAM 30 corresponds to an example of a recording unit. S130 and S230 correspond to an example of processing as a determination unit, S150 and S240 correspond to an example of processing as an initialization unit, and S250 corresponds to an example of processing as a recording unit. Further, the pre-interrupt process corresponds to an example of a pre-interrupt calculation.
[5.他の実施形態]
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されることなく、種々の形態を採り得ることは言うまでもない。
[5. Other Embodiments]
As mentioned above, although embodiment of this invention was described, it cannot be overemphasized that this invention can take a various form, without being limited to the said embodiment.
[5A]上記実施形態では、演算における予め定められたエラーが発生した場合、すなわち、演算結果に非数が発生した場合、無効な演算が行われた場合、及び演算結果に無限大が発生した場合に初期化処理を起動したが、初期化処理の起動はこれに限るものではない。例えば、演算結果に無限大が発生した場合にのみ、初期化処理を起動してもよい。また例えば、無効な演算が行われた場合にのみ、初期化処理を起動してもよい。また、演算結果に非数が発生した場合にのみ、初期化処理を起動してもよい。また、これらが組み合わされた場合に、初期化処理を起動してもよい。いずれの場合においても、エラーが発生した変数を、正常値である所定の初期化値に復帰させることができる。 [5A] In the above embodiment, when a predetermined error occurs in the operation, that is, when a non-number occurs in the operation result, when an invalid operation is performed, and when the operation result is infinite. In this case, the initialization process is activated, but the activation process is not limited to this. For example, the initialization process may be activated only when infinity occurs in the calculation result. Further, for example, the initialization process may be activated only when an invalid operation is performed. Also, the initialization process may be activated only when a non-number occurs in the calculation result. Moreover, when these are combined, the initialization process may be started. In either case, the variable in which the error has occurred can be restored to a predetermined initialization value that is a normal value.
[5B]上記実施形態では、図6に示す第2タスク処理において、CPU10は、変数RamA(グローバル変数)についての浮動小数点演算が実行された後に、この演算結果をRAM30における変数RamAの領域に記録し、その後に、この演算結果が非数であるか否かを判断していた。また、変数RamAについては、第1タスク、第2タスク、及び初期化処理においてのみ用いられるように制限されていた。これに対して、CPU10は、変数RamAについての浮動小数点演算が実行された後に、一旦、演算結果をRAM30における変数RamAの領域とは異なる領域に記録し、非数であるか否かを判断してもよい。そして、CPU10は、非数ではないと判断した場合に、演算結果をRAM30における変数RamAの領域に記録するようにしてもよい。RAM30における変数RamAの領域とは異なる領域の一例としては、他の演算の実行時に参照不可能な記録領域、具体的には、CPU10のレジスタやRAM30におけるローカル変数の記録される領域が、挙げられる。これによれば、非数ではないと判断された後にグローバル変数である変数RamAの演算結果がRAM30に書き込まれるため、他の演算においてグローバル変数である変数RamAが参照される際に、参照される内容が非数であることが抑制される。つまり、非数となった変数RamAを用いる他の演算における非数の発生を抑制することができる。またこの場合、上記実施形態のように、非数が発生するおそれのある変数RamAを、第1タスク処理、第2タスク処理及び初期化処理においてのみ用いるように制限する必要が無くなる。 [5B] In the above embodiment, in the second task process shown in FIG. 6, the CPU 10 records the calculation result in the area of the variable RamA in the RAM 30 after the floating-point calculation for the variable RamA (global variable) is executed. Thereafter, it is determined whether or not the result of this calculation is non-numeric. Further, the variable RamA is limited to be used only in the first task, the second task, and the initialization process. On the other hand, after the floating point operation is performed on the variable RamA, the CPU 10 once records the operation result in an area different from the area of the variable RamA in the RAM 30 and determines whether or not the number is non-numeric. May be. When the CPU 10 determines that the number is not a non-numeric value, the CPU 10 may record the calculation result in the area of the variable RamA in the RAM 30. An example of an area different from the area of the variable RamA in the RAM 30 is a recording area that cannot be referred to when executing other operations, specifically, a register of the CPU 10 or an area where local variables are recorded in the RAM 30. . According to this, since the operation result of the variable RamA that is a global variable is written in the RAM 30 after it is determined that it is not a non-numeric value, it is referred to when the variable RamA that is a global variable is referred to in other operations. It is suppressed that the content is non-numeric. That is, it is possible to suppress the occurrence of non-numbers in other operations using the variable RamA that has become non-numbers. In this case, it is not necessary to limit the use of the variable RamA, which may generate an innumerable number, only in the first task process, the second task process, and the initialization process as in the above embodiment.
図11に、第2タスク処理において、変数RamAの演算結果を、一旦、CPU10のレジスタに記録する場合のフローチャートの一例を示す。図11に示す第2タスク処理では、CPU10は、S210において変数RamAの演算結果を、CPU10のレジスタに記録する。ここで、CPU10は、レジスタに記録された演算結果において予め定められたエラー(非数)が発生していないと判断した場合(S230;NO)に、演算結果をRAM30の変数RamAの領域に書き込む(S250)。一方、CPU10は、レジスタに記録された演算結果において予め定められたエラー(非数)が発生したと判断された場合(S230;YES)に、初期価値をRAM30の変数RamAの領域に書き込む(S250)。これによれば、変数RamAの演算結果に非数が発生した場合に、RAM30における変数RamAの領域に非数が記録されることが抑制され、非数となった変数RamAを用いる他の演算における非数の発生を抑制することができる。 FIG. 11 shows an example of a flowchart when the calculation result of the variable RamA is temporarily recorded in the register of the CPU 10 in the second task processing. In the second task process shown in FIG. 11, the CPU 10 records the calculation result of the variable RamA in the register of the CPU 10 in S210. Here, when the CPU 10 determines that a predetermined error (non-number) has not occurred in the calculation result recorded in the register (S230; NO), the CPU 10 writes the calculation result in the area of the variable RamA in the RAM 30. (S250). On the other hand, when it is determined that a predetermined error (not a number) has occurred in the operation result recorded in the register (S230; YES), the CPU 10 writes the initial value in the area of the variable RamA in the RAM 30 (S250). ). According to this, when a non-number occurs in the calculation result of the variable RamA, it is suppressed that the non-number is recorded in the area of the variable RamA in the RAM 30, and in other calculations using the non-number variable RamA. Generation of non-numbers can be suppressed.
なお、この場合、RAM30における変数RamAの領域とは異なる領域(CPU10のレジスタ)が第1の記録部の一例に相当し、RAM30における変数RamAの領域が第2の記録部の一例に相当する。 In this case, an area (register of the CPU 10) different from the area of the variable RamA in the RAM 30 corresponds to an example of the first recording unit, and an area of the variable RamA in the RAM 30 corresponds to an example of the second recording unit.
[5C]割込コントローラ50は、多重割込に対応可能に構成されていてもよい。つまり、割込コントローラ50は、各周辺回路60から同時に複数の割込要求が入力されると、その中から最も優先順位の高い割込要求を選択し、該割込要求に対応する割込処理の優先順位がCPU10が実行中の割込処理よりも高い場合にだけ、CPU10にCPU割込要求信号を出力するように構成されていてもよい。残りの割込要求については、最も優先順位の高い割込要求に対応する割込処理の終了後に、同様の処理を繰り返せばよい。 [5C] The interrupt controller 50 may be configured to support multiple interrupts. That is, when a plurality of interrupt requests are simultaneously input from the peripheral circuits 60, the interrupt controller 50 selects an interrupt request with the highest priority from among them, and performs an interrupt process corresponding to the interrupt request. The CPU interrupt request signal may be output to the CPU 10 only when the CPU 10 has a higher priority than the interrupt process being executed by the CPU 10. For the remaining interrupt requests, similar processing may be repeated after completion of the interrupt processing corresponding to the interrupt request with the highest priority.
図12は、一例として、第1タスク処理の実行時に、第2タスク処理の割込要求が発生し(時刻t12)、第2タスク処理の開始後に第3タスク処理の割込要求が発生(時刻t13)した場合の、CPU10の処理を時系列に示した図である。このような場合においても、優先順位が最下位であるため、第1タスク処理〜第3タスク処理の終了後に初期化処理が開始される(時刻t17)。従って、上記実施形態と同様の効果が奏される。 As an example, FIG. 12 shows that when executing the first task process, an interrupt request for the second task process is generated (time t12), and after the start of the second task process, an interrupt request for the third task process is generated (time). It is the figure which showed the process of CPU10 in the time series at the time of t13). Even in such a case, since the priority order is the lowest, the initialization process is started after completion of the first task process to the third task process (time t17). Therefore, the same effect as that of the above embodiment is achieved.
ところで、一例として図12に示すように、第3タスク処理及び第2タスク処理の両方で非数が発生した場合、初期化処理は、第3タスク処理によっても(時刻t14)、第2タスク処理によっても(時刻t15)、起動される。このように、初期化処理が複数回起動されることがある場合、複数回初期化処理が行われるのではなく、図12に示すように一度だけ初期化処理が行われることが望ましい。 By the way, as shown in FIG. 12 as an example, when a non-number occurs in both the third task process and the second task process, the initialization process is also performed by the third task process (time t14). (Time t15). As described above, when the initialization process may be activated a plurality of times, it is desirable that the initialization process is performed only once as shown in FIG. 12 instead of performing the initialization process a plurality of times.
[5D]上記実施形態では、初期化処理の機能がソフトウェアにより実行される例を記載したが、初期化処理の機能の一部又は全部をハードウェアにより実現するようにしてもよい。 [5D] In the above-described embodiment, the example in which the initialization processing function is executed by software has been described. However, part or all of the initialization processing function may be realized by hardware.
[5E]上記実施形態における1つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を1つの構成要素に統合したりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を、課題を解決できる限りにおいて省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加、置換等してもよい。なお、特許請求の範囲に記載の文言から特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。 [5E] The functions of one component in the above embodiment may be distributed as a plurality of components, or the functions of a plurality of components may be integrated into one component. Further, at least a part of the configuration of the above embodiment may be replaced with a known configuration having the same function. Moreover, you may abbreviate | omit a part of structure of the said embodiment as long as a subject can be solved. In addition, at least a part of the configuration of the above embodiment may be added to or replaced with the configuration of the other embodiment. In addition, all the aspects included in the technical idea specified from the wording described in the claims are embodiments of the present invention.
[5F]本発明は、前述した電子制御装置1の他、当該電子制御装置1を構成要素とするシステム、当該電子制御装置1を機能させるためのプログラム、このプログラムを記録した媒体、演算方法など、種々の形態で実現することができる。 [5F] The present invention is not limited to the electronic control device 1 described above, a system including the electronic control device 1 as a constituent element, a program for causing the electronic control device 1 to function, a medium storing the program, a calculation method, and the like. Can be realized in various forms.
1…電子制御装置 2…マイクロコンピュータ 10…CPU 30…RAM 50…割込コントローラ。 DESCRIPTION OF SYMBOLS 1 ... Electronic controller 2 ... Microcomputer 10 ... CPU 30 ... RAM 50 ... Interrupt controller.
Claims (6)
前記各演算による演算結果を記録部(30)に記録する記録手段(10、S220、S250)と、
実行中の演算よりも優先順位が高い演算についての割込要求が入力されると、前記実行中の演算である割込前演算を中断させ、前記割込要求に対応する演算の実行が終了した後に前記割込前演算が再開されるように演算順序を変更する順序変更手段(50)と、
前記各演算の演算結果において、予め定められたエラーが発生したか否かを判断する判断手段(10、S130、S230)と、
前記判断手段によってエラーが発生したと判断された場合、前記エラーが発生したときに中断されていた全ての割込前演算が終了した後に、前記記録部(30)における少なくとも前記エラーとなった演算結果が記録される領域に、予め定められた初期化値を代入する初期化を行う初期化手段(10、S150、S240)と、
を備えることを特徴とする電子制御装置。 An electronic control device (1) that sequentially executes a plurality of operations in accordance with a priority assigned to each operation,
Recording means (10, S220, S250) for recording the calculation results of the respective calculations in the recording unit (30);
When an interrupt request for an operation having a higher priority than the operation being executed is input, the pre-interrupt operation that is the operation being executed is interrupted, and the execution of the operation corresponding to the interrupt request is completed Order changing means (50) for changing the calculation order so that the calculation before interruption is resumed later;
Judgment means (10, S130, S230) for judging whether or not a predetermined error has occurred in the calculation result of each calculation;
If it is determined by the determining means that an error has occurred, after all pre-interrupt operations that were interrupted when the error occurred have been completed, at least the operation that caused the error in the recording unit (30) Initialization means (10, S150, S240) for performing initialization by substituting a predetermined initialization value in an area where results are recorded;
An electronic control device comprising:
前記判断手段は、前記演算結果が非数を表す場合に、前記演算における予め定められたエラーが発生したと判断する
ことを特徴とする電子制御装置。 The electronic control device according to claim 1,
The electronic control unit, wherein the determination unit determines that a predetermined error has occurred in the calculation when the calculation result represents a non-number.
前記判断手段は、前記演算結果が無限大を表す場合に、前記演算における予め定められたエラーが発生したと判断する
ことを特徴とする電子制御装置。 The electronic control device according to claim 1 or 2,
The electronic control device, wherein the determination unit determines that a predetermined error has occurred in the calculation when the calculation result represents infinity.
前記判断手段は、予め定められた無効な演算が行われた場合に、前記演算における予め定められたエラーが発生したと判断する
ことを特徴とする電子制御装置。 The electronic control device according to any one of claims 1 to 3,
The electronic control device according to claim 1, wherein the determination unit determines that a predetermined error has occurred in the calculation when a predetermined invalid calculation is performed.
前記初期化手段は、前記割込要求に対応する演算の1つであり、優先順位が最下位に定められている
ことを特徴とする電子制御装置。 The electronic control device according to any one of claims 1 to 4,
The electronic control device, wherein the initialization means is one of operations corresponding to the interrupt request, and the priority order is set at the lowest order.
前記記録手段は、前記記録部のうちの第1の記録部に、前記各演算による演算結果を記録し、
前記判断手段は、前記第1の記録部に記録された前記各演算による演算結果に基づいて、前記エラーが発生したか否かを判断し、
前記初期化手段は、前記判断手段により前記エラーが発生していないと判断された場合に、前記記録部のうちの前記第1の記録部とは異なる第2の記録部に前記演算結果を記録し、前記判断手段により前記エラーが発生したと判断された場合に、前記第2の記録部に前記初期化値を記録する
ことを特徴とする電子制御装置。 The electronic control device according to any one of claims 1 to 5,
The recording means records a calculation result of each calculation in a first recording unit of the recording units,
The determination means determines whether or not the error has occurred based on a calculation result by each calculation recorded in the first recording unit,
The initialization unit records the calculation result in a second recording unit different from the first recording unit in the recording unit when the determination unit determines that the error has not occurred. The electronic control device, wherein when the determination unit determines that the error has occurred, the initialization value is recorded in the second recording unit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015054839A JP6332091B2 (en) | 2015-03-18 | 2015-03-18 | Electronic control unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015054839A JP6332091B2 (en) | 2015-03-18 | 2015-03-18 | Electronic control unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016177331A JP2016177331A (en) | 2016-10-06 |
JP6332091B2 true JP6332091B2 (en) | 2018-05-30 |
Family
ID=57070605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015054839A Active JP6332091B2 (en) | 2015-03-18 | 2015-03-18 | Electronic control unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6332091B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6673143B2 (en) * | 2016-10-25 | 2020-03-25 | 株式会社デンソー | Automatic transmission control device |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001331343A (en) * | 2000-05-18 | 2001-11-30 | Toyota Motor Corp | Electronic controller for travelling object, and method for evaluating the electronic controller |
JP5379712B2 (en) * | 2010-02-08 | 2013-12-25 | 日立オートモティブシステムズ株式会社 | In-vehicle control device |
-
2015
- 2015-03-18 JP JP2015054839A patent/JP6332091B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016177331A (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2883784B2 (en) | Microcomputer | |
JPH06202850A (en) | Data processor | |
US5684728A (en) | Data processing system having a saturation arithmetic operation function | |
JP6332091B2 (en) | Electronic control unit | |
JP7027857B2 (en) | Control device | |
JP2007207074A (en) | Operation system, thread control mechanism and information processor | |
JP2003058381A (en) | Processor realizing exception processing setting by program | |
JP6229552B2 (en) | Control device and initialization program | |
JP6160571B2 (en) | Data processing device | |
JP2006072961A (en) | Memory circuit for arithmetic processing unit | |
JPH07219766A (en) | Arithmetic processor | |
JPH08221257A (en) | Divider for data processor | |
JP6558317B2 (en) | Electronic equipment | |
JP3588368B2 (en) | Timer update assist method and timer device | |
US10817288B2 (en) | Combined instruction for addition and checking of terminals | |
JPS58200349A (en) | Microprogram controller | |
JP2005275703A (en) | Processor, and context switching method | |
JP3024719B2 (en) | Arithmetic processing method of programmable controller | |
JP2010122813A (en) | Information processing apparatus, integrated circuit device, electronic apparatus | |
JP2015121953A (en) | Microcomputer and electronic control device | |
JPH06162067A (en) | Device and method for controlling vector instruction | |
JPH03149621A (en) | Microprocessor | |
JPH05120155A (en) | Microprogram controller | |
JP5263497B2 (en) | Signal processor and semiconductor device | |
JP2000035875A (en) | Method and device for expanding dynamic range of register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170713 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180329 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180403 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180416 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6332091 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
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 |