JP6708596B2 - 電子制御装置及び制御プログラム検証方法 - Google Patents

電子制御装置及び制御プログラム検証方法 Download PDF

Info

Publication number
JP6708596B2
JP6708596B2 JP2017185973A JP2017185973A JP6708596B2 JP 6708596 B2 JP6708596 B2 JP 6708596B2 JP 2017185973 A JP2017185973 A JP 2017185973A JP 2017185973 A JP2017185973 A JP 2017185973A JP 6708596 B2 JP6708596 B2 JP 6708596B2
Authority
JP
Japan
Prior art keywords
identifier
program
control program
volatile memory
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017185973A
Other languages
English (en)
Other versions
JP2019061520A (ja
Inventor
久夫 伊藤
久夫 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2017185973A priority Critical patent/JP6708596B2/ja
Priority to US16/647,391 priority patent/US11169828B2/en
Priority to PCT/JP2018/011165 priority patent/WO2019064644A1/ja
Publication of JP2019061520A publication Critical patent/JP2019061520A/ja
Application granted granted Critical
Publication of JP6708596B2 publication Critical patent/JP6708596B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42684Client identification by a unique number or address, e.g. serial number, MAC address, socket ID

Description

本発明は、自動車などに搭載される電子制御装置、及び、制御プログラムの正誤を検証する方法に関する。
自動車などに搭載される電子制御装置は、起動プログラム及び制御プログラム(各種パラメータを含む)を格納する、電気的にデータを書き換え可能なフラッシュROM(Read Only Memory)を備えている。また、制御プログラムの正誤を検証するため、フラッシュROMより書き換え可能な回数が多いEEPROM(Electrically Erasable and Programmable ROM)に、制御プログラムの正誤を検証するためのプログラム識別子を格納することが検討されている。EEPROMにプログラム識別子を格納するとき、特開平7−239777号公報(特許文献1)で提案された技術を利用することができる。即ち、この提案技術を利用すると、フラッシュROMに起動プログラム及び制御プログラムを書き込んで電子制御装置を起動すると、制御プログラムの正誤を検証するプログラム識別子がEEPROMに書き込まれる。
特開平7−239777号公報
しかしながら、プログラム識別子がEEPROMに書き込まれてから制御プログラムの実行が開始されるため、EEPROMへのデータ書き込み速度が比較的遅いことに起因して、制御プログラムが起動されるまでにある程度の時間が必要であった。制御プログラムの起動が遅いと、例えば、電子制御装置の製造工程における工数が増加するなど、製造上の課題が惹起されてしまう。
そこで、本発明は、制御プログラムが起動されるまでの時間を短縮することができる、電子制御装置及び制御プログラム検証方法を提供することを目的とする。
このため、電子制御装置は、電気的にデータを書き換え可能な第1の不揮発性メモリと、電気的にデータを書き換え可能な第2の不揮発性メモリと、プロセッサと、を備え、制御プログラムを第1の不揮発性メモリに書き込み可能であると共に、制御プログラムの正誤を検証する識別子を第2の不揮発性メモリに書き込み可能である。そして、プロセッサは、第2の不揮発性メモリにおける識別子の書き込み状態に応じて、制御プログラムに予め格納された識別子又は第2の不揮発性メモリに書き込まれた識別子のいずれかを選択して、制御プログラムの正誤を検証する。
本発明によれば、電子制御装置において、制御プログラムが起動されるまでの時間を短縮することができる。
電子制御装置の一例を示す概略図である。 EEPROMの記憶領域の一例を示す説明図である。 起動プログラムによる起動処理の一例を示すフローチャートである。 起動プログラムによる起動処理の一例を示すフローチャートである。 制御プログラムによる制御処理の一例を示すフローチャートである。 EEPROMにプログラム識別子を書き込んだ状態の概要図である。 フラッシュROMに複数の制御プログラムが書き込まれる場合の対応方法の説明図である。 EEPROMの素子異常を検出する方法の説明図である。 EEPROMの素子異常を検出する他の方法の説明図である。 フラッシュROMの書換え残数を把握する方法の説明図であって、フラッシュROMに制御プログラムが書き込まれた直後の説明図である。 フラッシュROMの書換え残数を把握する方法の説明図であって、EEPROMに書換え残数が転送された状態の説明図である。 フラッシュROMの書換え残数を把握する方法の説明図であって、EEPROMの書換え残数を更新した状態の説明図である。 フラッシュROMの書換え残数を把握する方法の説明図であって、フラッシュROMの制御プログラムの書き換え領域を消去した状態の説明図である。 フラッシュROMの書換え残数を把握する方法の説明図であって、フラッシュROMの制御プログラムを書き換えた状態の説明図である。
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図1は、自動車などに搭載される電子制御装置100の一例を示す。
電子制御装置100は、プログラムに記述された命令セットを実行するCPU(Central Processing Unit)120と、電気的にデータを書き換え可能なフラッシュROM140と、電気的にデータを書き換え可能なEEPROM160と、通信制御部180と、を備えている。CPU120、フラッシュROM140、EEPROM160及び通信制御部180は、バス200を介して、電気的に相互接続されている。ここで、CPU120、フラッシュROM140及びEEPROM160は、夫々、プロセッサ、第1の不揮発性メモリ及び第2の不揮発性メモリの一例として挙げられる。なお、電子制御装置100は、上記構成に加え、CPU120の一時的な作業領域となる揮発性メモリの一例として挙げられる、図示しないRAM(Random Access Memory)を更に備えている。
通信制御部180は、電子制御装置100に対して着脱可能に接続される外部機器220との通信インタフェースを提供する。外部機器220は、フラッシュROM140に格納された各種データ、EEPROM160に格納された各種データを書き換えることができる。また、電子制御装置100には、フラッシュROM140及びEEPROM160に任意のデータを初めて書き込むためのROMライタ240が着脱可能に接続される。ここで、ROMライタ240は、例えば、CPU、フラッシュROM、RAM及び通信制御部などを内蔵したマイクロコンピュータからなり、電子制御装置100と相互通信して、フラッシュROM140及びEEPROM160に任意のデータを書き込む。
電子制御装置100の製造工程において、作業者が、電子制御装置100に対してROMライタ240を接続し、所定の操作を行うことで、フラッシュROM140に起動プログラム300及び制御プログラム320を夫々書き込む。ここで、フラッシュROM140に起動プログラム300及び制御プログラム320を書き込む場合には、フラッシュROM140の書き込み領域を消去し、そこに起動プログラム300及び制御プログラム320を書き込む。また、フラッシュROM140の制御プログラム320を更新する(書き換える)場合にも、これと同様に、フラッシュROM140の書き込み領域を消去し、そこに新たな制御プログラム320を書き込む。
起動プログラム300は、別名「ブートプログラム」といい、電子制御装置100の電源が投入されると、オペレーティングシステムなどの基本的なソフトウエアをRAMに展開し、制御プログラム320を実行できるようにする。制御プログラム320は、例えば、制御対象機器である燃料噴射弁、点火プラグ、自動変速機、ブラシレスモータなどを電子制御するソフトウエアであって、その正誤を検証するためのプログラム識別子の初期値320Aが所定領域に格納されている。ここで、プログラム識別子の初期値320Aは、例えば、チェックサム、ハッシュ関数MD5などを利用して、プログラム識別子の格納領域を除いた制御プログラム320のコードから演算した値とすることができる。
EEPROM160は、電子制御装置100のハードウエアが製造された直後には、初期状態、具体的には、すべてのビットに“1”が書き込まれた状態になっている。そして、EEPROM160の記憶領域は、図2に示すように、消去単位となる所定サイズを有するN個のブロック1〜Nに分割され、これが消去されるとすべてのビットが“1”になる。また、EEPROM160の所定ブロック、例えば、ブロック1及びブロック3は、夫々、EEPROM160が初期状態であることを示す初期化済みマーク書き込み領域、プログラム識別子書き込み領域として予め割り当てられている。なお、プログラム識別子書き込み領域には、プログラム識別子が正常であるか否かを判断するためのチェックサムが付与されている。
図3及び図4は、電子制御装置100に電源が投入されたことを契機として、フラッシュROM140に格納された起動プログラム300に従って、CPU120が実行する起動処理の一例を示す。
ステップ1(図では「S1」と略記する。以下同様。)では、CPU120が、内部クロック及び入出力端子を初期状態に設定する。
ステップ2では、CPU120が、例えば、起動プログラム300に予め格納されたCRC(Cyclic Redundancy Check)などの誤り検出符号を利用して、起動プログラム300が正常であるか否かを判断する。そして、CPU120は、起動プログラム300が正常であると判断すれば、処理をステップ3へと進める(Yes)。一方、CPU120は、起動プログラム300が正常でない、即ち、少なくとも一部のデータが壊れていると判断すれば、処理をステップ9へと進める(No)。なお、起動プログラム300が正常であるか否かは、例えば、電子素子で構成された電子回路によって判断することもできる。
ステップ3では、CPU120が、例えば、RAMの記憶領域に所定のテストデータが正常に書き込めるか否かを介して、RAMが正常であるか否かを判断する。そして、CPU120は、RAMが正常であると判断すれば、処理をステップ4へと進める(Yes)。一方、CPU120は、RAMが正常でない、即ち、その少なくとも一部の素子が壊れていると判断すれば、処理をステップ9へと進める(No)。
ステップ4では、CPU120が、例えば、EEPROM160のブロック1のすべてのビットが“1”になっているか否かを判断することにより、EEPROM160が初期状態であるか否かを確認する。
ステップ5では、CPU120は、EEPROM160が初期状態であると判断すれば、処理をステップ6へと進める(Yes)。一方、CPU120は、EEPROM160が初期状態でない、即ち、詳細を後述するように、制御プログラム320のプログラム識別子が既に書き込まれていると判断すれば、処理をステップ11へと進める(No)。
ステップ6では、CPU120が、例えば、チェックサム、ハッシュ関数MD5などを利用して、プログラム識別子の初期値320Aの格納領域を除いた制御プログラム320のコードからプログラム識別子を演算する。
ステップ7では、CPU120が、ステップ6で演算したプログラム識別子と制御プログラム320に予め格納されたプログラム識別子の初期値320Aとが一致するか否かを判断する。そして、CPU120は、演算したプログラム識別子とプログラム識別子の初期値320Aとが一致すると判断すれば、処理をステップ8へと進める(Yes)。一方、CPU120は、演算したプログラム識別子とプログラム識別子の初期値320Aとが一致していないと判断すれば、処理をステップ10へと進める(No)。
ステップ8では、CPU120が、フラッシュROM140に格納された制御プログラム320の実行を開始する。なお、制御プログラム320の詳細については、図5を参照して後述する。
ステップ9では、起動プログラム300又はRAMが異常であったため、CPU120が、起動プログラム異常処理を実行する。ここで、起動プログラム異常処理としては、例えば、無限ループを実行し、これ以降の起動プログラム300及び制御プログラム320を実行しないようにする。
ステップ10では、演算したプログラム識別子とプログラム識別子の初期値320Aとが一致していないので、CPU120が、制御プログラム更新処理を実行する。即ち、フラッシュROM140に格納された制御プログラム320の少なくとも一部のデータが壊れている可能性があるため、CPU120は、電子制御装置100に接続された外部機器220と協働して、フラッシュROM140に書き込まれた制御プログラム320を更新する。
ステップ11では、EEPROM160が初期状態ではないため、CPU120が、例えば、EEPROM160に予め格納されたCRCなどの誤り検出符号を利用して、EEPROM160が正常であるか否かを判断する。そして、CPU120は、EEPROM160が正常であると判断すれば、処理をステップ12へと進める(Yes)。一方、CPU120は、EEPROM160が正常でない、即ち、少なくとも一部のデータが壊れていると判断すれば、処理をステップ10へと進める(No)。
ステップ12では、CPU120が、例えば、チェックサム、ハッシュ関数MD5などを利用して、プログラム識別子の初期値320Aの格納領域を除いた制御プログラム320のコードからプログラム識別子を演算する。
ステップ13では、CPU120が、ステップ12で演算したプログラム識別子とEEPROM160に書き込まれたプログラム識別子160Aとが一致するか否かを判断する。そして、CPU120は、演算したプログラム識別子とプログラム識別子160Aとが一致すると判断すれば、処理をステップ8へと進める(Yes)。一方、CPU120は、演算したプログラム識別子とプログラム識別子160Aとが一致していないと判断すれば、処理をステップ10へと進める(No)。
図5は、フラッシュROM140に格納された制御プログラム320に従って、CPU120が実行する制御処理の一例を示す。
ステップ21では、CPU120が、制御対象機器の制御を開始する。即ち、CPU120は、例えば、各種センサ、CAN(Controller Area Network)を介して相互接続された他の電子制御装置からの信号に応じて、制御対象機器の操作量を演算して出力する。なお、この制御は、本実施形態の要部ではないため、その説明は省略する(以下同様)。また、以下に説明するステップ22〜ステップ25の処理中にも、制御対象機器を制御することが可能である。
ステップ22では、CPU120が、例えば、EEPROM160のブロック1のすべてのビットが“1”になっているか否かを判断することにより、EEPROM160が初期状態であるか否かを確認する。そして、CPU120は、EEPROM160が初期状態であると判断すれば、処理をステップ23へと進める(Yes)。一方、CPU120は、EEPROM160が初期状態でない、即ち、制御プログラム320のプログラム識別子が既に書き込まれていると判断すれば、処理をステップ26へと進める(No)。
ステップ23では、CPU120が、フラッシュROM140に書き込まれた制御プログラム320からプログラム識別子の初期値320Aを読み出し、図6に示すように、これをプログラム識別子160Aとして、EEPROM160のブロック3にコピーする。このとき、CPU120は、プログラム識別子160Aのチェックサムを演算し、図2に示すように、ブロック3の所定領域に書き込む。
ステップ24では、CPU120が、初期化済みマーク及びプログラム識別子を除く他の制御データを、EEPROM160のブロック4以降に書き込む。なお、この処理は、必ずしも実行しなくてもよい。
ステップ25では、CPU120が、EEPROM160のブロック1に初期化済みマークを書き込む。ここで、初期化済みマークは、データ消去状態を示す“1”以外であれば足りるが、例えば、何らかの原因によるビット化けを考慮して、“0”と“1”とがランダムに配置された32ビット以上の値(例えば、“AACC6655”など)とすることが望ましい。
ステップ26では、CPU120が、制御対象機器の制御を継続する。即ち、CPU120は、ステップ21と同様に、例えば、各種センサ、CANを介して相互接続された他の電子制御装置からの信号に応じて、制御対象機器の操作量を演算して出力する。
かかる電子制御装置100によれば、電子制御装置100に電源が投入されたことを契機として、フラッシュROM140に書き込まれた起動プログラム300、RAMが正常であることを前提とし、EEPROM160が初期状態であるか否かが判断される。EEPROM160が初期状態であれば、フラッシュROM140に書き込まれた制御プログラム320からプログラム識別子が演算され、これが制御プログラム320に予め格納されたプログラム識別子の初期値320Aと一致しているか否かが判断される。そして、演算されたプログラム識別子がプログラム識別子の初期値320Aと一致していれば、EEPROM160にプログラム識別子160Aを書き込まず、フラッシュROM140に書き込まれた制御プログラム320の実行が開始される。一方、演算されたプログラム識別子がプログラム識別子の初期値320Aと一致していなければ、制御プログラム320が更新される。
また、EEPROM160が初期状態でなければ、フラッシュROM140に書き込まれた制御プログラム320が正常であることを前提とし、制御プログラム320からプログラム識別子が演算され、これがEEPROM160に書き込まれたプログラム識別子160Aと一致するか否かが判断される。そして、演算されたプログラム識別子がプログラム識別子160Aと一致していれば、その制御プログラム320は正しいため、その実行が開始される。一方、演算されたプログラム識別子がプログラム識別子160Aと一致していなければ、制御プログラム320が更新される。
要するに、電子制御装置100においては、EEPROM160におけるプログラム識別子160Aの書き込み状態に応じて、制御プログラム320に予め格納されたプログラム識別子の初期値320A、又は、EEPROM160に書き込まれたプログラム識別子160Aのいずれかが選択され、制御プログラム320の正誤が検証される。
その後、制御プログラム320の実行が開始されると、最初に、EEPROM160が初期状態であるか否かが判定される。EEPROM160が初期状態であれば、フラッシュROM140に書き込まれた制御プログラム320のプログラム識別子の初期値320Aが、プログラム識別子160AとしてEEPROM160にコピーされると共に、EEPROM160のブロック1に初期化済みマークが書き込まれる。
従って、EEPROM160の初期状態において電子制御装置100が起動すると、EEPROM160にプログラム識別子160Aを書き込まずに、制御プログラム320の実行が開始される。そして、制御プログラム320において、プログラム識別子160AがEEPROM160に書き込まれる。このため、電子制御装置100において、制御プログラム320が起動されるまでの時間を短縮することができる。
ここで、図7に示すように、フラッシュROM140に複数のプログラム、例えば、制御プログラムA〜Cが書き込まれ、それぞれの制御プログラムA〜Cが外部機器220により書き換え可能な場合には、次のように対応することができる。
それぞれの制御プログラムA〜Cには、先の実施形態と同様に、その正誤を検証するためのプログラム識別子A〜Cの初期値が所定領域に予め格納されている。また、EEPROM160の3つのブロックは、制御プログラムA〜Cのプログラム識別子A〜Cの書き込み領域として予め割り当てられている。そして、CPU120は、制御プログラムA〜Cの実行を開始したとき、EEPROM160が初期状態であれば、制御プログラムA〜Cの初期値を読み出し、これをEEPROM160の書き込み領域へとコピーする。なお、この処理は、制御プログラムA〜Cに従って実行される(以下同様)。
また、EEPROM160の記憶領域は、以下のように使用することもできる。
EEPROM160の所定ブロック、例えば、ブロック1、ブロック3及びブロック4は、図8に示すように、初期化済みマーク領域、プログラム識別子書き込み領域A及びプログラム識別子書き込み領域Bとして予め割り当てられている。即ち、EEPROM160の記憶領域では、制御プログラム320の正誤を検証するためのプログラム識別子160Aを書き込むブロックが冗長化されている。なお、ブロック3及びブロック4には、先の実施形態と同様に、チェックサムA及びチェックサムBが夫々付与されている(以下同様)。
CPU120は、制御プログラム320の実行を開始したとき、EEPROM160が初期状態であれば、制御プログラム320のプログラム識別子の初期値320Aを読み出し、これをプログラム識別子書き込み領域A及びプログラム識別子書き込み領域Bに二重に書き込む。次の電源投入後、CPU120は、起動プログラム300の実行を開始したとき、チェックサムAを使用してプログラム識別子書き込み領域Aのプログラム識別子160A、及び、チェックサムを使用してプログラム識別子書き込み領域Bのプログラム識別子160Aが正常であるか否かを判断する。
CPU120は、2つのプログラム識別子160Aが正常かつ一致していれば、EEPROM160は正常であると判断する。CPU120は、2つのプログラム識別子160Aが正常かつ一致していなければ、EEPROM160は異常であると診断する。CPU120は、一方のプログラム識別子160Aが正常かつ他方のプログラム識別子160Aが異常であれば、EEPROM160は正常であると判断し、一方のプログラム識別子160Aを他方のプログラム識別子書き込み領域に書き込む。CPU120は、2つのプログラム識別子が異常であれば、EEPROM160は異常であると判断する。
従って、冗長化されたプログラム識別子書き込み領域A及びプログラム識別子書き込み領域Bへのプログラム識別子160Aの書き込み状態を比較することで、例えば、EEPROM160の素子異常などを検知することができる。このため、電子制御装置100の故障などを早期に検知することができ、例えば、制御対象機器の不適切な制御を抑制することができる。
EEPROM160の初期状態又は消去後に、すべてのビットが不定値となる場合には、次のように対応することができる。
EEPROM160の所定ブロック、例えば、ブロック1〜4は、図9に示すように、初期化済みマーク書き込み領域A、初期化済みマーク書き込み領域B、プログラム識別子書き込み領域A及びプログラム識別子書き込み領域Bとして予め割り当てられている。即ち、EEPROM160においては、初期化済みマークを書き込むブロック、及び、制御プログラム320の正誤を検証するためのプログラム識別子160Aを書き込むブロックが冗長化されている。
CPU120は、EEPROM160が初期状態であるか否かを判断するにあたり、初期化済みマーク書き込み領域Aに初期化済みマークが書き込まれているか否か、及び、初期化済みマーク書き込み領域Bに初期化済みマークが書き込まれているか否かを判断する。
CPU120は、初期化済みマーク書き込み領域A及び初期化済みマーク書き込み領域Bに初期化済みマークが書き込まれていれば、EEPROM160は初期化済み、即ち、EEPROM160にプログラム識別子160Aが既に書き込まれていると判断する。CPU120は、初期化済みマーク書き込み領域Aに初期化済みマークが書き込まれ、かつ、初期化済みマーク書き込み領域Bに初期化済みマークが書き込まれていなければ、EEPROM160は初期化済みであると判断し、初期化済みマーク書き込み領域Bに初期化済みマークを書き込む。CPU120は、初期化済みマーク書き込み領域Aに初期化済みマークが書き込まれておらず、かつ、初期化済みマーク書き込み領域Bに初期化済みマークが書き込まれていれば、EEPROM160は初期化済みであると判断し、初期化済みマーク書き込み領域Aに初期化済みマークを書き込む。CPU120は、初期化済みマーク書き込み領域A及び初期化済みマーク書き込み領域Bに初期化済みマークが書き込まれていなければ、EEPROM160が初期状態であると判断する。この場合、CPU120は、制御プログラム320の実行を開始したとき、プログラム識別子160Aのコピー及び制御データの書き込みを実行した後に、初期化済みマーク書き込み領域A及び初期化済みマーク書き込み領域Bに初期化済みマークを書き込む。
次の電源投入後、CPU120は、起動プログラム300の実行を開始したとき、チェックサムAを使用してプログラム識別子書き込み領域Aのプログラム識別子160A、及び、チェックサムBを使用してプログラム識別子書き込み領域Bのプログラム識別子160Aが正常であるか否かを判断する。そして、CPU120は、2つのプログラム識別子160Aが正常でありかつ一致していれば、EEPROM160は正常であると判断する。CPU120は、2つのプログラム識別子160Aが正常でありかつ一致していなければ、EEPROM160は異常であると判断する。CPU120は、一方のプログラム識別子160Aが正常でありかつ他方のプログラム識別子160Aが異常であれば、EEPROM160は正常であると判断し、一方のプログラム識別子160Aを他方のプログラム識別子書き込み領域に書き込む。CPU120は、2つのプログラム識別子160Aが異常であれば、EEPROM160は異常であると判断する。
従って、先の実施形態と同様に、冗長化されたプログラム識別子書き込み領域A及びプログラム識別子書き込み領域Bへのプログラム識別子160Aの書き込み状態を比較することで、例えば、EEPROM160の素子異常などを検知することができる。このため、電子制御装置100の故障などを早期に検知することができ、例えば、制御対象機器の不適切な制御を抑制することができる。
EEPROM160は、次のように、フラッシュROM140の書換え可能残数の管理にも使用することができる。なお、フラッシュROM140に書き込まれる制御プログラム320には、プログラム識別子の初期値320Aに加え、フラッシュROM140の書換え残数の初期値、例えば、書換え可能残数が100回である場合、その書き込み後の初期値99が格納されているものとする。また、EEPROM160には、プログラム識別子160Aに加え、制御プログラムA及びBに関するフラッシュROM140の書換え残数が夫々格納されるものとする。さらに、以下の説明においては、フラッシュROM140に制御プログラムA及びBが格納されることを前提とするが、その個数は任意である。
フラッシュROM140に制御プログラムA及びBが初めて書き込まれた直後には、図10に示すように、制御プログラムA及びBの書換え残数初期値が夫々99に設定されている。この状態では、EEPROM160に格納される、制御プログラムA及びBの書換え残数は未設定になっている。
フラッシュROM140に制御プログラムA及びBを書き込んで、電子制御装置100に電源を投入すると、起動プログラム300により制御プログラムA及びBが夫々起動され、図11に示すように、制御プログラムA及びBの書換え残数99がEEPROM160に転送される。その後、電子制御装置100に外部機器220が接続され、例えば、制御プログラムAを書き換える場合、図12に示すように、EEPROM160に書き込まれた制御プログラムAの書換え残数が98に更新される。制御プログラムAの書換え残数の更新後、図13に示すように、フラッシュROM140の制御プログラムAの格納領域が消去される。そして、外部機器220から電子制御装置100へと制御プログラムA’が転送され、図14に示すように、フラッシュROM140に制御プログラムA’が書き込まれる。
この状態では、制御プログラムA’に格納された書換え残数が99となっているが、EEPROM160における制御プログラムAの書換え残数は98のままである。従って、EEPROM160の書換え残数を参照することで、フラッシュROM140に制御プログラムAを書換え可能な回数を把握することができる。
電子制御装置100が車両に搭載されて市場に流通した後、例えば、機能向上などを目的として、フラッシュROM140に書き込まれた制御プログラム320を書き換えることが想定される。この場合、電子制御装置100に接続された外部機器220は、フラッシュROM140の制御プログラム320を書き換えると共に、EEPROM160に書き込まれた制御プログラム320のプログラム識別子160Aを書き換えるようにすればよい。なお、外部機器220は、制御プログラム320に限らず、起動プログラム300を書き換えるようにしてもよい。
上記実施形態について、様々な変形例を説明したが、これらを任意に組み合わせ、又は、その一部を組み替えることで、新たな変形例を生み出すことができる。従って、本発明は、上記実施形態に記載された内容に限らず、当業者であればこれらから容易に想起し得る技術的思想を含んだものであることを理解すべきである。
100 電子制御装置
120 CPU(プロセッサ)
140 フラッシュROM(第1の不揮発性メモリ)
160 EEPROM(第2の不揮発性メモリ)
160A プログラム識別子
300 起動プログラム
320 制御プログラム
320A プログラム識別子の初期値

Claims (10)

  1. 電気的にデータを書き換え可能な第1の不揮発性メモリと、電気的にデータを書き換え可能な第2の不揮発性メモリと、プロセッサと、を備え、制御プログラムを前記第1の不揮発性メモリに書き込み可能であると共に、前記制御プログラムの正誤を検証する識別子を前記第2の不揮発性メモリに書き込み可能な電子制御装置であって、
    前記プロセッサは、前記第2の不揮発性メモリにおける識別子の書き込み状態に応じて、前記制御プログラムに予め格納された識別子又は前記第2の不揮発性メモリに書き込まれた識別子のいずれかを選択して、前記制御プログラムの正誤を検証するように構成された、
    電子制御装置。
  2. 前記プロセッサは、前記第2の不揮発性メモリに識別子が書き込まれていれば、当該識別子を選択し、前記第2の不揮発性メモリに識別子が書き込まれていなければ、前記制御プログラムに予め格納された識別子を選択するように構成された、
    請求項1に記載の電子制御装置。
  3. 前記プロセッサは、前記第2の不揮発性メモリに識別子が書き込まれていなければ、前記第1の不揮発性メモリに書き込まれた制御プログラムに従って、当該制御プログラムに予め格納された識別子を前記第2の不揮発性メモリにコピーするように構成された、
    請求項1又は請求項2に記載の電子制御装置。
  4. 前記プロセッサは、前記第2の不揮発性メモリが正常である場合、前記制御プログラムに予め格納された識別子を前記第2の不揮発性メモリにコピーするように構成された、
    請求項3に記載の電子制御装置。
  5. 前記プロセッサは、前記第2の不揮発性メモリが初期状態であるか否かに応じて、当該第2の不揮発性メモリに識別子が書き込まれているか否かを判断するように構成された、
    請求項1〜請求項4のいずれか1つに記載の電子制御装置。
  6. 前記プロセッサは、前記第2の不揮発性メモリに書き込まれた識別子が正常である場合、当該第2の不揮発性メモリに書き込まれた識別子を選択して、前記制御プログラムの正誤を検証するように構成された、
    請求項1〜請求項5のいずれか1つに記載の電子制御装置。
  7. 前記プロセッサは、前記第2の不揮発性メモリに書き込まれた識別子が異常である場合、前記第1の不揮発性メモリに書き込まれた制御プログラムの実行を禁止するように構成された、
    請求項1〜請求項6のいずれか1つに記載の電子制御装置。
  8. 前記プロセッサは、前記第1の不揮発性メモリに書き込まれている起動プログラムに従って、前記制御プログラムの正誤を検証するように構成された、
    請求項1〜請求項7のいずれか1つに記載の電子制御装置。
  9. 電気的にデータを書き換え可能な第1の不揮発性メモリと、電気的にデータを書き換え可能な第2の不揮発性メモリと、を備え、制御プログラムを前記第1の不揮発性メモリに書き込み可能であると共に、前記制御プログラムの正誤を検証する識別子を前記第2の不揮発性メモリに書き込み可能な電子制御装置のプロセッサが、
    前記第2の不揮発性メモリにおける識別子の書き込み状態に応じて、前記制御プログラムに予め格納された識別子又は前記第2の不揮発性メモリに書き込まれた識別子のいずれかを選択して、前記制御プログラムの正誤を検証する、
    制御プログラム検証方法。
  10. 前記プロセッサが、前記第2の不揮発性メモリに識別子が書き込まれていなければ、前記第1の不揮発性メモリに書き込まれた制御プログラムに従って、当該制御プログラムに予め格納された識別子を前記第2の不揮発性メモリにコピーする、
    請求項9に記載の制御プログラム検証方法。
JP2017185973A 2017-09-27 2017-09-27 電子制御装置及び制御プログラム検証方法 Active JP6708596B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017185973A JP6708596B2 (ja) 2017-09-27 2017-09-27 電子制御装置及び制御プログラム検証方法
US16/647,391 US11169828B2 (en) 2017-09-27 2018-03-20 Electronic control unit and method for verifying control program
PCT/JP2018/011165 WO2019064644A1 (ja) 2017-09-27 2018-03-20 電子制御装置及び制御プログラム検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017185973A JP6708596B2 (ja) 2017-09-27 2017-09-27 電子制御装置及び制御プログラム検証方法

Publications (2)

Publication Number Publication Date
JP2019061520A JP2019061520A (ja) 2019-04-18
JP6708596B2 true JP6708596B2 (ja) 2020-06-10

Family

ID=65901497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017185973A Active JP6708596B2 (ja) 2017-09-27 2017-09-27 電子制御装置及び制御プログラム検証方法

Country Status (3)

Country Link
US (1) US11169828B2 (ja)
JP (1) JP6708596B2 (ja)
WO (1) WO2019064644A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402192B2 (en) * 2017-07-25 2019-09-03 Aurora Labs Ltd. Constructing software delta updates for vehicle ECU software and abnormality detection based on toolchain
DE112021002282T5 (de) * 2020-06-17 2023-04-13 Hitachi Astemo, Ltd. Elektronische steuervorrichtung und aktualisierungsverfahren für steuerungssoftware

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3127703B2 (ja) * 1994-02-25 2001-01-29 株式会社デンソー ワンチップマイクロコンピュータを具える電子制御装置及びその制御データ記憶方法
JP2002149412A (ja) 2000-11-10 2002-05-24 Denso Corp 電子制御装置
JP4561028B2 (ja) * 2002-06-11 2010-10-13 コニカミノルタホールディングス株式会社 起動装置、コンピュータ起動プログラム、記録媒体及びコンピュータ起動方法
JP3714420B2 (ja) * 2002-08-13 2005-11-09 セイコーエプソン株式会社 データ転送制御装置、電子機器、プログラム及び電子機器の製造方法
US8844022B2 (en) * 2006-06-19 2014-09-23 Broadcom Corporation Method and system to allow system-on-chip individual I/O control to be disabled and enabled by programmable non-volatile memory
US9395968B1 (en) * 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
JP4620158B2 (ja) * 2009-03-31 2011-01-26 株式会社東芝 コンテンツ保護装置およびコンテンツ保護方法
US10262158B1 (en) * 2017-07-27 2019-04-16 American Megatrends, Inc. Restricting the use of a firmware tool to a specific platform

Also Published As

Publication number Publication date
US20200218549A1 (en) 2020-07-09
WO2019064644A1 (ja) 2019-04-04
US11169828B2 (en) 2021-11-09
JP2019061520A (ja) 2019-04-18

Similar Documents

Publication Publication Date Title
JP2014035730A (ja) 車両用制御装置
JP4480815B2 (ja) メモリ書き換え方法及びコンピュータシステム
US11099949B2 (en) Method apparatus for resuming and recovery checking from interrupted programming of one-time programmable memory device
CN110809755A (zh) 电子控制系统
JP2007287022A (ja) 電子制御装置の情報記憶方法
CN112015447B (zh) 电子设备的系统更新方法及装置、电子设备及存储介质
JP6708596B2 (ja) 電子制御装置及び制御プログラム検証方法
CN110334486B (zh) 应用程序完整性校验方法及设备
JP3830867B2 (ja) シングルチップマイクロコンピュータおよびそのブート領域切り替え方法
KR101601751B1 (ko) 차량용 전자제어유닛 및 그 부트 소프트웨어 리프로그래밍 방법
KR102598510B1 (ko) 소프트웨어의 무결성 검증 방법 및 그 장치
JP2012118904A (ja) 情報処理装置
JP2016126699A (ja) 自動車用電子制御装置
JP7029366B2 (ja) 自動車用電子制御装置
JP5872982B2 (ja) 車両用制御装置
JP2019008693A (ja) 自動車用制御装置
US20100083073A1 (en) Data processing apparatus, memory controlling circuit, and memory controlling method
CN113176891A (zh) 一种基于Bootloader带有备份功能的ECU的程序烧写方法
JP2003271420A (ja) 電子制御装置
JP2004005152A (ja) 不揮発性メモリの書き換え装置
WO2020043361A1 (en) Installing application program code on a vehicle control system
JP2007041798A (ja) 情報処理装置及び情報処理装置のメモリ書き換え方法
JP6568826B2 (ja) 電子制御装置
US7490232B2 (en) Disk device using disk to rewrite firmware and firmware determination method
WO2021255984A1 (ja) 電子制御装置および制御用ソフトウェアの更新方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191121

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: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200521

R150 Certificate of patent or registration of utility model

Ref document number: 6708596

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250