JPWO2018042644A1 - 組込みシステムおよび組込みシステム制御方法 - Google Patents

組込みシステムおよび組込みシステム制御方法 Download PDF

Info

Publication number
JPWO2018042644A1
JPWO2018042644A1 JP2018502837A JP2018502837A JPWO2018042644A1 JP WO2018042644 A1 JPWO2018042644 A1 JP WO2018042644A1 JP 2018502837 A JP2018502837 A JP 2018502837A JP 2018502837 A JP2018502837 A JP 2018502837A JP WO2018042644 A1 JPWO2018042644 A1 JP WO2018042644A1
Authority
JP
Japan
Prior art keywords
read
data
consistency
reading
writing
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
Application number
JP2018502837A
Other languages
English (en)
Other versions
JP6351901B1 (ja
Inventor
智之 永塚
智之 永塚
吉章 片山
吉章 片山
努 元濱
努 元濱
優介 嶋井
優介 嶋井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6351901B1 publication Critical patent/JP6351901B1/ja
Publication of JPWO2018042644A1 publication Critical patent/JPWO2018042644A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

読み込み処理を開始する読込開始手段(211)と、読み込み処理ごとに読込IDを割り当て、割り当てられた読込IDの数を示す読込ID数を更新する読込整合開始手段(212)と、通信データを読み込む読込手段(213)と、読込手段による読み込みを終了する読込終了手段(214)と、読込IDと、書き込み処理中であるか否かを示すデータ書込中フラグと、データ書き込み処理時の読込ID数を示す書込時ID数と、を取得し、データ書込中フラグ、読込ID、書込時読込ID数と、に基づいて読み込まれたデータの整合性を判定する読込整合終了手段(215)と、を備えることで誤作動のない制御を可能とする組込みシステム(100)を提供する。

Description

この発明は共有メモリを備えた組込みシステム、その制御方法および共有メモリへの読み込み処理時のデータ整合性判定方法に関するものである。
機器に組み込まれて当該機器の機能を実現するための制御を主に行う組込みシステムが広く用いられている。組込みシステムでは、組込みシステムが備える複数の機能(ソフトウェアもしくはハードウェア)が共通のデータ(以下、共有データ)にアクセスする必要がある場合、該当する複数の機能が共有する特定のメモリ領域(以下、共有メモリ領域)に対象のデータを記憶する。例えば組込みシステムの通信デバイスが受信したデータが機器の制御に用いられる場合、通信デバイスを制御するソフトウェア(以下、デバイスドライバ)が共有メモリ領域に受信データを書き込み、機器制御ソフトウェア(以下、アプリケーションソフトウェア)が当該領域のデータを読み込む。この仕組みにより、共有メモリ領域内のデータは常に最新の状態に保たれ、アプリケーションソフトウェアは共有メモリ領域内の受信データを読み込むことで動作することができる。
この仕組みでは、受信データの読み込みタイミングはアプリケーションソフトウェアがデータを必要としたとき、受信データによる共有メモリ領域の書き込みタイミングは外部機器から通信パケットを受信した時となり、それぞれ独立したタイミングとなる。そのため、共有メモリ領域への受信データの書き込み中に当該受信データの読み込みを行うと、アプリケーションソフトウェアが読み込んだデータに不整合が発生する場合がある。
このようにアプリケーションソフトウェアが読み込んだデータに不整合が発生しないように共有データの読み込みと書き込みが同時に発生することを防止し、共有データへのアクセス中には他者が同一のデータにアクセスすることを禁止する排他処理が一般的には行われている。具体的な方法としては、共有メモリ領域アクセス時にロックを獲得することで、データ書き込みとデータ読み込みを排他する方法が一般的に用いられている。この方法を用いると、デバイスドライバが受信データにより共有メモリ領域に書き込む前にロックを獲得し、共有メモリ領域書き込み後にロックを解除するようにする。アプリケーションソフトウェアからは受信データの読み込み前にロックを獲得し、読み込み後にロックを解除するようにする。これにより、先にロックを獲得した方が途中で割り込まれることなく優先的に共有メモリ領域にアクセスできるようになり、更新中の共有データをアプリケーションソフトウェアが使用してしまうことがなくなる。
しかし当該排他方法では、アプリケーションソフトウェアからの受信データ読み込みがデバイスドライバによる受信データ書き込みより先行すると、デバイスドライバにより受信データを共有メモリ領域に書き込む処理が長時間待たされてしまう可能性がある。デバイスドライバは通信デバイスや通信プロトコルで規定された厳しい時間制約のもとに動作しており、前記のようにアプリケーションソフトウェアの処理が完了するまで待たされると、通信が継続できなくなり、誤動作を引き起こす可能性があるという問題点があった。
前記の問題を解決するため、共有メモリ領域への受信データの書き込みが共有メモリ領域からのデータの読み込みの完了を待たされることがなく、かつ、共有メモリ領域から読み込まれたデータに不整合が発生しないデータ読み込み方法が求められている。
このような読み込み方法として、受信データに付与された識別記号を用いることでデータ読み込み時に共有メモリ領域に書き込まれているデータの整合性を判定する方法が提案されている(特許文献1)。この方法では、共有メモリ領域へのデータ書き込み時にデータ先頭と末尾に同一の識別記号を付与して書き込み、読み込み時は、まず対象データの先頭と末尾の識別記号を読み込み、一致あるいは不一致によりデータの整合性を判定する。一致している場合はデータ書き込みが完了しているものとしてデータを読み込み、不一致の場合はデータ書き込み中として書き込み完了まで待機する。
さらに、受信データ名と当該受信データが格納されている場所との対応関係表を持ち、データ書き込み終了後に前記対応関係表を更新することで排他を実現する方法が提案されている(特許文献2)。この方法では、共有メモリ領域への書き込み時には領域内に予め確保した未使用領域に書き込むようにし、書き込み終了後に前記対応関係表を更新し、最新のデータ格納場所へと変更する。これにより、読み込み時に書き込み途中であっても対応関係表が更新されていないため古いデータを読み込むことができ、書き込み完了後は対応関係表が更新されているため新しいデータを読み込むことができる。そのため、書き込みと読み込みの処理を独立に行える。
実開平5−020146号公報 特開平5−158892号公報
従来の特許文献1に示す技術では、データごとに付与された識別記号により整合性を判定するため、データ単位の整合性しか判定できず、複数データが組み合わせで意味を持つような場合では整合性が判定できないという問題がある。
ここで、複数データの組み合わせで意味を持つような場合の例としては、例えば、ルームエアコンにおいて、ワイヤレスリモコンから運転モード(冷房、暖房など)を示すデータAと、設定温度(28℃など)を示すデータBを受信し、デバイスドライバが共有メモリ領域内のそれぞれのデータを書き込む場合が考えられる。
この例では、元々共有メモリ領域に書き込まれていたデータが「データA=暖房、データB=25℃」であり、ワイヤレスリモコンから「データA=冷房、データB=28℃」を受信したときに、データAのみ書き込みが完了した状態でアプリケーションソフトウェアが共有メモリ領域から受信データを読み込むと、「データA=冷房、データB=25℃」を読み込んでしまい、データAとデータB間の整合性が無くなり誤動作を引き起こす。
特許文献1に示す技術においても複数データを纏めて1つのデータとして扱えば整合性を判定できるが、読み込みあるいは書き込みするデータが大容量となり、その一部のみを更新したい場合であっても、データ全体を書き込む必要があるため、処理の非効率化を招くことになる。
また、従来の特許文献2に示す技術においてもデータごとの対応関係を利用するため特許文献1と同様にデータ単位での整合性しか判定できないという問題がある。
本発明は前記のような問題点を解決するためになされたもので、共有メモリからのデータの読み込みにおいて読み込まれる複数のデータの整合性を確認することができる、組込みシステムを実現することを目的とする。
上述した課題を解決し、目的を達成するために、本発明の組込みシステムは、アプリケーション部が実行するデータの読み込み処理を開始する読込開始手段と、読込開始手段にて開始されたそれぞれの読み込み処理に読込IDを割り当て、割り当てられた前記読込IDの数を示す読込ID数を更新する読込整合開始手段と、データを読み込む読込手段と、読込手段によるデータの読み込みを終了する読込終了手段と、読込IDと、書込み処理中であるか否かを示すデータ書込中フラグと、データ書き込み処理時の読込ID数を示す書込時ID数と、を取得し、データ書込中フラグ、読込ID、書込時ID数と、に基づいて読み込まれたデータの整合性を判定する読込整合終了手段と、を備えるものである。
また、本発明の組込みシステム制御方法は、データ読み込み処理開始時に読み込み処理を識別するための読込IDを割り当てる読込ID割り当てステップと、共有メモリからデータを読み込むデータ読み込みステップと、データ読み込みステップの終了時に共有メモリから割り当てられた読込IDの数である読込ID数と、共有メモリへデータ書き込み処理中であるか否かのフラグであるデータ書込中フラグと、共有メモリへのデータ書き込み処理時の読込ID数である書込時ID数とを含む整合性情報を取得する整合性情報取得ステップと、整合性情報取得ステップにて取得したデータ書込中フラグが書き込み中ではなく、かつ、読込IDが書込時ID数よりも大きい場合にデータ読み込みステップにて読み込まれたデータに整合性が有ると判定する整合性判定ステップと、を有するものである。
また、本発明のデータ整合性判定方法は、共有メモリからのデータ読み込み処理開始時に読込開始処理を識別するために割り当てられる読込IDと、割り当てられた読込IDの数を示す読込ID数と、共有メモリへのデータ書き込み中である否かを示すデータ書込中フラグと、データ書き込み処理時の読込ID数を示す書込時ID数と、に基づいて読み込まれたデータに整合性があるか否かを判定するものである。
さらに、本発明のデータ整合性判定方法は、共有メモリからのデータ読み込み終了時に、共有メモリにデータ書き込み中であるか否かと、当該読み込み処理が何番目に開始された読み込み処理であるかと、共有メモリへのデータ書き込み処理時に実行されていた読み込み処理は何番目に開始された読み込み処理まで含んでいるかと、に基づいて読み込まれたデータに整合性があるか否かを判定するものである。
本発明にかかる組込みシステムは、前記の構成を備えるため、共有メモリから読み込む複数のデータに整合性が有ることを保証でき、読み込んだデータの不整合に起因する誤作動のない制御を可能とする。
本発明の実施の形態1における組込みシステム100のシステム構成の一例を示す構成図である。 本発明の実施の形態1における組込みシステムのソフトウェア200のソフトウェア構成の一例を示す構成図である。 本発明の実施の形態1における通信データ管理テーブル124内の通信データ管理テーブル構造の一例を示すテーブル構造図である。 本発明の実施の形態1における整合性情報データベース134内の整合性情報のデータ構造の一例を示すデータ構造図である。 本発明の実施の形態1におけるデータ読込処理部210の処理シーケンスの一例を示すフローチャートである。 本発明の実施の形態1における読込ID管理テーブル132読込ID管理テーブル構造の一例を示すテーブル構造図。 本発明の実施の形態1におけるデータ書込処理部240の処理シーケンスの一例を示すフローチャートである。 本発明の実施の形態1における書込ID管理テーブル133内の書込ID管理テーブル構造の一例を示すテーブル構造図。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態1における整合性有無判定の一例を示す説明図である。 本発明の実施の形態2における組込みシステム300のシステム構成の一例を示す構成図である。 本発明の実施の形態2における組込みシステムのソフトウェア400のソフトウェア構成の一例を示す構成図である。 本発明の実施の形態2におけるグループ分類管理テーブル125内のグループ分類管理テーブル構造の一例を示すテーブル構造図である。 本発明の実施の形態2における整合性情報データベース134内の整合性情報のデータ構造の一例を示すデータ構造図である。 本発明の実施の形態2におけるデータ読込処理部210の処理シーケンスの一例を示すフローチャートである。 本発明の実施の形態2におけるデータ書込処理部240の処理シーケンスの一例を示すフローチャートである。
以下に、本発明にかかる組込みシステムの実施の形態を図面にもとづいて詳細に説明する。以下で参照する図面においては、同一もしくは相当する部分に同一の符号を付している。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は本発明の実施の形態1に係る組込みシステム100のシステム構成の一例を示す構成図であり、図2は本発明の実施の形態1に係る組込みシステムのソフトウェア200のソフトウェア構成の一例を示す構成図である。
図1において、組込みシステム100はCPU(Central Processing Unit)110、ROM(Read Only Memory)120、RAM(Random Access Memory)130、通信デバイス140を備え、CPU110はROM120に格納された各コード領域のプログラムを実行し、データ読み込みおよび書き込みを制御する制御部であり、ROM120とRAM130はデータを記録する共有メモリであり、通信デバイス140はUART(Universal Asynchronous Receiver Transmitter)などの外部機器とのデータの送受信を行う通信部である。なお、ROM120とRAM130の詳細は、後述する。
図2において、ソフトウェア200はアプリブロック201と通信制御部202とデバイスドライバ203により構成され、ROM120とRAM130に格納されて、CPU110上で実行される。
ここで、アプリブロック201は、製品あるいはシステムごとに作成されるアプリケーションソフトウェア(アプリケーション部)であり、通信制御部202からのデータの読み込み、そして読み込んだデータによる製品あるいはシステム独自の制御を行う。通信制御部202は、アプリブロック201あるいはデバイスドライバ203からの要求に応じてROM120からのデータの読み込み、あるいはRAM130に対するデータの読み込みと書き込みを行う。デバイスドライバ203は、通信デバイス140や、通信相手により規定される通信プロトコルで規定された通信処理を行う。なお、アプリブロック201、通信制御部202およびデバイスドライバ203の詳細は、後述する。
通信制御部202は、データ読込処理部210、通信データ保存部220、整合性情報保存部230、データ書込処理部240より構成される。
データ読込処理部210は、読込開始処理211、読込整合開始処理212、読込処理213、読込終了処理214、読込整合終了処理215により構成され、アプリブロック201がデータを読み込む際に実行される。なお、データ読込処理部210を構成する各処理は、組込みシステム100を構成する手段に相当する。読込開始処理211は、アプリブロック201から呼び出されデータ読み込みの処理を開始する。読込整合開始処理212は、読込開始処理211から呼び出され、整合性情報保存部230を、データ読み込み開始を示す状態に更新する。読込処理213は通信データ保存部220からアプリブロック201から読込要求のあったデータを読み込む。読込終了処理214は、読込処理213から呼び出されデータ読み込み処理を終了する。読込整合終了処理215は、読込終了処理214から呼び出され、整合性情報保存部230を、データ読み込み終了を示す状態に更新する。なお、読込整合開始処理212および読込整合終了処理215における整合性情報の更新方法の詳細は後述する。
通信データ保存部220は、ROM120に格納された通信データ管理テーブル124とRAM130に格納された通信データデータベース131により構成される。通信データ管理テーブル124は、通信データデータベース131内におけるデータ格納位置の管理テーブルであり、データ読込処理部210およびデータ書込処理部240の読み込みあるいは書き込み処理において参照される。通信データデータベース131は、通信デバイス140により受信したデータが保存される領域でデータ書込処理部240により更新され、常に最新の状態に保たれる。なお、通信データデータベース131は受信データのみでなく、送信データを記憶してもよい。
整合性情報保存部230は、RAM130に格納された読込ID管理テーブル132、書込ID管理テーブル133および整合性情報データベース134により構成される。読込ID管理テーブル132は、アプリブロック201が実行する通信データデータベース131からのデータ読み込み処理ごとに割り当てられ、それぞれの読み込み処理の読み込み対象データと対応付けられる読込IDの管理テーブルである。書込ID管理テーブル133は、デバイスドライバ203が実行する通信データデータベース131へのデータ書き込み処理ごとに割り当てられ、それぞれの書き込み処理の書き込み対象データと対応付けられる書込IDの管理テーブルである。また、整合性情報データベース134はアプリブロック201が通信データデータベース131から読み込んだデータの整合性を判定するための整合性情報を保存するデータベースである。
データ書込処理部240は、通信プロトコルで規定された受信タイミングにおいてデバイスドライバ203から呼び出されるもので、書込開始処理241、書込整合開始処理242、書込処理243、書込整合処理244、書込終了処理245、書込整合終了処理246により構成される。なお、データ読込処理部240を構成する各処理は、組込みシステム100を構成する手段に相当する。書込開始処理241はデバイスドライバ203に呼び出され、通信制御部202への受信データ書き込みの処理を開始する。書込整合開始処理242は書込開始処理241から呼び出され、整合性情報保存部230を、データ書き込み開始を示す状態に更新する。書込処理243は、デバイスドライバ203が外部機器から受信したデータを、通信データ保存部220へ書き込む処理である。書込整合処理244は、書込処理243から呼び出され、整合性情報保存部230を、データ書き込みを示す状態に更新する。書込終了処理245は、書込整合処理244から呼び出され、通信制御部202への受信データ書き込み処理を終了する。書込整合終了処理246は、書込終了処理245から呼び出され、整合性情報保存部230を、データ書き込み終了を示す状態に更新する。
ROM120にはアプリブロック201、通信制御部202を構成するデータ読み込み処理部210とデータ書き込み処理部240、デバイスドライバ203のそれぞれのブログラムコードであるアプリブロックコード121、通信制御部コード122、デバイスドライバコード123、通信データ保存部を構成する通信データ管理テーブル124が格納される。ここで、通信データデータベース131内のデータ格納位置は例えばデータアドレスによって管理されており、通信データ管理テーブル124内の管理テーブルの構成の一例は、図3に示す受信データ名とデータアドレス、およびデータの大きさを示すデータサイズが対応付けられた管理テーブルとなる。
また、RAM130には、通信データ保存部を構成する通信データデータベース131と整合性情報保存部230を構成する読込ID管理テーブル132、書込ID管理テーブル、整合性情報データベース134が格納される。
図4は、整合性情報データベース134内の整合性判定のための整合性情報のデータ構造図の一例であり、データ書き込みが開始された回数を保持する書込開始回数、通信データデータベース131にデータ書き込み中(書き込みを実行し、書き込み実行可能状態を維持している状態)であるか否かを示すフラグであるデータ書込中フラグ、割り当てられた読込IDの個数を保持する読込ID数、割り当てられた読込IDのうちデータ読み込み中であるIDの数を保持する読込中ID数、データ書き込みが行われた時点での読込IDの数を保持する書込時ID数で構成される。
書込開始回数は、書込整合開始処理242が実行された時にインクリメント(+1)され、書込整合終了処理246が実行された時にデクリメント(−1)される。初期値は0である。
データ書込中フラグは、書込整合処理244が実行された時にTRUEとなり、書込整合終了処理246が実行された時にデクリメントされた書込開始回数が0であった場合にFALSEとなる。初期値はFALSEである。
読込中ID数は、読込整合開始処理212が実行された時にインクリメントされ、読込整合終了処理215が実行された時にデクリメントされる。初期値は0である。
読込ID数は、読込整合開始処理212が実行された時にインクリメントされ、読込整合終了処理215が実行された時にデクリメントされた読込中ID数が0であった場合に0となる。初期値は0である。ここで読込ID数は、読み込み処理が途切れることなく連続して行われた読み込み処理の数をカウントすることができる。
また、読込IDは、読込整合開始処理212を実行した時に、インクリメント後の読込ID数が割り当てられる。
読込IDの割り当て方法についての詳細は後述する。
書込時ID数は、書込整合処理244が実行された時に読込ID数の値がコピーされ、読込整合開始処理215が実行された時に読込ID数が0となった場合に0となる。初期値は0である。
次に動作について説明する。
まず、図2を用いて概要を説明する。まず、通信データデータベース131に対しては、データ読込処理部210の動作より、データ書込処理部240の動作を優先させることとする。その実現のため、データ読込処理部210とデータ書込処理部240は独立して動作させ、データ読込処理部210の動作によるデータ読み込み中にデータ書込処理部240の動作による受信データ書き込みが実行された場合には、データ書込処理部240の書き込みは書き込み成功とするが、データ読込処理部210の読み込みは読み込んだデータに整合性が無いとして読み込み失敗とする。なお、読み込み失敗時には、データ読込処理部210をリトライさせることで、読み込んだ受信データに整合性が有るまで繰り返させるとしてもよい。一定回数リトライしても整合性が有る受信データが得られない場合は、エラー処理としてデータ読込処理部210の呼び出しもとに読み込み失敗を通知する。なお、以下では、リトライが実施される場合を例に説明する。
読み込み成功か否かの判定は、読込IDにより行う。読込IDは整合性情報保存部230内の読込ID管理テーブル132で管理され、読込整合開始処理212を実行した時に割り当てられる。一度割り当てられた読込IDは、読込整合開始処理212と対となる読込整合終了処理215が実行される時に未割当となるが、処理中の読み込み処理がすべて終了するまで、つまり読込ID数が0となるまでは再度割り当てられることは無い。整合性情報データベース134内の整合性情報は、読込整合開始処理212、読込整合終了処理215、書込整合開始処理242、書込整合処理244、書込整合終了処理246の実行により逐次更新される。読込終了処理214の実行時に当該整合性情報と読み込み処理に割り当てられる読込IDとを参照することで、読み込みの整合性判定を行い読み込みの成否を判定する。
データ読込処理部210における処理シーケンスについて、図5を用いて説明する。なお、整合性判定方法の詳細は、後述する。
まず、読み込み開始処理211にてリトライ回数を0とする(ステップS101)。このリトライ回数はデータ読み込みに失敗したら1ずつ加算していき、読み込み前に規定回数まで達したか否かの判定に使用することで、読み込みの最大リトライ回数を決定するために使用する。
次に、リトライ回数が予め決められた回数に達しているか否かを確認する(ステップS102)。具体的には予め最大リトライ回数としてN(Nは2以上の自然数)回を設定し、リトライ回数と最大リトライ回数N回とを比較し、リトライ回数の方が小さい場合は、ステップS103に移行し、最大リトライ回数N回がリトライ回数と同じである場合は、必要に応じてデータ読込処理部210の呼び出しもとに読込失敗を通知するなどの読み込み失敗時のエラー処理を実施し(ステップS111)、データ読み込み失敗として終了する。
ステップS103では、読込整合開始処理212にて新しい読込IDを開始された読み込み処理に対して割り当て、整合性情報保存部230の読込ID管理テーブル132に登録する。割り当てられた読込IDの管理テーブルの例を図6に示す。具体的には、アプリブロック201から読み込み要求された1つ以上の対象データの組みに対して読込IDを割り当て、その値には、読込ID数をインクリメントした後の値が割り当てられる。
このように読込IDは、読み込み処理に対して割り当てられるため、1つの読み込み処理で読み込まれる複数の対象データを1つの組みとして管理し、読み込みの整合性を判断できる。
なお、ここで読込中ID数もインクリメントされる。
次に読込処理213にて通信データ管理テーブル124から読み込み対象データの通信データデータベース131内での格納位置を読み出し(ステップS104)、その位置情報をもとに受信データを読み込む(ステップS105)。
ステップS106では、読込終了処理214にて同じ読込IDの読み込み対象のデータを全て読み込んだか否かを判定する。読み込み対象データがまだある場合にはステップS104およびステップS105に戻りさらに対象データを読み込む。読み込み対象の全てのデータを読み込んだら、ステップS107に移行する。なお、ここで必要なデータとはアプリブロック201から読み込み要求された対象データの組みであり、例えば、図6の読込ID管理テーブル132により判定する。
ステップS107では、読込整合終了処理215にてステップS103において割り当てられた読込IDで整合性情報データベース134の整合性情報を参照して整合性を判定する。次に、読込中ID数をデクリメントして読み込み中の割り当てられた読込IDの数を1減らし、さらに対応する読込IDの情報を削除することで割り当てられた読込IDを未割当とする(ステップS108)。なお、ここで、デクリメントされた後の読込中ID数が0となった時、読込ID数も0とする。そのため、読み込みが整合性無しと判定された場合も読込中の読み込み処理が他にない場合は、読込ID数は0となる。
判定処理ステップS109では、ステップS107で判定された整合性有無により移行する処理を判定する。ステップS107で整合性無しと判定された場合は、リトライ回数を1増やして(ステップS110)、ステップS102の判定へ戻る。ステップS107で整合性有りと判定された場合は、読み込み成功として終了する。
なお、データ読込処理部210における処理シーケンスを図5にて説明したが、これに限定されるものではない。例えば、ステップS109において整合性が無しと判定された場合、ステップS102に戻り再度読み込みを実行しているが、リトライに関わる処理を省略し読み込み失敗としてステップS111に移行する処理シーケンスとしてもよい。
データ書込処理部240における処理シーケンスについて、図7を用いて説明する。
まず、書込開始処理241にて書き込み処理を開始し、書込整合開始処理242にて書込開始回数をインクリメントすることで、受信データ書き込み開始を整合性情報データベース134に記録する(ステップS201)。これにより書き込みの準備ができたことを管理する。
ステップS202では、書込整合開始処理242にて新しい書込IDを開始された読み込み処理に対して割り当て、整合性情報保存部230の書込ID管理テーブル133に登録する。割り当てられた書込IDの管理テーブルの例を図8に示す。具体的には、デバイスドライバ203から書き込み要求された1つ以上の対象データの組みに対して書込IDを割り当て、その値には、書込開始回数をインクリメントした後の値が割り当てられる。
このように書込IDは、書き込み処理に対して割り当てられるため、1つの書き込み処理で書き込まれる複数の対象データを1つの組みとして管理することができる。
次に、書込処理243にて通信データ管理テーブル124から書き込み対象データの通信データデータベース131内での格納位置を読み出し(ステップS203)、その位置情報をもとに受信データを書き込む(ステップS204)。次に、書込整合処理244にて整合性情報データベース134内の情報を更新する。具体的には、データ書込中フラグをTRUEにし、読込ID数を書込時ID数にコピーする(ステップS205)。このことにより割り当て済みの読込IDによるデータ読み込みは読込整合終了処理215の実行時に全て整合性無しと判定される。
ステップS206では、書込終了処理245にてデバイスドライバ203から要求のあった書き込み対象のデータを全て書き込んだか否かを判定する。書き込み対象データがまだある場合にはステップS203、ステップS204およびステップS204に戻りさらに対象データを書き込む。書き込み対象の全てのデータを書き込んだら、ステップS207へ移行する。なお、ここで必要なデータとはデバイスドライバ203から書き込み要求された対象データの組みであり、例えば、図8の書込ID管理テーブル133により判定する。
ステップS207では、書込整合終了処理246にて書込開始回数をデクリメントすることで、整合性情報データベース134に対しステップS201で記録した受信データ書き込み開始の情報を削除する。次に、書き込み成功としてデータ書き込みを終了する。
なお、データ書込処理部240の処理シーケンスにおいて、データ書き込みについて整合性情報に更新するタイミングは図7に示したタイミングに限定されない。例えば、データ書き込みを整合性情報へ反映するステップS205を受信データの書き込みステップS204の前に実行してもよい。
整合性情報データベース134内の更新方法と、読込IDの割り当て方法と、整合性判定方法の具体例を、図9から図18を用いて説明する。なお、図面において整合性情報について更新された値を下線にて示している。
ここで、整合性有無の判定は、読込整合性終了処理215の実行時にデータ書込中フラグ、および対象データが対応付けてられている読込IDと書込時ID数との比較により行う。具体的には読込整合性終了処理215の実行時のデータ書込中フラグがFALSE、かつ、読込IDが書込時ID数より大きい場合に整合性有りと判定し、それ以外の場合、整合性無しとする。
これは整合性判定対象のデータの読み込み終了時にデータが書き込み中(書き込みを実行し、書き込み実行可能状態を維持している状態)ではなく書き込みが終了していることと、整合性判定対象データに対応する読込処理が何番目に開始された読み込み処理であるかを示す読込IDと、最後に実行されたデータ書き込み時に何番目の読込処理が開始されたていたかを示す書込時ID数により、読込IDが書込時ID数より大きいことで書き込み時に整合性判定対象のデータの読み込みが開始されていないことを確認することを意味している。なお、ここでデータが書き込み中(書き込みを実行し、書き込み実行可能状態を維持している状態)ではないことを確認するのは、この状態においてはいつ書き込みが行われてもよく、整合性情報の更新状況などによって発生する可能性のある整合性判定の誤りを防ぐためである。
図9は、(B)−(D)を組みとする読み込みと、(C)−(H)を組みとする読み込みと、(E)−(F)−(G)を組みとする書き込みが行われ、書き込みは(D)と(H)の間のタイミングで行われた場合の例である。このとき、(B)−(D)間では書き込みが行われていないため(D)では整合性有りと判定され、(C)−(H)間では書き込みが行われているため(H)で整合性無しと判定されることが期待される。
各データの初期値より読み込みあるいは書き込みが行われていない前提条件は(A)のようになっている。ここで1回目の読込整合開始処理212が実行されると前記の規則に従い(B)のように更新され、読込IDにはインクリメント後の読込ID数の値、1が割り当てられる。次に2回目の読込整合開始処理212が実行されると(C)のように更新され、読込IDには2が割り当てられる。次に(D)では、読込整合終了処理215が実行され、整合性有無の判定が行われる。まず、読込整合終了処理215により内容が更新される前の整合性情報(ここでは(C)時点の内容)からデータ書込中フラグと書込時ID数を取得する。ここではデータ書込フラグはFALSEであり、割り当てられている読込IDが1、書込時ID数が0であり、読込IDの値の方が大きくなっているため整合性有りと判定される。判定後、整合性情報の内容は(D)となる。次に書き込み処理が行われ、前記の規則に従い、(E)(F)(G)のように更新される。次の(H)では、(D)と同様に読込整合終了処理215が実行され、整合性有無の判定が行われ、(G)でのデータ書込中フラグと書込時ID数が参照される。ここでは、データ書込中フラグがFALSE、読込IDが2、書込時ID数が2となり、読込IDと書込時ID数が等しく整合性有りの条件を満たしていないため、整合性無しと判定される。判定後、整合性情報の内容は(H)となる。
前記のように(D)、(H)の読込終了処理214実行時の判定の結果、(B)−(D)を組みとする読み込みは整合性有り、(C)−(H)を組みとする読み込みは整合性無しと判定され、期待通りの判定結果となる。
読み込み開始から終了の期間が、書き込み開始を含む場合の例を、図10を用いて説明する。この例では、(B)−(D)間で書き込みが開始されているものの、実際に書き込まれるのは(D)の後であるため、整合性有りと判定されることが期待される。
前記規則に従い整合性情報データベース132内の整合性情報を更新すると、(D)における読み込み終了時の整合性判定時に参照する(C)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が0となり、読込IDの値の方が大きくなっているため、読み込みは整合性有りと判定される。この結果は期待通りの判定結果である。
読み込み開始から終了の期間が、書き込みを含む場合の例を、図11を用いて説明する。この例では、読み込み開始から終了の期間で書き込みが実行されているため、整合性無しと判定されることが期待される。
前記規則に従い整合性情報データベース132内の整合性情報を更新すると、(E)における整合性判定時に参照する(D)の整合性情報は、データ書込中フラグがTRUE、割り当てられていた読込IDが1、書込時ID数が1となり、データ書込中フラグがFALSEではなく、さらに読込IDと書込時ID数が等しく整合性有りの条件を満たしていないため、整合性無しと判定される。この結果は期待通りの判定結果である。
読み込み開始から終了の期間が、書き込み終了を含む場合の例を、図12を用いて説明する。この例では、読み込み開始時点で書き込み開始されているものの、読み込み終了までの間に書き込みが行われずに書き込み終了されているため、整合性有りと判定されることが期待される。
前記規則に従い整合性情報データベース132内の整合性情報を更新すると、(F)における整合性判定時に参照する(E)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が0となり、読込IDの値の方が大きくなっているため、整合性有りと判定される。この結果は期待通りの判定結果である。
読み込み開始から終了の期間が、書き込み開始と書き込みのみを含む場合の例を、図13を用いて説明する。この例では、(B)−(E)間でデータ書き込みがされているため、整合性無しと判定されることが期待される。
前記規則に従い整合性情報データベース134内の整合性情報を更新すると、(E)における整合性判定時に参照する(D)の整合性情報は、データ書込中フラグがTRUE、割り当てられている読込IDが1、書込時ID数が1となり、データ書込中フラグがFALSEではなく、さらに読込IDと書込時ID数が等しく整合性有りの条件を満たしていないため、整合性無しと判定される。の結果は期待通りの判定結果である。
読み込み開始から終了の期間が、書き込みと書き込み終了のみを含む場合の例を、図14を用いて説明する。この例では、(C)−(D)間でデータ書き込みがされているため、整合性無しと判定されることが期待される。
前記規則に従って整合性情報データベース134内の整合性情報を更新すると、(F)における整合性判定時に参照する(E)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が1となり、書込IDと書込時ID数が等しく整合性有りの条件を満たしていないため、整合性無しと判定される。この結果は期待通りの判定結果である。
書き込み開始から書き込みの期間が、読み込み開始と読み込み終了を含む場合の例を、図15を用いて説明する。この例では、読み込み開始時点で書き込み開始されているものの、書き込み開始後の初回の書き込み(E)より前に読み込み終了としているため、整合性有りと判定されることが期待される。
前記規則に従って整合性情報データベース134内の整合性情報を更新すると、(D)における整合性判定時に参照する(C)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が0となり、読込IDの値が書込時ID数よりも大きくなっているため、整合性有りと判定される。この結果は期待通りの判定結果である。
書き込みから書き込み終了の期間が、読み込み開始と読み込み終了を含む場合の例を、図16を用いて説明する。この例では、(B)−(F)間の最後の書き込み(C)より後に読み込みを行っているため整合性有りと判定すべきように思えるが、整合性判定を行う(E)時点では(C)が最後の書き込みであるかは不明であるため、整合性無しと判定されることが期待される。
前記規則に従って整合性情報データベース134内の整合性情報を更新すると、(E)における整合性判定時に参照する(D)の整合性情報は、データ書込中フラグがTRUE、割り当てられている読込IDが1、書込時ID数が0となり、データ書込中フラグがFALSEではなく整合性有りの条件を満たしていないため、整合性無しと判定される。この結果は期待通りの判定結果である。
(B)−(G)を組みとする読み込みと、(E)−(H)を組みとする読み込みと、(C)−(D)−(F)を組みとする書き込みが行われ、書き込みは(B)と(E)の間のタイミングで行われた場合の例を、図17を用いて説明する。この例では、(B)−(G)間での読み込みについては(B)−(G)間でデータの書き込みがされているため、整合性無しと判定されることが、(E)−(H)間での読み込みについては(E)−(H)間では読み込み終了までの間に書き込みが行われずに書き込み終了されているため整合性有りと判定されることが期待される。
前記規則に従って整合性情報データベース134内の整合性情報を更新すると、(G)における整合性判定時に参照する(F)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が1となり、読込IDが書込時IDと等しく整合性有りの条件を満たしていないため、整合性無しと判定される。さらに(H)における整合性判定時に参照する(G)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが2、書込時ID数が1となり、読込IDの値の方が大きくなっているため、整合性有りと判定される。
前記のように(D)、(H)の読込終了処理214実行時の判定の結果、(B)−(G)を組みとする読み込みは整合性無し、(E)−(H)を組みとする読み込みは整合性有りと判定され、期待通りの判定結果となる。
読み込み開始から終了の期間に、書き込み開始と書き込み終了を含みさらに書き込みを2回含む場合の例を、図18を用いて説明する。この例では、(B)−(G)間で書き込みがされているため、整合性無しと判定されることが期待される。
前記規則に従って整合性情報データベース134内の整合性情報を更新すると、(D)および(E)において2回書き込みが行われているため、それぞれにおいてデータ書込中フラグおよび書込時ID数の更新が行われる。(G)における整合性判定時に参照する(F)の整合性情報は、データ書込中フラグがFALSE、割り当てられている読込IDが1、書込時ID数が1となり、読込IDが書込時ID数と等しく整合性有りの条件を満たしていないため、整合性無しと判定される。
以上のように、何れの例においてもアプリブロック201から受信データを取得する場合に、その整合性有無を判定することが可能となる。整合性無しの場合には読み込みをリトライし、整合性が有るデータを読み込みことができるまで繰り返すことで、読み込んだデータに整合性があることが保証される。また、アプリブロック201からの受信データの読み込み処理よりも、デバイスドライバ203からの受信データ書き込みを優先させているため、デバイスドライバ203の処理がアプリブロック201の処理に待たされることが無くなり、デバイスドライバ203の処理が通信デバイスや通信プロトコルが規定している処理のタイミングを保証しやすくなる。
上述の説明では、通信デバイスによって受信されたデータをアプリブロックが読み込む場合について説明したが、この発明はこれに限られるものではない。例えば、種々のセンサによって取得されたデータがメモリに記録されて、アプリブロックが当該データを利用する場合などにも適用することができる。
また、本発明の実施例において整合性有無の判定のために追加した整合性情報データベース134は小規模であり、特許文献2に示す技術のように通信データを二重化することもなくメモリ使用効率を悪化させることがない。そのため通信データの二重化を許容できないような小規模なメモリを持つ製品あるいはシステムに適用することも容易である。
以上のように、実施の形態1の組込みシステム100によれば、1つ以上のデータを対象とした読み込み処理の整合性有無を判定するように構成したので、読み込んだ複数のデータに整合性が有ることを保証でき、誤作動のない制御を可能とするという効果を得ることができる。
実施の形態2.
実施の形態1では、読み込み開始から終了の間に書き込みが実行された場合は全て読み込み失敗と判定し、リトライが必要となる実施例について説明した。実施の形態2では、読み込んだデータの整合性に関係のあるデータが書き込まれた場合にのみ読み込み失敗と判定することにより、より適切な整合性有無の判定が可能な実施例について説明する。
具体的には、通信データデータベース131内のデータを、整合性に関係のあるいくつかのグループに分類しておき、アプリブロック201が要求する読み込み対象のデータと、デバイスドライバ203が要求する書き込み対象のデータが異なるグループに属する場合は、読み込みあるいは書き込みのタイミングが被ったとしても読み込み失敗と判定しないことにより実現する。その結果、読み込みリトライが発生する頻度を低減させることができる。
図19は本発明の実施の形態2に係る組込みシステム300のシステム構成の一例を示す構成図であり、図20は本発明の実施の形態2に係る組込みシステムのソフトウェア400のソフトウェア構成の一例を示す構成図である。
図19において、組込みシステム300の実施の形態1の組込みシステム100との相違点はROM120がグループ分類管理テーブル125を格納していることであり、それ以外の構成は同じ構成となっている。
また、図20において、組込みシステムのソフトウェア400の実施の形態1の組込みシステムのソフトウェア200との相違点は整合性情報保存部230がグループ分類管理テーブル125を備えていることであり、それ以外の構成は同じ構成となっている。
グループ分類管理テーブル125は、通信データデータベース131内のデータを整合性に関係のあるデータに分類したグループの管理テーブルであり、そのデータ構造の一例は図21のようになる。組込みシステム300は、データ読込処理部210の読込開始処理211、データ書込処理部240の書込開始処理241の実行時にグループ分類管理テーブル125を参照することにより、対象とするグループを指定し、以降の処理で整合性情報データベース134を参照あるいは更新する時には指定したグループを使用することとする。これにより、読み込みあるいは書き込みのタイミングが被ったとしても、対象とするグループが異なるのであれば、整合性判定に使用する整合性情報のグループが異なるため、読み込み失敗と判定されることはない。
また、図22は、実施の形態2における整合性情報データベース134内の整合性情報のデータ構造の一例であり、それぞれのグループの整合性情報の構成は図4に示す実施の形態1と同様である。なお、図21、図22は例として通信データ全体を4グループに分けた場合のものであり、分けるグループ数は自由に選択できるものとする。また、グループの分け方はルームエアコン、テレビなどの対象となる製品あるいはシステムごとに分けてもよいし、空調設定変更処理などの対象となる処理ごとに分けてもよい。
図19および図20におけるグループ管理テーブル125以外の構成は、実施の形態1の図1および図2の構成と同じであるため詳細な説明は省略する。
実施の形態2のデータ読込処理部210における処理シーケンスについて、図23を用いて説明する。
通信データをグループ分けしていない図5との相違点は、図22で示した整合性情報から、読み込み対象とするグループを選択する処理(ステップS301)が増えたことであり、それ以外の処理(ステップS302からステップS312)はそれぞれ図5のステップS101からステップS111に対応した処理である。但し、整合性情報に関わる処理(ステップS304、ステップS308、ステップS309)においてはステップS301で選択されたグループの整合性情報を使用することとする。
まず読込開始処理211にて読み込み対象とするグループの整合性情報を選択する(ステップS301)。具体的には、図21を参照することでアプリブロック201から読み込み要求のあったデータの対象グループを指定し、図22を参照することで対象グループの整合性情報を選択する。ここで選択された整合性情報中の対象グループをこれ以降の処理では参照あるいは更新する。次に、リトライ回数を0とする処理(ステップS302)、リトライ回数が予め決められた回数に達しているか否かを確認する処理(ステップS303)、およびステップS303においてリトライ回数が予め設定された最大リトライ回数N回に達している場合は読み込み失敗時のエラー処理(ステップS312)に移行する。これらの処理は図5のステップS101、S102、S111に相当する処理のため詳細な説明は省略する。
ステップS303にてリトライ回数が最大リトライ回数N回に達していない場合は、ステップS304に移行する。ステップS304では、読込整合開始処理212にて新しい読込IDを、開始された読み込み処理に対して割り当て、整合性情報保存部230の読込ID管理テーブル132に登録する。なお、ここで読込中ID数もインクリメントする。この処理は図5のステップS103に相当する処理のため詳細な説明は省略する。
ここで読込IDは同じグループに属する読み込み対象データに対して1つのIDを割り当てる。もし、複数のグループのデータを同時に読み込む必要がある場合は、グループごとに読込IDが割り当てられ、それぞれ別に管理する。
次に読込処理213にて通信データ管理テーブル124から読み込み対象データの通信データデータベース131内での格納位置を読み出し(ステップS305)、その位置情報をもとに受信データを読み込む(ステップS306)。ここで、データ読み込みでは同じグループに属する読み込み対象データのみを読み込むようにする。もし、複数のグループのデータを読み込む必要がある場合には、本処理シーケンスをそれぞれのグループに対して実行する。
ステップS307では、読込終了処理214にて同じグループで同じ読込IDの読み込み対象のデータを全て読み込んだか否かを判定する。この処理は図5のステップS106に相当する処理のため詳細な説明は省略する。
ステップS308の整合性有無の判定処理、ステップS309の読込IDを未割当とする処理はそれぞれ図5のステップS107、ステップS108に相当する処理である。そのため処理の詳細な説明は省略する。但し、ここで参照する整合性情報はS301にて選択したグループの整合性情報である。
判定処理ステップS310では、ステップS308で判定された整合性有無により移行する処理を判定する。ステップS310で整合性無しと判定された場合は、リトライ回数を1増やして(S311)、ステップS303の判定へ戻る。ステップS310で整合性有りと判定された場合は、読み込み成功として終了する。
なお、データ読込処理部210における処理シーケンスを図23にて説明したが、これに限定されるものではない。例えば、ステップS310において整合性が無しと判定された場合、ステップS303に戻り再度読み込みを実行しているが、リトライにかかわる処理を省略し読み込み失敗としてステップS312に移行する処理シーケンスとしてもよい。
実施の形態2のデータ書込処理部240における処理シーケンスについて、図24を用いて説明する。
通信データをグループ分けしていない図7との相違点は、図22で示した整合性情報から、書き込み対象とするグループを選択する処理(ステップS401)が増えたことであり、それ以外の処理(ステップS402からステップS407)はそれぞれ図7のステップS201からステップS206に対応した処理である。但し、整合性情報に関わる処理(ステップS402、ステップS405、ステップS407)においてはステップS401で選択された行の情報を使用することとする。
まず書込開始処理241にて書き込み対象とするグループの整合性情報を選択する(ステップS401)。具体的には、図21を参照することでデバイスドライバ203から書き込み要求のあったデータの対象グループを指定し、図22を参照することで対象グループの整合性情報を選択する。ここで選択された整合性情報中の対象グループをこれ以降の処理では参照あるいは更新する。
次に、書込整合開始処理242にて受信データ書き込み開始を整合性情報データベース134の整合性情報に記録する処理(ステップS402)、新しい書込IDを、開始された書き込み処理に対して割り当て、整合性情報保存部230の書込ID管理テーブル133に登録する処理(ステップS403)、書込処理243にて通信データ管理テーブル124から書き込み対象データの通信データデータベース131内での格納位置を読み出す処理(ステップS404)、その位置をもとに受信データを書き込む処理(ステップS405)に移行する。これらの処理は図7のステップS201、S202、S203、S204に相当する処理であり、詳細な説明は省略する。但し、ここで、書込IDは同じグループに属する書き込み対象データに対して1つのIDを割り当てる。もし、複数のグループのデータを同時に読み込む必要がある場合は、グループごとに書込IDが割り当てられ、それぞれ別に管理し、本処理シーケンスをそれぞれのグループに対して実行する。
次に、書込整合処理244にて整合性情報データベース134内の整合性情報を更新する。(ステップS406)。この処理は図7のステップS205に相当する処理であり、詳細な説明は省略する。なお、ここで更新する整合性情報はステップS401にて選択したグループの整合性情報である。
ステップS407では、書込終了処理245にてデバイスドライバ203から要求のあった書き込み対象のデータを全て書き込んだか否かを判定し、ステップS408では、整合性情報データベース134に対しステップS402で記録した受信データ書き込み開始の情報を削除して、書き込み成功としてデータ書き込みを終了する。これらの処理は図7のステップS206、ステップS207に相当する処理のため詳細な説明は省略する。
なお、データ書込処理部240の処理シーケンスにおいて、データ書き込みについて整合性情報に更新するタイミングは図24に示したタイミングに限定されない。例えば、データ書き込みを整合性情報へ反映するステップS405を受信データの書き込みステップS404の前に実行してもよい。
以上のように、実施の形態2の組込みシステム100によれば、通信データデータベース131内のデータを整合性の判定に関係のあるグループに分けそれぞれのグループにて1つ以上のデータを対象とした読み込み処理の整合性を判定するように構成したので、アプリブロック201からの読み込みとデバイスドライバ203からの書き込みのタイミングが被った場合においても、アプリブロック201から要求のあった読み込み対象データと、デバイスドライバ203から要求のあった書き込み対象の受信データが同じグループに属していない場合は整合性有りと判定するように作用することができ、読込処理を行った複数のデータに整合性が有ることをより適切に判定することができ、誤作動のない制御を可能とするという効果を得ることができる。さらにリトライを繰り返すといった無駄な処理を行う場合を低減させ処理効率を向上するという効果も得ることができる。
100,300 組込みシステム、110 CPU、120 ROM 、121 アプリブロックコード、122 通信制御部コード、123 デバイスドライバコード、124 通信データ管理テーブル、125 グループ分類管理テーブル、130 RAM、131 通信データデータベース、132 読込ID管理テーブル、133 書込ID管理テーブル、134 整合性情報データベース、140 通信デバイス、200,400 ソフトウェア、201 アプリブロック、202 通信制御部、203 デバイスドライバ、210 データ読込処理部、211 読込開始処理、212 読込整合開始処理、213 読込処理、214 読込終了処理、215 読込整合終了処理、220 通信データ保存部、230 整合性情報保存部、240 データ書込処理部、241 書込開始処理、242 書込整合開始処理、243 書込処理、244 書込整合処理、245 書込終了処理、246 書込整合終了処理。

Claims (8)

  1. アプリケーション部が実行するデータの読み込み処理を開始する読込開始手段と、
    前記読込開始手段にて開始されたそれぞれの読み込み処理に読込IDを割り当て、割り当てられた前記読込IDの数を示す読込ID数を更新する読込整合開始手段と、
    前記データを読み込む読込手段と、
    前記読込手段による前記データの読み込みを終了する読込終了手段と、
    前記読込IDと、書き込み処理中であるか否かを示すデータ書込中フラグと、データ書き込み処理時の前記読込ID数を示す書込時ID数と、を取得し、前記データ書込中フラグ、前記読込ID、前記書込時ID数とに基づいて、読み込まれた前記データの整合性を判定する読込整合終了手段と、
    を備えることを特徴とする組込みシステム。
  2. 前記読込IDは数値であり、
    前記読込整合開始手段は、数値を1増加させた前記読込IDを割り当てることを特徴とする請求項1に記載の組込みシステム。
  3. 前記読込整合終了手段が、読み込まれたデータに整合性が無いと判定した場合は、データ読み込み処理を再度行うことを特徴とする請求項1あるいは2に記載の組込みシステム。
  4. 前記読込IDと前記読込ID数と前記データ書込中フラグと前記書込時ID数は、対象とするデータごとに複数のグループに分けられており、
    前記読込整合処理手段は、前記複数のグループごとに整合性を判定することを特徴とする請求項1から3のいずれか1項に記載の組込みシステム。
  5. 共有メモリを備えた組込みシステムの共有メモリからのデータ読み込み処理を制御する組込みシステム制御方法において、
    データ読み込み処理開始時に読み込み処理を識別するための読込IDを割り当てる読込ID割り当てステップと、
    前記共有メモリからデータを読み込むデータ読み込みステップと、
    前記データ読み込みステップの終了時に前記共有メモリから割り当てられた前記読込IDの数である読込ID数と、前記共有メモリへデータ書き込み処理中であるか否かのフラグであるデータ書込中フラグと、前記共有メモリへのデータ書き込み処理時の前記読込ID数である書込時ID数とを含む整合性情報を取得する整合性情報取得ステップと、
    前記整合性情報取得ステップにて取得した前記データ書込中フラグが書き込み中ではなく、かつ、前記読込IDが前記書込時ID数よりも大きい場合に前記データ読み込みステップにて読み込まれたデータに整合性が有ると判定する整合性判定ステップと、
    を有することを特徴とする組込みシステム制御方法。
  6. 共有メモリを備えた組込みシステムにおいて前記共有メモリから読み込まれたデータに整合性があるか否かを判定するデータ整合性判定方法において、
    前記共有メモリからのデータ読み込み処理開始時に読込開始処理を識別するために割り当てられる読込IDと、
    割り当てられた読込IDの数を示す読込ID数と、
    前記共有メモリへのデータ書き込み中である否かを示すデータ書込中フラグと、
    データ書き込み処理時の前記読込ID数を示す書込時ID数と、
    に基づいて前記読み込まれたデータに整合性があるか否かを判定することを特徴とするデータ整合性判定方法。
  7. 前記共有メモリへのデータ読み込み処理終了時に、前記データ書込中フラグが書き込み中ではなく、かつ、前記読込IDが書込時ID数よりも大きい場合に整合性有りと判定する請求項6に記載のデータ整合性判定方法。
  8. 共有メモリを備えた組込みシステムにおいて前記共有メモリから読み込まれたデータに整合性があるか否かを判定するデータ整合性判定方法において、
    前記共有メモリからのデータ読み込み処理終了時に、前記共有メモリにデータを書き込み中であるか否かと、当該読み込み処理が何番目に開始された読み込み処理であるかと、前記共有メモリへのデータ書き込み処理時に実行されていた読み込み処理は何番目に開始された読み込み処理まで含んでいるかと、に基づいて前記読み込まれたデータに整合性があるか否かを判定することを特徴とするデータ整合性判定方法。
JP2018502837A 2016-09-05 2016-09-05 組込みシステムおよび組込みシステム制御方法 Expired - Fee Related JP6351901B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/075944 WO2018042644A1 (ja) 2016-09-05 2016-09-05 組込みシステム、組込みシステム制御方法およびデータ整合性判定方法

Publications (2)

Publication Number Publication Date
JP6351901B1 JP6351901B1 (ja) 2018-07-04
JPWO2018042644A1 true JPWO2018042644A1 (ja) 2018-09-06

Family

ID=61301745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018502837A Expired - Fee Related JP6351901B1 (ja) 2016-09-05 2016-09-05 組込みシステムおよび組込みシステム制御方法

Country Status (6)

Country Link
US (1) US10838786B2 (ja)
JP (1) JP6351901B1 (ja)
CN (1) CN109690490A (ja)
SG (1) SG11201900282VA (ja)
TW (1) TWI628596B (ja)
WO (1) WO2018042644A1 (ja)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520146U (ja) 1991-08-27 1993-03-12 日本電子機器株式会社 制御装置の相互通電装置
JPH05158892A (ja) 1991-12-06 1993-06-25 Nippon Telegr & Teleph Corp <Ntt> 分散処理におけるデータ管理方式
JPH076043A (ja) * 1993-03-05 1995-01-10 Mitsubishi Electric Corp マルチスレッド・サーバ
JPH08286953A (ja) 1995-04-12 1996-11-01 Hitachi Ltd プログラム検証システム
DE60012081T2 (de) * 1999-05-11 2004-11-18 Fujitsu Ltd., Kawasaki Nichtflüchtige Halbleiterspeicheranordnung, die eine Datenleseoperation während einer Datenschreib/lösch-Operation erlaubt
JP2002149322A (ja) * 2000-11-08 2002-05-24 Sharp Corp 情報入力装置
JP2003203062A (ja) * 2002-01-09 2003-07-18 National Institute Of Advanced Industrial & Technology リアルタイム処理用共有メモリ制御方式及び方法、並びにそれを実行させるためのプログラム
JP2004094931A (ja) 2003-08-11 2004-03-25 Hitachi Ltd ネットワークシステムおよびネットワークにおける通信方法
US20090307442A1 (en) * 2005-10-25 2009-12-10 Balbir Singh Memory Access Control
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
JP4982354B2 (ja) * 2007-12-28 2012-07-25 パナソニック株式会社 情報処理装置
JP5267166B2 (ja) 2009-01-30 2013-08-21 ソニー株式会社 インターフェース装置、演算処理装置、インターフェース生成装置、および回路生成装置
JP6009902B2 (ja) 2012-10-23 2016-10-19 株式会社東芝 共有メモリアクセスシステムおよび共有メモリアクセス方法
JP6098389B2 (ja) * 2013-06-20 2017-03-22 富士ゼロックス株式会社 電子機器、制御装置及びプログラム
WO2015116077A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Access controlled memory region

Also Published As

Publication number Publication date
US20190227858A1 (en) 2019-07-25
CN109690490A (zh) 2019-04-26
JP6351901B1 (ja) 2018-07-04
SG11201900282VA (en) 2019-03-28
US10838786B2 (en) 2020-11-17
TW201812575A (zh) 2018-04-01
TWI628596B (zh) 2018-07-01
WO2018042644A1 (ja) 2018-03-08

Similar Documents

Publication Publication Date Title
CN107273455B (zh) 区块链数据访问方法和装置
US8782327B1 (en) System and method for managing execution of internal commands and host commands in a solid-state memory
US10579267B2 (en) Memory controller and memory system
JP4762289B2 (ja) 特定パターンデータが格納される仮想ボリュームへの記憶領域の割り当てを制御するストレージシステム
CN105607867A (zh) 使用主装置和从装置的重复删除
CN111427514A (zh) 视图迁移方法和装置
CN111966287A (zh) 数据存储方法、电子设备及存储介质
CN107908364B (zh) 一种基于norflash的嵌入式文件系统
CN109656730B (zh) 一种访问缓存的方法和装置
CN108694230A (zh) 数据库中的唯一标识符的管理
CN107562648B (zh) 无锁ftl访问方法与装置
CN107430546B (zh) 一种文件更新方法及存储设备
JP6351901B1 (ja) 組込みシステムおよび組込みシステム制御方法
CN117008832A (zh) 智能座舱车辆数据的读写方法、装置、设备及存储介质
US10656615B2 (en) PLC, network unit, CPU, and data transfer method
KR100964374B1 (ko) 전파식별 태그의 메모리 관리 장치 및 방법
US7694090B2 (en) Storage system with journal reflecting area control function
CN111831589B (zh) 提高io命令处理并行性的方法与装置
JP6183876B2 (ja) レプリケーション装置、レプリケーション方法及びプログラム
JP4348372B2 (ja) データ転送装置及びプログラム
JP2022552150A (ja) データ構造、メモリ手段、および装置
JP3807012B2 (ja) 記憶装置
JP2022065218A (ja) 車両制御装置
CN109618327A (zh) 一种软体适配的方法和装置、电子设备、可读存储介质
CN109669628B (zh) 基于flash设备的数据存储管理方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180119

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180119

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180423

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180605

R150 Certificate of patent or registration of utility model

Ref document number: 6351901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees