以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
<通信システムの構成例>
図1は、本技術を適用した通信システムの第1の実施の形態の構成例を示すブロック図である。
図1に示すように、通信システム11は、イメージセンサ21およびアプリケーションプロセッサ22がバス23を介して接続されて構成される。例えば、通信システム11は、いわゆるスマートフォンなどのような既存のモバイル機器の内部におけるCSI-2接続に用いられる。
イメージセンサ21は、例えば、レンズや撮像素子(いずれも図示せず)などとともに、拡張モード対応CSI-2送信回路31が組み込まれて構成される。例えば、イメージセンサ21は、撮像素子が撮像することで取得した画像の画像データを、拡張モード対応CSI-2送信回路31によりアプリケーションプロセッサ22へ送信する。
アプリケーションプロセッサ22は、通信システム11を備えるモバイル機器で実行される各種のアプリケーションに応じた処理を行うLSI(Large Scale Integration)とともに、拡張モード対応CSI-2受信回路32が組み込まれて構成される。例えば、アプリケーションプロセッサ22は、イメージセンサ21から送信されてくる画像データを、拡張モード対応CSI-2受信回路32により受信し、その画像データに対して、アプリケーションに応じた処理をLSIにより行うことができる。
バス23は、CSI-2の規格に準拠して信号を伝送する通信経路であり、例えば、信号を伝送することが可能な伝送距離は30cm程度となっている。また、バス23は、図示するように複数本の信号線(I2C,CLKP/N,D0P/N,D1P/N,D2P/N,D3P/N)によって、イメージセンサ21およびアプリケーションプロセッサ22を接続する。
拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32は、CSI-2の規格を拡張させた拡張モードでの通信に対応しており、互いに信号の送信および受信を行うことができる。なお、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の詳細な構成については、図9および10を参照して後述する。
図2は、本技術を適用した通信システムの第2の実施の形態の構成例を示すブロック図である。
図2に示すように、通信システム11Aは、イメージセンサ21およびSerDes装置25がバス24-1を介して接続されるとともに、アプリケーションプロセッサ22およびSerDes装置26がバス24-2を介して接続されており、SerDes装置25およびSerDes装置26がバス27を介して接続されて構成される。例えば、通信システム11Aは、既存の車載カメラにおける接続に用いられる。
ここで、イメージセンサ21およびアプリケーションプロセッサ22は、図1のイメージセンサ21およびアプリケーションプロセッサ22と同様に構成されており、その詳細な説明は省略する。
バス24-1および24-2は、図1のバス23と同様に、CSI-2の規格に準拠して信号を伝送する通信経路であり、図示するように複数本の信号線(HS-GPIO,I2C/I3C,CLKP/N,D0P/N,D1P/N,D2P/N,D3P/N)を備えて構成される。
SerDes装置25は、CSI-2受信回路33およびSerDes(Serializer Deserializer)送信回路34を備えて構成される。例えば、SerDes装置25は、CSI-2受信回路33が、拡張モード対応CSI-2送信回路31との間で通常のCSI-2の規格に準拠した通信を行うことにより、イメージセンサ21から送信されてくるビット並列の信号を取得する。そして、SerDes装置25は、その取得した信号をビット直列に変換して、SerDes送信回路34がSerDes受信回路35との間で1レーンでの通信を行うことにより、その信号をSerDes装置26へ送信する。
SerDes装置26は、SerDes受信回路35およびCSI-2送信回路36を備えて構成される。例えば、SerDes装置26は、SerDes受信回路35が、SerDes送信回路34との間で1レーンでの通信を行うことにより送信されてくるビット直列の信号を取得する。そして、SerDes装置26は、その取得した信号をビット並列に変換して、CSI-2送信回路36が、拡張モード対応CSI-2受信回路32との間で通常のCSI-2の規格に準拠した通信を行うことにより、アプリケーションプロセッサ22へ送信する。
バス27は、A-PHYや、FPD(Flat Panel Display)-LINK IIIなどのような規格に準拠して信号を伝送する通信経路であり、例えば、信号を伝送することが可能な伝送距離は15m程度の長距離となっている。
これらの長距離伝送可能な物理層インタフェースによって、自動車業界が高度な運転支援システム(ADAS)、自動運転システム(ADS)、およびカメラや車載インフォテインメント(IVI)ディスプレイを含むその他のサラウンドセンサーアプリケーションを利用することが可能となる。MIPI A-PHYは、ポイントツーポイントトポロジの非対称データリンク層(非対称上位層)を有し、同一の物理配線を、高速データ伝送、制御データ、電力でシェアすることを可能としており、カメラ、センサ、ディスプレイの統合を簡素化するように設計されたエンドツーエンドシステムの基盤として機能すると同時に、機能的な安全性とセキュリティも組み込むことも可能としている。
このように構成される通信システム11および11Aは、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32により、後述するように拡張されたパケット構造のパケットでデータを送受信することができる。これにより、より多様な用途、例えば、後述するようなRAW24や、SmartROI(Region of Interest)、GLD(Graceful Link Degradation)などに対応することができる。
<パケット構造の第1の構造例>
図3乃至図8を参照して、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の間の通信で用いられるパケットのパケット構造の第1の構造例について説明する。
図3には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるパケット(以下、D-PHY用の拡張パケットと称する)の全体的なパケット構造が示されている。
図3に示すように、D-PHY用の拡張パケットは、パケットヘッダおよびパケットフッタが既存のCSI-2規格と同一のパケット構造となっている。例えば、パケットヘッダには、仮想チャネルの回線数を示すVC(VirtualChannel)、データの種類を示すデータタイプ(DataType)、ペイロードのデータ長を示すWC(Word Count)、VCX/ECCが格納される。また、パケットフッタには、CRC(Cyclic Redundancy Check)が格納される。
ここで、既存のCSI-2規格では、パケットヘッダで送信されるデータタイプは、0x38~0x3Fがリザーブと定義されている。そこで、D-PHY用の拡張パケットでは、既存ではリザーブとなっているデータタイプを利用して、受信側で拡張モードを識別するための設定情報が新たに定義される。
例えば、データタイプとして、・DataType[5:3]=3’b111の場合、拡張モード・DataType[2]=Reserve(RES:将来の拡張のための予約)・DataType[1:0]=extension mode type(4つの拡張モードを用意)を定義する。
即ち、既存のCSI-2規格ではリザーブと定義されているデータタイプの0x38~0x3Fのうち、例えば、DataType[5:3]が拡張モード設定情報として定義され、DataType[1:0]が拡張タイプ設定情報として定義される。拡張モード設定情報は、拡張モードであるか否かを示し、例えば、DataType[5:3]が3’b111である場合には拡張モードであることを示す。また、拡張モードのタイプとして、拡張モード0、拡張モード1、拡張モード2、および拡張モード3の4つのタイプが用意されるとき、拡張タイプ設定情報は、それらのうちの、いずれのタイプであるかを示す。例えば、DataType[1:0]が2’b00である場合には、拡張モードのタイプが拡張モード0であることを示す。
そして、拡張モード0(DataType[1:0]=2’b00)では、例えば、ペイロードが4つに分離されたパケット構造が定義される。即ち、拡張モード0におけるペイロードは、図3に示すように、拡張パケットヘッダ(ePH:extended Packet Header)、オプショナル拡張パケットヘッダ(OePH:Optional extended Packet Header)、レガシーペイロード(Legacy Payload)、および、オプショナル拡張パケットフッタ(OePF:Optional extended Packet Footer)に分離される。なお、拡張パケットヘッダは、繰り返し送信してもよい。
拡張パケットヘッダは、既存のCSI-2規格のペイロードに相当する先頭に配置され、拡張モードでは必ず送信する必要がある。例えば、拡張パケットヘッダは、図示するように、SROIの識別フラグ、拡張VC(VirtualChannel)、拡張DataType、OePHの選択フラグ、およびOePFの選択フラグなどの設定情報で構成される。ここで、拡張VCにより、既存のCSI-2規格では4ビットであったVCが8ビットに拡張され、拡張DataTypeにより、既存のCSI-2規格では4ビットであったDataTypeが8ビットに拡張される。
例えば、D-PHY用のパケットでは、既存のパケットヘッダのVCが既に4ビット存在しており、拡張パケットヘッダの拡張VCを4ビットと定義することにより、合計で8ビットとすることができる。具体的には、OePH[7:0] = {5’h00,RSID,XY_POS,MC}、OePF[3:0] = {3’h0,pCRC}と定義することができ、それぞれの用途に必要なパケット送信のON/OFFを制御することができる。
オプショナル拡張パケットヘッダおよびオプショナル拡張パケットフッタは、用途に応じて選択的に伝送される。
レガシーペイロードは、既存のCSI-2の規格と同一のペイロードに相当する。
このように、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタを必要に応じて設定することで、様々な用途に対応したデータを送信することができるようになる。また、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタで伝送されるデータは、26bit+6bitのECC(Error Correction Code)とする。これにより、既存のパケットヘッダの回路を流用して回路規模の増大を抑制し、かつ、エラー耐性の向上を図ることができる。
このようなD-PHY用の拡張パケットの具体的な適用例として、図4には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、D-PHY用の拡張ショートパケットと称する)のパケット構造が示されている。同様に、図5には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、D-PHY用の拡張ロングパケットと称する)のパケット構造が示されている。
図4に示すようなD-PHY用の拡張ショートパケットにおいて、パケットヘッダに格納されているデータタイプの拡張タイプ設定情報は、拡張モードのタイプが拡張モード0であること(DT[5:0]=0x1C(5’b111_0_0))を示している。また、拡張パケットヘッダに格納されているデータタイプのショートパケット設定情報は、ショートパケットであること(DT[7:0]=0x00 (Frame Start Code(Short Packet)))を示している。
このように、拡張モードであり、かつ、拡張パケットヘッダに格納されているデータタイプがDT[7:0]=0x00~0x0Fである場合、拡張ショートパケットとし、オプショナル拡張パケットヘッダには必ず、拡張ショートパケットのShort Packet Data Fieldを含むデータが伝送される。このShort Packet Data Fieldは、既存のCSI-2の規格で定義されたものと同一である。
なお、拡張ショートパケットの送信時には、オプショナル拡張パケットヘッダのうち、MC(GLD用MessageCount)とRSID(車載用行番号とSourceID)は送信しても良いが、レガシーペイロードとpCRCは不要であるため、送信禁止である。仮に、それらを誤って送信した場合には、受信側で無視される。
そして、図4に示すようなパケット構造の拡張ショートパケットは、既存のCSI-2の規格に従った拡張ショートパケットと比較して、データタイプおよび仮想チャネルのビット幅を拡張することができ、オプショナル拡張パケットヘッダで定義される様々な用途に対応することができる。また、これらの機能が必要でない場合は、既存のCSI-2の規格に従った拡張ショートパケットを、拡張ロングパケットと一緒に送信するようにしてもよい。
図5に示すようなD-PHY用の拡張ロングパケットにおいて、パケットヘッダに格納されているデータタイプの拡張タイプ設定情報は、拡張モードのタイプが拡張モード0であること(DT[5:0]=0x1C(5’b111_0_0))を示している。また、拡張パケットヘッダに格納されているデータタイプのショートパケット設定情報は、ショートパケット以外であること(DT[7:0]は0x00~0x0F以外(=拡張LongPackt))を示している。従って、拡張ロングパケットでは、Short Packet Data Fieldを含むデータは送信されない。
また、拡張パケットヘッダの設定に従い、オプショナル拡張パケットヘッダ、レガシーペイロード、およびオプショナル拡張パケットフッタが、既存のCSI-2の規格でのペイロードに格納して伝送される。このように、既存のペイロードに格納して伝送されるため、既存のSerDes送信回路34およびSerDes受信回路35(図2)には、既存のペイロードで伝送される画像データと同様に認識され、そのまま後段に伝送される。
そして、最後段のアプリケーションプロセッサ22は、パケットヘッダのデータタイプDT[5:0]によって、拡張モードと判定することができる。従って、アプリケーションプロセッサ22は、ペイロードの中身を、拡張パケットヘッダから順に解釈し、所望の拡張モードのデータを取り出すことができる。
図6には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるパケット(以下、C-PHY用の拡張パケットと称する)の全体的なパケット構造が示されている。なお、図6に示すC-PHY用の拡張パケットにおいて、図3のD-PHY用の拡張パケットと共通する構成については説明を省略し、異なる構成について説明を行う。
例えば、C-PHY用の拡張パケットでは、図3のD-PHY用の拡張パケットと同様に、データタイプで拡張モードを識別し、アプリケーションプロセッサ22で実行される各アプリケーションに応じたデータは、すべてペイロードに埋め込まれて伝送される。
図6に示すように、C-PHY用の拡張パケットは、既存のCSI-2規格に従ったC-PHY用のパケットと同様に、パケットヘッダを2回伝送し、C-PHYが16bitを7symbolに変換する都合上、16bit単位でデータを並べる。また、ペイロードの先頭には拡張パケットヘッダが配置されるが、仮想チャネルに関しては、C-PHYの場合、既存のパケットヘッダの先頭がその為にReserveとなっていたため、拡張パケットヘッダには仮想チャネルは格納されない。もちろん、D-PHY用の拡張パケットと同様に、拡張パケットヘッダに仮想チャネルを格納してもよい。
また、オプショナル拡張パケットヘッダおよびオプショナル拡張パケットフッタはビット数が多いため、OePHFというフラグを準備し、このフラグが1の場合、OePH/OePF情報が次に伝送される。そして、ePH情報およびOePH情報の後、拡張パケットヘッダとしてCRCを伝送し、同様に構成されるパケットヘッダを2回繰り返して伝送する。このように、既存のパケットヘッダが2回伝送される仕組みと構造を同じにすることで、回路再利用性およびエラー耐性を両立することができる。
このようなC-PHY用の拡張パケットの具体的な適用例として、図7には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、C-PHY用の拡張ショートパケットと称する)のパケット構造が示されている。同様に、図8には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、C-PHY用の拡張ロングパケットと称する)のパケット構造が示されている。
なお、図7に示すC-PHY用の拡張ショートパケットは、図4に示したD-PHY用の拡張ショートパケットとパケット構造に大きな差異はなく、図8に示すC-PHY用の拡張ロングパケットは、図5に示したD-PHY用の拡張ロングパケットとパケット構造に大きな差異はない。
<イメージセンサおよびアプリケーションプロセッサの構成例>
(イメージセンサの構成例)
図9は、拡張モード対応CSI-2送信回路31を備えるイメージセンサ21の構成例を示すブロック図である。
図9に示すように、イメージセンサ21は、拡張モード対応CSI-2送信回路31の他に、画素41、AD変換器42、画像処理部43、画素CRC演算部44、物理層処理部45、I2C/I3Cスレーブ46、およびレジスタ47を備えて構成される。また、拡張モード対応CSI-2送信回路31は、パッキング部51、パケットヘッダ生成部52、拡張パケットヘッダ生成部53、拡張パケットフッタ生成部54、選択部55および56、CRC演算部57、レーン分配部58、CCIスレーブ59、並びに、コントローラ60を備えて構成される。
画素41は、受光した光の光量に応じたアナログの画素信号を出力し、AD変換器(ADC:Analog-to-Digital Converter)42は、画素41から出力される画素信号をデジタル変換して画像処理部43に供給する。画像処理部(ISP:Image Signal Processor)43は、画素信号に基づく画像に対する各種の画像処理を施して得られる画像データを画素CRC演算部44およびパッキング部51に供給する。また、画像処理部43は、画像データが有効であるか否かを示すデータイネーブル信号data_enをパッキング部51およびコントローラ60に供給する。
画素CRC演算部44は、画像処理部43から供給される画像データにおける画素ごとのCRCを演算して求め、そのCRCを拡張パケットフッタ生成部54に供給する。
物理層処理部45は、C-PHYおよびD-PHYの両方の物理層処理を実行することができる。例えば、物理層処理部45は、コントローラ60から供給されるC層イネーブル信号cphy_enが有効である場合にはC-PHYの物理層処理を実行し、C層イネーブル信号cphy_enが無効である場合にはD-PHYの物理層処理を実行する。そして、物理層処理部45は、レーン分配部58により4レーンに分割されたパケットを、アプリケーションプロセッサ22へ送信する。
I2C/I3Cスレーブ46は、I2C(Inter-Integrated Circuit)またはI3C(Improved Inter Integrated Circuits)の規格に基づき、アプリケーションプロセッサ22のI2C/I3Cマスタ72(図10)による主導に従って通信を行う。
レジスタ47には、アプリケーションプロセッサ22から送信されてくる各種の設定が、I2C/I3Cスレーブ46およびCCIスレーブ59を介して書き込まれる。ここで、レジスタ47に書き込まれる設定としては、例えば、CSI-2規格に従った通信設定や、拡張モードの使用の有無を示す拡張モード設定、拡張モードでの通信で必要となる固定の通信設定などがある。
パッキング部51は、画像処理部43から供給される画像データを、パケットのペイロードに格納するパッキング処理を行い、そのペイロードを選択部55およびレーン分配部58に供給する。
パケットヘッダ生成部52は、コントローラ60から供給されるパケットヘッダ生成指示信号ph_goに従って、パケットヘッダの生成が指示されると、パケットヘッダを生成して選択部55およびレーン分配部58に供給する。
即ち、パケットヘッダ生成部52は、パケットで伝送されるデータについて設定された条件を示す設定情報、例えば、データのタイプを示すデータタイプを格納するパケットヘッダを、既存のCSI-2規格に従って生成する。また、パケットヘッダ生成部52は、パケットで伝送されるデータのタイプを示す設定情報であるデータタイプにおいて、既存のCSI-2規格では未使用と定義されている未使用領域に、拡張ヘッダを使用する拡張モードであるか否かを示す拡張モード設定情報を格納する。さらに、パケットヘッダ生成部52は、未使用領域に、拡張モードとして用意される複数のタイプの拡張モードのうちの、いずれのタイプであるかを示す拡張タイプ設定情報を格納する。
拡張パケットヘッダ生成部53は、コントローラ60から供給される拡張パケットヘッダ生成指示信号eph_goおよび拡張パケットヘッダイネーブル信号ePH_enに従って、拡張パケットヘッダおよびオプショナル拡張パケットヘッダそれぞれを生成し、選択部56およびレーン分配部58に供給する。また、拡張パケットヘッダ生成部53には、イメージセンサ21の用途に応じて、車載用行番号やソースID(identification)などが供給され、必要に応じて、それらが拡張パケットヘッダまたはオプショナル拡張パケットヘッダに格納される。
即ち、拡張パケットヘッダ生成部53は、パケットヘッダ生成部52により生成されるパケットヘッダとは別に、例えば、図3に示したような設定情報を格納する拡張パケットヘッダを生成する。さらに、拡張パケットヘッダ生成部53は、オプショナル拡張パケットヘッダを送信する場合、オプショナル拡張パケットヘッダを送信するか否かを示すオプショナル拡張パケットヘッダ設定情報(OePH[7:0])として、オプショナル拡張パケットヘッダを送信することを示すオプショナル拡張パケットヘッダ設定情報を拡張パケットヘッダに格納し、拡張パケットヘッダに続けてオプショナル拡張パケットヘッダを生成する。
拡張パケットフッタ生成部54は、コントローラ60から供給される拡張パケットフッタ生成指示信号epf_goおよび拡張パケットヘッダイネーブル信号ePF_enに従って、オプショナル拡張パケットフッタを生成し、選択部56およびレーン分配部58に供給する。
即ち、拡張パケットフッタ生成部54は、拡張モードにおいて伝送されるパケットが、既存のCSI-2規格においてペイロードとして伝送されるデータを格納する拡張ロングパケットである場合に、データが格納されるレガシーペイロードに続けて配置されるオプショナル拡張パケットフッタを生成する。
また、パケットヘッダ生成部52、拡張パケットヘッダ生成部53、および拡張パケットフッタ生成部54には、コントローラ60からC層イネーブル信号cphy_enが供給される。そして、C層イネーブル信号cphy_enが有効を示している場合、パケットヘッダ生成部52はC-PHY用のパケットヘッダを生成し、拡張パケットヘッダ生成部53はC-PHY用の拡張パケットヘッダおよびオプショナル拡張パケットヘッダを生成し、拡張パケットフッタ生成部54はC-PHY用のオプショナル拡張パケットフッタを生成する。一方、C層イネーブル信号cphy_enが無効を示している場合、パケットヘッダ生成部52はD-PHY用のパケットヘッダを生成し、拡張パケットヘッダ生成部53はD-PHY用の拡張パケットヘッダおよびオプショナル拡張パケットヘッダを生成し、拡張パケットフッタ生成部54はD-PHY用のオプショナル拡張パケットフッタを生成する。
選択部55は、コントローラ60から供給されるC層イネーブル信号cphy_enに従って、C層イネーブル信号cphy_enが有効である場合、パケットヘッダ生成部52から供給されるパケットヘッダを選択し、選択部56へ供給する。一方、選択部55は、C層イネーブル信号cphy_enが無効である場合、パッキング部51から供給されるペイロードを選択し、選択部56へ供給する。
選択部56は、コントローラ60から供給されるデータ選択信号data_selに従って、選択部55を介して選択的に供給されるパケットヘッダまたはペイロード、拡張パケットヘッダ生成部53から供給される拡張パケットヘッダおよびオプショナル拡張パケットヘッダ、拡張パケットフッタ生成部54から供給されるオプショナル拡張パケットフッタのうち、いずれかを選択してCRC演算部57に供給する。
CRC演算部57は、選択部56を介して選択的に供給されるパケットヘッダ、ペイロード、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、またはオプショナル拡張パケットフッタのCRCを演算して求め、そのCRCをレーン分配部58に供給する。
レーン分配部58は、コントローラ60の制御に従って、パッキング部51から供給されるペイロード、パケットヘッダ生成部52から供給されるパケットヘッダ、拡張パケットヘッダ生成部53から供給される拡張パケットヘッダおよびオプショナル拡張パケットヘッダ、拡張パケットフッタ生成部54から供給されるオプショナル拡張パケットフッタ、並びに、CRC演算部57から供給されるCRCを、CSI-2の規格に従った4レーンに分配して、物理層処理部45に供給する。
CCI(Camera Control Interface)スレーブ59は、CSI-2の規格に基づき、アプリケーションプロセッサ22のCCIマスタ88(図10)による主導に従って通信を行う。
コントローラ60は、レジスタ47に記憶されている各種の設定を読み出して、それらの設定に従って、拡張モード対応CSI-2送信回路31を構成する各ブロックに対する制御を行う。例えば、コントローラ60は、送信対象のデータの内容に応じて、既存のCSI-2規格に従ったパケット構造のパケットの送信と、拡張モード時におけるパケット構造のパケットの送信との切り替えを制御する。
このようにイメージセンサ21は構成されており、図3乃至図8を参照して説明したようなパケット構造の拡張パケットを生成して、アプリケーションプロセッサ22へ送信することができる。
(アプリケーションプロセッサの構成例)
図10は、拡張モード対応CSI-2受信回路32を備えるアプリケーションプロセッサ22の構成例を示すブロック図である。
図10に示すように、アプリケーションプロセッサ22は、拡張モード対応CSI-2受信回路32の他に、物理層処理部71、I2C/I3Cマスタ72、レジスタ73、およびコントローラ74を備えて構成される。また、拡張モード対応CSI-2受信回路32は、パケットヘッダ検出部81、レーン併合部82、解釈部83、選択部84および85、CRC演算部86、アンパッキング部87、並びに、CCIマスタ88を備えて構成される。
物理層処理部71は、C-PHYおよびD-PHYの両方の物理層処理を実行することができる。上述したように、イメージセンサ21の物理層処理部45では、C-PHYおよびD-PHYのうちの、いずれか一方の物理層処理が行われ、物理層処理部71は、物理層処理部45において実行されたのと同一の物理層処理を実行する。
I2C/I3Cマスタ72は、I2CまたはI3Cの規格に基づき、イメージセンサ21のI2C/I3Cスレーブ46(図9)との通信を主導して行う。
レジスタ73には、コントローラ74により、イメージセンサ21のレジスタ47に書き込むべき各種の設定が記録される。
コントローラ74は、アプリケーションプロセッサ22を構成する各ブロックに対する制御を行う。
パケットヘッダ検出部81は、物理層処理部71から供給されるパケットからパケットヘッダを検出し、パケットヘッダに格納されているデータタイプを確認する。そして、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張モード設定情報が拡張モードであることを示す場合(DataType[5:3]=3’b111)、拡張モードを示す拡張モード検出フラグを、解釈部83、選択部84、および選択部85に供給する。また、パケットヘッダ検出部81は、パケットヘッダに基づいて、分割されている4レーンの併合を有効とするか否かを示す併合イネーブル信号mrg_enをレーン併合部82に供給する。
即ち、パケットヘッダ検出部81は、既存のCSI-2規格に従って、パケットで伝送されるデータについて設定された条件を示す設定情報(データタイプなど)が格納されるパケットヘッダを検出する。このとき、パケットヘッダ検出部81は、パケットで伝送されるデータのタイプを示す設定情報であるデータタイプにおいて、既存のCSI-2規格では未使用と定義されている未使用領域に格納されている、拡張ヘッダを使用する拡張モードであるか否かを示す拡張モード設定情報に従って、拡張モード検出フラグを出力することで、既存のCSI-2規格に従ったパケット構造のパケットの受信と、拡張モード時におけるパケット構造のパケットの受信との切り替えを行わせる。また、パケットヘッダ検出部81は、既存のCSI-2規格では未使用と定義されているデータタイプの未使用領域に格納されている拡張モードタイプ情報に従って、拡張モードとして用意される複数のタイプの拡張モードのうちの、いずれのタイプの拡張モードであるかを認識する。
レーン併合部82は、パケットヘッダ検出部81から供給される併合イネーブル信号mrg_enが有効である場合、物理層処理部71から供給される4レーンに分割されたパケットを併合する。そして、レーン併合部82は、1レーンのパケットを解釈部83、選択部84、および選択部85に供給する。
解釈部83は、パケットヘッダ検出部81から供給される拡張モード検出フラグが、拡張モードであることを示している場合、拡張モードのパケット構造に基づいて、レーン併合部82から供給されるパケットから、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタを読み出す。そして、解釈部83は、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタに格納されている設定情報を解釈する。
即ち、解釈部83は、拡張ヘッダとして、既存のCSI-2規格に従ったペイロードの先頭に配置される拡張パケットヘッダを受信し、拡張パケットヘッダに格納されている設定情報を解釈する。また、解釈部83は、拡張パケットヘッダに格納されているオプショナル拡張パケットヘッダ設定情報が、用途に応じて選択的に伝送されるオプショナル拡張パケットヘッダを送信することを示している場合、拡張パケットヘッダに続けてオプショナル拡張パケットヘッダを受信し、オプショナル拡張パケットヘッダに格納されている設定情報を解釈する。さらに、解釈部83は、拡張モードにおいて伝送されるパケットが、既存のCSI-2規格においてペイロードとして伝送されるデータを格納する拡張ロングパケットである場合に、データが格納されるレガシーペイロードに続けて配置されるオプショナル拡張パケットフッタを受信し、オプショナル拡張パケットフッタを解釈する。
そして、解釈部83は、例えば、オプショナル拡張パケットヘッダに格納されている車載用行番号やソースIDなどを読み出して、後段のLSI(図示せず)へ出力する。
なお、解釈部83は、パケットヘッダ検出部81から供給される拡張モード検出フラグが、拡張モードであることを示していない場合には、即ち、既存のパケット構造のパケットが供給されている場合には、上述したような処理を行わずに停止する。
選択部84は、パケットヘッダ検出部81から供給される拡張モード検出フラグに従い、既存パケットのパケット構造または拡張パケットのパケット構造に基づいて、選択的に、アンパッキング部87へデータを供給する。
選択部85は、パケットヘッダ検出部81から供給される拡張モード検出フラグに従い、既存パケットのパケット構造または拡張パケットのパケット構造に基づいて、選択的に、CRC演算部86へデータを供給する。
CRC演算部86は、選択部85を介して選択的に供給されるパケットヘッダ、ペイロード、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、またはオプショナル拡張パケットフッタのCRCを演算する。そして、CRC演算部86は、CRCエラーが検出された場合、その旨を示すcrcCRCエラー検出信号を後段のLSI(図示せず)へ出力する。
アンパッキング部87は、選択部84を介して選択的に供給されるペイロードに格納されている画像データを取り出すアンパッキング処理を行い、取得した画像データを後段のLSI(図示せず)へ出力する。
CCIマスタ88は、CSI-2の規格に基づき、イメージセンサ21のCCIスレーブ59(図9)との通信を主導して行う。
このようにアプリケーションプロセッサ22は構成されており、イメージセンサ21から送信されてくる拡張パケットを受信して、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタに格納されている設定情報を解釈して、画像データを取得することができる。
<通信処理>
図11乃至図14を参照して、イメージセンサ21およびアプリケーションプロセッサ22で行われる通信処理について説明する。
図11は、イメージセンサ21がパケットを送信する処理を説明するフローチャートである。
例えば、バス23を介して、イメージセンサ21がアプリケーションプロセッサ22に接続されると処理が開始される。ステップS11において、コントローラ60は、アプリケーションプロセッサ22と通信を開始するにあたって、拡張モードを使用するか否かを判定する。例えば、コントローラ60は、レジスタ47に記憶されている拡張モード設定を確認し、拡張モードを使用することを示す拡張モード設定がアプリケーションプロセッサ22により書き込まれている場合、拡張モードを使用すると判定する。
ステップS11において、コントローラ60が、拡張モードを使用しないと判定した場合、処理はステップS12に進む。
ステップS12において、I2C/I3Cスレーブ46は、アプリケーションプロセッサ22から(後述する図13のステップS54で)送信されてくる画像データの送信開始命令を受信する。さらに、I2C/I3Cスレーブ46は、その送信開始命令とともに送信されてくるCSI-2規格に従った通信設定を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS13において、イメージセンサ21では、レジスタ47に記憶されている通信設定に基づいて、既存のCSI-2規格に従ったパケット構造のパケットをアプリケーションプロセッサ22へ送信する、従来のパケット送信処理が実行される。
一方、ステップS11において、コントローラ60が、拡張モードを使用すると判定した場合、処理はステップS14に進む。
ステップS14において、I2C/I3Cスレーブ46は、拡張モードでの通信で必要となる固定の通信設定(例えば、GLD時のPH/PFのレーンごとのコピーなど)を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS15において、I2C/I3Cスレーブ46は、アプリケーションプロセッサ22から(後述する図13のステップS57で)送信されてくる画像データの送信開始命令を受信する。さらに、I2C/I3Cスレーブ46は、その送信開始命令とともに送信されてくるCSI-2規格に従った通信設定を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS16において、コントローラ60は、パケットの送信を開始するか否かを判定し、パケットの送信を開始すると判定するまで処理を待機する。
そして、ステップS16において、パケットの送信を開始すると判定された場合、処理はステップS17に進み、コントローラ60は、拡張モードで送信すべきデータであるか否かを判定する。ここで、コントローラ60は、送信対象のデータの内容に応じて、例えば、後述するような適用例のユースケースで送信されるようなデータである場合、拡張モードで送信すべきデータであると判定する。
ステップS17において、コントローラ60が、拡張モードで送信すべきデータであると判定した場合、処理はステップS18に進み、拡張モードに対応した拡張パケットを送信する拡張モード送信処理(図12参照)が行われる。
一方、ステップS17において、コントローラ60が、拡張モードで送信すべきデータでないと判定した場合、処理はステップS19に進む。
ステップS19において、コントローラ60は、ショートパケットを送信するか否かを判定する。例えば、コントローラ60は、フレーム開始時およびフレーム終了時にショートパケットを送信すると判定する。
ステップS19において、コントローラ60がショートパケットを送信すると判定した場合、処理はステップS20に進む。ステップS20において、パケットヘッダ生成部52がパケットヘッダを生成して、従来のパケット構造のショートパケットをアプリケーションプロセッサ22へ送信する。
一方、ステップS19において、コントローラ60がショートパケットを送信しない(即ち、ロングパケットを送信する)と判定した場合、処理はステップS21に進む。ステップS21において、パッキング部51が画像データをペイロードに格納し、CRC演算部57がCRCを求めることにより、従来のパケット構造のロングパケットを生成して、アプリケーションプロセッサ22へ送信する。
ステップS18、ステップS20、またはステップS21の処理後、処理はステップS22に進み、コントローラ60は、パケット送信処理を終了する。その後、処理はステップS16に戻り、以下、次のパケットを対象として、同様にパケットを送信する処理が繰り返して行われる。
図12は、図11のステップS18の処理で行われる拡張モード送信処理を説明するフローチャートである。
ステップS31において、パケットヘッダ生成部52は、VCやデータタイプ、WCなどを格納したパケットヘッダを生成し、アプリケーションプロセッサ22へ送信する。このとき、パケットヘッダ生成部52は、パケットヘッダのデータタイプに、拡張モードであることを示す拡張モード設定情報(DataType[5:3]=3’b111)、および、拡張モードのモード設定が拡張モード0であることを識別する拡張タイプ設定情報(DataType[1:0] =2’b00)を書き込む。
ステップS32において、アプリケーションプロセッサ22は、拡張ショートパケットを送信するか否かを判定する。例えば、コントローラ60は、フレーム開始時およびフレーム終了時に拡張ショートパケットを送信すると判定する。
ステップS32において、アプリケーションプロセッサ22が、拡張ショートパケットを送信すると判定した場合、処理はステップS33に進む。
ステップS33において、拡張パケットヘッダ生成部53は、ペイロードの1バイト目で、データタイプ(DataType[7:0])をショートパケットと設定した拡張パケットヘッダを送信する。このとき、拡張パケットヘッダ生成部53は、拡張パケットヘッダに格納される各種の設定(例えば、OePH[7:0]やOePF[3:0]など)を行う。
ステップS34において、拡張パケットヘッダ生成部53は、ペイロードの2バイト目に、フレームナンバー(FN:FrameNumber)を格納して送信する。
ステップS35において、拡張パケットヘッダ生成部53は、ステップS33で行われた設定(OePH[7:0])に従って、図4に示したようなオプショナル拡張パケットヘッダを生成して送信する。
ステップS36において、CRC演算部57は、CRCを求めて、パケットフッタとして送信する。
一方、ステップS32において、アプリケーションプロセッサ22が、拡張ショートパケットを送信しない(即ち、ロングパケットを送信する)と判定した場合、処理はステップS37に進む。
ステップS37において、拡張パケットヘッダ生成部53は、ペイロードの1バイト目で、データタイプ(DataType[7:0])をショートパケット以外と設定した拡張パケットヘッダを送信する。このとき、拡張パケットヘッダ生成部53は、拡張パケットヘッダに格納される各種の設定(例えば、OePH[7:0]やOePF[3:0]など)を行う。
ステップS38において、拡張パケットヘッダ生成部53は、ステップS37で行われた設定(OePH[7:0])に従って、図5に示したようなオプショナル拡張パケットヘッダを生成して送信する。
ステップS39において、パッキング部51は、画像処理部43から供給される画像データをパッキングし、レガシーペイロードを生成して送信する。
ステップS40において、拡張パケットフッタ生成部54は、ステップS37で行われた設定(OePF[3:0])に従って、図4に示したようなオプショナル拡張パケットフッタを生成して送信する。
ステップS41において、CRC演算部57は、CRCを求めて、パケットフッタとして送信する。
そして、ステップS36またはS41の処理後、拡張モード送信処理は終了される。
以上のように、イメージセンサ21は、拡張ショートパケットまたは拡張ロングパケットを生成して送信することができる。
図13は、アプリケーションプロセッサ22がパケットを受信する処理を説明するフローチャートである。
例えば、バス23を介して、イメージセンサ21がアプリケーションプロセッサ22に接続されると処理が開始される。ステップS51において、コントローラ74は、イメージセンサ21の初期設定(例えば、物理層としてC-PHYおよびD-PHYのどちらを使用するかなど)をレジスタ73に書き込み、CCIマスタ88を介してI2C/I3Cマスタ72によりイメージセンサ21へ送信する。これにより、その初期設定が、イメージセンサ21のレジスタ47に書き込まれる。
ステップS52において、コントローラ74は、イメージセンサ21が拡張モードに対応しているか否かを認識する。例えば、コントローラ74は、I2C/I3Cマスタ72によりイメージセンサ21のレジスタ47に記憶されている設定値(例えば、拡張PH/PF対応capability)を取得することで、イメージセンサ21が拡張モードに対応しているか否かを認識することができる。または、コントローラ74は、例えば、マニュアルなどによる入力に基づいて、事前に、イメージセンサ21が拡張モードに対応しているか否かを認識することができる。
ステップS53において、コントローラ74は、イメージセンサ21が拡張モードに対応しており、かつ、アプリケーションプロセッサ22が実行するアプリケーションによって拡張モードの使用が求められているか否かを判定する。
ステップS53において、コントローラ74が、イメージセンサ21が拡張モードに対応していない、または、拡張モードの使用が求められていないと判定した場合、処理はステップS54に進む。
ステップS54において、コントローラ74は、I2C/I3Cマスタ72により画像データの送信開始命令をイメージセンサ21へ送信する。このとき、コントローラ74は、CSI-2規格に従った通信設定も送信させる。
ステップS55において、アプリケーションプロセッサ22では、ステップS54で送信した通信設定に基づいて、既存のCSI-2規格に従ったパケット構造のパケットを受信する、従来のパケット受信処理が行われる。
一方、ステップS53において、コントローラ74が、イメージセンサ21が拡張モードに対応しており、かつ、アプリケーションプロセッサ22が実行するアプリケーションによって拡張モードの使用が求められていると判定した場合、処理はステップS56に進む。
ステップS56において、I2C/I3Cマスタ72は、拡張モードでの通信が開始される前に、拡張モードでの通信に必要となる固定の通信設定を送信する。これにより、その固定の通信設定が、イメージセンサ21のレジスタ47に書き込まれる(図11のステップS14)。
ステップS57において、コントローラ74は、I2C/I3Cマスタ72により画像データの送信開始命令をイメージセンサ21へ送信する。このとき、コントローラ74は、CSI-2規格に従った通信設定も送信させる。
ステップS58において、パケットヘッダ検出部81は、物理層処理部71から供給されるデータを確認することによりパケットの受信を開始したか否かを判定し、パケットの受信を開始したと判定するまで処理を待機する。例えば、パケットヘッダ検出部81は、物理層処理部71から供給されるデータからパケットヘッダを検出した場合、パケットの受信を開始したと判定する。
ステップS58において、パケットヘッダ検出部81が、パケットの受信を開始したと判定した場合、処理はステップS59に進む。
ステップS59において、パケットヘッダ検出部81は、ステップS58で検出したパケットヘッダのデータタイプを確認して、受信を開始したパケットが拡張モードに対応した拡張パケットであるか否かを判定する。例えば、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張モード設定情報が拡張モードであることを示す場合(DataType[5:3]=3’b111)、受信を開始したパケットが拡張パケットであると判定する。
ステップS59において、パケットヘッダ検出部81が、受信を開始したパケットが拡張パケットであると判定した場合、処理はステップS60に進み、拡張パケットを受信する拡張モード受信処理(図14参照)が行われる。
一方、ステップS59において、パケットヘッダ検出部81が、受信を開始したパケットが拡張パケットでないと判定した場合、処理はステップS61に進む。
ステップS61において、パケットヘッダ検出部81は、ステップS58で検出したパケットヘッダのデータタイプ(DataType[5:0])を確認して、受信を開始したパケットがショートパケットであるか否かを判定する。
ステップS61において、パケットヘッダ検出部81が、受信を開始したパケットがショートパケットであると判定した場合、処理はステップS62に進む。ステップS62において、パケットヘッダ検出部81は、イメージセンサ21から送信されてくる従来のパケット構造のショートパケットを受信する。
一方、ステップS61において、パケットヘッダ検出部81が、受信を開始したパケットがショートパケットでない(即ち、ロングパケットの受信を開始している)と判定した場合、処理はステップS63に進む。ステップS63において、アンパッキング部87は、イメージセンサ21から送信されてくる従来のパケット構造のロングパケットのペイロードを受信して画像データを取り出し、CRC演算部86は、パケットヘッダに続けて送信されてくるWC+1バイト目をCRCとして受信する。
ステップS60、ステップS62、またはステップS63の処理後、処理はステップS64に進み、コントローラ74は、パケット受信処理を終了する。その後、処理はステップS58に戻り、以下、次のパケットを対象として、同様にパケットを受信する処理が繰り返して行われる。
図14は、図13のステップS60の処理で行われる拡張モード受信処理を説明するフローチャートである。
ステップS71において、パケットヘッダ検出部81は、拡張モードのモード設定が拡張モード0であるか否かを判定する。例えば、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張タイプ設定情報が拡張モード0であることを示す場合(DataType[1:0] =2’b00)、拡張モードのモード設定が拡張モード0であると判定する。
ステップS71において、パケットヘッダ検出部81が、拡張モードのモード設定が拡張モード0であると判定した場合、処理はステップS72に進む。ステップS72において、解釈部83は、ペイロードの1バイト目を拡張パケットヘッダとして受信する。
ステップS73において、解釈部83は、ステップS72で受信した拡張パケットヘッダのデータタイプ(DataType[7:0])を確認して、受信を開始したパケットが拡張ショートパケットであるか否かを判定する。
ステップS73において、解釈部83が、拡張ショートパケットであると判定した場合、処理はステップS74に進む。ステップS74において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePH[7:0])に従って、オプショナル拡張パケットヘッダを受信する。
ステップS75において、CRC演算部86は、オプショナル拡張パケットヘッダに続けて送信されてくるWC+1バイト目をCRCとして受信する。
一方、ステップS73において、解釈部83が、拡張ショートパケットでない(即ち、拡張ロングパケットの受信を開始している)と判定した場合、処理はステップS76に進む。ステップS76において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePH[7:0])に従って、オプショナル拡張パケットヘッダを受信する。
ステップS77において、アンパッキング部87は、イメージセンサ21から送信されてくる拡張ロングパケットのレガシーペイロードを受信して画像データを取り出す。
ステップS78において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePF[3:0])に従って、オプショナル拡張パケットフッタを受信する。
ステップS79において、CRC演算部86は、オプショナル拡張パケットフッタに続けて送信されてくるWC+1バイト目をCRCとして受信する。
そして、ステップS71で拡張モードのモード設定が拡張モード0でないと判定した場合、ステップS75の処理後、またはステップS79の処理後、拡張モード受信処理は終了される。
以上のように、アプリケーションプロセッサ22は、拡張ショートパケットまたは拡張ロングパケットを受信して、データを取得することができる。
<パケット構造の第2の構造例>
図15乃至図18を参照して、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の間の通信で用いられるパケットのパケット構造の第2の構造例について説明する。
上述の図3乃至図8に示した第1の構造例では、既存のCSI-2規格の互換性を維持することを重視して、パケットヘッダおよびパケットフッタが既存のCSI-2規格と同一のパケット構造とし、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタによりパケット構造の拡張が図られている。これに対し、以下で説明する第2の構造例では、パケットヘッダおよびパケットフッタを既存のCSI-2規格と異なるものとし、拡張パケットヘッダおよび拡張パケットフッタによりパケット構造の拡張が図られる。
図15には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、D-PHY用の拡張ショートパケット)のパケット構造が示されている。
図15に示すD-PHY用の拡張ショートパケットは、図4に示した第1の構造例のD-PHY用の拡張ショートパケットと同様に、既存のCSI-2規格と同一のパケットヘッダに格納されるデータタイプによって拡張モードが識別される。
一方、図15に示すD-PHY用の拡張ショートパケットでは、パケットヘッダのデータタイプの次の16ビットに、既存のCSI-2規格に従ったショートパケットと同様に、ショートパケットデータフィールドにフレームナンバーが格納される。そして、パケットヘッダに続いて、図4に示した拡張パケットヘッダと同様に構成される拡張パケットヘッダが送信される。
従って、受信側となるアプリケーションプロセッサ22は、拡張パケットヘッダに格納されているデータタイプを解釈して、拡張ショートパケットである場合に、パケットヘッダのデータフィールドにフレームナンバーが格納されていることを判別することができる。
なお、図15に示すD-PHY用の拡張ショートパケットにおけるオプショナル拡張パケットヘッダは、図4に示した第1の構造例のD-PHY用の拡張ショートパケットにおけるオプショナル拡張パケットヘッダと同様に構成される。しかしながら、オプショナル拡張パケットヘッダは、ペイロードに埋め込まれないパケット構造となっていることより、最後にCRCを付与する必要はない。
図16には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、D-PHY用の拡張ロングパケット)のパケット構造が示されている。
図16に示すD-PHY用の拡張ロングパケットでは、拡張データはペイロードに埋め込まず、パケットヘッダまたはパケットフッタの一部として伝送される。従って、先頭のパケットヘッダのWCは既存規格と同様に、あくまでペイロードのバイト長を示す。
図17には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、C-PHY用の拡張ショートパケット)のパケット構造が示されている。
図17に示すC-PHY用の拡張ショートパケットにおける拡張部分は、あくまで既存のCSI-2規格に従ったパケットヘッダの拡張として伝送されるため、フレームナンバーの後に拡張パケットヘッダなど拡張部分が挿入される。そして、既存のCSI-2規格と同様に、パケットヘッダはCRCで終了する。さらに、これらを、SYNCを挟んで2回伝送するパケット構造は、既存のCSI-2規格に従ったショートパケットと同様である。
図18には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、C-PHY用の拡張ロングパケット)のパケット構造が示されている。
図18に示すC-PHY用の拡張ロングパケットは、上述したように、先頭のパケットヘッダのWCは既存規格と同様に、あくまでペイロードのバイト長を示す点で、図8に示した第1の構造例のC-PHY用の拡張ロングパケットと差異がある。
以上のように図15乃至図18に示す第2の構造例の拡張パケットのパケット構造により、第1の構造例の拡張パケットのパケット構造(図3乃至図8)と同様に、従来よりも多様な用途に対応することが可能となる。
ただし、第2の構造例の拡張パケットは、既存のペイロードに拡張データが埋め込まれずに、既存のパケットヘッダやフッタが拡張されるパケット構造となっている。このため、第2の構造例の拡張パケットのパケット構造を採用する場合には、第1の構造例の拡張パケットのパケット構造を採用する場合と比較して、従来から用いられている通信システムから変更が必要となるような影響を最小限とすることができない。即ち、例えば、既存のSerDes送信回路34がSerDes受信回路35(図2)に対する変更が必要となる。
以上のように、第1の構造例の拡張パケットを採用することで、車載など多彩な用途への対応することができ、かつ、従来から用いられている通信システムから変更が必要となるような影響を最小限として、車載システムを構築することができる。
また、第2の構造例の拡張パケットを採用することで、従来から用いられている通信システムから変更が必要となるものの、車載など多彩な用途への対応することができる。
<イメージセンサおよびアプリケーションプロセッサの変形例>
(イメージセンサの変形例)
図19を参照して、イメージセンサおよびアプリケーションプロセッサの変形例について説明する。
上述した図9のイメージセンサ21および図10のアプリケーションプロセッサ22を構成する各ブロックは、D-PHY用およびC-PHY用のパケットの両方に対応して処理を行えるように構成されていた。これに対し、例えば、D-PHY用のパケットを専用に処理を行うブロックと、C-PHY用のパケットを専用に処理を行うブロックとの両方を備え、それぞれで処理を切り替えるようにしてもよい。
図19のAに示すイメージセンサ21Aは、D層処理ブロック部101、C層処理ブロック部102、切り替え部103、およびコントローラ60を備えて構成される。
D層処理ブロック部101は、図9のイメージセンサ21を構成するブロックのうち、D-PHY用のパケットを専用に処理を行うブロックを有している。C層処理ブロック部102は、図9のイメージセンサ21を構成するブロックのうち、C-PHY用のパケットを専用に処理を行うブロックを有している。切り替え部103は、コントローラ60による制御に従って、物理層にD-PHYを用いる場合には、D層処理ブロック部101において生成されるD-PHY用のパケットを出力し、物理層にC-PHYを用いる場合には、C層処理ブロック部102において生成されるC-PHY用のパケットを出力するように切り替えを行う。
(アプリケーションプロセッサの変形例)
図19のBに示すアプリケーションプロセッサ22Aは、切り替え部111、D層処理ブロック部112、C層処理ブロック部113、およびコントローラ74を備えて構成される。
切り替え部111は、コントローラ74による制御に従って、イメージセンサ21Aから送信されてくるパケットを、D層処理ブロック部112およびC層処理ブロック部113の一方に供給するように切り替えを行う。D層処理ブロック部112は、図10のアプリケーションプロセッサ22を構成するブロックのうち、D-PHY用のパケットを専用に処理を行うブロックを有している。C層処理ブロック部113は、図10のアプリケーションプロセッサ22を構成するブロックのうち、C-PHY用のパケットを専用に処理を行うブロックを有している。
このように構成されるイメージセンサ21Aおよびアプリケーションプロセッサ22Aでは、通信を開始する前に、コントローラ60およびコントローラ74の間で、使用する物理層を設定することができる。そして、例えば、物理層にD-PHYが用いられる場合には、D層処理ブロック部101において生成されるD-PHY用のパケットが切り替え部103を介して送信され、切り替え部111を介してD層処理ブロック部112に供給されて処理される。また、例えば、物理層にC-PHYが用いられる場合には、C層処理ブロック部102において生成されるC-PHY用のパケットが切り替え部103を介して送信され、切り替え部111を介してC層処理ブロック部113に供給されて処理される。
<拡張パケットの適用例>
上述した拡張パケットは、例えば、以下のようなユースケースに適用することが検討されている。
例えば、拡張パケットは、より高精細な画像(RAW24)を伝送するようなユースケースに適用することが検討される。
例えば、画像データをRAW形式で送信する際に、既存のCSI-2規格に従ってパケットヘッダに格納されるデータタイプとして、RAW6,RAW7,RAW8,RAW10,RAW12,RAW14,RAW16、およびRAW20が定義されている。これに対し、近年、車載カメラを用いた自動運転に対応するため、より高精細な画像の伝送が期待されている。そこで、拡張パケットを適用してデータタイプのビット数を拡張することで、例えば、拡張パケットヘッダのデータタイプに、より高精細なRAW24を定義することが可能となる。
また、拡張パケットは、画面上の注目画像領域のみを伝送する技術であるSmartROIに適用することが検討される。
例えば、現在、スタジアムや空港などには多数のカメラが設置されている。これらのカメラで撮像した画像の全体が、カメラからインターネットなどのネットワークを経由してクラウドサーバに伝送される場合、インターネットの帯域不足や、クラウド側の計算量またはデータ量の増大などが発生することが想定される。そのため、エッジ(カメラ側)で注目画像領域のみを切り出し、その注目画像領域を伝送することで、インターネットの帯域不足や、クラウド側の計算量またはデータ量の増大などを抑制することが期待される。
このようなSROIを伝送する場合、注目画像領域が画面全体のどこに相当するか受信側に伝えるため、矩形領域(ROI)の左上の座標を一緒に伝送する必要がある。また、受信側からの命令で、所定のタイミングで、撮像画面全体のデータを送る必要がある。従って、例えばフレーム単位でSROI画像と、画像全体(既存のパケットヘッダ)のデータが混在することになる。
そこで、拡張パケットを適用することで、例えば、X座標およびY座標それぞれ16bit以上の座標データを伝送することが可能となる。
さらに、拡張パケットは、チャネル劣化した場合においても帯域やレーン数を減らして通信を継続するGLDに適用するユースケースが検討される。なお、GLDは、CSI-2 ver3.0で検討されている提案である。
例えば、自動運転では、衝突時にカメラを繋ぐケーブルの一部が断線したとしても、断線していないケーブルを使用して通信を継続し、自動的に、安全帯に退避した後に車両を停止することが求められる。そのため、車載用カメラインタフェースが断線検出機能を少なくとも備え、画面上の何行目の情報か示す行番号(16bit)や、どのカメラから送られたことかを示すSourceID(8bit)、伝送番号を示すメッセージカウンタ(16bit)などの情報が必要になる。さらに、上述したようなSROIと組み合わせて使用される場合には、フレーム単位で、これらの情報が伝送されることが考えられる。
そこで、拡張パケットを適用することで、これらの情報を伝送することが可能となる。
<E2E protectionに適応した第1の構成例>
図20乃至図26を参照して、伝送経路上におけるパケット改変等を禁止する規定に適応した構成例について説明する。
例えば、上述の図2を参照して説明したような構成の通信システム11Aにおいて、イメージセンサ21とアプリケーションプロセッサ22とでインタフェースが異なっている場合、伝送経路上においてパケットを変換することが必要となる。つまり、イメージセンサ21の物理層がD-PHYであって、アプリケーションプロセッサ22の物理層がC-PHYである構成の場合、例えば、SerDes装置26においてD-PHY用からC-PHY用にパケットを変換することが必要となる。
このように、SerDes装置26においてパケット変換が行われてしまう構成では、例えば、ISO26262(Functional Safety)が定める規定、即ち、伝送経路上におけるパケット改変等を禁止する規定(以下、E2E(End-toEnd) protectionと称する)に違反することになる。
図20は、本技術を適用した通信システムの第3の実施の形態として、E2E protectionに適応した通信システム201の構成例を示すブロック図である。
図20に示すように、通信システム201は、イメージセンサ211、SerDes装置212、SerDes装置213、およびアプリケーションプロセッサ214が接続されて構成される。なお、図20は、SERDESがA-PHYの場合を例として記載しているが、FPD-LINK3等のような他のSERDES規格を用いて接続される場合も含まれる。その他、SERDES規格においては、CIS-2のフォーマット(少なくともApplication Specific payload)を保ったまま、当該SERDES規格に基づいて通信が行われてもよい。また、SERDESにおいては、物理層処理部237および247はA-PHY以外にも他のSERDES規格の物理層処理部を複数含んでいてもよく、アプリケーションに応じて、物理層処理部を切り替えることができる。
イメージセンサ211は、拡張モード対応CSI-2送信回路221、C-PHYあるいはD-PHY、またはその両方に対応した物理層処理部(以下、C/D-PHY物理層処理部と称する)222、I2CあるいはI3C、またはその両方に対応したスレーブ(以下、I2C/I3Cスレーブと称する)223、並びに、CCIスレーブ224を少なくとも有している。
SerDes装置212は、CSI-2受信回路231、C/D-PHY物理層処理部232、I2C/I3Cマスタ233、CCIマスタ234、CSI-2用A-PHYパケット生成部235、CCI用A-PHYパケット送受信部236、並びに、A-PHYに対応した物理層処理部237を少なくとも有している。例えば、SerDes装置212では、C-PHY用またはD-PHY用のパケットがA-PHY用のパケットに変換され、この変換は、レジスタ設定などに基づいて決められる。
SerDes装置213は、CSI-2送信回路241、C/D-PHY物理層処理部242、I2C/I3Cスレーブ243、CCIスレーブ244、CSI-2用A-PHYパケット受信部245、CCI用A-PHYパケット送受信部246、A-PHYに対応した物理層処理部247を少なくとも有している。例えば、SerDes装置213では、A-PHY用のパケットがC-PHY用またはD-PHY用のパケットに変換され、この変換は、レジスタ設定などに基づいて決められる。
アプリケーションプロセッサ214は、拡張モード対応CSI-2受信回路251、C/D-PHY物理層処理部252、I2C/I3Cマスタ253、並びに、CCIマスタ254を少なくとも有している。
このように通信システム201は構成されており、上述したような構造の拡張パケットがイメージセンサ211から送信されて、アプリケーションプロセッサ214で受信される。ここで、イメージセンサ211の物理層処理部222がD-PHYに対応し、アプリケーションプロセッサ22の物理層処理部252がC-PHYに対応するように通信システム201が構成されていても、E2E protectionに違反しないようにすることが必要となる。
そこで、通信システム201は、E2E protectionに適応することができるように、E2E protectionの保護範囲を、アプリケーションに特有のペイロードであるApplication Specific payload(以下、ASペイロードと称する)に限定する。即ち、ASペイロードは、A-PHY用のパケットからC-PHY用またはD-PHY用のパケットへの変換時や、C-PHY用またはD-PHY用のパケットからA-PHY用のパケットへの変換時に変更を加えることが禁止される。
図21には、E2E protectionに対応するように拡張されたD-PHY用の拡張パケットの構造例が示されている。
図示するように、D-PHY用の拡張パケットは、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。
そして、拡張パケットヘッダには、E2E protectionの保護範囲をASペイロードに限定した場合に必要となる所定情報が記載される。例えば、拡張パケットヘッダに記載される所定情報として、パケットデータのデータ長を同定することができるようにするために、ASペイロードに格納されるデータのデータ長を示すパケットカウントPC(Packet Count)が追加される。即ち、パケットデータは、パケットカウントPCで定められたバイト数となる。また、拡張パケットヘッダに記載される所定情報として、仮想チャネルの回線数を示すバーチャルチャネルVC(Virtual Channel)が、既存のパケットヘッダへコピーされる。
図22には、E2E protectionに対応するように拡張されたC-PHY用の拡張パケットの構造例が示されている。
図示するように、C-PHY用の拡張パケットは、D-PHY用の拡張パケットと同様に、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。そして、拡張パケットヘッダには、D-PHY用の拡張パケットと同様に、E2E protectionの保護範囲をASペイロードに限定した場合に必要となる所定情報として、パケットカウントPCおよびバーチャルチャネルVCが記載される。
図23には、E2E protectionに対応するように拡張されたA-PHY用の拡張パケットの構造例が示されている。
図示するように、A-PHY用の拡張パケットにおいても、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。
ここで、通信システム201は、図20を参照して説明したように、イメージセンサ211からSerDes装置212に送信されたD-PHY用またはC-PHY用の拡張パケットからA-PHY用の拡張パケットが生成される。従って、A-PHY用の拡張パケットの拡張パケットヘッダには、パケットカウントPCおよびバーチャルチャネルVCが既に記載されている。
このようなパケット構造を採用することで、通信システム201は、伝送経路上においてASペイロードが改変されることを回避して、E2E protectionを順守することが可能となる。なお、図21乃至図23に示したパケット構造は、図3乃至図8および図15乃至図18に示したようなパケット構造の該当するパケットと部分的に置き換えて用いることができ、パケット生成の一部が置き換えられる。
<E2E protectionに適応したパケット送受信処理>
図24は、E2E protectionに適応したパケット送受信処理を説明するフローチャートである。
例えば、パケットデータに格納するデータ(例えば、画像データなど)が拡張モード対応CSI-2送信回路221に供給されると処理が開始される。そして、ステップS101において、イメージセンサ211では、拡張モード対応CSI-2送信回路221が、供給されたデータをパケットデータに格納する。さらに、拡張モード対応CSI-2送信回路221は、上述の図21または図22に示したようにバーチャルチャネルVCおよびパケットカウントPCを記載した拡張パケットヘッダを生成する。そして、拡張モード対応CSI-2送信回路221は、パケットデータに対して、拡張パケットヘッダを付加するとともに、拡張パケットフッタを付加することにより、ASペイロードを生成する。
ステップS102において、拡張モード対応CSI-2送信回路221は、ステップS101で生成したASペイロードに対して、C-PHY用またはD-PHY用のパケットヘッダとC-PHY用またはD-PHY用のパケットフッタとを付加することにより、C-PHY用またはD-PHY用の拡張パケットを生成する。そして、拡張モード対応CSI-2送信回路221は、C/D-PHY物理層処理部222を介して、C-PHY用またはD-PHY用の拡張パケットをSerDes装置212に送信する。
ステップS103において、SerDes装置212では、CSI-2受信回路231が、C/D-PHY物理層処理部232を介して、ステップS102でイメージセンサ211から送信されてくるC-PHY用またはD-PHY用の拡張パケットを受信する。そして、CSI-2受信回路231は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得し、ASペイロードをそのままCSI-2用A-PHYパケット生成部235に供給する。
ステップS104において、SerDes装置212では、CSI-2用A-PHYパケット生成部235が、CSI-2受信回路231から供給されたASペイロードに対して、A-PHY用のパケットヘッダとA-PHY用のパケットフッタを付加することにより、A-PHY用の拡張パケットを生成する。そして、CSI-2用A-PHYパケット生成部235は、A-PHYに対応した物理層処理部237を介して、A-PHY用の拡張パケットをSerDes装置213に送信する。
ステップS105において、SerDes装置213では、CSI-2用A-PHYパケット受信部245が、A-PHYに対応した物理層処理部247を介して、ステップS104でSerDes装置212から送信されてくるA-PHY用の拡張パケットを受信する。そして、CSI-2用A-PHYパケット受信部245は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得し、ASペイロードをそのままCSI-2送信回路241に供給する。
ステップS106において、CSI-2送信回路241は、ステップS105でCSI-2用A-PHYパケット受信部245から供給されたASペイロードに対して、C-PHY用またはD-PHY用のパケットヘッダとC-PHY用またはD-PHY用のパケットフッタとを付加することにより、C-PHY用またはD-PHY用の拡張パケットを生成する。そして、CSI-2送信回路241は、C/D-PHY物理層処理部242を介して、C-PHY用またはD-PHY用の拡張パケットをアプリケーションプロセッサ214に送信する。
ステップS107において、アプリケーションプロセッサ214では、拡張モード対応CSI-2受信回路251が、C/D-PHY物理層処理部252を介して、ステップS106でSerDes装置213から送信されてくるC-PHY用またはD-PHY用の拡張パケットを受信する。そして、拡張モード対応CSI-2受信回路251は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得して、ASペイロードのパケットデータに格納されている各種のデータを、後段のLSI(図示せず)へ出力する。その後、E2E protectionに適応したパケット送受信処理は終了され、次の拡張パケットを対象として、同様の処理が繰り返して行われる。
以上のように、通信システム201は、E2E protectionに適応したパケット送受信処理を実行することによって、伝送経路上でASペイロードを改変することなく、拡張パケットを送受信することができる。このとき、例えば、イメージセンサ211の物理層がD-PHYであって、アプリケーションプロセッサ214の物理層がC-PHYである場合であっても、即ち、それぞれのインタフェースが異なっている場合であっても、E2E protectionを順守することができる。
<イメージセンサ211の詳細な構成例>
図25は、イメージセンサ211の詳細な構成例を示すブロック図である。なお、図25に示すイメージセンサ211において、図9のイメージセンサ21と共通する構成には、同一の符号を付し、その詳細な説明は省略する。
即ち、イメージセンサ211は、図9のイメージセンサ21と同様に、画素41、AD変換器42、画像処理部43、レジスタ47、およびコントローラ60を備えて構成される。また、イメージセンサ211が備えるI2C/I3Cスレーブ223およびCCIスレーブ224は、図9のI2C/I3Cスレーブ46およびCCIスレーブ59にそれぞれ対応する。
そして、イメージセンサ211は、拡張モード対応CSI-2送信回路221および物理層処理部222を備えており、物理層処理部222は、A-PHY、C-PHY、およびD-PHYに対応している。
拡張モード対応CSI-2送信回路221は、コントローラ60およびCCIスレーブ224の他、ASペイロード生成部301、セレクタ302、A-PHYパケット生成部303、C-PHYパケット生成部304、D-PHYパケット生成部305、およびセレクタ306を備えて構成される。
ASペイロード生成部301は、E2E protectionの保護範囲として限定されるASペイロードを生成して、セレクタ302に出力する。例えば、ASペイロード生成部301は、パッキング部311、拡張パケットヘッダ生成部312、および拡張パケットフッタ生成部313を有している。
パッキング部311は、送信対象のデータとして画像処理部43から供給される画像データをパッキングし、パケットカウントPCで定められたバイト数のパケットデータを生成する。例えば、コントローラ60が、レジスタ47に記憶されている設定値(例えば、画像サイズなど)に従って、パッキング部311が生成するパケットデータのバイト数を制御することができる。
拡張パケットヘッダ生成部312は、例えば、図21乃至図23を参照して説明したように、パケットカウントPCおよびバーチャルチャネルVCを記載した拡張パケットヘッダを生成して、パケットデータに付加する。拡張パケットフッタ生成部313は、拡張パケットフッタを生成してパケットデータに付加する。
セレクタ302は、コントローラ60の制御に従って、ASペイロード生成部301から供給されるASペイロードの出力先として、並列に設けられるA-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305のうちの1つを選択する。
A-PHYパケット生成部303は、セレクタ302を介して供給されるASペイロードからA-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、A-PHYパケット生成部303は、AAL生成部321、A-PHY用パケットヘッダ生成部322、およびA-PHY用パケットフッタ生成部323を有している。
例えば、AAL(A-PHY Adaptation Layer)生成部321は、ASペイロード生成部301で生成されたASペイロードを、Adaptation Layerと称される階層で380byteごとに分割する。そして、分割後のASペイロードに対して、A-PHY用パケットヘッダ生成部322がA-PHY用のパケットヘッダを付加し、A-PHY用パケットフッタ生成部323がA-PHY用のパケットフッタを付加する。
C-PHYパケット生成部304は、セレクタ302を介して供給されるASペイロードからC-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、C-PHYパケット生成部304は、C-PHY用パケットヘッダ生成部331、C-PHY用パケットフッタ生成部332、およびC-PHY用レーン分配部333を有している。
例えば、ASペイロード生成部301で生成されたASペイロードに対して、C-PHY用パケットヘッダ生成部331がC-PHY用のパケットヘッダを付加し、C-PHY用パケットフッタ生成部332がC-PHY用のパケットフッタを付加する。そして、C-PHY用レーン分配部333は、C-PHY用の拡張パケットを、CSI-2の規格に従った3レーンに分配する。
D-PHYパケット生成部305は、セレクタ302を介して供給されるASペイロードからD-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、D-PHYパケット生成部305は、D-PHY用パケットヘッダ生成部341、D-PHY用パケットフッタ生成部342、およびD-PHY用レーン分配部343を有している。
例えば、ASペイロード生成部301で生成されたASペイロードに対して、D-PHY用パケットヘッダ生成部341がD-PHY用のパケットヘッダを付加し、D-PHY用パケットフッタ生成部342がD-PHY用のパケットフッタを付加する。そして、D-PHY用レーン分配部343は、D-PHYの拡張パケットを、CSI-2の規格に従った4レーンに分配する。
セレクタ306は、コントローラ60の制御に従って、物理層処理部222に供給される拡張パケットの出力元として、並列に設けられるA-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305のうちの1つを選択する。
そして、物理層処理部222は、A-PHYパケット生成部303からA-PHY用の拡張パケットが供給された場合には、1レーンでA-PHY用の拡張パケットを送信する。また、物理層処理部222は、C-PHYパケット生成部304からC-PHY用の拡張パケットが供給された場合には、3レーンでC-PHY用の拡張パケットを送信する。また、物理層処理部222は、D-PHYパケット生成部305からD-PHY用の拡張パケットが供給された場合には、4レーンでD-PHY用の拡張パケットを送信する。
以上のように構成されるイメージセンサ211は、ASペイロード生成部301が、セレクタ302を介して、A-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305に接続されるように拡張モード対応CSI-2送信回路221が構成される。これにより、イメージセンサ211は、A-PHY用の拡張パケット、C-PHY用の拡張パケット、およびD-PHY用の拡張パケットで共通するASペイロードを、1つのASペイロード生成部301で生成することができる。即ち、A-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305でASペイロード生成部301を共有することができ、これにより回路規模の縮小を図ることができる。従って、イメージセンサ211の小型化を実現することができる。
<アプリケーションプロセッサ214の詳細な構成例>
図26は、アプリケーションプロセッサ214の詳細な構成例を示すブロック図である。なお、図26に示すアプリケーションプロセッサ214において、図10のアプリケーションプロセッサ22と共通する構成には、同一の符号を付し、その詳細な説明は省略する。
即ち、アプリケーションプロセッサ214は、図10のアプリケーションプロセッサ22と同様に、レジスタ73、およびコントローラ74を備えて構成される。なお、コントローラ74は、ソフトウェアにより実現してもよい。また、アプリケーションプロセッサ214が備えるI2C/I3Cマスタ253およびCCIマスタ254は、図10のI2C/I3Cマスタ72およびCCIマスタ88にそれぞれ対応する。
そして、アプリケーションプロセッサ214は、拡張モード対応CSI-2受信回路251および物理層処理部252を備えており、物理層処理部252は、A-PHY、C-PHY、およびD-PHYに対応している。
拡張モード対応CSI-2受信回路251は、CCIマスタ254の他、セレクタ401、A-PHYパケット受信部402、C-PHYパケット受信部403、D-PHYパケット受信部404、セレクタ405、およびASペイロード受信部406を備えて構成される。
セレクタ401は、物理層処理部252から供給される拡張パケットの出力先として、並列に設けられるA-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404のうちの1つを選択する。
A-PHYパケット受信部402は、セレクタ401を介して供給されるA-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、A-PHYパケット受信部402は、A-PHY用パケットヘッダ解釈部411、A-PHY用パケットフッタ検証部412、およびAAL処理部413を有している。
例えば、A-PHY用パケットヘッダ解釈部411は、A-PHY用のパケットヘッダに記載されている内容を解釈して、A-PHY用の拡張パケットの受信に必要な処理を行い、A-PHY用パケットフッタ検証部412は、A-PHY用のパケットフッタを用いてエラーの有無を検証する。そして、AAL処理部413は、図25のAAL生成部321において分割されたAdaptation Layerを結合する処理を行う。
C-PHYパケット受信部403は、セレクタ401を介して供給されるC-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、C-PHYパケット受信部403は、C-PHY用レーン併合部421、C-PHY用パケットヘッダ解釈部422、およびC-PHY用パケットフッタ検証部423を有している。
例えば、C-PHY用レーン併合部421は、CSI-2の規格に従って3レーンに分配されて物理層処理部252を介して供給されるC-PHY用の拡張パケットを併合する。そして、C-PHY用パケットヘッダ解釈部422は、C-PHY用のパケットヘッダに記載されている内容を解釈して、C-PHY用の拡張パケットの受信に必要な処理を行い、C-PHY用パケットフッタ検証部423は、C-PHY用のパケットフッタを用いてエラーの有無を検証する。
D-PHYパケット受信部404は、セレクタ401を介して供給されるD-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、D-PHYパケット受信部404は、D-PHY用レーン併合部431、D-PHY用パケットヘッダ解釈部432、およびD-PHY用パケットフッタ検証部433を有している。
例えば、D-PHY用レーン併合部431は、CSI-2の規格に従って4レーンに分配されて物理層処理部252を介して供給されるD-PHY用の拡張パケットを併合する。そして、D-PHY用パケットヘッダ解釈部432は、D-PHY用のパケットヘッダに記載されている内容を解釈して、D-PHY用の拡張パケットの受信に必要な処理を行い、D-PHY用パケットフッタ検証部433は、D-PHY用のパケットフッタを用いてエラーの有無を検証する。
セレクタ405は、ASペイロード受信部406に供給される拡張パケットの出力元として、並列に設けられるA-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404のうちの1つを選択する。
ASペイロード受信部406は、図25のASペイロード生成部301に対応して、アンパッキング部441、拡張パケットヘッダ解釈部442、および拡張パケットフッタ検証部443を有している。アンパッキング部441は、パッキング部311によりパッキングされた画像データをアンパッキングする。拡張パケットヘッダ解釈部442は、拡張パケットヘッダ生成部312において生成された拡張パケットヘッダを解釈し、例えば、パケットカウントPCおよびバーチャルチャネルVCを読み出す。拡張パケットフッタ検証部443は、拡張パケットフッタ生成部313により付加された拡張パケットフッタを用いてエラーの有無を検証する。そして、ASペイロード受信部406は、セレクタ405を介して供給されるパケットデータに格納されている各種のデータ、例えば、画像データ、車載用行番号やSourceIDなど、CRCエラーなどを、後段のLSI(図示せず)へ出力する。
以上のように構成されるアプリケーションプロセッサ214は、ASペイロード受信部406が、セレクタ405を介して、A-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404に接続されるように拡張モード対応CSI-2受信回路251が構成される。これにより、アプリケーションプロセッサ214は、A-PHY用の拡張パケット、C-PHY用の拡張パケット、およびD-PHY用の拡張パケットで共通するASペイロードを、1つのASペイロード受信部406で受信することができる。即ち、A-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404でASペイロード受信部406を共有することができ、これにより回路規模の縮小を図ることができる。従って、アプリケーションプロセッサ214の小型化を実現することができる。
<E2E Protectionに適応した第2の構成例>
図27乃至図74を参照して、E2E Protectionに適応した第2の構成例について説明する。
<A-PHY直結構成の構成例>
図27に示す通信システム501は、イメージセンサ511およびアプリケーションプロセッサ512がA-PHYにより直接的に(後述する図40を参照して説明するようなSerDes装置を介さずに)接続される直結構成となっている。
イメージセンサ511は、A-PHY処理部521、CSIA処理部522、CSI2処理部523、CSI2-FS処理部524、CCI処理部525、CCI-FS処理部526、およびレジスタ527を備えて構成される。
A-PHY処理部521は、CCI処理部525が上位層として実装され、アプリケーションプロセッサ512のA-PHY処理部531と、MIPI A-PHY接続して拡張パケットヘッダePHおよび拡張パケットフッタePFを含むデータを送受信する。
CCI-FS処理部526は、例えば、拡張パケットヘッダePHに含まれるDesination IDとイメージセンサ511が有するID(Source ID)とを比較し、イメージセンサ511へのアクセスか否かの判別を行う。
アプリケーションプロセッサ512は、A-PHY処理部531、CSIA処理部532、CSI2処理部533、CSI2-FS処理部534、CCI処理部535、CCI-FS処理部536、レジスタ537、およびCCI-FSスイッチ538を備えて構成される。
A-PHY処理部531は、CCI処理部535が上位層として実装され、イメージセンサ511のA-PHY処理部521と、MIPI A-PHY接続して拡張パケットヘッダePHおよび拡張パケットフッタePFを含むデータを送受信する。
CCI-FS処理部536は、例えば、拡張パケットヘッダePHに含まれるDesination IDとアプリケーションプロセッサ512が有するID(Source ID)とを比較し、アプリケーションプロセッサ512へのアクセスか否かの判別を行う。
CCI-FSスイッチ538は、CCI-FS処理部536が有効である場合にはCCI-FS処理部536を介してデータが送受信され、CCI-FS処理部536が無効である場合にはCCI-FS処理部536を介さずにデータが送受信されるような切り替えを行う。
図28乃至図32を参照して、通信システム501におけるリードコマンドおよびリードデータの転送について説明する。
図28には、リードアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるリードコマンドのパケット構成の一例が示されている。
図28に示すように、リードコマンドは、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。
拡張パケットヘッダePH*(*=n)は、図示するように、拡張パケットヘッダePH0乃至ePH3からなる。
拡張パケットヘッダePH0には、拡張VC、拡張DT、拡張PFEN、および拡張PHENが格納される。例えば、拡張DTは、CCIプロトコル(I2C)を示す情報であって、拡張DTを用いてルーティングの処理が行われる。
拡張パケットヘッダePH1には、Source ID[7:1]、およびPacket Lengthが格納される。例えば、Source IDは、CCIプロトコル(I2C)の送信元を示す情報であって、Source IDに基づいて応答処理が行われる。Packet Lengthは、データ長を示す情報である。
拡張パケットヘッダePH2には、Security Descriptor、およびMessage Counterが格納される。Security Descriptorは、セキュリティを使用するか否かを示し、セキュリティを使用しない場合には「8'h0」を示す。Message Counterは、バケット順番を示す情報であって、メッセージをカウントしたカウント値を示し、メッセージが5番目のときには「16'h5」を示す。
拡張パケットヘッダePH3には、Destination ID[7:1]、Read/Write、およびDestination Addressが格納される。Destination ID[7:1]は、イメージセンサ511のCCI処理部525のスレーブアドレスを示し、図示する例では「7'h0D」となっている。例えば、Destination IDは、CCIプロトコル(I2C)の送信先を示す情報であって、Destination IDに基づいてルーティングが行われるとともに、通信経路の参照が行われる。Read/Writeは、データの読み出しまたは書き込みを示し、リードの場合には「1'b1」を示す。Destination Addressは、最終目的地となるイメージセンサ511のレジスタ527のアドレスを示し、図示する例では「0x0200」となっている。
AP(CCI)ペイロードには、例えば、各種のデータ(Data0[7:0])が格納される。AP(CCI)ペイロードは、セキュリティがオフのときには送信されず、セキュリティがオンのとき、ダミーデータを格納して送信してもよい。
拡張パケットフッタePF1は、セキュリティがオフのときには送信されない。
拡張パケットフッタePF0には、CRC計算値が格納される。
アプリケーションプロセッサ512では、このようなパケット構造のリードコマンドが、CCI-FS処理部536において生成されてA-PHY処理部531に供給される。
図29には、リードアクセス時に、アプリケーションプロセッサ512のA-PHY処理部531から出力されるリードコマンドのパケット構成の一例が示されている。
図29に示すように、A-PHY処理部531は、CCI-FS処理部536から供給されたリードコマンドをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードコマンドが、アプリケーションプロセッサ512のA-PHY処理部531によってA-PHY転送される。そして、イメージセンサ511では、A-PHY処理部521が、リードコマンドからA-PHYヘッダおよびA-PHYフッタを除去する。その後、リードコマンドは、Destination IDにより示されるスレーブアドレス「7'h0D」のCCI処理部525を介して、CCI-FS処理部526に供給される。
図30には、リードアクセス時に、CCI-FS処理部526に供給されるリードコマンドと、CCI-FS処理部526において生成されるリードデータのパケット構造の一例が示されている。
図30に示すように、図28に示したパケット構造のままのリードコマンド、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードコマンドが、CCI-FS処理部526に供給される。
リードデータは、図示するように、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。そして、AP(CCI)ペイロードには、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ527のアドレス「0x0200」から読み出されたリードデータ値が格納される。
イメージセンサ511では、このようなパケット構造のリードデータが、CCI-FS処理部526において生成されA-PHY処理部521に供給される。
図31には、リードアクセス時に、イメージセンサ511のA-PHY処理部521から出力されるリードデータのパケット構成の一例が示されている。
図31に示すように、A-PHY処理部521は、CCI-FS処理部526から供給されたリードデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードデータが、イメージセンサ511のA-PHY処理部521によってA-PHY転送される。そして、アプリケーションプロセッサ512では、A-PHY処理部531が、リードデータからA-PHYヘッダおよびA-PHYフッタを除去し、リードデータが、CCI-FS処理部536に供給される。
図32には、リードアクセス時に、CCI-FS処理部536に供給されるリードデータのパケット構造の一例が示されている。
図32に示すように、図30に示したパケット構造のままのリードデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードデータが、CCI-FS処理部536に供給される。
図33乃至図35を参照して、通信システム501におけるライトデータの転送について説明する。なお、イメージセンサ511側のCCI-FS処理部526が、イネーブルとされている状態からのアクセスを想定して説明を行う。
図33には、ライトアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるライトデータのパケット構成の一例が示されている。
図33に示すように、ライトデータは、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード(ライトデータ)、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。
拡張パケットヘッダePH*(*=n)は、図示するように、拡張パケットヘッダePH0乃至ePH3からなる。
拡張パケットヘッダePH0には、拡張VC、拡張DT、拡張PFEN、および拡張PHENが格納される。
拡張パケットヘッダePH1には、Source ID[7:1]、およびPacket Lengthが格納される。
拡張パケットヘッダePH2には、Security Descriptor、およびMessage Counterが格納される。Security Descriptorは、セキュリティを使用するか否かを示し、セキュリティを使用しない場合には「8'h0」を示す。Message Counterは、メッセージをカウントしたカウント値を示し、メッセージが4番目のときには「16'h4」を示す。
拡張パケットヘッダePH3には、Destination ID[7:1]、Read/Write、およびDestination Addressが格納される。Destination ID[7:1]は、イメージセンサ511のCCI処理部525のスレーブアドレスを示し、図示する例では「7'h0D」となっている。Read/Writeは、データの読み出しまたは書き込みを示し、ライトの場合には「1'b0」を示す。Destination Addressは、最終目的地となるイメージセンサ511のレジスタ527のアドレスを示し、図示する例では「0x1234」となっている。
AP(CCI)ペイロードには、イメージセンサ511に書き込むデータ(Data0[7:0])が格納され、0xFF値がライトデータとなる。
拡張パケットフッタePF1は、セキュリティがオフのときには送信されない。
拡張パケットフッタePF0には、CRC計算値が格納される。
アプリケーションプロセッサ512では、このようなパケット構造のライトデータが、CCI-FS処理部536において生成されてA-PHY処理部531に供給される。
図34には、ライトアクセス時に、アプリケーションプロセッサ512のA-PHY処理部531から出力されるライトデータのパケット構成の一例が示されている。
図34に示すように、A-PHY処理部531は、CCI-FS処理部536から供給されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のライトデータが、アプリケーションプロセッサ512のA-PHY処理部531によってA-PHY転送される。そして、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去する。その後、ライトデータは、Destination IDにより示されるスレーブアドレス「7'h0D」のCCI処理部525を介して、CCI-FS処理部526に供給される。
図35には、ライトアクセス時に、CCI-FS処理部526に供給されるライトデータのパケット構造の一例が示されている。
図35に示すように、図33に示したパケット構造のままのライトデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたライトデータが、CCI-FS処理部526に供給される。そして、CCI-FS処理部526は、CCIコマンドID情報、即ち、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ527のアドレス「0x1234」より、AP(CCI)ペイロードに格納されているデータの書き込みを行う。
図36を参照して、拡張パケットヘッダePHおよび拡張パケットフッタePFの概要について説明する。
図36に示すように、CCI-FS E2Eパケットは、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタePFにより構成され、そのパケット長は、Length = Byte Count × Data Byte widthとなる。
拡張パケットヘッダePHは、拡張VC、拡張DT、Message Counterなどのフィールドが用いられる。拡張パケットヘッダePHのフィールド値(epFEN field)で、拡張パケットヘッダePHの長さを変更することができる。
パケットデータは、例えば、PL個のデータ(Data 0~Data PL-1)により構成され、その長さは、Length = Packet Length(PL) × Data Byte Widthとなる。パケットデータには、リードコマンドの場合に、セキュリティがオフのときにはデータが格納されず、セキュリティがオンのときには1バイトのダミーデータが格納される。パケットデータには、ライトアクセスの場合に、ペイロードデータ分のライトデータが格納される。パケットデータには、リードアクセスの場合は、ペイロードデータ分のリードデータが格納される。パケットデータには、Clock Stretch(ePH0のControl Code Indicator=1)を用いるときは、制御の種類を意味する1バイトのデータペイロードが付けられる。
拡張パケットフッタePF1は、拡張パケットヘッダePHのフィールド設定値(epFEN field)で、長さを変更することができる。また、セキュリティ関連情報を付加することができる。
拡張パケットフッタePF0は、拡張パケットヘッダePHのフィールド設定値で、パケットデータから計算されるCRC-32を付加することができる。
<通信処理の処理例>
図37乃至図39のフローチャートを参照して、図27に示した通信システム501において行われるCCI-FSを使用した通信処理について説明する。
図37に示すように、ステップS211乃至S222では、初期設定および確認動作が行われる。
ステップS211において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のCapabilityレジスタに対して2回リードアクセスが行われる。なお、リードアクセスを行う回数は2回に限定されることなく、例えば、機能安全的に任意に設定することができ、1回または3回以上の複数回でもよい。
ステップS212において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、ステップS211でのリードアクセスの結果について、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1であるか否かを判定する。ステップS212において、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1でないと判定された場合、処理はステップS213に進む。
ステップS213において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、再送回数が3回以上であるか否かを判定する。なお、再送回数は3回に限定されることなく、任意の回数に設定することができ、以下で説明する再送回数についても同様である。ステップS213において、再送回数が3回以上でない(1回または2回)と判定された場合、処理はステップS211に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS212において、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1であると判定された場合、処理は214に進む。
ステップS214において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のEnableレジスタに対する1ライトアクセスが行われる。
ステップS215において、イメージセンサ511では、CCI-FS処理部526が、アプリケーションプロセッサ512のCCI-FS処理部536のEnableレジスタに対する1ライトアクセスを行う。
ステップS216において、アプリケーションプロセッサ512のCCI-FS処理部536のDestination SIDレジスタに、対向のイメージセンサ511のスレーブアドレスを設定する。
ステップS217において、アプリケーションプロセッサ512のCCI-FS処理部536のePHレジスタの設定を行う。
ステップS218において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のePHレジスタの設定が行われる。
ステップS219において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のEnableレジスタおよびErrorレジスタに対するリードアクセスが行われる。
ステップS220において、アプリケーションプロセッサ512では、CCI-FS処理部536が、ステップS219でのリードアクセスの結果について、CCI-FS処理部526のEnableレジスタ値が1’b1であり、かつ、Errorレジスタ値が0であるか否かを判定する。
ステップS220において、CCI-FS処理部526のEnableレジスタ値が1’b1でない、または、Errorレジスタ値が0でないと判定された場合、処理はステップS221に進む。
ステップS221において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、再送回数が3回以上であるか否かを判定する。ステップS221において、再送回数が3回以上であると判定された場合、処理はステップS211に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS213において、再送回数が3回以上であると判定された場合、または、ステップS221において、再送回数が3回以上でない(1回または2回)と判定された場合、処理はステップS222に進む。
ステップS222において、CCI-FSを使用せずにCCIでの通信を行い、その後、通信処理が終了される。
一方、ステップS220において、CCI-FS処理部526のEnableレジスタ値が1’b1であり、かつ、Errorレジスタ値が0であると判定された場合、処理はステップS223に進む。
図38に示すように、ステップS223乃至S234では、CCI-FSを使用したライト動作が行われる。
ステップS223において、アプリケーションプロセッサ512のCCI-FS処理部536は、ライト動作を行うようにePHレジスタの設定を行う。
ステップS224において、アプリケーションプロセッサ512のCCI-FS処理部536は、ライトデータレジスタの設定を行う。
ステップS225において、アプリケーションプロセッサ512のCCI-FS処理部536は、コマンド実行レジスタを1に設定する。
ステップS226において、アプリケーションプロセッサ512では、A-PHY処理部531が、上述した図34に示したように、CCI-FS処理部536により生成されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加し、A-PHY転送を行う。
ステップS227において、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去し、E2E Protectionの保護範囲をCCI-FS処理部526に供給する。
ステップS228において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、イメージセンサ511のSource IDと、拡張パケットヘッダePHのDestination SIDとを確認する。
ステップS229において、イメージセンサ511では、CCI-FS処理部526が、ステップS228で確認したイメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS229において、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS230に進む。
ステップS230において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS231において、イメージセンサ511では、CCI-FS処理部526が、ステップS230で確認したイメージセンサ511のMessage Counter(受信)と、拡張パケットヘッダePHのMessage Counterとが一致したか否かを判定する。
ステップS231において、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致したと判定された場合、処理はステップS232に進む。
ステップS232において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットフッタePFの内容から、CRCを確認する。
ステップS233において、イメージセンサ511では、CCI-FS処理部526が、ステップS232で確認した拡張パケットフッタePFの受信値(ePF0)と、CCI-FS処理部526において計算されたCRC計算結果が一致したか否かを判定する。
ステップS233において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理はステップS234に進む。
ステップS234において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ527のアドレスにライトデータを書き込むライト処理を行う。その後、処理はステップS235に進む。
図39に示すように、ステップS235乃至S247では、CCI-FSを使用したリード動作が行われる。
ステップS235において、アプリケーションプロセッサ512では、CCI-FS処理部536が、リード動作が行われるようにePHレジスタの設定を行う。
ステップS236において、アプリケーションプロセッサ512では、CCI-FS処理部536が、コマンド実行レジスタを1に設定する。
ステップS237において、アプリケーションプロセッサ512では、A-PHY処理部531が、上述した図29に示したように、CCI-FS処理部536により生成されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加し、A-PHY転送を行う。
ステップS238において、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去し、E2E Protectionの保護範囲をCCI-FS処理部526に供給する。
ステップS239において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、イメージセンサ511のSource IDと、拡張パケットヘッダePHのDestination SIDとを確認する。
ステップS240において、イメージセンサ511では、CCI-FS処理部526が、ステップS239で確認したイメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS240において、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS241に進む。
ステップS241において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS242において、イメージセンサ511では、CCI-FS処理部526が、ステップS241で確認したイメージセンサ511のMessage Counter(受信)と、拡張パケットヘッダePHのMessage Counterとが一致したか否かを判定する。
ステップS242において、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致したと判定された場合、処理はステップS243に進む。
ステップS243において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットフッタePFの内容から、CRCを確認する。
ステップS244において、イメージセンサ511では、CCI-FS処理部526が、ステップS243で確認した拡張パケットフッタePFの受信値(ePF0)と、CCI-FS処理部526において計算されたCRC計算結果が一致したか否かを判定する。
ステップS244において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理は終了される。
一方、図38のステップS229または図39のステップS240で、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致していないと判定された場合、処理はステップS245に進む。
ステップS245において、イメージセンサ511側のErrorレジスタ(Routing)を1とし、その後、処理は終了される。
一方、図38のステップS231または図39のステップS242で、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致していないと判定された場合、処理はステップS246に進む。
ステップS246において、イメージセンサ511側のErrorレジスタ(MC)を1とし、その後、処理は終了される。
一方、図38のステップS233または図39のステップS244で、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致していないと判定された場合、処理はステップS247に進む。
ステップS247において、イメージセンサ511側のErrorレジスタ(CRC)を1とし、その後、処理は終了される。
<SerDes接続構成の構成例>
図40に示す通信システム601は、イメージセンサ611およびアプリケーションプロセッサ614が、スレーブ側となるSerDes装置612とマスタ側となるSerDes装置613とを介して接続されるSerDes接続構成となっている。
イメージセンサ611は、I2C/I3Cスレーブ621、CCI処理部622、CSI2-FS処理部623、およびレジスタ624を備えて構成される。
スレーブ側のSerDes装置612は、A-PHY処理部631、CSIA処理部632、CSI2-FS処理部633、I2C/I3Cマスタ634、CCI処理部635、CCI-FS処理部636、およびレジスタ637を備えて構成される。
マスタ側のSerDes装置613は、A-PHY処理部641、CSIA処理部642、CSI2-FS処理部643、I2C/I3Cスレーブ644、CCI処理部645、CCI-FS処理部646、およびレジスタ647を備えて構成される。
アプリケーションプロセッサ614は、I2C/I3Cマスタ651、CCI処理部652、CCI-FS処理部653、レジスタ654、およびCCI-FSスイッチ655を備えて構成される。
なお、図40に示すようなSerDes接続構成では、CCI構成やCCI-FS構成が上位プロトコルとして実装されている場合、他のSerDes規格を使用してもよい。例えば、Application Layer、または、その下のレイヤに相当する上位層からのPayloadに、図41に示すような拡張パケットヘッダePH、拡張パケットフッタePF1、および拡張パケットフッタePF0の構成を実装することにより、PCIE,USB,DisplayPort,HDMI(登録商標),LVDS,FPD-LINKなどの各種のSerDes関連を適用することができる。
図41乃至図49を参照して、通信システム601におけるリードコマンドおよびリードデータの転送について説明する。
図41には、リードアクセス時に、アプリケーションプロセッサ614のCCI-FS処理部653において生成されるリードコマンドのパケット構成の一例が示されている。
図41に示すように、リードコマンドは、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。なお、それらの詳細については、上述の図28を参照して説明したリードコマンドと同様である。
アプリケーションプロセッサ614では、このようなパケット構造のリードコマンドが、CCI-FS処理部653において生成されてI2C/I3Cマスタ651に供給される。
図42には、リードアクセス時に、アプリケーションプロセッサ614のI2C/I3Cマスタ651から出力されるリードコマンドのパケット構成の一例が示されている。
図42に示すように、I2C/I3Cマスタ651は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではマスタ側のSerDes装置613のCCI処理部645のアドレス(Slave Address+W 8-bit)を送信する。図42に示す例では、CCI処理部645のアドレスは、Slave Address[7:1]=7'h0Fとなっている。そのアドレスに続いて、マスタ側のSerDes装置613のレジスタ647のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信される。I2C/I3Cマスタ651は、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0に続けて、最後にストップコンディションPを送信する。
このようなパケット構造のリードコマンドが、アプリケーションプロセッサ614のI2C/I3Cマスタ651からI2C/I3Cにより転送される。マスタ側のSerDes装置613では、I2C/I3Cスレーブ644が、リードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードコマンドは、Slave Address[7:1]=7'h0FのCCI処理部645に供給された後、CCI-FS処理部646、CSI2-FS処理部643、およびCSIA処理部642を介して、A-PHY処理部641に供給される。
図43には、リードアクセス時に、マスタ側のSerDes装置613のA-PHY処理部641から出力されるリードコマンドのパケット構成の一例が示されている。
図43に示すように、A-PHY処理部641は、I2C/I3Cスレーブ644が取得したリードコマンドをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。なお、拡張パケットヘッダePH*(*=n)には、マスタ側のSerDes装置613のCCI処理部635のアドレス、例えば、Slave Address[7:1]=7'h0Eが、CSI2-FS処理部643において付加される。
このようなパケット構造のリードコマンドが、マスタ側のSerDes装置613のA-PHY処理部641によってA-PHY転送される。スレーブ側のSerDes装置612では、A-PHY処理部631が、リードコマンドからA-PHYヘッダおよびA-PHYフッタを除去する。リードコマンドは、CSIA処理部632、CSI2-FS処理部633、CCI-FS処理部636を介して、Destination IDにより示されるスレーブアドレス「7'h0E」のCCI処理部635に供給された後、I2C/I3Cマスタ634に供給される。
図44には、リードアクセス時に、I2C/I3Cマスタ634から出力されるリードコマンドのパケット構成の一例が示されている。
図44に示すように、I2C/I3Cマスタ634は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではイメージセンサ611のCCI処理部622のアドレス(Slave Address+W 8-bit)を送信する。図44に示す例では、CCI処理部622のアドレスは、Slave Address[7:1]=7'h0Dとなっている。そのアドレスに続いて、イメージセンサ611のレジスタ624のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信される。I2C/I3Cマスタ634は、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0に続けて、最後にストップコンディションPを送信する。
このようなパケット構造のリードコマンドが、スレーブ側のSerDes装置612のI2C/I3Cマスタ634からI2C/I3Cにより転送される。そして、イメージセンサ611では、I2C/I3Cスレーブ621がリードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードコマンドは、Slave Address[7:1]=7'h0DのCCI処理部622を介して、CSI2-FS処理部623に供給される。
図45には、リードアクセス時に、CSI2-FS処理部623に供給されるリードコマンドと、CSI2-FS処理部623において生成されるリードデータのパケット構造の一例が示されている。
図45に示すように、図41に示したパケット構造のままのリードコマンド、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードコマンドが、CSI2-FS処理部623に供給される。
リードデータは、図示するように、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。そして、AP(CCI)ペイロードには、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ624のアドレス「0x0200」から読み出されたリードデータ値が格納される。
イメージセンサ611では、このようなパケット構造のリードデータが、CCI-FS処理部623において生成され、CCI処理部622を介してI2C/I3Cスレーブ621に供給される。
図46には、リードアクセス時に、イメージセンサ611のI2C/I3Cスレーブ621から出力されるリードデータのパケット構成の一例が示されている。
図46に示すように、I2C/I3Cスレーブ621は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではスレーブ側のSerDes装置612のI2C/I3Cマスタ634のアドレス(Slave Address+W 8-bit)を送信する。図46に示す例では、I2C/I3Cマスタ634のアドレスは、Slave Address[7:1]=7'h0Dとなっている。そのアドレスに続いて、リードデータの格納アドレス(イメージセンサ611のレジスタ624のアドレス)が送信され、スレーブ側のSerDes装置612のI2C/I3Cマスタ634のアドレス(Slave Address+R 8-bit)が送信される。I2C/I3Cスレーブ621が、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を送信した後、最後にストップコンディションPが送信される。
このようなパケット構造のリードコマンドが、イメージセンサ611のI2C/I3Cスレーブ621からからI2C/I3Cにより転送される。スレーブ側のSerDes装置612では、I2C/I3Cマスタ634が、リードデータ(拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードデータは、Slave Address[7:1]=7'h0EのCCI処理部635に供給された後、CCI-FS処理部636、CSI2-FS処理部633、およびCSIA処理部632を介して、A-PHY処理部631に供給される。
図47には、リードアクセス時に、スレーブ側のSerDes装置612のA-PHY処理部631から出力されるリードデータのパケット構成の一例が示されている。
図47に示すように、A-PHY処理部631は、I2C/I3Cマスタ634が取得したリードデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードデータが、スレーブ側のSerDes装置612のA-PHY処理部631によってA-PHY転送される。そして、マスタ側のSerDes装置613では、A-PHY処理部641が、リードデータからA-PHYヘッダおよびA-PHYフッタを除去する。リードデータは、CSIA処理部642、CSI2-FS処理部643、CCI-FS処理部646、およびCCI処理部635を介して、I2C/I3Cスレーブ644に供給される。
図48には、リードアクセス時に、マスタ側のSerDes装置613のI2C/I3Cスレーブ644から出力されるリードデータのパケット構成の一例が示されている。
図48に示すように、I2C/I3Cスレーブ644は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成では、マスタ側のSerDes装置613のCCI処理部635のアドレス(Slave Address+W 8-bit)を送信する。図48に示す例では、CCI処理部635のアドレスは、Slave Address[7:1]=7'h0Fとなっている。そのアドレスに続いて、マスタ側のSerDes装置613のレジスタ647のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信され、CCI処理部635のアドレス(Slave Address+R 8-bit)が送信される。続いて、I2C/I3Cスレーブ644が、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を送信した後、最後にストップコンディションPが送信される。
このようなパケット構造のリードデータが、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からI2C/I3Cにより転送される。そして、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、リードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得して、CCI-FS処理部653に供給する。
図49には、リードアクセス時に、CCI-FS処理部653に供給されるリードデータのパケット構造の一例が示されている。
図49に示すように、図45に示したパケット構造のままのリードデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードデータが、CCI-FS処理部653に供給される。
<通信処理の処理例>
図50乃至図57のフローチャートを参照して、図40に示した通信システム601において行われるCCI-FSを使用した通信処理について説明する。
図50に示すように、ステップS301乃至S317では、初期設定および確認動作が行われる。
ステップS301において、アプリケーションプロセッサ614のCCI-FS処理部653のDestination SIDレジスタに、対向のイメージセンサ611のスレーブアドレスを設定する。
ステップS302において、アプリケーションプロセッサ614のCCI-FS処理部653のePHレジスタの設定を行う。
ステップS303において、アプリケーションプロセッサ614のCCI-FS処理部653のBridge構成のDestination SIDの設定を行い、マスタ側のSerDes装置613を登録する。ここで、Address,attribution,Timeout_no1レジスタも、これと同様に設定を行い、以下、同様に設定が行われるものとする。
ステップS304において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のePHレジスタの設定が行われる。
ステップS305において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のBridge構成のDestination SIDの設定を行い、スレーブ側のSerDes装置612を登録する。
ステップS306において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のErrorレジスタに対するリードアクセスが行われる。
ステップS307において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS306のリードアクセスの結果、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS307において、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS308に進む。
ステップS308において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS304に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS307において、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS309に進む。
ステップS309において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のePHレジスタの設定が行われる。
ステップS310において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のBridge構成のDestination SIDの設定を行い、スレーブ側のSerDes装置612を登録する。
ステップS311において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のErrorレジスタに対するリードアクセスが行われる。
ステップS312において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS311のリードアクセスの結果、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS312において、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS313に進む。
ステップS313において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS309に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS312において、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS314に進む。
ステップS314において、アプリケーションプロセッサ614からイメージセンサ611へ、CCI-FS処理部623のePHレジスタの設定が行われる。
ステップS315において、アプリケーションプロセッサ614からイメージセンサ611へ、CCI-FS処理部623のErrorレジスタに対するリードアクセスが行われる。
ステップS316において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS315のリードアクセスの結果、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS316において、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS317に進む。
ステップS317において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS314に戻り、以下、同様の処理が繰り返して行われる。
ここで、ステップS308、ステップS313、またはステップS317において、再送回数が3回以上であると判定された場合、処理はステップS301に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS316において、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS318に進む。
図51に示すように、ステップS318乃至S327では、CCI-FSを使用したライト動作が行われる。
ステップS318において、アプリケーションプロセッサ614のCCI-FS処理部653が、ライト動作を行うようにePHレジスタの設定を行う。
ステップS319において、アプリケーションプロセッサ614のCCI-FS処理部653は、ライトデータレジスタの設定を行う。
ステップS320において、アプリケーションプロセッサ614のCCI-FS処理部653は、コマンド実行レジスタを1に設定して、ライトコマンドを発行する。
ステップS321において、アプリケーションプロセッサ614は、図53を参照して後述するSequence A_Write(AP時)処理を行う。
ステップS322において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS323において、マスタ側のSerDes装置613の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部643およびCSIA処理部642を経由して、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS324において、スレーブ側のSerDes装置612は、図56を参照して後述するSequence B(SerDes(Slave)時)処理を行う。
ステップS325において、スレーブ側のSerDes装置612は、図53を参照して後述するSequence A_Write(SerDes(Slave)時)処理を行う。なお、図53では、アプリケーションプロセッサ614が実行するSequence A_Write(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。
ステップS326において、イメージセンサ611は、図56を参照して後述するSequence B(Image Sensor時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、イメージセンサ611においても対応する各ブロックにより同様の処理を実行することができる。
ステップS327において、イメージセンサ611では、CCI-FS処理部623が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ624のアドレスにライトデータを書き込むライト処理を行う。その後、処理はステップS328に進む。
図52に示すように、ステップS328乃至S344では、CCI-FSを使用したリード動作が行われる。
ステップS328において、アプリケーションプロセッサ614のCCI-FS処理部653は、リード動作を行うようにePHレジスタの設定を行う。
ステップS329において、アプリケーションプロセッサ614のCCI-FS処理部653は、リードデータレジスタの設定を行う。
ステップS330において、アプリケーションプロセッサ614のCCI-FS処理部653は、コマンド実行レジスタを1に設定して、リードコマンドを発行する。
ステップS331において、アプリケーションプロセッサ614は、図54を参照して後述するSequence A_Read_CMD(AP時)処理を行う。ここで、Sequence A_Read_CMD(AP時)処理では、分岐された2つの処理が並列的に行われ、分岐Aに応じてステップS332に処理は進み、分岐Bに応じてステップS339に処理は進む。
ステップS332において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS333において、マスタ側のSerDes装置613の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部643およびCSIA処理部642を経由して、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS334において、スレーブ側のSerDes装置612は、図56を参照して後述するSequence B(SerDes(Slave)時)処理を行う。
ステップS355において、スレーブ側のSerDes装置612は、図54を参照して後述するSequence A_Read_CMD(SerDes(Slave)時)処理を行う。なお、図54では、アプリケーションプロセッサ614において実行されるSequence A_Read_CMD(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。ここで、Sequence A_Read_CMD(SerDes(Slave)時)処理では、分岐された2つの処理のうち、分岐Aに処理は進まず、分岐Bに応じてステップS336に処理は進む。
ステップS336において、スレーブ側のSerDes装置612は、図57を参照して後述するSequence A_Read_Data(SerDes(Slave)時)処理を行う。なお、図57では、アプリケーションプロセッサ614において実行されるSequence A_Read_Data(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。
ステップS337において、スレーブ側のSerDes装置612の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部633およびCSIA処理部632を経由して、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS338において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612において実行されるSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS339において、アプリケーションプロセッサ614は、図57を参照して後述するSequence A_Read_Data(AP時)処理を行う。
ステップS340において、アプリケーションプロセッサ614は、図56を参照して後述するSequence B(AP時)処理を行う。なお、図56では、スレーブ側のSerDes装置612において実行されるSequence B(SerDes(Slave)時)処理について説明しているが、アプリケーションプロセッサ614においても対応する各ブロックにより同様の処理を実行することができる。
ステップS341において、アプリケーションプロセッサ614では、CCI-FS処理部653が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ654のアドレスにリードデータを格納する。
ステップS342において、上述したリード処理を、イメージセンサ611、スレーブ側のSerDes装置612、マスタ側のSerDes装置613、およびアプリケーションプロセッサ614で、Errorレジスタ確認を実施する。
ステップS343において、イメージセンサ611、各デバイス(スレーブ側のSerDes装置612、マスタ側のSerDes装置613、およびアプリケーションプロセッサ614)は、それぞれのCCI-FS処理部のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS343において、全てのCCI-FS処理部のレジスタ値が0でない(いずれかに0以外のレジスタ値がある)と判定された場合、処理はステップS344に進む。
ステップS344において、レジスタ値が0でないCCI-FS処理部のError関連レジスタ値を確認し、Errorレジスタを1ライトクリアして再送処理を行う。
一方、ステップS343において、全てのCCI-FS処理部のレジスタ値が0であると判定された場合、または、ステップS344の処理後、処理は終了される。
図53は、図51のステップS321において行われるSequence A_Write(AP時)処理を説明するフローチャートである。なお、図53では、アプリケーションプロセッサ614が行う処理を例に説明するが、図51のステップS325のSequence A_Write(SerDes(Slave)時)処理も同様に行われる。
ステップS351において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図42に示したSlave Address+W 8-bit)を発行する。
ステップS352において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS352において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS353に進む。
ステップS353において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、レジスタアドレス(図42に示したRegister Address [15:8])を発行する。ここで、ステップS353の処理が繰り返して行われるたびに、図42に示したように、このレジスタアドレス以下のペイロードが送信される。
ステップS354において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS354において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS355に進む。
ステップS355において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、最終データの転送が完了したか否かを判定する。ステップS355において、最終データの転送が完了していないと判定された場合、処理はステップS353に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS355において、最終データの転送が完了したと判定された場合、処理はステップS356に進む。ステップS356において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。これにより、Sequence A_Write(AP時)処理は終了し、図51のステップS322に処理が戻る。
一方、ステップS352またはS354において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信しなかったと判定された場合、処理はステップS357に進む。ステップS357において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Write(AP時)処理が終了するとともに、通信処理自体が終了される。
図54は、図52のステップS331において行われるSequence A_Read_CMD(AP時)処理を説明するフローチャートである。なお、図54では、アプリケーションプロセッサ614が行う処理を例に説明するが、図52のステップS335のSequence A_Read_CMD(SerDes(Slave)時)処理も同様に行われる。
ステップS361において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図42に示したSlave Address+W 8-bit)を発行し、タイマを起動する。
ステップS362において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS362において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS363に進む。
ステップS363において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、レジスタアドレス(図42に示したRegister Address [15:8])を発行する。ここで、ステップS363の処理が繰り返して行われるたびに、図42に示したように、このレジスタアドレス以下のペイロードの送信が送信される。
ステップS364において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。
ステップS364において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS365に進む。
ステップS365において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、最終データの転送が完了したか否かを判定する。
ステップS365において、最終データの転送が完了したと判定された場合、処理はステップS366に進む。
ステップS366において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。その後、処理は2つに分岐し、分岐Aに従って処理は図52のステップS332に進む。一方、分岐Bに従って、ステップS367においてSequence C(AP時)処理(後述する図55参照)が行われた後、処理は図52のステップS339に進む。
一方、ステップS365において、最終データの転送が完了していないと判定された場合、処理はステップS368に進む。
ステップS368において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ステップS361でスタートしたタイマがタイムアウトしたか否かを判定する。ステップS368において、タイマがタイムアウトしていないと判定された場合、処理はステップS363に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS368において、タイマがタイムアウトしたと判定された場合、処理はステップS369に進む。
ステップS369において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS369の処理後、または、ステップS362もしくはS364において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信しなかったと判定された場合、処理はステップS370に進む。
ステップS370において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Read_CMD(AP時)処理が終了するとともに、通信処理自体が終了される。
図55は、図54のステップS367において行われるSequence C(AP時)処理を説明するフローチャートである。なお、図55では、アプリケーションプロセッサ614が行う処理を例に説明するが、スレーブ側のSerDes装置612においても同様の処理を行うことができる。
ステップS381において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、図54のステップS361でスタートしたタイマがタイムアウトしたか否かを判定し、タイムアウトしたと判定されるまで処理が待機される。ステップS381において、タイムアウトしたと判定されると、処理はステップS382に進み、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ポーリング動作を行う。
ステップS383において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、リードコマンドのStatusレジスタ値が1であるか否かを判定する。
ステップS383において、リードコマンドのStatusレジスタ値が1であると判定された場合、処理はステップS384に進む。ステップS384において、アプリケーションプロセッサ614は、リードアクセスを行った後、処理は図52のステップS339に戻る。
一方、ステップS383において、リードコマンドのStatusレジスタ値が1でない(1以外である)と判定された場合、処理はステップS385に進む。ステップS385において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS386において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence C(AP時)処理が終了するとともに、通信処理自体が終了される。
図56は、図51のステップS324およびS334において行われるSequence B(SerDes(Slave)時)処理を説明するフローチャートである。なお、図56では、スレーブ側のSerDes装置612が行う処理を例に説明するが、図51のステップS322のSequence B(SerDes(Master)時)、図51のステップS326のSequence B(Image Sensor時)処理、および、図52のステップS332のSequence B(SerDes(Master)時)処理も同様に行われる。
ステップS391において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDを確認する。
ステップS392において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致であるか否かを判定する。
ステップS392において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致であると判定された場合、処理はステップS393に進む。
ステップS393において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のDestination SIDと拡張パケットヘッダePHのDestination SIDを確認する。
ステップS394において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS394において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS395に進む。
ステップS395において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS396において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致したか否かを判定する。
ステップS396において、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致したと判定された場合、処理はステップS397に進む。
ステップS397において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612で拡張パケットヘッダePHから計算されたCRC計算結果と、拡張パケットフッタePFの受信値(ePF0)とを確認する。
ステップS398において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致するか否かを判定し、一致すると判定された場合、図51のステップS325に処理は戻る。
一方、ステップS392において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致でない(一致している)と判定された場合、処理はステップS399に進む。
ステップS399乃至S402では、ステップS395乃至S398と同様の処理が行われる。
ステップS402において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理はステップS403に進む。ステップS403において、スレーブ側のSerDes装置612のレジスタ637にライトアクセスする。
ステップS394において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致していないと判定された場合、処理はステップS404に進む。ステップS404において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ[2](Routing)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS398またはS402において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致していないと判定された場合、処理はステップS405に進む。ステップS405において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ(CRC)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS396またはS400において、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致していないと判定された場合、処理はステップS406に進む。ステップS406において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ(MC)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS403乃至S406の処理後、Sequence B(SerDes(Slave)時)処理が終了するとともに、通信処理自体が終了される。
なお、CRC計算について、E2E Protectionのみを対象として実施しても構わないこと、各デバイスそれぞれでエラー検出すること、パケット破棄する/しないことについて、これらを組み合わせが想定される。
図57は、図52のステップS339において行われるSequence A_Read_Data(AP時)処理を説明するフローチャートである。なお、図57では、アプリケーションプロセッサ614が行う処理を例に説明するが、図52のステップS336のSequence A_Read_Data(SerDes(Slave)時)処理も同様に行われる。
ステップS411において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図48に示したSlave Address+W 8-bit)を発行する。
ステップS412において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS412において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS413に進む。
ステップS413において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図48に示したSlave Address+R 8-bit)を発行し、タイマを起動する。
ステップS414において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS414において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS415に進む。
ステップS415において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644からリードデータを取得する。
ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行い、かつ、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われたか否かが判定される。
ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行い、かつ、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われたと判定された場合、処理はステップS417に進む。
ステップS417において、アプリケーションプロセッサ614のI2C/I3Cマスタ651が、最終データの転送が完了したのに伴ってNACK送信を行ったか否かが判定される。
ステップS417において、NACK送信を行ったと判定された場合、処理はステップS418に進む。ステップS418において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。これにより、Sequence A_Read_Data(AP時)処理は終了し、図52のステップS340に処理が戻る。
一方、ステップS417において、NACK送信を行っていないと判定された場合、処理はステップS419に進む。
ステップS419において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ステップS413でスタートしたタイマがタイムアウトしたか否かを判定する。ステップS419において、タイマがタイムアウトしていないと判定された場合、処理はステップS415に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS419において、タイマがタイムアウトしたと判定された場合、処理はステップS420に進む。
ステップS420において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS420の処理後、または、ステップS414において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信していないと判定された場合、処理はステップS421に進む。同様に、ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行っていない、または、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われていないと判定された場合、処理はステップS421に進む。
ステップS421において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Read_Data(AP時)処理が終了するとともに、通信処理自体が終了される。
ここで、I2C/I3Cスレーブ621が出力(図46参照)する際に、I2C/I3Cマスタ634からI2C/I3Cスレーブ621へのアクセスタイミング、および、マスタ側のSerDes装置613のI2C/I3Cスレーブ644が出力(図48参照)する際に、I2C/I3Cマスタ651からI2C/I3Cスレーブ644へのアクセスタイミングには、次に説明する3つの組み合わせがある。
第1のアクセスタイミングは、リードデータが取得されるまでポーリングして、リードデータの読み出し準備完了後に、I2C/I3Cマスタがリード処理を開始する。
第2のアクセスタイミングは、一定時間経過後、I2C/I3Cマスタがリード処理を開始する。
第3のアクセスタイミングは、Clock Stretch方式(後述する図72参照)を用いて、一定時間経過後、I2C/I3Cマスタがリード処理を開始し、その際、リードデータを塊で送る形態と、リードデータをばらばらに送る形態(Clock Stretch Mode信号をアサート)とがある。
<拡張パケットヘッダePHの構成例>
図58乃至図60は、拡張パケットヘッダePHの構成例を示す図である。
図58には、拡張パケットヘッダePH0、拡張パケットヘッダePH1、および拡張パケットヘッダePH2の詳細な構成例が示されている。図示するような拡張パケットヘッダePHの追加は、CCI-FS用に拡張パケットヘッダePHの内容が、C-PHYおよびD-PHYでのePH構造を流用して規定されている。
図59には、拡張パケットヘッダePH3の詳細な構成例が示されている。図示するような拡張パケットヘッダePHの追加は、CCI-FS用に拡張パケットヘッダePHの内容が規定されている。
図60には、拡張パケットヘッダePHの拡張DTの詳細な構成例が示されている。例えば、CCI-FSに対応するために、拡張パケットヘッダePHのデータタイプに、「0xC0:For I2C」と「0xC1:For I3C」が追加されている。
<I2Cの回路構成例>
図61には、従来のI2Cのハードウェアでの構成例が示されている。例えば、ハードウェア実装時で、上位にバス接続構成の場合におけるI2Cの構成例が示されており、スレーブ側は、上位からAKC/NACKを受信できる構成であってもよい。もちろん、一例が示されているものであり、必ずしも上位バス構成が一致するものではない。
図62には、I2Cバス上のデータ転送時の波形が示されている。なお、I2Cバス規格とCCI(I2C)は等価なものとする。
<通信システム701におけるCCI関連の構成例>
図63は、上述の図27に示した通信システム501と同様ように、A-PHY直結構成の通信システム701におけるCCI関連の構成例を示すブロック図である。
図63に示すように、通信システム701は、イメージセンサ711およびアプリケーションプロセッサ712がA-PHYにより直接的に接続されている。
イメージセンサ711は、A-PHY処理部721、CSIA処理部722、CSI2処理部523、CSI2-FS処理部724、CCI処理部725、CCI-FS処理部726、レジスタ727、並びに、セレクタ728-1および728-2を備えて構成される。図示するように、セレクタ728-1および728-2は、CCI-FS処理部726を挟み込むように配置されており、レジスタ727のCCI_FS_Enable信号に従って、CCI-FS処理部726の有効/無効を切り替えることができる。
アプリケーションプロセッサ712は、A-PHY処理部731、CSIA処理部732、CSI2処理部733、CSI2-FS処理部734、CCI処理部735、CCI-FS処理部736、レジスタ737、並びに、セレクタ738-1および738-2を備えて構成される。図示するように、セレクタ738-1および738-2は、CCI-FS処理部736を挟み込むように配置されており、レジスタ737のCCI_FS_Enable信号に従って、CCI-FS処理部736の有効/無効を切り替えることができる。
例えば、CCI_FS_Enable信号がCCI-FSを有効にすることを示している場合(CCI_FS_Enable=1)、一点鎖線の矢印に示すように、CCI-FS処理部726およびCCI-FS処理部736を介してデータが送受信される。一方、CCI_FS_Enable信号がCCI-FSを無効にすることを示している場合(CCI_FS_Enable=0)、二点鎖線の矢印に示すように、CCI-FS処理部726およびCCI-FS処理部736を介さずにデータが送受信される。
<ネットワークの接続形態>
図64には、A-PHY直結構成およびSerDes接続構成のネットワークの接続形態(トポロジー)の一例が示されている。
アプリケーションプロセッサ801は、A-PHYを介して直接的にイメージセンサ802に接続されており、イメージセンサ802は、I2C/I3Cを介してセンサ803に接続される接続形態を構成することができる。
アプリケーションプロセッサ801は、I2C/I3Cを介してマスタ側のSerDes装置804に接続され、マスタ側のSerDes装置804およびスレーブ側のSerDes装置805がA-PHYを介して接続されている。スレーブ側のSerDes装置805は、I2C/I3Cを介して2つのセンサ806-1および806-2に接続される接続形態を構成することができる。
<CCI-FS処理部の回路構成>
図65は、CCI-FS処理部の回路構成の一例を示すブロック図である。図65に示すCCI-FS処理部901およびレジスタ902は、上述した各デバイスが備えるCCI-FS処理部およびレジスタで共通の構成となる。
図65に示すように、CCI-FS処理部901は、上位レイヤにCCI-FSスイッチやレジスタなどが設けられており、下位レイヤにCCI処理部が設けられている。CCI-FS処理部901は、CCI-FS送信部911およびCCI-FS受信部912を備えて構成される。レジスタ902からCCI-FS処理部901には、各種のレジスタ設定値情報が供給され、CCI-FS処理部901からレジスタ902には、Error通知が供給される。
CCI-FS送信部911は、拡張パケットヘッダePH生成部921、拡張パケットフッタePF生成部922、およびDestination Address確認部923を備えている。
拡張パケットヘッダePH生成部921は、Message Counterを生成するMC生成部941、および、パケット長を計算するPacket Length計算部942を有している。拡張パケットフッタePF生成部922は、拡張パケットフッタePF1を生成する拡張パケットフッタePF1生成部943、および、拡張パケットフッタePF0に格納されるCRCを計算するCRC計算部944を有している。
CCI-FS受信部912は、拡張パケットヘッダePH確認部931、拡張パケットフッタePF確認部932、およびDestination Address確認部933を備えている。
拡張パケットヘッダePH確認部931は、Message Counterを確認するMC確認部951、および、パケット長を計算および確認するPacket Length計算・確認部952を有している。拡張パケットフッタePF確認部932は、拡張パケットフッタePF1を確認する拡張パケットフッタePF1確認部953、および、拡張パケットフッタePF0に格納されるCRCを計算するCRC計算部954を有している。
CCI-FS処理部901は、CCI-FS送信部911により、上位レイヤからのデータのDestination Addressを確認して、拡張パケットヘッダePHおよび拡張パケットフッタePFを生成してデータに付加し、下位のレイヤに供給することができる。CCI-FS処理部901は、CCI-FS受信部912により、下位レイヤからのデータのDestination Addressを確認して、拡張パケットヘッダePHおよび拡張パケットフッタePFを確認し、上位のレイヤに供給することができる。
ここで、上述した図40に示したSerDes接続構成の構成例の通信システム601を構成する各デバイスのCCI-FS処理部の動作について説明する。
アプリケーションプロセッサ614は、アプリケーションプロセッサ614での拡張パケットヘッダePHにおいて、自デバイスを示すSource IDを有する。そして、CCI-FS処理部653は、上記情報と、目的とするアクセスを行うデバイスを示すDestination IDを有する情報とを付加する。
スレーブ側のSerDes装置612およびマスタ側のSerDes装置613は、自デバイスを示すSource IDを、事前設定されることにより、もしくは固有値として有する。CCI-FS処理部636およびCCI-FS処理部646は、上記情報と、接続デバイスと目的とするデバイスを示すDestination IDを有する情報との事前設定を行う。
また、CCI-FS処理部636およびCCI-FS処理部646は、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)を比較し、自分へのアクセスか、目的とするデバイスを示す(Desination ID)かの判別を行う。例えば、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)とが一致したときは、中間デバイス(SerDes装置)へのアクセスとして、自身のレジスタアクセスを行う。一方、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)とが一致しないときは、後段デバイスへのアクセスとして、接続されたデバイス(Desination ID)へ向けてデータ転送を行う。
上記のように、拡張パケットヘッダePHに埋め込まれたSource IDとDestination ID、中間デバイス(SerDes装置)または目的とするデバイスに、事前設定または固有値のSource ID、事前設定された接続先情報を元にデータを転送し、目的とするデバイスへ向けてアクセスを行う。
イメージセンサ611のCSI2-FS処理部623は、受信した拡張パケットヘッダePHのDestination IDと、自分のID(Source ID)とが一致したときは、イメージセンサ611へのアクセスとして、自身のレジスタアクセスを行う。
このように、各デバイスが有するSource IDは、それぞれのデバイスに対して固有の値、事前設定された値、もしくはそれらの組み合わせを用いることができる。
図66乃至図68は、レジスタ902の詳細な構成例を示す図である。
図66には、レジスタ902のアドレス0x000からアドレス0x109までの詳細が示されている。図67には、レジスタ902のアドレス0x110からアドレス0x125までの詳細として、Bridge構成時の構成例が示されている。
図68には、レジスタ902のアドレス0x200の詳細として、Error関連レジスタが示されている。図68には、レジスタ902のアドレス0x300およびアドレス0x400の詳細として、Error関連レジスタ(debug)が示されている。図68には、レジスタ902のアドレス0x800の詳細として、Error Injection関連レジスタ(debug)が示されている。
<拡張パケットヘッダePHの変形例>
図69および図70を参照して、拡張パケットヘッダePHの変形例について説明する。
図69には、上述の図33を参照して説明したように、ライトアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536で生成されるライトデータのパケット構成における拡張パケットヘッダePHの変形例が示されている。図69に示す拡張パケットヘッダePHは、拡張パケットヘッダePH3および拡張パケットヘッダePH4の構成が、上述の図33に示した構成例と異なっている。
図70には、上述の図28を参照して説明したように、リードアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるライトデータのパケット構成における拡張パケットヘッダePHの変形例が示されている。図70に示す拡張パケットヘッダePHは、拡張パケットヘッダePH3および拡張パケットヘッダePH4の構成が、上述の図28に示した構成例と異なっている。
例えば、図69および図70に示す拡張パケットヘッダePHでは、実装依存で、以下のような組み合わせが想定される。
Readアドレス情報を拡張パケットヘッダePHに格納しても、AP(CCI)ペイロードに格納してもよい。Length情報を拡張パケットヘッダePHに格納しても、AP(CCI)ペイロードに格納してもよい。CMDの情報を、拡張パケットヘッダePHのCCI Command IDに格納してもよい。CCI Command IDに基づいて、コマンドの開始、再開、および終了情報が参照される。CCI Header Lengthを用いて、AP(CCI)ペイロードにCCIの情報(例えば、Slave Addressなど)を格納してもよい。CCI Header Lengthは、CCIプロトコル(I2C)のヘッダ長を示す情報である。
図71は、図27に示したようなA-PHY直結構成におけるイメージセンサ511およびアプリケーションプロセッサ512との間のフローを説明する図である。
アプリケーションプロセッサ512では、CCI-FSスイッチ538が、リードコマンドおよびライトコマンドを発行する。CCI-FSスイッチ538は、スレーブアドレス(Slave Address+W 8bit)、レジスタアドレス(Register Address[15:8]、Register Address[7:0])、および、データ(Data*(*=N)[7:0])を、CCI処理部535に供給する。CCI処理部535は、それらをAP(CCI)ペイロードに変換して、A-PHY処理部531に供給する。A-PHY処理部531は、AP(CCI)ペイロードにA-PHYヘッダおよびA-PHYフッタを付加し、イメージセンサ511へA-PHY転送を行う。
イメージセンサ511では、A-PHY処理部521が、A-PHYヘッダおよびA-PHYフッタを除去してAP(CCI)ペイロードをCCI処理部525に供給する。CCI処理部525は、AP(CCI)ペイロードを変換し、その内容に基づいて、ライトコマンドに従ってレジスタ527にデータを書き込み、リードコマンドに従ってレジスタ527からデータを読み出す。
このとき、CCI-FS Enableの初期設定は、CCI処理部525により行われ、レジスタインタフェースやAHBバスなどのバス変換が行われる。そして、CCI-FS Enable設定の確認は、CCI処理部525またはCCI-FS処理部526を経由して行われる。
CCI処理部525は、リードコマンドに応じてレジスタ527から読み出されたリードデータ(Data*(*=M)[7:0])をAP(CCI)ペイロードに変換して、A-PHY処理部521に供給する。A-PHY処理部521は、AP(CCI)ペイロードにA-PHYヘッダおよびA-PHYフッタを付加し、アプリケーションプロセッサ512へA-PHY転送を行う。
アプリケーションプロセッサ512では、A-PHY処理部531が、A-PHYヘッダおよびA-PHYフッタを除去してAP(CCI)ペイロードをCCI処理部535に供給する。CCI処理部535は、AP(CCI)ペイロードを変換し、リードデータ(Data*(*=M)[7:0])をCCI-FSスイッチ538に供給する。
CCI-FSスイッチ538は、レジスタ537に対してCCI-FS Enable設定およびCCI-FS関連各種レジスタ設定を行う。このとき、レジスタアクセスは、実装に依存する。CCI-FSスイッチ538は、レジスタ537、CCI-FS処理部536、A-PHY処理部531、A-PHY処理部521、CCI-FS処理部526を介して、レジスタ527に対してCCI-FS関連各種レジスタ設定を行う。
アプリケーションプロセッサ512では、CCI-FSスイッチ538が、リードコマンドを発行する。CCI-FSスイッチ538は、スレーブアドレス(Slave Address+W 8bit)、レジスタアドレス(Register Address[15:8]、Register Address[7:0])、および、データ(Data*(*=N)[7:0])を、レジスタ537に供給する。CCI-FS処理部536は、それらをAP(CCI)ペイロードに変換し、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0を付加して、A-PHY処理部531に供給する。A-PHY処理部531は、それらにA-PHYヘッダおよびA-PHYフッタを付加し、イメージセンサ511へA-PHY転送を行う。
イメージセンサ511では、A-PHY処理部521が、A-PHYヘッダおよびA-PHYフッタを除去して、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を、CCI-FS処理部526に供給する。CCI-FS処理部526は、AP(CCI)ペイロードを変換し、その内容に基づいて、リードコマンドに従ってレジスタ527からデータを読み出す。このとき、レジスタアクセスは、実装に依存し、レジスタインタフェースやAHBバス、CCIインタフェースなどのバス変換が行われる。
CCI-FS処理部526は、リードコマンドに応じてレジスタ527から読み出されたリードデータ(Data*(*=M)[7:0])をAP(CCI)ペイロードに変換し、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0を付加して、A-PHY処理部521に供給する。A-PHY処理部521は、それらにA-PHYヘッダおよびA-PHYフッタを付加し、アプリケーションプロセッサ512へA-PHY転送を行う。
アプリケーションプロセッサ512では、A-PHY処理部531が、A-PHYヘッダおよびA-PHYフッタを除去して、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を、CCI-FS処理部536に供給する。CCI-FS処理部536は、AP(CCI)ペイロードを変換し、リードデータ(Data*(*=M)[7:0])をCCI-FSスイッチ538に供給する。
なお、上述したフローは、ハードウェアでのI2C/I3Cコマンド生成を例に説明を行ったが、その他、以下のような組み合わせがある。
ソフトウェアの場合、ソフトウェアでのI2C/I3C生成として、Slave Address、Registerアドレス、Payload、ACK応答受信、送信、各種制御コード(S,Sr,ACK,NACK,P)がソフトウェアで生成(例えば、GPIO制御のイメージ)される。ソフトウェアでのI2C/I3Cコマンド生成として、CPUバス設定でACK受信に応じて、CPUから、Slave Address、Registerアドレス、Payloadを発行する。
ハードウェアの場合、ハードウェアでのI2C/I3C生成として、I2C/I3CのHW IPに転送設定、データを設定する。各種制御コードはハードウェアで自動応答する。ハードウェアでのI2C/I3Cコマンド生成として、I2C/I3CのHW IPに転送設定でデータを設定し、コマンドで送信を行う。各種制御コードはハードウェアで自動応答する。
図72は、図40に示したようなSerDes接続構成におけるイメージセンサ611およびアプリケーションプロセッサ614の間のWriteアクセスおよびReadアクセスにおいて、Clock Stretch方式を用いたフローを説明する図である。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、スタートコマンドおよびライトコマンド(Slave Address+W 8bit)を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、ライトコマンドをA-PHY処理部641に供給し、A-PHY処理部641は、ライトコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してライトコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにライトコマンドをCCI処理部635(Master)に供給する。ここで、マスタ側のSerDes装置613側との通信を行ってスレーブとして機能するCCI処理部635をCCI処理部635(Slave)と称し、イメージセンサ611側と通信を行ってマスタとして機能するCCI処理部635をCCI処理部635(Master)と称する。
CCI処理部635(Master)は、スタートコマンドおよびライトコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、スタートコマンドおよびライトコマンドを受信してCSI2-FS処理部623に供給する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
スレーブ側のSerDes装置612では、CCI処理部635(Master)がACK応答を受信し、CCI処理部635(Slave)からScl_enb信号がネゲートされると、ACK応答をCCI-FS処理部636に供給する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
CCI-FS処理部636は、ACK応答をA-PHY処理部631に供給する。A-PHY処理部631は、ACK応答にA-PHYヘッダおよびA-PHYフッタを付加し、マスタ側のSerDes装置613へA-PHY転送を行う。
マスタ側のSerDes装置613では、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを除去してACK応答をCCI処理部645に供給する。アプリケーションプロセッサ614のCCI-FSスイッチ655が、CCI処理部645に対してScl_enb信号をネゲートすると、CCI処理部645は、アプリケーションプロセッサ614にACK応答を送信する。
アプリケーションプロセッサ614では、CCI処理部652がACK応答を受信して、CCI-FS処理部653を介してCCI-FSスイッチ655に供給する。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、レジスタアドレス(Register Address[7:0])を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、レジスタアドレスをA-PHY処理部641に供給し、A-PHY処理部641は、レジスタアドレスにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してレジスタアドレスを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにレジスタアドレスをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、レジスタアドレスを、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CCI処理部622が、レジスタアドレスを受信してCSI2-FS処理部623に供給する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614では、CCI-FS処理部653が、CCI-FSスイッチ655の制御に従って、マスタ側のSerDes装置613へ拡張パケットヘッダePH*(*=n)を送信する。
マスタ側のSerDes装置613では、CCI処理部645が、拡張パケットヘッダePH*(*=n)を受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、拡張パケットヘッダePH*(*=n)をA-PHY処理部641に供給する。その後、CCI-FSスイッチ655は、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、拡張パケットヘッダePH*(*=n)にA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去して拡張パケットヘッダePH*(*=n)を、CCI-FS処理部636に供給する。CCI-FS処理部636は、Scl_enb信号をネゲートするとともに拡張パケットヘッダePH*(*=n)をCCI処理部635(Master)に供給する。CCI処理部635(Master)は、拡張パケットヘッダePH*(*=n)を、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CSI2-FS処理部623が、拡張パケットヘッダePH*(*=n)を受信する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、ライトデータ(Dara0[7:0])を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、ライトデータをA-PHY処理部641に供給し、A-PHY処理部641は、ライトデータにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
マスタ側のSerDes装置613では、CCI処理部645が、ライトデータを受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、ライトデータをA-PHY処理部641に供給する。その後、CSI2-FS処理部653は、CCI-FSスイッチ655の制御に従って、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、ライトデータにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してライトデータを、CCI処理部635に供給する。CCI処理部635は、Scl_enb信号をネゲートするとともにライトデータをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、ライトデータをイメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CCI処理部622がライトデータを受信してCSI2-FS処理部623に供給し、CSI2-FS処理部623がレジスタ624にライトデータを書き込む。CSI2-FS処理部623は、ライトデータの書き込みに成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614では、CCI-FS処理部653が、CCI-FSスイッチ655の制御に従って、マスタ側のSerDes装置613へ拡張パケットフッタePF0を送信する。
マスタ側のSerDes装置613では、CCI処理部645が、拡張パケットフッタePF0を受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、拡張パケットフッタePF0をA-PHY処理部641に供給する。その後、CCI-FSスイッチ655は、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、拡張パケットフッタePF0にA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去して拡張パケットフッタePF0を、CCI-FS処理部636に供給する。CCI-FS処理部636は、Scl_enb信号をネゲートするとともに拡張パケットフッタePF0をCCI処理部635(Master)に供給する。CCI処理部635(Master)は、拡張パケットフッタePF0を、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CSI2-FS処理部623が、拡張パケットフッタePF0を受信する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、リピートスタートコマンドおよびリードコマンド(Slave Address+R 8bit)を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、リードコマンドをA-PHY処理部641に供給し、A-PHY処理部641は、リードコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してリードコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにリードコマンドをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、リピートスタートコマンドおよびリードコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、リピートスタートコマンドおよびリードコマンドを受信して、レジスタ624に対してアクセスする。CCI処理部622は、その受信に成功したことを示すACK応答を、スレーブ側のSerDes装置612に送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
イメージセンサ611では、CCI処理部622が、レジスタ624からリードデータ(Data0[7:0])を読み出して、スレーブ側のSerDes装置612に送信する。
スレーブ側のSerDes装置612では、CCI処理部635(Master)が、リードデータを受信してCCI処理部635(Slave)に供給し、CCI処理部635(Slave)は、リードデータをA-PHY処理部631に供給する。A-PHY処理部631は、リードデータにA-PHYヘッダおよびA-PHYフッタを付加し、マスタ側のSerDes装置613へA-PHY転送を行う。
マスタ側のSerDes装置613では、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを除去してリードデータをCCI処理部645に供給し、CCI処理部645は、アプリケーションプロセッサ614にリードデータを送信する。
アプリケーションプロセッサ614では、CCI処理部652がリードデータを受信して、CCI-FS処理部653を介してCCI-FSスイッチ655に供給する。
CCI-FSスイッチ655は、NACK応答およびストップコマンドをCCI処理部645に送信する。CCI処理部645は、NACK応答およびストップコマンドをA-PHY処理部641に供給する。A-PHY処理部641は、NACK応答およびストップコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してNACK応答およびストップコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、NACK応答およびストップコマンドをCCI処理部635(Master)に供給し、CCI処理部635(Master)は、NACK応答およびストップコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、NACK応答およびストップコマンドを受信してCSI2-FS処理部623に供給する。
なお、図72で説明したフローにおいて、スタート、リピートスタート、ACK応答、NACK応答、ストップなどのI2Cの制御コマンドは、拡張パケットヘッダePH0のControl Code Indicatorを1に設定し、1ByteのPayloadに割り当てられた各コードを示す。
<イメージセンサおよびアプリケーションプロセッサの詳細な構成例>
(イメージセンサの詳細な構成例)
図73は、上述した図25に示したイメージセンサ211がCCI-FS処理部1001を備える構成の構成例を示すブロック図である。なお、図73に示すイメージセンサ211では、図25のイメージセンサ211と共通する構成には同一の符号を付し、その説明は省略する。
図73に示すように、CCI-FS処理部1001は、CCIスレーブ224およびレジスタ47の間に配置され、CCI-FS処理部1001を挟み込むようにMUX部1002-1および1002-2が配置されている。MUX部1002-1および1002-2は、レジスタ47から供給されるcci_fs_en信号に従って、CCI-FS処理部1001を有効にする場合には、CCI-FS処理部1001を介してデータを送受信する。一方、MUX部1002-1および1002-2は、レジスタ47から供給されるcci_fs_en信号に従って、CCI-FS処理部1001を無効にする場合には、CCI-FS処理部1001を介さずにデータを送受信する。
(アプリケーションプロセッサの詳細な構成例)
図74は、上述した図26に示したアプリケーションプロセッサ214がCCI-FS処理部1101を備える構成の構成例を示すブロック図である。なお、図74に示すアプリケーションプロセッサ214では、図26のアプリケーションプロセッサ214と共通する構成には同一の符号を付し、その説明は省略する。
図74に示すように、CCI-FS処理部1101はCCIマスタ254およびレジスタ73の間に配置され、CCI-FS処理部1101を挟み込むようにMUX部1102-1および1102-2が配置されている。MUX部1102-1および1102-2は、レジスタ73から供給されるcci_fs_en信号に従って、CCI-FS処理部1101を有効にする場合には、CCI-FS処理部1101を介してデータを送受信する。一方、MUX部1102-1および1102-2は、レジスタ73から供給されるcci_fs_en信号に従って、CCI-FS処理部1101を無効にする場合には、CCI-FS処理部1101を介さずにデータを送受信する。
なお、拡張パケットヘッダePHの構成における各fieldの実装方法に関しては、以下のような構成を採用してもよい。・拡張VCは、Safe CCIでは未使用とする。(MIPIでの拡張ヘッダ関連とHeader fieldを合わせるために同様の構成としている)・拡張DTでは、上位からのバスのコマンド関連の情報に埋め込んでもよいし、レジスタ設定からの信号線の設定の実装構成としてもよい。・Protocolは、I2Cで記載しているが、I3CのSDRモードでも同様のことが実施することができる。
<通信システムの構成例>
図75乃至図117を参照して、本技術を適用した通信システムの第4の実施の形態について説明する。
図75は、第4の実施の形態の通信システムのブロック図である。図75のAには、第1のバリエーションとなる通信システム1201が示されており、図75のBには、第2のバリエーションとなる通信システム1201Aが示されている。
図75のAに示されている通信システム1201は、イメージセンサ1211およびアプリケーションプロセッサ1212が直接的に接続されて構成される。
イメージセンサ1211は、A-PHY層1221の上にALL層1222が配置され、その上に、CSI-2送信部1223およびCSI拡張部1224、並びに、CCIスレーブ1225およびCCI拡張部1226が配置された構成となっている。イメージセンサ1211は、CSI-2送信部1223に対してCSI拡張部1224を設けること、および、CCIスレーブ1225に対してCCI拡張部1226を設けることによって、それぞれ拡張された規格に対応することが可能となる。
アプリケーションプロセッサ1212は、A-PHY層1231の上にALL層1232が配置され、その上に、CSI-2受信部1233およびCSI拡張部1234、並びに、CCIマスタ1235およびCCI拡張部1236が配置された構成となっている。アプリケーションプロセッサ1212は、CSI-2受信部1233に対してCSI拡張部1234を設けること、および、CCIマスタ1235に対してCCI拡張部1236を設けることによって、それぞれ拡張された規格に対応することが可能となる。なお、CSI拡張は、Camera Service Extensions(CSE)と称されてもよい。
図75のBに示されている通信システム1201Aは、ディスプレイ1213およびアプリケーションプロセッサ1212Aが接続されて構成される。なお、アプリケーションプロセッサ1212Aは、図75のAのアプリケーションプロセッサ1212のCSI-2受信部1233およびCSI拡張部1234に替えて、DSI-2送信部1233AおよびDSI拡張部1234Aを備えて構成されており、その他のブロックはアプリケーションプロセッサ1212と共通の構成となっている。
ディスプレイ1213は、A-PHY層1241の上にALL層1242が配置され、その上に、DSI-2受信部1243およびDSI拡張部1244、並びに、CCIスレーブ1245およびCCI拡張部1246が配置された構成となっている。ディスプレイ1213は、DSI-2受信部1243に対してDSI拡張部1244を設けること、および、CCIスレーブ1245に対してCCI拡張部1246を設けることによって、それぞれ拡張された規格に対応することが可能となる。なお、DSI拡張は、Display Service Extensions(DSE)と称されてもよい。
このように構成される通信システム1201および1201Aは、画像データを含むフレームのデータを片方向へ送信する高速データ送信と、高速データ送信に関連するコマンドを逆方向へ送信する低速コマンド送信(ただし、コマンドそのものを送信することをコマンド送信と称してもよいし、コマンドに対する応答を送信することをコマンド送信と称してもよい)とを少なくとも行うことができる。例えば、低速コマンド送信では、高速データ送信の開始を要求する高速データ送信開始命令の送信が少なくとも行われるが、その限りではなくてもよい。また、高速データ送信は、低速コマンド送信と比較して高速であり、高速データ送信開始命令の受信に応じて開始されるが、その限りではなくてもよい。
ただし、アプリケーションプロセッサ1212の通信相手がイメージセンサ1211である通信システム1201と、アプリケーションプロセッサ1212Aの通信相手がディスプレイ1213である通信システム1201Aとでは、高速データ送信および低速コマンド送信の方向が異なる。つまり、通信システム1201では、イメージセンサ1211からアプリケーションプロセッサ1212へ画像データが送信され、通信システム1201Aでは、アプリケーションプロセッサ1212Aからディスプレイ1213へ画像データが送信される。
物理層規格のA-PHYにおいて、高速データ送信と低速コマンド送信とは、共通の通信経路を一部または全部に介して送信される。また、A-PHYは、アプリケーションプロセッサ1212からイメージセンサ1211に対する電力供給、および、アプリケーションプロセッサ1212Aからディスプレイ1213に対する電力供給の一部または全部が、共通な通信経路を介して伝送することを可能とするオプションをサポートする。
ところで、低速コマンド送信は、例えば、CSI-2の規格のCCIに準拠し、I2CまたはI3Cの規格に基づいて通信が行われる。このとき、低速コマンド送信は、I2CまたはI3Cの独立した物理層だけでなく、D-PHY、C-PHY、およびA-PHYの何れかの物理層の一部または全部を共用してコマンドを伝送することが可能である。一方、高速データ送信は、D-PHY、C-PHY、およびA-PHYの何れかの物理層の一部または全部を介してデータを伝送する。
なお、低速コマンド送信は、例えばCSI-2の規格内のUnified Serial Link(USL)に準拠する場合、D-PHYまたはC-PHYの何れかの物理層の一部または全部に介してコマンドを伝送することが可能である。つまり、高速データ送信と低速コマンド送信とは、D-PHY、C-PHY、A-PHY、I2C、およびI3Cの何れかの物理層を一部または全部に介した伝送が可能である。
なお、図75では、アプリケーションプロセッサ1212および1201Aを備えた構成例について説明したが、通信システム1201および1201Aは、例えば、電子制御ユニット(ECU:Electronic Control Unit)を備えた構成としてもよい。即ち、イメージセンサ1211やディスプレイ1213などと直接接続または間接接続で通信を行うことができるプロセッサであれば、アプリケーションプロセッサ1212に限定されることはない。また、イメージセンサ1211以外の各種のセンサを備える構成としてもよい。
このように構成される通信システム1201および1201Aは、以下で説明するようなナンス値の送信方法またはナンス値を含む初期化ベクトル構成を採用する。
具体的には、特定の共通鍵暗号アルゴリズム(例えば、AES-GCM/GMAC)ではナンス値を含む初期化ベクトルが必要になる。このため、イメージセンサ1211およびアプリケーションプロセッサ1212の間で、または、ディスプレイ1213およびアプリケーションプロセッサ1212Aの間で、初期化ベクトルおよびナンス値の設定ルールが事前に合意されることになる。
しかしながら、イメージセンサ1211、アプリケーションプロセッサ1212および1201A、並びにディスプレイ1213それぞれの内部で、ナンス値の誤認識または改竄が発生すると、それ以降は暗号化された画像データの復号やメッセージの認証などに失敗してしまう。そのため、画像データの送信が正常に行われなくなってしまう不具合を回避するために、ナンス値の誤認識および改竄に関する対策技術が必要であった。
一方、MIPI Camera Serial Interface(CSI)規格またはMIPI Display Serial Interface(DSI)規格に対する新たなセキュリティ仕様として、CSI規格またはDSI規格に適した初期化ベクトルを定義する必要があった。そこで、本技術は、イメージセンサ1211を含むCSI規格に準拠する撮像装置、または、ディスプレイ1213を含むDSI規格に準拠する表示装置に好適な、ナンス値の送信方法またはナンス値を含む初期化ベクトル構成を開示する。
なお、以下では、イメージセンサ1211およびアプリケーションプロセッサ1212の間で行われる処理について説明するが、ディスプレイ1213およびアプリケーションプロセッサ1212Aの間でも、同様の処理を行うことができる。
<図75のイメージセンサの詳細な構成例>
図76は、イメージセンサ1211の詳細な構成例を示すブロック図である。
イメージセンサ1211は、画素1301、AD変換器1302、画像処理部1303、拡張モード対応CSI-2送信回路1304、物理層処理部1305、I2C/I3Cスレーブ1306、記憶部1307、メッセージカウンタ1308、ナンス更新部1309、およびセキュリティ部1310を備えて構成される。なお、画素1301、AD変換器1302、画像処理部1303、拡張モード対応CSI-2送信回路1304、物理層処理部1305、I2C/I3Cスレーブ1306、および記憶部1307は、上述した他の実施の形態において対応する各ブロックと同様に構成され、その詳細な説明は省略する。
メッセージカウンタ1308は、所定カウント条件を満たす拡張パケットを送信するたびにイメージセンサ1211内のメッセージカウント値を更新する。
セキュリティ部1310は、イメージセンサ1211内のセッション鍵を導出し、高速データ送信されるデータの第1保護データ(例えば、完全性を保護するために演算された完全性演算値、機密性を保護するために暗号化された暗号データ)を、そのセッション鍵を用いて生成する。
ナンス更新部1309は、セキュリティ部1310が第1保護データを生成するたびに、イメージセンサ1211内のナンス(nonce;number used once)値を更新する。
このように構成されるイメージセンサ1211は、ナンス値の一部または全部、および、メッセージカウント値の一部または全部を、アプリケーションプロセッサ1212へ高速データ送信する。例えば、ナンス値の一部または全部は、カウント値または乱数であってもよい。また、ナンス値の一部または全部は、拡張パケットヘッダ外に格納されて送信され、画像データは、パケットデータ内に格納されて送信される。
イメージセンサ1211では、メッセージカウンタ1308およびナンス更新部1309が、別体で構成されていても、一体で構成されていてもよい。例えば、メッセージカウンタ1308およびナンス更新部1309が別体で構成されている場合、ナンス値およびメッセージカウント値の更新が非同期とすることができる。これにより、ナンス値およびメッセージカウント値の自由度を高めることができる。
一方、メッセージカウンタ1308およびナンス更新部1309が一体で構成されている場合、ナンス値およびメッセージカウント値の更新を同期することができる。その場合、メッセージカウント値は、ナンス値としてカウント値を用いていれば、ナンス値の一部または全部と共有することで、メッセージカウンタ1308のビット幅を節約することができる。つまり、メッセージカウンタ1308は、ナンス更新部1309の一部または全部としてもよく、ナンス更新部1309と一部または全部が共通化することができる。
<図75のアプリケーションプロセッサの詳細な構成例>
図77は、アプリケーションプロセッサ1212の詳細な構成例を示すブロック図である。
アプリケーションプロセッサ1212は、物理層処理部1321、拡張モード対応CSI-2受信回路1322、I2C/I3Cマスタ1323、記憶部1324、データ検証部1325、セキュリティ部1326、およびコントローラ1327を備えて構成される。なお、物理層処理部1321、拡張モード対応CSI-2受信回路1322、I2C/I3Cマスタ1323、および記憶部1324は、上述した他の実施の形態において対応する各ブロックと同様に構成され、その詳細な説明は省略する。
データ検証部1325は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されたナンス値またはメッセージカウント値の妥当性を検証する。
セキュリティ部1326は、イメージセンサ1211内のセッション鍵に対応するアプリケーションプロセッサ1212内のセッション鍵を導出し、アプリケーションプロセッサ1212内のセッション鍵を用いて画像データの第1保護データを検証(完全性の検証)または復号する。
このように構成されるアプリケーションプロセッサ1212は、被検証データがカウント値である場合、データ検証部1325は、その連続性を検証することができる。また、データ検証部1325がカウンタを備えた構成とし、イメージセンサ1211と同様にカウント値を更新することで比較検証を行うようにしてもよい。なお、被検証データが乱数である場合、データ検証部1325は、その乱数性を検証してもよい。なお、データ検証部1325は、ナンス更新部1309(またはメッセージカウンタ)を備え、これを用いて第1保護データを検証または復号してもよく、これを用いて被検証データを検証してもよい。
イメージセンサ1211およびアプリケーションプロセッサ1212は、所望の移動体装置に搭載される構成とすることができる。例えば、移動体装置は、持ち運び可能なモバイル装置であってもよく、例えば、携帯電話、スマートフォン、デジタルカメラ、ゲーム機器などの何れかであってもよい。移動体装置は、推進装置であってもよく、例えば、推進(可動、走行、歩行、飛行などの何れか)することが可能な車両、ロボット、ドローンなどの何れかであってもよい。移動体装置は、AI(Artificial Intelligence)機能を搭載して自律推進できる自律車両、自律ロボット、自律ドローンなどの何れかであってもよい。推進装置の推進は、推進装置の使用者によって制御されてもよく、推進装置は、使用者に対して必要に応じて指示または警告を通知してもよい。一方、推進装置は、推進装置の推進を推進装置が自動制御するように構成されてもよい。
セキュリティ部1310および1326は、例えば、画像データを保護するための演算を実行するセキュリティ演算部をそれぞれ備えてもよい。従って、セキュリティ部1310および1326は、セキュリティ演算部によって、暗号化演算や、復号演算、ハッシュ値演算、メッセージ認証コード演算、デジタル署名演算、ID(identification)認証、ファームウエア測定、暗号化セッション鍵確立、鍵交換、鍵更新などの何れかを処理することができる。
一方、セキュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、メモリと電気的に直接接続された構成とすることができる。このメモリはレジスタと電気的に直接接続されていてもよく、キュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、レジスタと電気的に直接接続されていてもよい。メモリは、メモリ内情報の漏洩または改竄の何れかから保護されたメモリであってもよい。このようなメモリおよびレジスタが、それぞれ記憶部1307および1324として用いられる。
記憶部1307および1324には、鍵情報(例えば、事前共有鍵、秘密鍵、公開鍵、またはセッション鍵)や、証明書(例えば、ルート証明書、中間証明書、またはリーフ証明書)、暗号アルゴリズム情報などの何れかが格納されてもよい。記憶部1307および1324には、イメージセンサ1211またはアプリケーションプロセッサ1212の機能情報や、イメージセンサ1211またはアプリケーションプロセッサ1212のID情報(例えば、ソースIDや、目的地ID、最終目的地IDなど)、イメージセンサ1211またはアプリケーションプロセッサ1212のファームウエア情報などの何れかが格納されてもよい。記憶部1307および1324には、後述するセッション情報(例えば、セッションID)や、セキュリティ演算部の演算値(例えば、初期値、中間値、または最終値)、初期化ベクトル、ナンス値、メッセージカウント値、フレーム番号(フレームカウント値)などの何れかが格納されてもよい。
セキュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、例えば、イメージセンサ1211またはアプリケーションプロセッサ1212が、複数回のナンス値や、カウント値、完全性演算値、暗号化情報などの何れかを、記憶部1307または1324へ保存することによって、不具合の有無を判断することが可能になり、それに応じた対処(例えば、不具合個所のデータ再送の要求、異常メッセージの送信)も可能になる。また、ナンス値や、カウント値、完全性演算値、暗号化情報などの何れかが、保護された記憶部1307または1324へ定期的に保存される場合、仮に移動体装置の事故が発生した際に、保護された記憶部1307または1324が解析されることによって、事故発生の原因を特定しやすくなる効果もある。
<セッション>
リクエスタおよびレスポンダは、つまりアプリケーションプロセッサ1212およびイメージセンサ1211は、セッションによって1つ以上の通信チャネルを持つことができる。以下では、アプリケーションプロセッサ1212がリクエスタであって、イメージセンサ1211がレスポンダである構成を例に用いてセッションについて説明を行う。もちろん、アプリケーションプロセッサ1212がレスポンダであって、イメージセンサ1211がリクエスタであってもよい。
また、リクエスタおよびレスポンダは、一時的に固定した暗号化情報を用いて安全な通信チャネルを構築できる。具体的には、セッションは、暗号化またはメッセージ認証のいずれか、または両方を提供する。セッションは、例えば、セッションハンドシェイク段階、アプリケーション段階、およびセッションターミネーション段階の3段階を含む。
セッションハンドシェイク段階は、例えば、リクエスタからの鍵交換要求(PSK_EXCHANGEまたはKEY_EXCHANGEのいずれか)によって始まり、セッション秘密や暗号化鍵などセッション鍵を導出し、セッション鍵を用いて通信を保護する。この段階の目的は、例えば、いずれかの側がアプリケーションデータ(例えば、画像データ)を送信する前に、まずレスポンダとリクエスタとの間で信頼を構築することができる。さらに、ハンドシェイクのある程度の完全性と、導出されたハンドシェイク秘密との同期性とを保証してもよい。
セッションは、この段階でエラーが発生する場合、直ちに終了してセッション終了へ進んでもよい。ハンドシェイクが成功すると、例えば、レスポンダからのフィニッシュ応答(FINISH_RSPまたはPSK_FINISH_RSP)によって終了し、アプリケーション段階が始まる。セッションは、一度ハンドシェイクが完了し、全ての検証に合格すると、レスポンダとリクエスタとのいずれかがアプリケーションデータを送信してもよいアプリケーション段階へ到達する。
アプリケーション段階は、例えば、リクエスタからエンド要求(END_SESSION)が発行される場合に、またはエラーが発生する場合に終了する。次の段階は、セッションターミネーション段階となる。
セッションターミネーション段階は、例えば、単なる内部段階であり、送信または受信される明示的なメッセージはない。リクエスタおよびレスポンダの両方は、セッションが終了するとき、導出した全てのセッション秘密や暗号化鍵などのセッション鍵を破棄またはクリーンアップする。リクエスタおよびレスポンダには、このセッションに関連付けられた他の内部データがあってもよく、それらもクリーンアップを望んでよい。
セッション秘密は、例えば、AEAD(Authenticated Encryption with Additional Data)関数内で用いられる暗号化鍵およびソルトを導出するために用いられる。暗号化鍵の導出は、RFC5869で説明されるRFC2104およびHKDF-Expandで定義されているようにHMACを頻繁に用いてもよい。セッション秘密は、単一の秘密または複数種類の秘密で構成されてもよい。セッション鍵は、単一の鍵または複数種類の鍵で構成されてもよい。
<高速データ送信および低速コマンド送信の処理例>
図78乃至図80を参照して、イメージセンサ1211とアプリケーションプロセッサ1212との間で、高速データ送信および低速コマンド送信が行われる通信処理について説明する。
図78は、通信処理の第1の処理例を説明するフローチャートである。
ここで、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1322は、CCIホスト(リクエスタ)およびCSI-2ホストとしての機能を備えている。イメージセンサ1211の拡張モード対応CSI-2送信回路1304は、CCIデバイス(レスポンダ)およびCSI-2デバイスとしての機能を備えている。CCIホストは、CCIデバイスへ要求メッセージを送信し、その受信に応じてCCIデバイスはCCIホストへ応答メッセージを送信する。
ステップS501において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_VERSION要求およびVERSION応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、エンドポイントのSPDM(Security Protocol and Data Model)バージョンを取得する。
ステップS502において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_CAPABILITIES要求およびCAPABILITIES応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、エンドポイントのSPDM機能を取得する。
ステップS503において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、NEGOTIATE_ALGORITHMS要求およびALGORITHMS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304と暗号アルゴリズムを交渉する。
ステップS504において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322および拡張モード対応CSI-2送信回路1304は、セッション秘密や暗号化鍵などのCCI向けのセッション鍵を導出する。
ステップS505において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_FINISH要求およびPSK_FINISH_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322がPSK(PSK:Pre-shared key)を知っていて、ステップS504で導出されたCCI向けのセッション鍵が正しいことをレスポンダへ証明する。
ステップS506において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322および拡張モード対応CSI-2送信回路1304は、セッション秘密や暗号化鍵などのCSI-2向けのセッション鍵を導出する。
ステップS507において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_FINISH要求およびPSK_FINISH_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322がPSK(PSK:Pre-shared key)を知っていて、ステップS506で導出されたCSI-2向けのセッション鍵が正しいことをレスポンダへ証明する。
ここで、ステップS505およびS507におけるセッション鍵の証明は、リクエスタのfinished_keyと、このセッションのメッセージとで計算されたMAC値によって実現される。そして、ステップS504およびS506で導出したセッション鍵を用いて、以降のCCI通信およびCSI-2通信が保護される。
ステップS508において、拡張モード対応CSI-2受信回路1322では、CCIホストからCSI-2ホストに対して、CSI-2向けセッション秘密やセッション鍵、アルゴリズム、その他のパラメータなどが供給される。
ステップS509において、拡張モード対応CSI-2送信回路1304では、CCIデバイスからCSI-2デバイスに対して、CSI-2向けセッション秘密やセッション鍵、アルゴリズム、その他のパラメータなどが供給される。
ステップS510において、拡張モード対応CSI-2送信回路1304のCSI-2デバイスは、拡張モード対応CSI-2受信回路1322のCSI-2ホストへ、高速データ通信による画像データの送信を行う。例えば、高速データ通信は、CSI-2向けセッション鍵を更新するタイミングとなるまで、継続して行われる。
ステップS511において、拡張モード対応CSI-2受信回路1322では、CSI-2ホストからCCIホストに対して、CSI-2向けセッション鍵を更新するトリガが供給される。ただし、CSI-2デバイスまたはCCIデバイスからCCIホストに対してトリガが供給されたり、CCIホストからCCIホストに対して自己トリガが供給されたりしてもよい。
ステップS512において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、KEY_UPDATE要求およびKEY_UPDATE_ACK応答が行われる。これにより、セッション鍵が更新され、古いセッション鍵の一部が破棄される。なお、セッション鍵が複数種類の鍵(要求方向鍵や応答方向鍵など)で構成される場合、その一部または全部が更新されてもよい。また、KEY_UPDATE要求は、後述のGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。
ステップS513において、ステップS512と同様の処理が行われ、KEY_UPDATE要求およびKEY_UPDATE_ACK応答が2回行われる。これにより、ステップS512の処理だけでは破棄されなかった古いセッション鍵の残り(全部)が破棄される。
ステップS514において、拡張モード対応CSI-2受信回路1322では、CCIホストからCSI-2ホストに対して、CSI-2向けセッション秘密やセッション鍵(更新後)、アルゴリズム、その他のパラメータなどが供給される。
ステップS515において、拡張モード対応CSI-2送信回路1304では、CCIデバイスからCSI-2デバイスに対して、CSI-2向けセッション秘密やセッション鍵(更新後)、アルゴリズム、その他のパラメータなどが供給される。
ステップS516において、ステップS510と同様に、高速データ通信による画像データの送信が開始され、以下、ステップS510乃至S515と同様の処理が繰り替えして行われる。
なお、通信処理の第1の処理例では、CCI向けのセッション鍵とCSI-2向けのセッション鍵とが異なるものとなっており、CCI向けとCSI-2向けとでセッションIDが異なり、CCI向けとCSI-2向けとでセッション秘密が異なるものとなっている。これに限られることなく、通信処理の第2の処理例のように、CCI向けのセッション鍵とCSI-2向けのセッション鍵とが同一のものとなっていてもよく、CCI向けとCSI-2向けとでセッションIDを同一とし、CCI向けとCSI-2向けとでセッション秘密が同一としてもよい。
図79は、通信処理の第2の処理例を説明するフローチャートである。
ステップS521乃至S523において、図78のステップS501乃至S503と同様の処理が行われる。
ステップS524において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。ここで、通信処理の第2の処理例では、CCI向けのセッション秘密とCSI-2向けのセッション秘密とで同一のものが導出される。
即ち、同一のセッション秘密から、CCI向けセッション鍵とCSI-2向けセッション鍵とを導出することができる。または、同一のセッション秘密から、アップリンク向けセッション鍵とダウンリンク(アップリンクの逆方向)向けセッション鍵とを導出してもよい。または、同一のセッション秘密から、CCI向けおよびCSI-2向けに共通なセッション鍵を導出してもよい。なお、CCI向けとCSI-2向けとでセッションが同一な場合でも、CCI向けとCSI-2向けとでセッション秘密やセッション鍵などが異なってもよい。
その後、ステップS525乃至S534において、図78のステップS507乃至S516と同様の処理が行われる。
ここで、事前共有鍵PSK鍵交換スキームは、リクエスタおよびレスポンダが対称鍵暗号で相互認証およびセッション鍵確立を実行するためのオプションを提供する。このオプションは、非対称鍵暗号または証明書処理をサポートしないエンドポイントで特に役立つ。非対称鍵暗号がサポートされている場合でも、セッション鍵確立を迅速化するのに、このオプションも活用できる。このオプションは、リクエスタおよびレスポンダがハンドシェイクの前に共通のPSKを事前に知っている必要がある。
基本的にPSKは、相互認証の資格情報およびセッション鍵確立のベースとして機能する。そのため、2つのエンドポイントと、2つのエンドポイントにPSKをプロビジョニングする潜在的に信頼されたサードパーティとだけが、PSKの値を知ってもよい。リクエスタは、複数のレスポンダとペアになってもよい。同様にレスポンダは、複数のリクエスタとペアになってもよい。リクエスタおよびレスポンダのペアは、1つ以上のPSKがプロビジョニングされてもよい。
エンドポイントは、1つのデバイスに対するリクエスタとして動作し、同時に別のデバイスに対するレスポンダとして動作してもよい。トランスポート層は、PSKベースのセッション鍵交換が開始する前に、ピア(Peer)を識別し、2つのエンドポイント間の通信を確立する必要がある。
PSKは、例えば安全な製造プロセス中など、信頼できる環境内でプロビジョニングされてもよい。PSKは、信頼できない環境では、安全なプロトコルを用いて2つのエンドポイント間で合意されてもよい。プロビジョニングされたPSKのサイズは、アプリケーションのセキュリティ強度の要件によって決まるが、128ビット以上にすべきで、256ビット以上が望ましい。PSKプロビジョニング中は、エンドポイント機能とサポートされているアルゴリズムとをピアへ通信してもよい。従って、PSKオプションを用いるセッション鍵確立中は、SPDMコマンドのGET_CAPABILITIESおよびNEGOTIATE_ALGORITHMSは必要ない。
このオプションは、PSK_EXCHANGE/PSK_EXCHANGE_RSPおよびPSK_FINISH/PSK_FINISH_RSPの2つのメッセージペアが定義されている。PSK_EXCHANGEメッセージには、レスポンダへ特定のPSKを取得するように促す役割、リクエスタとレスポンダとの間でコンテキストを交換する役割、レスポンダが正しいPSKを知っており、正しいセッション鍵を導出したことをリクエスタへ証明する役割、の3つの役割がある。
図80は、通信処理の第3の処理例を説明するフローチャートである。
ステップS541乃至S543において、図78のステップS501乃至S503と同様の処理が行われる。
ステップS544において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_DIGESTS要求およびDIGESTS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304から証明書チェインダイジェストを取得する。
ステップS545おいて、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_CERTIFICATE要求およびCERTIFICATE応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304から証明書チェインを取得する。なお、証明書チェインの取得が複数回実行されてもよい。
ステップS546おいて、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、CHALLENGE要求およびCHALLENGE_AUTH応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、チャレンジ-レスポンスプロトコルを通じて拡張モード対応CSI-2送信回路1304を認証することができる。
ステップS547において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、KEY_EXCHANGE要求(channel=CCI, sessionID=D)およびKEY_EXCHANGE_RSP応答が行われる。これにより、レスポンダ(または任意で両方のパーティ)の認証を目的としたリクエスタとレスポンダとの間のハンドシェイクが開始される。そして、最後のNEGOTIATE_ALGORITHMS / ALGORITHMS交換で交渉された内容に加えて暗号化パラメータが交渉され、共有鍵情報が確立される。
ステップS548において、拡張モード対応CSI-2受信回路1322のCCIホストは、GET_ENCAPSULATED_REQUESTを拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。
ステップS549において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_REQUEST(GET_DIGESTS要求)を拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS550において、拡張モード対応CSI-2受信回路1322のCCIホストは、DELIVER_ENCAPSULATED_RESPONSE(DIGESTS応答)を拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。これにより、拡張モード対応CSI-2送信回路1304のCCIデバイスは、拡張モード対応CSI-2受信回路1322のCCIホストから証明書チェインダイジェストを取得する。
ステップS551において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_RESPONSE_ACK(GET_CERTIFICATE要求)を拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS552において、拡張モード対応CSI-2受信回路1322のCCIホストは、DELIVER_ENCAPSULATED_RESPONSE(CERTIFICATE応答)を拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。これにより、CCIデバイス(レスポンダ)は、CCIホスト(リクエスタ)から証明書チェインを取得してもよい。なお、この処理は、複数回実行されてもよい。
ステップS553において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_RESPONSE_ACKを拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS554において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、FINISH要求およびFINISH_RSP応答が行われる。これにより、ステップS547のKEY_EXCHANGE要求によって開始された、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間のハンドシェイクが完了される。
ステップS555において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_MEASUREMENTS要求およびMEASUREMENTS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322のCCIホストは、拡張モード対応CSI-2送信回路1304のCCIデバイスから測定データを取得する。なお、GET_MEASUREMENTS要求は、上述したGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。同様に、他の要求も上述したGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。
その後、ステップS556では、ステップS547と同様にKEY_EXCHANGE要求(channel=CSI-2, sessionID=E)およびKEY_EXCHANGE_RSP応答が行われ、ステップS557では、ステップS554と同様にFINISH要求およびFINISH_RSP応答が行われる。そして、ステップS558乃至S566において、図78のステップS508乃至S516と同様の処理が行われる。
<データ検証処理>
図81乃至図83を参照して、検証用パケットおよび被検証パケットを使用したデータ検証処理について説明する。
図81および図82に示すように、拡張パケットは、パケットヘッダPH、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePF、およびパケットフッタPFで構成される。このような構成の拡張パケットにより、フレームスタート、埋込データ、画像データ、ユーザ定義データ、フレームエンド、書き込み命令(CCI Write)、読み出し命令(CCI Read)、および読み出し応答(CCI Read戻り値)を構成することができる。なお、パケットヘッダPH、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePF、およびパケットフッタPFは、その一部または全部を省略してもよい。即ち、拡張パケットヘッダePHおよびパケットデータを少なくとも含むパケット構成を拡張パケットと定義する。
ところで、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePFの何れかは、ノイズや干渉や攻撃によって正常に受信されない(メッセージが消失する)可能性がある。そこで、拡張パケットフッタ末尾ePF0内は、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタ残りePF1の完全性を検証するための検証用パケットが格納されることが望ましい。完全性の検証は、例えば、誤り検出符号の一種である巡回冗長検査のCRC32が用いられる。また、CRC32の生成多項式は、例えばX32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1が用いられる。
被検証パケットには、パケットデータを用いることができる。または、被検証パケットには、拡張パケットヘッダおよびパケットデータを用いることができる。または、被検証パケットには、パケットデータおよび拡張パケットフッタ残り(ePF1)を用いることができる。または、被検証パケットには、拡張パケットヘッダ、パケットデータおよび拡張パケットフッタ残り(ePF1)を用いることができる。このような被検証パケットにより、少なくともパケットデータが保護される。
つまり、イメージセンサ1211は、パケットデータの第2保護データ(例えば、CRC演算値)を、セッション鍵を用いずに生成する第2保護部(例えば、CRC演算部)を備える。第2保護データは、例えば、高速データ送信の拡張パケットフッタePF内に格納される。つまり、フレームスタート内、埋込データ内、画像データ内、ユーザ定義データ内、フレームエンド内、書き込み命令(CCI Write)内、読み出し命令(CCI Read)内、読み出し応答(CCI Read戻り値)内などの何れかに格納される。
拡張パケットフッタePF1やePF0は、セキュリティ機能(security feature)が定義されてもよい。つまり、イメージセンサ1211内にセキュリティ演算部(例えば、暗号演算部、復号演算部、ハッシュ値演算部、メッセージ認証コード演算部、デジタル署名演算部)を備えてもよい。そして、セキュリティ演算の結果(例えば、ハッシュ値、メッセージ認証コード、デジタル署名)が拡張パケットフッタePF内に格納されてもよい。
セキュリティ演算の結果が格納されるのは、拡張パケットフッタePF0内ではなく拡張パケットフッタePF1内だけであってもよく、拡張パケットフッタ内ではなく拡張パケットフッタ外であってもよい(例えば、埋込データ内または読み出し応答内)。イメージセンサ1211が備えるセキュリティ演算部は、セキュリティ部1310に含まれる。
メッセージ認証コード(MAC: Message Authentication Code)としては、GMAC(Galois MAC)、CMAC(Cipher-based MAC)、HMAC(Hash-based MAC)などの何れかが用いられてもよい。例えば、AES(Advanced Encryption Standard)またはSHA(Secure Hash Algorithm)が適用された、AES-GMAC、AES-CMAC、SHA2-HMAC、SHA3-HMACなどの何れかが用いられてもよい。なお、AESのブロック長は128ビットであり、AESの鍵長は128ビット、192ビット、256ビットの何れかが選択される。
拡張パケットフッタ内は、例えば、パケットデータを被検証パケットとして、または、拡張パケットヘッダおよびパケットデータを被検証パケットとして、ハッシュ(特に暗号学的ハッシュ)値、メッセージ認証コード、デジタル署名などの何れかのセキュリティ情報が格納されてもよい。その場合、攻撃者からの悪意ある改竄に対して、さらなる耐性を持たせることができる。なお、拡張パケットフッタ「ePF1」内または「ePF1およびePF0」内は、誤り検出符号の一種である巡回冗長検査のCRCが格納されてもよい。
つまり、イメージセンサ1211が完全性演算部(例えば、第1保護部=セキュリティ演算部、第2保護部=CRC演算部)を備え、完全性を演算した結果である完全性演算値(例えば、第1保護データ、第2保護データ)が拡張パケットフッタ内に格納されてもよい。なお、CRCは、機能安全のために用いられることが可能で、その完全性はハードウェア障害が検出されないことを防ぐために用いられることが可能である。一方、セキュリティ機能の完全性は、意図的な干渉または攻撃を検出するために用いられることが可能である。つまり、セキュリティ演算部は、暗号に基づく完全性演算値を演算し、CRC演算部は、暗号に基づかない完全性演算値を演算する。
アプリケーションプロセッサ1212は、例えば、検証用パケットを用いることで、被検証パケットの完全性を検証できる。異常と判断される場合、例えば、被検証パケットおよび検証用パケットを含むパケットの再送を要求する要求メッセージの送信、イメージセンサ1211に異常があるかをイメージセンサ1211へ問い合わせる要求メッセージの送信、イメージセンサ1211の一部または全部の機能の停止をイメージセンサ1211へ要求する要求メッセージの送信、推進装置の推進停止、推進装置の推進制御の変更、推進制御に用いる優先データの変更などの何れかの処理が実行されてもよい。
なお、完全性演算値は、例えば、埋込データ内や、画像データ(パケットデータ)内、ユーザ定義データ内、書き込み命令内、読み出し命令内、読み出し応答などの内の何れかに格納されるようにしてもよい。その場合、完全性演算値は、拡張パケットフッタ内に格納されないようにしてもよい。例えば、完全性演算値は、画像のライン単位ではなく画像のフレーム単位で格納されるようにしてもよく、その場合は効率的に完全性が演算される。その場合、完全性演算値は、例えば、画像データが送信された後の埋込データ内または読み出し応答内に格納される。
図81のAに示す拡張パケットは、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタ残りePF1を被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のBに示す拡張パケットは、パケットデータおよび拡張パケットフッタ残りePF1を被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のCに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のDに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図82のAに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1を検証用パケットとした構成例となっている。
図82のBに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1および拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図82のCに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1を検証用パケットとした構成例となっている。
図82のDに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1および拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図83は、アプリケーションプロセッサ1212において行われるデータ検証処理を説明するフローチャートである。
ステップS601において、イメージセンサ1211から送信されてきた拡張パケットが拡張モード対応CSI-2受信回路1322により受信されると、セキュリティ部1326は、その拡張パケットの被検証パケットを受信する。そして、セキュリティ部1326が、被検証パケットの受信を完了すると、処理はステップS602に進む。なお、被検証パケットの全部の受信が完了していなくても、セキュリティ演算の計算を開始可能な少なくとも一部(例えば、128ビット)の受信が完了していれば処理はステップS602に進んでもよい。その場合、被検証パケットの全部の受信が完了するまで、被検証パケットの残りが引き続き受信される。
ステップS602において、セキュリティ部1326は、ステップS601で受信した被検証パケットの少なくとも一部を用いたセキュリティ演算により求められる計算値の計算を開始する。
ステップS603において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322を介して、イメージセンサ1211から送信されてくる検証用パケットを受信する。そして、セキュリティ部1326は、検証用パケットの受信を完了して、その検証用パケットに格納されている受信値(イメージセンサ1211で計算された計算値)を取得すると処理はステップS604に進む。
ステップS604において、セキュリティ部1326は、ステップS602で開始した被検証パケットを用いたセキュリティ演算により求められる計算値の計算が完了(即ち、被検証パケットの全部を受信して、その全部を用いた計算が完了)すると、処理はステップS605に進む。
ステップS605において、セキュリティ部1326は、ステップS603で受信した受信値と、ステップS604で求めた計算値とが一致したか否かを判定する。
ステップS605において、セキュリティ部1326が、受信値と計算値とが一致したと判定した場合、処理はステップS606に進む。この場合、ステップS606において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322が受信した拡張パケットは正常であると判断し、処理は終了される。
一方、ステップS605において、セキュリティ部1326が、受信値と計算値とが一致しないと判定した場合、処理はステップS607に進む。この場合、ステップS607において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322が受信した拡張パケットに異常が発生したと判断し、処理は終了される。
<メッセージカウント値を利用した機能安全の確保>
イメージセンサ1211は、機能安全(例えば、メッセージ欠落を検出して適切に処置すること)を確保するために、メッセージカウンタ1308がカウントするメッセージカウント値を、拡張パケットヘッダ内または拡張パケットフッタ内に格納することができる。例えば、イメージセンサ1211が備えるメッセージカウンタ1308は、イメージセンサ1211からメッセージが送信されるたびにインクリメントまたはデクリメントされたメッセージカウント値を格納することができる。なお、イメージセンサ1211は、仮想チャネル(バーチャルチャネル)ごとに独立したメッセージカウンタ1308を設ける構成や、仮想チャネルで共通なメッセージカウンタ1308を設ける構成としてもよい。
メッセージカウンタ1308は、ある仮想チャネルの拡張パケットヘッダを含む最初のパケットにおいてメッセージカウント値を初期値(例えば、0または最大値)に設定し、ある仮想チャネルの拡張パケットヘッダを含むデータを送信するたびにメッセージカウント値をインクリメントまたはデクリメントする。また、メッセージカウンタ1308は、例えば、拡張パケットヘッダを含まないデータが送信される場合、メッセージカウント値をインクリメントまたはデクリメントせずに、次に拡張パケットヘッダを含むデータが送信されたときに、カウントを再開する。
メッセージカウンタ1308は、フレームスタートまたはフレームエンドに関わらずカウントを継続してもよい。そして、メッセージカウンタ1308は、メッセージカウント値が規定値(例えば、最大値または0)までカントされた場合、次のメッセージカウント値を初期値(例えば、0または最大値)に戻して、カウントを行う。なお、拡張パケットヘッダの一部は、ナンス値の一部が格納されてもよい。
なお、メッセージカウント値を受信する受信側(イメージセンサ1211またはアプリケーションプロセッサ1212)は、メッセージが欠落した場合には、その欠落を即座に検知することができる。例えば、膨大な量のメッセージを意図的に混入させることでイメージセンサ1211またはアプリケーションプロセッサ1212の可用性を侵害するDoS(Denial-of-service)攻撃なども、受信側において即座に検知される。このため、メッセージカウント値は、拡張パケットヘッダ内に格納されることが望ましい。このような欠落や攻撃などを、より短時間で検出することができるようにすることで、受信側は、それらに対する対応を短い時間で開始することができ、例えば、高速移動または高速可動が可能な推進装置にとっては特に好適である。
なお、書き込み命令(CCI Write)、読み出し命令(CCI Read)、または読み出し応答(CCI Read戻り値)についても、メッセージカウント値または完全性演算値が格納されるように構成されてもよく、拡張パケットに関連する要素が適用されてもよい。その場合、書き込み命令、読み出し命令、または読み出し応答についても、機能安全に対応することや完全性を保護することなどが可能になる。
図84は、イメージセンサ1211がメッセージカウント値を送信するメッセージカウント値送信処理を説明するフローチャートである。
ステップS611において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
ステップS612において、拡張モード対応CSI-2送信回路1304は、拡張パケットヘッダを送信するか否かを判定し、拡張パケットヘッダを送信すると判定されるまで処理は待機される。そして、ステップS612において、拡張モード対応CSI-2送信回路1304が、拡張パケットヘッダを送信すると判定した場合、処理はステップS613に進む。
ステップS613において、拡張モード対応CSI-2送信回路1304は、メッセージカウンタ1308からメッセージカウント値を取得し、拡張パケットヘッダに格納する。
ステップS614において、拡張モード対応CSI-2送信回路1304は、ステップS613でメッセージカウント値を格納した拡張パケットヘッダを送信する。
ステップS615において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS615において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS616に進む。
ステップS616において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。その後、処理はステップS612に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS615において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS611に戻ってメッセージカウント値が初期化された後、以下、同様の処理が繰り返して行われる。
なお、このようにメッセージカウント値をインクリメントする他、例えば、メッセージカウント値を初期化して最大値に設定して、デクリメントを行ってもよい。
<埋め込みデータについて>
図85乃至図88を参照して、埋め込みデータについて説明する。
イメージセンサ1211は、埋込データを用いることで、データストリーム内にデバイス設定情報などの追加情報を含めることができる。埋込データは、1つ以上のライン(行)で構成され、イメージセンサ1211の構成データや、規格に従うレジスタ値、ベンダ固有のレジスタ値、フレーム形式の説明、統計値などの何れかを含むことが可能である。
図85のAには、1つのラインの埋込データが示されており、埋め込みデータフォーマットコードに続いて、所望のデータ量の埋め込みデータが連続して配置され、その残りにパディングキャラクタが配置された構成となっている。
埋込データには、画像データまたはユーザ定義データに関連する情報が含まれる。このため、画像データまたはユーザ定義データは圧縮されたデータであってもよいが、埋込データは、圧縮されてないデータ(非圧縮データ)であることが望ましい。従って、データの圧縮が用いられる場合、高速データ送信のフレーム内には、圧縮データ(画像データまたはユーザ定義データ)と非圧縮データ(埋込データ)とが混在することになる。
埋込データは、埋込データへ追加されるレジスタ値の数に応じて、埋込データのライン(行)を複数設けることが可能である。また、埋込データの行数は、フレーム内で最初の埋込データ行におけるフレーム形式内の説明の一部によって指定されることが可能である。埋込データのライン長は、画像データまたはユーザ定義データのライン長より短くてもよいが、画像データまたはユーザ定義データのライン長を超えることは好ましくなく、画像データまたはユーザ定義データのライン長と同一であることが望ましい。埋込データの最初のピクセル値は、埋込データに用いられる形式を示してもよい。
ナンス値の一部または全部は、図85のBに示すようなベンダ固有コード(Vendor specific)またはリザーブドコード(Reserved for future use)を示す埋込データの少なくとも一部内へ格納されて送信されてもよい。フレーム内において埋込データは、フレームスタートと最初の画像データまたはユーザ定義データとの間、および、最後の画像データまたはユーザ定義データとフレームエンドとの間の何れかに格納される。ただし、最後の画像データまたはユーザ定義データとフレームエンドとの間の埋込データは省略してもよい。
図86には、イメージセンサ1211から送信される2フレーム分の画像データのデータ構造の一例が示されている。
図86に示すように、第1のバーチャルチャネルのフレームスタート(VC1 FS)が送信された後、読み出し命令および読み出し応答に続いて、第2のバーチャルチャネルのフレームスタート(VC2 FS)が送信される。次に、第1のバーチャルチャネルの第1の埋め込みデータ(VC1 Emb Data)および第2のバーチャルチャネルの第1の埋め込みデータ(VC2 Emb Data)が送信される。そして、1フレーム分の第1のバーチャルチャネルの画像データ(VC1 Img Data)および第2のバーチャルチャネルのユーザ定義データ(VC2 UD Data)が送信される。1フレーム分の送信が完了すると、第1のバーチャルチャネルの第2の埋め込みデータ(VC1 Emb Data)および第2のバーチャルチャネルの第2の埋め込みデータ(VC2 Emb Data)が送信される。その後、第1のバーチャルチャネルのフレームエンド(VC1 FE)が送信された後、読み出し命令および読み出し応答に続いて、第2のバーチャルチャネルのフレームエンド(VC2 FE)が送信される。
図86では、第1のバーチャルチャネルと第2のバーチャルチャネルとでメッセージカウント値が共通化される例が示されている。このとき第1のバーチャルチャネルと第2のバーチャルチャネルとで独立したセージカウンタが設けられる構成としてもよい。また、ユーザ定義データは、画像データなどであってもよい。
ここで、ナンス値の一部または全部は、例えば、フレームスタートからフレームエンドまでの期間内、またはフレームエンドからフレームスタートまでの期間内(フレームブランキング期間)に格納される。また、フレームスタートからフレームエンドまでの期間内でナンス値を格納できるのは、例えば、埋込データ内、画像データ内、非画像データ内、およびラインブランキング期間内の何れかである。また、第2のバーチャルチャネルに格納されてもよい。
フレームスタートおよびフレームエンドを定義することによって、例えば、高速データ送信の開始および終了をイメージセンサからプロセッサへ通知することが可能となる。また、イメージセンサは、フレーム送信周期を一定に保つことが可能となる。なお、埋込データは、画像データを表す属性や画像データに関連する情報(メタデータ)などが格納されるデータである。
本実施の形態では、画像データの高速データ送信を阻害せずに、ナンス値の高速データ送信が実行される例を説明する。つまり、画像データの高速データ送信とナンス値の高速データ送信とが、並列実行ではなく直列実行される例を説明する。ただし、画像データの高速データ送信とナンス値の送信(高速データ送信または低速コマンド送信)とで通信経路が異なる場合、並列実行されてもよい。
なお、高速データ送信と低速コマンド送信とは、フィルタによる周波数分離が可能なので、消費電力に問題なければ、送信の一部または全部が重複(並列実行)されていても構わない。ナンス値の一部または全部は、複数フレームごとに送信されてもよいが、例えばフレーム欠落などの理由によって、1フレームごとに送信される方が望ましい。例えば、フレームスタート(Frame Start;FS)パケットはFrame Start Code(Data Type = 0x00)を含み、フレームエンド(Frame End;FE)パケットはFrame End Code(Data Type = 0x01)を含む。
図87は、イメージセンサ1211が画像データを送信する画像データ送信処理を説明するフローチャートである。
ステップS621において、拡張モード対応CSI-2送信回路1304は、高速データ送信の開始命令を受信したか否かを判定し、高速データ送信の開始命令を受信したと判定されるまで、処理が待機される。そして、ステップS621において、拡張モード対応CSI-2送信回路1304が、高速データ送信の開始命令を受信したと判定した場合、処理はステップS622に進む。
ステップS622おいて、画素1301が撮像を開始し、画素1301から出力される画像データが、AD変換器1302および画像処理部1303を介して拡張モード対応CSI-2送信回路1304に供給される。
ステップS623において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルのフレームスタートを送信する。
ステップS624において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのフレームスタートを送信する。
ステップS625において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの第1の埋め込みデータを送信する。
ステップS626において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの第1の埋め込みデータを送信する。
ステップS627おいて、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの画像データを送信する。
ステップS628において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのユーザ定義データを送信する。
ステップS629において、拡張モード対応CSI-2送信回路1304は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS629において、拡張モード対応CSI-2送信回路1304が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS627に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS629において、拡張モード対応CSI-2送信回路1304が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS630に進む。
ステップS630において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの第2の埋め込みデータを送信する。
ステップS631において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの第2の埋め込みデータを送信する。
ステップS632において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルのフレームエンドを送信する。
ステップS633において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのフレームエンドを送信する。
ステップS634において、拡張モード対応CSI-2送信回路1304は、高速データ送信の終了命令を受信したか否かを判定する。
ステップS634において、拡張モード対応CSI-2送信回路1304が、高速データ送信の終了命令を受信していないと判定した場合、処理はステップS622に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS634において、拡張モード対応CSI-2送信回路1304が、高速データ送信の終了命令を受信したと判定した場合、処理は終了される。
撮像開始は、高速データ送信の終了命令を受信するまで継続実行されてもよく、高速データ送信の開始命令を受信するたびに実行されてもよい。
図88は、イメージセンサ1211が完全性演算値を送信する完全性演算値送信処理を説明するフローチャートである。
ステップS641において、セキュリティ部1310は、第1のバーチャルチャネルのセッション鍵を導出する。
ステップS642において、セキュリティ部1310は、第2のバーチャルチャネルのセッション鍵を導出する。
ステップS643において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS644において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS645において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS646に進む。
ステップS646において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの拡張パケットを送信するか否かを判定する。
ステップS646において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信しないと判定した場合、処理はステップS645に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS646において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS647に進む。
ステップS647において、セキュリティ部1310は、ステップS641で導出した第1のバーチャルチャネルのセッション鍵を用いて、第1のバーチャルチャネルの完全性演算値を演算する。
ステップS648において、拡張モード対応CSI-2送信回路1304は、ステップS647で算出された完全性演算値を第1のバーチャルチャネルの拡張パケットに配置し、その第1のバーチャルチャネルの拡張パケットを送信する。
ステップS649において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの拡張パケットを送信するか否かを判定し、第2のバーチャルチャネルの拡張パケットを送信と判定されるまで処理を待機する。そして、ステップS649において、拡張モード対応CSI-2送信回路1304が、第2のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS650に進む。
ステップS650において、セキュリティ部1310は、ステップS642で導出した第2のバーチャルチャネルのセッション鍵を用いて、第2のバーチャルチャネルの完全性演算値を演算する。
ステップS651において、拡張モード対応CSI-2送信回路1304は、ステップS650で算出された完全性演算値を第2のバーチャルチャネルの拡張パケットに配置し、その第2のバーチャルチャネルの拡張パケットを送信する。
ステップS652において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。
ステップS652において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS653に進む。ステップS653において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントした後、処理はステップS645に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS652において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS654に進む。ステップS654において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS644に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS645において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS655に進む。
ステップS655において、セキュリティ部1310は、第1のバーチャルチャネルのセッション鍵と第2のバーチャルチャネルのセッション鍵とを破棄またはクリーンアップし、その後、処理は終了される。
<画像データのデータ構造の変形例>
図89乃至図91を参照して、画像データのデータ構造について説明する。
図89には、画像データのデータ構造の第1の変形例が示されている。
図89に示す画像データのデータ構造では、第1のバーチャルチャネルおよび第2のバーチャルチャネルで共通化されたメッセージカウント値が用いられている。
ただし、セッション鍵またはメッセージカウンタは、第1のバーチャルチャネルおよび第2のバーチャルチャネルで共通化されてもよい。また、画像データまたは埋込データは、他データへ置き換えられてもよい。例えば、埋込データは、画像データへ置き換えられてもよい。一方、メッセージカウンタは、仮想チャネル(VC)を跨いでカウントすることによって、共通化されてもよい。
図90には、画像データのデータ構造の第2の変形例が示されている。
図90に示す画像データのデータ構造では、Write(CCI書き込み命令)、Read1(CCI読み出し命令)、およびRead2(CCI読み出し応答)で、それぞれ独立したメッセージカウント値が用いられている。
図91には、画像データのデータ構造の第3の変形例が示されている。
図91に示す画像データのデータ構造では、CCIアップリンク(WriteおよびRead1)およびCCIダウンリンク(Read2)で、それぞれ独立したメッセージカウント値が設けられている。つまり、メッセージカウント値は、Write(CCI書き込み命令)とRead1(CCI読み出し命令)とで共通化されてもよい。
<ナンス値について>
ナンス値は、例えば、同じセッション鍵に対してnumber used onceであるため、セッション鍵を用いる暗号化演算または復号演算の初期化ベクトル(initialization vector)の一部または全部として用いられる。そのため、イメージセンサ1211が暗号化演算に用いたナンスが、イメージセンサ1211から送信されてアプリケーションプロセッサ1212で受信されることによって、アプリケーションプロセッサ1212は復号演算に必要なナンス値を入手できる。
つまり、イメージセンサ1211は、画像データを送信する前にナンス値を送信することが望ましい。具体的には、あるフレーム内の画像データに対応するナンス値の一部または全部は、1つ前にフレーム内の最後の画像データが送信完了された後から、あるフレーム内の最初の画像データが送信開始される前までの、読み出し応答内や、ユーザ定義データ内、埋込データ内(画像データ直後)、フレームエンド内、フレームスタート内、埋込データ内(画像データ直前)などの何れかに格納される。
例えば、低速コマンド送信のマスタであるアプリケーションプロセッサ1212は、低速コマンド送信のスレーブであるイメージセンサ1211から高速データ送信によって送信されたフレームスタートや、埋込データ、画像データ、ユーザ定義データ、フレームエンドなどの何れかの受信開始または受信完了に応じて、イメージセンサ1211内のナンス値をアプリケーションプロセッサ1212へ読み出すことを要求する読み出し命令を低速コマンド送信によって送信してもよい。
イメージセンサ1211は、アプリケーションプロセッサ1212から送信された読み出し命令を受信し、それに応じたナンス値を高速データ送信によって送信する。そして、アプリケーションプロセッサ1212が読み出し応答を受信することによって、イメージセンサ1211からアプリケーションプロセッサ1212へナンス値を通知できる。
イメージセンサ1211から通知されたナンス値はアプリケーションプロセッサ1212内で用いられるので、ナンス値の一部または全部は、フレームエンドと次のフレームスタートとの間の画像データが送信されないフレームブランキングの期間内に送信されることが望ましい。ただし、最初のフレーム(Frame Number = 1)については、イメージセンサ1211とアプリケーションプロセッサ1212とで最初のナンス値(初期値)を事前合意しておくか、最初のナンス値の一部または全部が画像データの送信開始までにアプリケーションプロセッサ1212で受信されてれいればよい。
この読み出し命令は、例えば、I2CまたはI3Cの規格におけるRead/WriteのReadに相当する。一方、読み出し応答は、Read戻り値に相当する。なお、読み出し応答のタイミングを調整するために、アプリケーションプロセッサ1212が高速データ送信を受信してから、読み出し命令を送信するまでの間に、所定時間を待機するタイマが設けられてもよい。
<I2CおよびI3Cについて>
I2CバスまたはI2Cバスと呼ばれる場合もある集積回路間シリアルバスは、低速周辺装置をアプリケーションプロセッサ1212に接続する際に使用することを意図していたシリアルシングルエンドコンピュータバスである。I2Cバスは、I2Cバス上で送信される様々なメッセージに対して、各デバイスがマスタおよびスレーブとして働くことができるマルチマスタバスである。
I2Cバスは、シリアルデータライン(SDA)およびシリアルクロックライン(SCL)を含む2つの双方向オープンドレインコネクタのみを使用して、データを送信することができる。それらのコネクタは通常、プルアップ抵抗器によって終端される信号線を含む。I2Cバスの動作を管理するプロトコルは、メッセージの基本タイプを規定し、それらのメッセージはそれぞれSTARTで開始し、STOPで終了する。I2Cバスは7ビットアドレス指定を使用し、2つのタイプのノードを規定する。
マスタノードは、クロックを生成し、スレーブノードとの通信を開始するノードである。スレーブノードは、クロックを受信し、マスタによってアドレス指定されたときに応答するノードである。I2Cバスはマルチマスタバスであり、それは、任意の数のマスタノードが存在できることを意味する。さらに、マスタとスレーブの役割は、メッセージ間で(すなわち、STOPが送られた後)変更される場合がある。カメラ実装である本実施の形態では、センサから画像を取り込み、そのような画像データをベースバンドプロセッサの中のメモリへ送信するために片方向送信が使用されてもよく、一方、ベースバンドプロセッサと、センサならびに他の周辺デバイスとの間で制御データが交換されてもよい。
一例では、ベースバンドプロセッサとイメージセンサ(または1つもしくは複数のスレーブノード)との間のそのような制御データのために、カメラ制御インタフェース(CCI)プロトコルが使用される場合がある。一例では、CCIプロトコルは、イメージセンサとベースバンドプロセッサとの間のI2Cシリアルバスを介して実施されてもよい。従来のI2Cシステム、すなわちカメラ制御インターフェースベースのカメラシステムは、スレーブノードがバスを使用することを望むことを、スレーブノードがマスタノードへ示すことを可能にするために、スレーブデバイスごとに別個の割込み(IRQ)ラインを使用する。
一方、I3Cの通信規格は、データを伝送するSDA線と、クロック信号を伝送するSCL線との2本の信号線を介して通信を行う規格である。この規格において、デバイス(プロセッサなど)は、マスタまたはスレーブとして動作するデバイスと、スレーブとしてのみ動作するデバイスとに分類される。例えば、プロセッサは、マスタまたはスレーブとして動作し、センサはスレーブとしてのみ動作する。
ここで、マスタは、スレーブを制御するデバイスであり、スレーブは、マスタの制御に従って動作するデバイスである。また、I3Cでは1つのマスタに対して複数のスレーブを接続することができる。また、1つのスレーブに対して複数のマスタが信号を送信することができ、この通信を以下、「マルチマスタ通信」と称する。さらに、マスタを介さずにスレーブ同士で通信を行うことができ、この通信は、「ピアツーピア通信」と呼ばれる。また、スレーブは、他のデバイスの通信によりSDA線が通信中(ビジー)である間に、その通信に割り込んで通信を行うことができ、この割込みは、「帯域内割込み(In-Band Interrupt)」と呼ばれる。
上述のマルチマスタ通信、帯域内割込み、および、ピアツーピア通信においては、複数のデバイスが同時に送信した信号がSDA線において衝突するおそれがある。例えば、マスタが、あるスレーブへ信号を送信している間に、別のスレーブが帯域内割込みを行ってマスタへ信号を送信すると、マスタからの信号とスレーブからの信号とが衝突してしまう。このため、I3Cにおけるデバイスは、衝突を検出してデバイス同士を調停する機能を有する。
上述した割り込み機能を用いると、アプリケーションプロセッサ1212と簡単に同期をとれるので、イメージセンサ1211が決めるタイミングで割り込み実行することによって、イメージセンサ1211が決めるタイミングに応じてナンス関連情報が送信される。ただし、イメージセンサ1211は、帯域内割込みによって読み出し命令をトリガし、それに応じて読み出し応答を送信してもよいし、帯域内割込みによって読み出し命令を省略して読み出し応答を送信してもよい。
<完全性演算値処理>
図92乃至図95を参照して、完全性演算値処理について説明する。
図92は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第1の処理例を説明するフローチャートである。
ステップS661において、セキュリティ部1310は、セッション鍵を導出する。
ステップS662において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
ステップS663において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS664に進む。
ステップS664において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS664において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS663に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS664において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS665に進む。
ステップS665において、セキュリティ部1310は、メッセージカウント値を用いて、完全性演算値を演算する。
ステップS666において、拡張モード対応CSI-2送信回路1304は、ステップS665で算出された完全性演算値を拡張パケットに配置し、その拡張パケットを送信する。
ステップS667において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS667において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS668に進む。
ステップS668において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。その後、処理はステップS663に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS667において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS669に進む。ステップS669において、セキュリティ部1310は、セッション鍵を更新した後、処理はステップS662に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS663において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS670に進む。
ステップS670において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、画像ラインごとのMAC値を演算して拡張パケットフッタ内に格納して送信する場合、メッセージカウント値は、拡張パケットを送信するごとに1ずつインクリメントされるので、216回でメッセージカウント値は一周する。例えば、フレームレートが60fpsで画素数4096×2160(横×縦)の4Kデータを送信する場合、フレームスタートと埋込データとフレームエンドとの3ラインを加算した2163ラインの拡張パケットを1フレーム内で送信することを想定すれば、(216)/(60×2163)≒0.5秒でメッセージカウント値が一周する。
例えば、イメージセンサ1211が、同じセッション鍵で同じ初期化ベクトル値を用いてメッセージのGalois Message Authentication Code(GMAC)値などのMAC値を演算してメッセージおよびMAC値を送信する場合、攻撃者はメッセージおよびMAC値の連立方程式を計算することによってセッション鍵を簡単に入手できる。その場合、攻撃者は、MAC値を自由に改竄できるようになるため、メッセージの成りすまし、改竄、リプレイなどの攻撃が可能になる。そのため、メッセージカウント値を初期化ベクトルの可変部分、つまりナンス値として用いる場合、メッセージカウント値が一周するまでにセッション鍵を更新する必要がある。例えば、フレームブランキングまたはラインブランキングの期間を活用することによって、ナンス値が一周(ロールオーバー)するまでにセッション鍵が更新されればよい。
図93は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第2の処理例を説明するフローチャートである。
ステップS681において、セキュリティ部1310は、セッション鍵を導出する。
ステップS682において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS683において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS684において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS685に進む。
ステップS685において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS685において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS684に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS685において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS686に進む。
ステップS686において、セキュリティ部1310は、メッセージカウント値の上位カウント値および下位カウント値を用いて、完全性演算値を演算する。
ステップS687において、拡張モード対応CSI-2送信回路1304は、ステップS686で算出された完全性演算値を拡張パケットに配置し、その拡張パケットを送信する。
ステップS688において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。ステップS688において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS689に進む。
ステップS689において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントする。その後、処理はステップS684に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS688において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS690に進む。ステップS690において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS683に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS684において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS691に進む。
ステップS691において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、メッセージカウント値を初期化ベクトルの一部、つまりナンス値の一部(例えば、下位カウント値)として用いる場合、ナンス値の残り(例えば、上位カウント値)も併用することによって、セッション鍵の更新を不要にすること、または、セッション鍵の更新頻度を減らすことができる。
例えば、フレームレートが60fpsで画素数4096×2160(横×縦)の4Kデータを送信する場合、ナンス値が一周するのは、
・16ビット幅の上位カウント値を併用すると232÷60÷2163≒9時間
・20ビット幅の上位カウント値を併用すると236÷60÷2163≒6日
・24ビット幅の上位カウント値を併用すると240÷60÷2163≒98日
・28ビット幅の上位カウント値を併用すると244÷60÷2163≒4年
・32ビット幅の上位カウント値を併用すると248÷60÷2163≒69年となる。
ここで、イメージセンサ1211またアプリケーションプロセッサ1212の電源が再起動(OFFの後にON)される場合、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、一般的な車載用途で6日以上も電源を再起動しない可能性は低く、4年以上も電源を再起動しない可能性は極めて低いので、上位カウント値は20~28ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
例えば、給油式の車両であれば給油の際に電源OFFとすればよく、給油式または充電式の車両であっても車両点検の際に電源OFFとすれば、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、IoT(Internet of ThingsまたはIntelligence of Things)向けイメージセンサが想定される場合、電源が再起動されないことも想定されるので、上位カウント値は32ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
図94は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第3の処理例を説明するフローチャートである。
ステップS701において、セキュリティ部1310は、セッション鍵を導出する。
ステップS702において、メッセージカウンタ1308は、フレームカウント値を初期化して1に設定する。
ステップS703において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS704に進む。
ステップS704において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS704において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS704において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS705に進む。
ステップS705において、セキュリティ部1310は、フレームカウント値を用いて行われる完全性演算値の演算を準備する。
ステップS706において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS707において、拡張モード対応CSI-2送信回路1304は、フレーム内のフレームエンド以外の送信が完了したか否かを判定する。ステップS707において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了していないと判定した場合、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS707において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了したと判定した場合、処理はステップS708に進む。
ステップS708において、セキュリティ部1310は、フレームカウント値を用いて行われる完全性演算値の演算を完了する。
ステップS709において、拡張モード対応CSI-2送信回路1304は、フレームエンドとともに完全性演算値を送信する。
ステップS710において、メッセージカウンタ1308は、フレームカウント値が規定値までカウントされたか否かを判定する。ステップS710において、メッセージカウンタ1308が、フレームカウント値が規定値までカウントされていないと判定した場合、処理はステップS711に進む。
ステップS711において、メッセージカウンタ1308は、フレームカウント値をインクリメントする。その後、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS710において、メッセージカウンタ1308が、フレームカウント値が規定値までカウントされたと判定した場合、処理はステップS712に進む。ステップS712において、セキュリティ部1310は、セッション鍵を更新した後、処理はステップS702に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS703において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS713に進む。
ステップS713において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、イメージセンサ1211は、画像フレームごとの完全性演算値を演算して一括送信してもよい。その場合の完全性演算値は、画像データ以降の埋込データ内またはユーザ定義データ内または読み出し応答内に格納されて送信される。
フレームスタートまたはフレームエンドは、例えば、16ビットのフレーム番号を含んでもよい。このフレーム番号は、所定のフレームに対応するフレームスタートとフレームエンドとで同一であってもよい。16ビットのフレーム番号を使用する場合、フレーム番号が機能せず、ゼロに設定されたままのユースケースと区別するために、非ゼロであることが望ましいが、その限りではない。
フレーム番号は、同じ仮想チャネルを持つフレームスタートパケットごとに1または2ずつインクリメントし、定期的に1へリセットされる。例えば、破損のために画像フレームがマスクされている(つまり、送信されてない)場合、フレーム番号は2ずつ増えてもよい。
このような場合に対応するために、必要に応じて、フレーム番号のシーケンス内で1または2のインクリメントを自由に混在させてもよい。つまり、1ずつインクリメントされる場合、216-1回でフレーム番号は一周する。また、フレームレートが60fpsである場合、(216-1)÷60≒18分でフレーム番号が一周する。
例えば、イメージセンサ1211が、同じセッション鍵で同じ初期化ベクトル値を用いてメッセージのGalois Message Authentication Code(GMAC)値などのMAC値を演算してメッセージおよびMAC値を送信する場合、攻撃者はメッセージおよびMAC値の連立方程式を計算することによってセッション鍵を簡単に入手できる。その場合、攻撃者は、MAC値を自由に改竄できるようになるため、メッセージの成りすまし、改竄、リプレイなどの攻撃が可能になる。
そのため、フレーム番号を初期化ベクトル、つまりナンス値として用いる場合、フレーム番号が一周するまでにセッション鍵を更新する必要がある。例えば、フレームブランキングまたはラインブランキングの期間を活用することによって、ナンス値が一周(ロールオーバー)するまでにセッション鍵が更新されればよい。
図95は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第4の処理例を説明するフローチャートである。
ステップS721において、セキュリティ部1310は、セッション鍵を導出する。
ステップS722において、メッセージカウンタ1308は、フレームカウント値の上位カウント値を初期化して0に設定する。
ステップS723において、メッセージカウンタ1308は、フレームカウント値の下位カウント値を初期化して1に設定する。
ステップS724において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS725に進む。
ステップS725において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS725において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS725において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS726に進む。
ステップS726において、セキュリティ部1310は、フレームカウント値の上位カウント値および下位カウント値を用いて行われる完全性演算値の演算を準備する。
ステップS727において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS728において、拡張モード対応CSI-2送信回路1304は、フレーム内のフレームエンド以外の送信が完了したか否かを判定する。ステップS728において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了していないと判定した場合、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS728において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了したと判定した場合、処理はステップS729に進む。
ステップS729において、セキュリティ部1310は、フレームカウント値の上位カウント値および下位カウント値を用いて行われる完全性演算値の演算を完了する。
ステップS730において、拡張モード対応CSI-2送信回路1304は、フレームエンドとともに完全性演算値を送信する。
ステップS731において、メッセージカウンタ1308は、フレームカウント値の下位カウント値が規定値までカウントされたか否かを判定する。ステップS731において、メッセージカウンタ1308が、フレームカウント値の下位カウント値が規定値までカウントされていないと判定した場合、処理はステップS732に進む。
ステップS732において、メッセージカウンタ1308は、フレームカウント値の下位カウント値をインクリメントする。その後、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS731において、メッセージカウンタ1308が、フレームカウント値の下位カウント値が規定値までカウントされたと判定した場合、処理はステップS733に進む。ステップS733において、セキュリティ部1310は、フレームカウント値の上位カウント値をインクリメントした後、処理はステップS723に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS724において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS734に進む。
ステップS734において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、フレーム番号を初期化ベクトルの一部、つまりナンス値の一部(例えば、下位カウント値)として用いる場合、ナンス値の残り(例えば、上位カウント値)も併用することによって、セッション鍵の更新を不要にすること、または、セッション鍵の更新頻度を減らすことができる。
例えば、1ずつインクリメントで60fpsである場合、ナンス値が一周するのは、
・4ビット幅の上位カウント値を併用すると(220-1)÷60≒5時間
・8ビット幅の上位カウント値を併用すると(224-1)÷60≒78時間
・12ビット幅の上位カウント値を併用すると(228-1)÷60≒52日
・16ビット幅の上位カウント値を併用すると(232-1)÷60≒828日
・20ビット幅の上位カウント値を併用すると(236-1)÷60≒36年
・24ビット幅の上位カウント値を併用すると(240-1)÷60≒581年となる。
ここで、イメージセンサ1211またはアプリケーションプロセッサ1212の電源が再起動(OFFの後にON)される場合、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、一般的な車載用途で、3日以上も電源を再起動しない可能性は低く、2年以上も電源を再起動しない可能性は極めて低いので、上位カウント値は8~16ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
例えば、給油式の車両であれば給油の際に電源OFFとすればよく、給油式または充電式の車両であっても車両点検の際に電源OFFとすれば、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、IoT(Internet of ThingsまたはIntelligence of Things)向けイメージセンサが想定される場合、電源が再起動されないことも想定されるので、上位カウント値は20~24ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
<暗号化および復号>
図96乃至図100を参照して、暗号化および復号について説明する。
図96には、初期化ベクトルが格納される初期カウンタブロックの一例が示されている。
図96に示すように、初期化ベクトルの構造を共通化する一方で、バーチャルチャネル間で異なる値とすることで、より簡単な実装を可能とすることができる。また、CSI-2のバーチャルチャネル間で、共通のセッション鍵またはカウント値が用いられる。
128ビットの初期カウンタブロックが、AES(Advanced Encryption Standard)-GCM(Galois/Counter Mode)またはAES-GMAC(Galois Message Authentication Code)によって暗号化に用いられたり、メッセージ認証に用いられたりする。
例えば、初期カウンタブロックの暗号化には、図97に示すようなGHASH関数や、図98に示すようなGCTR関数などを利用することができる。
初期化ベクトルは、図99に示すような認証付き暗号化機能を有するGCM-AE(Authenticated Encryption)関数を利用した暗号化や、図100に示すような認証付き復号機能を有するGCM-AD(Authenticated Decryption)関数を利用した復号に利用される。ただし、暗号化(復号)またはメッセージ認証の何れか一方の機能に限定利用されてもよい。
例えば、初期化ベクトルIV、平文P、および追加認証データAをGCM-AE関数に入力すると平文Pの暗号化が行われ、その結果、暗号化テキストCおよび認証タグTが出力される。
一方、初期化ベクトルIV、暗号化テキストC、追加認証データA、および認証タグTをGCM-AD関数に入力すると、暗号化テキストCの復号が行われて平文Pが出力され、認証タグTと認証タグT’が一致しなかった場合には、認証に失敗したことを示す結果(FAIL)が出力される。
<完全性演算値の第1の送信方式>
図101乃至図105を参照して、完全性演算値MACの第1の送信方式について説明する。
図101には、ラインごとに完全性演算値MACを送信する画像データのデータ構造が示されている。このように、ラインごとに完全性演算値MACを送信する送信方式を、以下適宜、ラインMAC方式と称する。
図示するように、CSI-2のラインごと、CCIコマンドごと、または、CCIリターンごとに、完全性演算値MACが送信される。このように、これらの間で初期化ベクトルが同一の値である場合、より多くのセッション鍵が必要となる。
例えば、同一の初期化ベクトルおよび同一のセッション鍵を使用すると、完全性演算値MACが改竄される原因になることが想定される。
そこで、同一の初期化ベクトルについては、VC0コマンド、VC0リターン、VC1、およびVC2ごとに、それぞれ合計で4つのセッション鍵を使用することが提案される。
一方、異なる初期化ベクトルについては、3つ以下のセッション鍵を使用することが提案される。
第1のケースでは、アップリンク向けの第1のセッション鍵をVC0コマンドで使用し、ダウンリンク向けの第2のセッション鍵をVC0リターン、VC1、およびVC2で使用する。第2のケースでは、CCI向けの第1のセッション鍵をVC0で使用し、CSI-2向けの第2のセッション鍵をVC1およびVC2で使用する。第3のケースでは、全て向けの1つのセッション鍵をVC0、VC1、およびVC2で使用する。
また、合計で2つのメッセージカウント値が使用される。CSI-2で共通のメッセージカウント値はVC1およびVC2の間で使用され、CCIで独立したメッセージカウント値はVC0で使用される。
なお、CSI-2の仮想チャネル間で共通なメッセージカウンタが用いられる例が示されているが、CSI-2の仮想チャネル間で独立したメッセージカウンタが用いられてもよい。その場合、フローチャートの一部が削除されればよい。また、その場合、CSI-2の仮想チャネル間でメッセージカウンタが同期されていてもよいし、非同期であってもよい。例えば、実装効率の観点でメッセージカウンタは共通化が望ましい場合もあるし、安全性の観点でメッセージカウンタは独立化が望ましい場合もある。
例えば、図102に示す構造の初期化ベクトルは、全てのバーチャルチャネル(CSI-2およびCCI)において共通とされる。そして、この初期化ベクトルの一部または全部は、図103に示すように、送信側から受信側へ送信される。なお、Reserved(Res)2ビットとして、規定値(例えば、02、12)を用いてもよい。また、Source IDまたはFinal Destination IDとして、事前交換された値を用いてもよい。また、受信側は、送信側から受信側へ送信された値ではなく、受信側で把握している値を初期化ベクトルの一部または全部として用いてもよい。また、初期化ベクトルの一部または全部が送信側から受信側へ送信される場合、初期化ベクトルの一部または全部は暗号化されないで(平文で)送信されることが望ましいが、その限りではない。
図103では、追加メッセージカウント値が拡張パケットヘッダ外に格納されて送信される例が示されているが、追加メッセージカウント値およびメッセージカウント値が拡張パケットヘッダ外に格納されて送信されてもよい。その場合、メッセージカウント値は拡張パケットヘッダ内にも格納されて送信されてもよい。なお、追加メッセージカウント値は一部のみ用いられてもよい。例えば、初期化ベクトル内の追加メッセージカウント値が40ビットの場合、実際の追加メッセージカウント値は16ビットのカウンタであってもよく、そのカウント値が初期化ベクトル内の追加メッセージカウント値の一部(例えば、LSB側16ビット)内に格納され、初期化ベクトル内の追加メッセージカウント値の残り(例えば、MSB側24ビット)内は規定値(例えば、024、124)が格納されてもよい。また、初期化ベクトル内の追加メッセージカウント値は全て規定値(例えば、040、140)が格納されてもよい。
また、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されて設定される初期化ベクトルの一部または全部は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されないように構成され、事前合意またはレジスタ設定などに基づいて設定されてもよい。
図104には、CSI-2またはCCIの拡張フォーマットの一例が示されている。
例えば、必須の拡張パケットヘッダePH0の先頭ビット(ReservedおよびeVC)または準先頭ビット(eVC)が、初期化ベクトルとして使用される。そして、アプリケーションプロセッサ1212は、そのビットを受信した直後に、上述の図98に示したGCTR関数の計算を開始することができる。つまり、送信側および受信側は、eVC値を送信または受信する前までにeVC以外の初期化ベクトル構成要素の値を確定できるように構成されてもよい。
図105に示すフローチャートを参照して、イメージセンサ1211が、ラインごとに完全性演算値MACを送信するラインMAC方式の送信処理について説明する。
ステップS741において、セキュリティ部1310は、共通セッション鍵を導出する。
ステップS742において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS743において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS744において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS745に進む。
ステップS745において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの拡張パケットを送信するか否かを判定する。
ステップS745において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信しないと判定した場合、処理はステップS744に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS745において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS746に進む。
ステップS746において、セキュリティ部1310は、ステップS741で導出した共通セッション鍵を用いて、第1のバーチャルチャネルの完全性演算値を演算する。
ステップS747において、拡張モード対応CSI-2送信回路1304は、ステップS746で算出された完全性演算値を第1のバーチャルチャネルの拡張パケットに配置し、その第1のバーチャルチャネルの拡張パケットを送信する。
ステップS748において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの拡張パケットを送信するか否かを判定し、第2のバーチャルチャネルの拡張パケットを送信と判定されるまで処理を待機する。そして、ステップS748において、拡張モード対応CSI-2送信回路1304が、第2のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS749に進む。
ステップS749において、セキュリティ部1310は、ステップS741で導出した共通セッション鍵を用いて、第2のバーチャルチャネルの完全性演算値を演算する。
ステップS750において、拡張モード対応CSI-2送信回路1304は、ステップS749で算出された完全性演算値を第2のバーチャルチャネルの拡張パケットに配置し、その第2のバーチャルチャネルの拡張パケットを送信する。
ステップS751において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。
ステップS751において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS752に進む。ステップS752において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントした後、処理はステップS744に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS751において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS753に進む。ステップS753において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS743に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS744において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS754に進む。
ステップS754において、セキュリティ部1310は、共通セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、初期化ベクトル構成が拡張仮想チャネルeVCまたは仮想チャネルVCを含むことによって、複数種類のCSI-2仮想チャネル間で、セッション鍵やメッセージカウンタが共通化されることが可能になる。また、CSI-2とCCIとの間で、セッション鍵を共通化されることが可能になる。なお、CSI-2仮想チャネル間で実質的なライン数が異なる場合、例えば、ダミーデータによってライン数が統一化されることによって、メッセージカウンタを共通化されることが可能になる。
図105で説明した処理は、メッセージカウント値を下位カウント値とし、追加メッセージカウント値を上位カウント値とする例であり、CSI-2仮想チャネルが2種類ある場合の一例である。
一方、初期化ベクトル構成は、拡張データタイプeDTまたはデータタイプDTを含んでもよい。その場合は同様に、複数種類のデータタイプ間で、セッション鍵やメッセージカウンタが共通化されることが可能になる。
なお、Reserved、拡張仮想チャネルeVC、および拡張データタイプeDTは、CSI-2/CCI extension format exampleの先頭ビットとして格納されるので、プロセッサはこれらの一部または全部が受信されれば直ちにGCTR演算の一部(CIPHK)の演算を開始できる。また、イメージセンサ1211とアプリケーションプロセッサ1212との間でフレーム構成が事前に合意されている場合、アプリケーションプロセッサ1212は、これらの受信を省略してGCTR演算の一部(CIPHK)の演算を開始できる。つまり、これらの初期化ベクトル構成は、演算時間の観点で有利である。
なお、追加メッセージカウント値をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。これにより、アプリケーションプロセッサ1212は、実装効率の観点から追加メッセージカウンタを設けないように構成されてもよいし、安全性の観点から追加メッセージカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212が追加メッセージカウンタを設けるように構成される場合、イメージセンサ1211は追加メッセージカウント値を送信しないように構成されてもよい。即ち、初期化ベクトルに拡張仮想チャネルeVCが含まれる場合、追加メッセージカウント値の送信は必須要件でない。
<完全性演算値の第2の配置例>
図106乃至図109を参照して、完全性演算値MACの第2の配置例について説明する。
図106には、フレームごとに完全性演算値MACが配置された画像データのデータ構造が示されている。このように、フレームごとに完全性演算値MACを送信する送信方式を、以下適宜、フレームMAC方式と称する。
図示するように、フレームエンドの拡張パケットフッタ残りePF1に配置されている完全性演算値MACのみが有効になり、他の完全性演算値MACは無効とされる。また、完全性演算値MACは、フレームの最後の拡張パケットフッタePFを除く各ラインの拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタePFから導出される。
例えば、図107に示す構造の初期化ベクトルは、ラインMACおよびフレームMAC(CSI-2のみ)において共通とされる。そして、この初期化ベクトルは、図108に示すように、送信側から受信側へ送信される。
図108では、追加フレーム番号が拡張パケットヘッダ外に格納されて送信される例が示されている。その他、追加フレーム番号およびフレーム番号が拡張パケットヘッダ外に格納されて送信されてもよい。その場合、フレーム番号はフレームスタート内にも格納されて送信されてもよい。なお、追加フレーム番号は一部のみ用いられてもよい。例えば、初期化ベクトル内の追加フレーム番号が24ビットの場合、実際の追加フレーム番号は16ビットのカウンタであってもよく、そのカウント値が初期化ベクトル内の追加フレーム番号の一部(例えば、LSB側16ビット)内に格納され、初期化ベクトル内の追加フレーム番号の残り(例えば、MSB側8ビット)内は規定値(例えば、08、18)が格納されてもよい。また、初期化ベクトル内の追加フレーム番号は全て規定値(例えば、024、124)が格納されてもよい。
また、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されて設定される初期化ベクトルの一部または全部は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されないように構成され、事前合意またはレジスタ設定などに基づいて設定されてもよい。
図109に示すフローチャートを参照して、イメージセンサ1211が、フレームごとに完全性演算値MACを送信するフレームMAC方式の送信処理について説明する。
ステップS761において、セキュリティ部1310は、セッション鍵を導出する。
ステップS762において、メッセージカウンタ1308は、追加フレーム番号が用いられる上位カウント値を初期化して0に設定する。
ステップS763において、メッセージカウンタ1308は、フレーム番号が用いられる下位カウント値を初期化して1に設定する。
ステップS764において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS765に進む。
ステップS765において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS765において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS765において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS766に進む。
ステップS766において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS767において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。
ステップS767において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS768に進む。ステップS768において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
一方、ステップS767において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS769に進む。ステップS769において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。
ステップS768およびステップS769の処理後、処理はステップS770に進み、拡張モード対応CSI-2送信回路1304は、フレーム内の拡張パケットを全て送信完了したか否かを判定する。
ステップS770において、拡張モード対応CSI-2送信回路1304が、フレーム内の拡張パケットを全て送信完了していないと判定した場合、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS770において、拡張モード対応CSI-2送信回路1304が、フレーム内の拡張パケットを全て送信完了したと判定した場合、処理はステップS771に進む。
ステップS771において、メッセージカウンタ1308は、下位カウント値が規定値までカウントされたか否かを判定する。
ステップS771において、メッセージカウンタ1308が、下位カウント値が規定値までカウントされていないと判定した場合、処理はステップS772に進む。ステップS772において、メッセージカウンタ1308は、下位カウント値をインクリメントした後、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS771において、メッセージカウンタ1308が、下位カウント値が規定値までカウントされたと判定した場合、処理はステップS773に進む。ステップS773において、メッセージカウンタ1308は、上位カウント値をインクリメントした後、処理はステップS763に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS764において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS774に進む。
ステップS774において、セキュリティ部1310は、共通セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
以上のように、図109で説明した処理は、フレーム番号を下位カウント値とし、追加フレーム番号を上位カウント値とする例である。ただし、完全性演算値の演算および送信、仮想チャネル、セッション鍵更新などについては省略されているが、上述したフローチャートの何れかの一部または全部と組み合わせられてもよい。他にフローチャートについても同様である。
なお、フレーム番号は1または2のインクリメントが混在する可能性あるため、下位カウント値が規定値(例えば、最大値または最大値-1)である場合に上位カウント値をインクリメントすることが望ましい。ただし、フレーム番号のインクリメントが1のみであるならば、下位カウント値が最大値である場合に上位カウント値がインクリメントされればよい。
なお、フレーム番号をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。従って、アプリケーションプロセッサ1212は、実装効率の観点からフレームカウンタを設けないように構成されてもよいし、安全性の観点からフレームカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212がフレームカウンタを設けるように構成される場合、イメージセンサ1211はフレーム番号を送信しないように構成されてもよい。即ち、初期化ベクトルに拡張仮想チャネルeVCが含まれる場合、フレーム番号の送信は必須要件でない。
また、追加フレーム番号をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。従って、アプリケーションプロセッサ1212は、実装効率の観点から追加フレームカウンタを設けないように構成されてもよいし、安全性の観点から追加フレームカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212が追加フレームカウンタを設けるように構成される場合、イメージセンサ1211は追加フレーム番号を送信しないように構成されてもよい。
フレームMAC方式の場合、初期化ベクトル内のメッセージカウント値は、規定の値(例えば、016、116)が格納されてもよいし、特定の拡張パケット(例えば、フレームスタートまたはフレームエンド)のメッセージカウント値が格納されてもよい。一方、ラインMAC方式の場合、初期化ベクトル内のメッセージカウント値は、メッセージカウント値が格納される。
<完全性演算値MACの送信方式の選択>
図110および図111を参照して、完全性演算値MACの送信方式の選択について説明する。
図110は、イメージセンサ1211が、完全性演算値MACの送信方式を選択する選択処理を説明するフローチャートである。
ステップS781において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式で完全性演算値MACを送信するか否かを判定する。
ステップS781において、拡張モード対応CSI-2送信回路1304が、ラインMAC方式で完全性演算値MACを送信すると判定した場合、処理はステップS782に進む。ステップS782において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式を選択する。
一方、ステップS781において、拡張モード対応CSI-2送信回路1304が、ラインMAC方式で完全性演算値MACを送信しないと判定した場合、処理はステップS783に進む。
ステップS783において、拡張モード対応CSI-2送信回路1304は、フレームMAC方式で完全性演算値MACを送信するか否かを判定する。
ステップS783において、拡張モード対応CSI-2送信回路1304が、フレームMAC方式で完全性演算値MACを送信すると判定した場合、処理はステップS784に進む。ステップS784において、拡張モード対応CSI-2送信回路1304は、フレームMAC方式を選択する。
一方、ステップS783において、拡張モード対応CSI-2送信回路1304が、フレームMAC方式で完全性演算値MACを送信しないと判定した場合、処理はステップS785に進む。ステップS785において、拡張モード対応CSI-2送信回路1304は、完全性演算値MACを送信しない非MAC方式を選択する。
ステップS782、ステップS784、またはステップS785の処理後、処理はステップS786に進む。ステップS786において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式、フレームMAC方式、または非MAC方式のいずれかを示すセキュリティMAC情報(図111参照)を送信した後、処理は終了される。ただし、図111には、2ビット割り当てのセキュリティMAC情報が示されているが、異なるビット数の割り当て(例えば、1ビット、8ビット)でもよい。また、リザーブド領域データ(Reserved for future use)には、MAC値を送信しないこと(例えば、No MAC)が割り当てられてもよい。
以上のように、イメージセンサ1211は、ラインMAC方式でMAC値を送信する(ラインMAC方式を選択)のか、フレームMAC方式でMAC値を送信する(フレームMAC方式を選択)のか、MAC値を送信しない(非MAC方式を選択)のかを自由に選択することができる。または、イメージセンサ1211は、アプリケーションプロセッサ1212と事前合意の上で、いずれかを選択してもよい。例えば、イメージセンサ1211は、最初はラインMAC方式を選択し、所定条件を満たす場合に他方式(例えば、フレームMAC方式)へ切り替えてもよい。例えば、最初はフレームMAC方式を選択し、所定条件を満たす場合に他方式(例えば、ラインMAC方式)へ切り替えてもよい。例えば、最初は非MAC方式を選択し、所定条件を満たす場合に他方式(例えば、フレームMAC方式)へ切り替えてもよい。
そして、ラインMAC方式を選択するのか、フレームMAC方式を選択するのか、非MAC方式を選択するのかは、例えば、拡張パケットヘッダ(例えば、ePH2)内のSecurity Descriptor内や、埋込データ内、ユーザ定義データ内、読み出し応答内などに格納されてイメージセンサ1211から送信される。アプリケーションプロセッサ1212は、その受信に応じて、完全性演算値MACの送信方式の切り替えに対応することができる。
なお、初期化ベクトルの混乱を避けるために、完全性演算値MACの送信方式を切り替える際は、フレームエンド送信の開始以後からフレームスタート送信の完了以前までに、切り替え後の送信方式をイメージセンサから送信されることが望ましいが、その限りではない。
なお、ラインMAC方式なのかフレームMAC方式なのかを識別できるセキュリティMAC情報が初期化ベクトル内に含まれてもよい。その場合は、ラインMAC方式とフレームMAC方式との間で初期化ベクトルが確実に重複しないため、完全性演算値MACの送信方式の切り替えが円滑化される。セキュリティMAC情報が無いと、例えば完全性演算値MACの送信方式の切り替えタイミングによっては、初期化ベクトルの重複を避けるために、メッセージカウンタ1308内に格納される値の指定が必要になる場合もあり得る。
<メッセージカウント値およびフレームカウント値について>
図112乃至図115を参照して、メッセージカウント値およびフレームカウント値について説明する。
図112には、メッセージカウント値およびフレームカウント値がロールオーバーする周期の一例が示されている。
図112のAに示すように、60fpsかつ画素2160行の場合では、メッセージカウント値は、上位カウント値16bitおよび下位カウント値16bitとすることで、約9時間でロールオーバーする。同様に、上位カウント値20bitおよび下位カウント値16bitでは約6日で、上位カウント値24bitおよび下位カウント値16bitでは約96日で、上位カウント値28bitおよび下位カウント値16bitでは約4年で、上位カウント値32bitおよび下位カウント値16bitでは約69年でロールオーバーする。
図112のBに示すように、60fpsかつ1毎インクリメントの場合では、フレームカウント値は、上位カウント値4bitおよび下位カウント値16bitとすることで、約5時間でロールオーバーする。同様に、上位カウント値8bitおよび下位カウント値16bitでは約78時間で、上位カウント値12bitおよび下位カウント値16bitでは約52日で、上位カウント値16bitおよび下位カウント値16bitでは約828日で、上位カウント値20bitおよび下位カウント値16bitでは約36年で、上位カウント値24bitおよび下位カウント値16bitでは約581年でロールオーバーする。
図113のAに示すように、初期化ベクトル構成は、乱数で構成されるソルトを含む構成としてもよい。ただし、例えば乱数が生成されない場合、ソルトは規定値(例えば、032、132)でもよい。
図113のBに示すように、初期化ベクトル構成は、メッセージカウント値を含まないで(フレームカウント値を含んで)構成されてもよい。また、Source IDまたはFinal destination IDを含んで構成されてもよい。なお、追加フレーム番号、フレーム番号、追加メッセージカウント値、およびメッセージカウント値を含んで構成されてもよい。
図113のCに示すように、初期化ベクトル構成は、SPDMセッションIDを含んでもよい。一方、ビット幅を節約できる、Source IDとFinal destination IDとのXOR結果を含んでもよい。
図113のDに示すように、SPDMセッションIDは、後述するReqSessionIDとRspSessionIDとで構成されてもよい。
図113のEに示すように、初期化ベクトル構成は、セキュリティプロトコル情報(例えば、SPDM/HDCP)、拡張データタイプ、またはデータタイプを含んでもよい。
なお、図133に示された各要素の並び順は交換されてもよい。MSB側(上位カウント値)とLSB側(下位カウント値)とは交換されてもよい。一部の要素が他要素(例えば、ソルトやePH内パラメータ、上述した初期化ベクトル構成要素などの一部または全部)に置き換えられてもよい。
図114は、アプリケーションプロセッサ1212が、メッセージカウント値を用いてデータ検証を行うデータ検証処理を説明するフローチャートである。
ステップS791において、セキュリティ部1326は、セッション鍵を導出する。
ステップS792において、データ検証部1325は、プロセッサメッセージカウント値を初期化して0に設定する。
ステップS793において、データ検証部1325は、プロセッサ追加メッセージカウント値を初期化して0に設定する。
ステップS794において、拡張モード対応CSI-2受信回路1322は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS795に進む。
ステップS795において、データ検証部1325は、イメージセンサ1211から追加メッセージカウント値を受信したか否かを判定する。ステップS795において、データ検証部1325が、イメージセンサ1211から追加メッセージカウント値を受信したと判定した場合、処理はステップS796に進む。
ステップS796において、データ検証部1325は、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致であるか否かを判定する。
ステップS796において、データ検証部1325が、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致でない(一致している)と判定した場合、処理はステップS797に進む。一方、ステップS795において、データ検証部1325が、イメージセンサ1211から追加メッセージカウント値を受信していないと判定した場合も、処理はステップS797に進む。
ステップS797において、データ検証部1325は、イメージセンサ1211からメッセージカウント値を受信したか否かを判定する。ステップS797において、データ検証部1325が、イメージセンサ1211からメッセージカウント値を受信したと判定した場合、処理はステップS798に進む。
ステップS798において、データ検証部1325は、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致であるか否かを判定する。
ステップS798において、データ検証部1325が、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致でない(一致している)と判定した場合、処理はステップS799に進む。
ステップS799において、データ検証部1325は、プロセッサメッセージカウント値が最大値までカウントされたか否かを判定する。ステップS799において、データ検証部1325が、プロセッサメッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS800に進む。
ステップS800において、データ検証部1325は、プロセッサメッセージカウント値を初期化して0に設定する。
ステップS801において、データ検証部1325は、プロセッサ追加メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS801において、データ検証部1325が、プロセッサ追加メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS802に進む。
ステップS802において、セキュリティ部1326は、セッション鍵を更新する。
ステップS803において、データ検証部1325は、プロセッサ追加メッセージカウント値を初期化して0に設定する。その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS797において、データ検証部1325が、イメージセンサ1211からメッセージカウント値を受信していないと判定した場合、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS799において、データ検証部1325が、プロセッサメッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS804に進む。ステップS804において、データ検証部1325は、プロセッサメッセージカウント値をインクリメントし、その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS801において、データ検証部1325が、プロセッサ追加メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS805に進む。ステップS805において、データ検証部1325は、プロセッサ追加メッセージカウント値をインクリメントし、その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS796において、データ検証部1325が、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致であると判定した場合、処理はステップS806に進む。また、ステップS798において、データ検証部1325が、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致であると判定した場合も、処理はステップS806に進む。
ステップS806において、データ検証部1325は、異常が発生したとして異常時処理を行い、処理はステップS807に進む。また、ステップS794において、拡張モード対応CSI-2受信回路1322が、セッションを終了すると判定した場合も、処理はステップS807に進む。
ステップS807において、セキュリティ部1326は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
図115は、アプリケーションプロセッサ1212が、フレームカウント値および追加フレームカウント値を初期化ベクトルに反映する反映処理を説明する図である。
ステップS811において、セキュリティ部1326は、セッション鍵を導出する。
ステップS812において、データ検証部1325は、プロセッサフレームカウント値を初期化して1に設定する。
ステップS813において、データ検証部1325は、プロセッサ追加フレームカウント値を初期化して0に設定する。
ステップS814において、データ検証部1325は、イメージセンサ1211からフレームカウント値を受信したか否かを判定し、イメージセンサ1211からフレームカウント値を受信したと判定されるまで処理を待機する。そして、ステップS814において、データ検証部1325が、イメージセンサ1211からフレームカウント値を受信したと判定した場合、処理はステップS815に進む。
ステップS815において、セキュリティ部1326は、フレームカウント値を初期化ベクトルへ反映する。
ステップS816において、データ検証部1325は、イメージセンサ1211から追加フレームカウント値を受信したか否かを判定し、イメージセンサ1211から追加フレームカウント値を受信したと判定されるまで、処理を待機する。
そして、ステップS816において、データ検証部1325が、イメージセンサ1211からフレーム追加カウント値を受信したと判定した場合、処理はステップS817に進む。
ステップS817において、セキュリティ部1326は、追加フレームカウント値を初期化ベクトルへ反映する。
ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされたか否かを判定する。ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされたと判定した場合、処理はステップS819に進む。
ステップS819において、セキュリティ部1326は、セッション鍵を更新する。
ステップS819の処理後、または、ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされていないと判定した場合、処理はステップS820に進む。
ステップS820において、拡張モード対応CSI-2受信回路1322は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS814に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS820において、拡張モード対応CSI-2受信回路1322が、セッションを終了すると判定した場合、処理はステップS821に進む。
ステップS821において、セキュリティ部1326は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
なお、メッセージカウント値は1ずつインクリメントされるが、フレームカウント値(フレーム番号)のインクリメントは、シーケンス内で1または2のインクリメントが自由に混在する可能性がある。そのため、フレームカウント値および追加フレームカウント値は、イメージセンサから送信された値を優先して使用されることが望ましい。
一方、メッセージカウント値および追加メッセージカウント値は、復号演算が迅速に開始されるために、イメージセンサ1211から送信された値よりもアプリケーションプロセッサ1212がカウントした値が優先して使用されてもよい。なお、図114および図115のフローチャートを参照して説明した処理は、セッション鍵を更新しないように構成されてもよい。
略語はそれぞれ、eP:extended Packet、eVC:extended Virtual Channel、eDT:extended Data Type、である。AES-GCM/GMAC向けの初期化ベクトル例を示したが、本技術は、AES以外のブロック暗号(例えば、DES:Data Encryption Standard、トリプルDES)向けや、GCM/GMAC以外のアルゴリズム(例えば、CCM:Counter with Cipher block chaining-MAC)向けや、異なる鍵長(例えば、128 bits以外)向けや、異なるIV長(例えば、96 bits以外)向けに、必要に応じて構成要素や並び順や数値などが調整された上で適用されてもよい。
一般に公開されているDMTF(Distributed Management Task Force)によるSPDM仕様内のKEY_EXCHANGE request message内のRandomDataまたはOpaqueData、Successful KEY_EXCHANGE_RSP response message内のRandomData、PSK_EXCHANGE request message内のRequesterContextまたはOpaquePSKData、PSK_EXCHANGE_RSP message内のResponderContextの一部または全部がソルトとして用いられてもよい。
一方、セッションIDは、例えば、PSK_EXCHANGE_RSP message内またはKEY_EXCHANGE_RSP response message内のParam2内に1Byteで格納されて、SPDMレスポンダ(例えば、イメージセンサ)からSPDMリクエスタへ送信される。なお、PSK_EXCHANGE_RSP messageとKEY_EXCHANGE_RSP response messageとはSPDMオプションであるが、SPDMセッション鍵を導出するためには共通鍵暗号方式に対応するPSK_EXCHANGE_RSP messageまたは公開鍵暗号方式に対応するKEY_EXCHANGE_RSP response messageが実質的に必須であり、そのセッションIDが初期化ベクトル内に含まれてもよい。ただし、セッションIDは、同じエンドポイントに対する以前の5つのセッションまたはアクティブなセッションとは異なることが望ましい。
また、PSK_EXCHANGE request messageまたはKEY_EXCHANGE request messageがリクエスタ側セッションIDとしてReqSessionID(例えば、2バイト)を含み、PSK_EXCHANGE_RSP response messageまたはSuccessful KEY_EXCHANGE_RSP response messageがレスポンダ側セッションIDとしてRspSessionID(例えば、2バイト)を含み、これら2つを連結した(例えば、4バイトの)session ID = Concatenate (ReqSessionID, RspSessionID) がリクエスタとレスポンダとの間のユニークなセッションIDとして用いられてもよい。その場合、複数種類のセッション間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
一方、ディスプレイ用途(例えば、DSI-2)では、SPDMでなくHDCP(High-bandwidth Digital Content Protection)がセキュリティプロトコルとして用いられてもよいため、SPDMなのかHDCPなのかを識別できるセキュリティプロトコル情報(図116参照)が初期化ベクトル内に含まれてもよい。ただし、図116には、2ビット割り当てのセキュリティプロトコル情報が示されているが、異なるビット数の割り当て(例えば、1ビット、8ビット)でもよい。また、リザーブド領域データ(Reserved for future use)には、セキュリティプロトコルに対応しないこと(例えば、No security protocol)が割り当てられてもよい。
例えば、新たなフォーマット内、ePHフォーマット(例えば、Reserved、eVC、eDT、Security Descriptor)内またはセッションID内などの何れかに、SPDM専用またはHDCP専用のビットが割り当てられて定義され、それが初期化ベクトル内に含まれてもよい。その場合、複数種類のセキュリティプロトコル間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。同様に、拡張パケットヘッダ内の一部が初期化ベクトル内に含まれてもよく、例えば、Security Descriptor(例えば、Service Descriptorと称されてもよい)が初期化ベクトル内に含まれてもよい。その場合、異なるSecurity Descriptor間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
イメージセンサ1211またはアプリケーションプロセッサ1212は、図117に示すようなSource IDまたはFinal Destination IDとして、事前交換ではなく、拡張パケットヘッダ(例えば、ePH4)内に格納されて受信された値を用いてもよい。
なお、3つ以上の機器(例えば、複数のカメラ、複数のディスプレイ)をケーブルで繋いで通信する接続形態として、前の機器に次の機器を「数珠繋ぎ」に連結するデイジーチェーン方式があり、Source ID(ソースID)およびFinal Destination ID(最終目的地ID)が初期化ベクトル内に含まれることによって、複数の機器間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
ただし、Source IDとFinal Destination IDとは、例えば、イメージセンサへのコマンドなのか、イメージセンサからのデータなのか、によって入れ替わる。これを避けるために、初期化ベクトル内のSource IDおよびFinal Destination IDを、例えば、Host IDおよびDevice IDと定義してもよい。ただし、例えばイメージセンサはホストにもデバイス(非ホスト)にもなり得るので、Source IDおよびFinal Destination IDと定義した方が望ましい場合もある。
そのため、例えば、Source IDおよびFinal destination IDを論理演算(例えば、XOR)したIDが用いられてもよい。その場合、初期化ベクトル内に定義されるビット幅が節約される効果もある。なお、Source IDまたはFinal Destination IDは、I2CまたはI3Cの場合、上述した図117に示したようにMaster addressまたはSlave addressが格納されてもよい。
なお、例えば、上述した図86のデータ構造でイメージセンサ1211からアプリケーションプロセッサ1212へ画像データを送信する場合、E2E protectionを実現するために、イメージセンサ1211のデバイスIDがSource IDとして、アプリケーションプロセッサ1212のデバイスIDがFinal Destination IDとして格納される。
一方、例えば、上述した図86のデータ構造でアプリケーションプロセッサ1212からイメージセンサ1211へコマンド命令を送信する場合、E2E protectionを実現するために、アプリケーションプロセッサ1212のデバイスIDがSource IDとして、イメージセンサ1211のデバイスIDがFinal Destination IDとして格納される。その場合、図2に示したようなSerDes装置25またはSerDes装置26のデバイスIDは、中間的なDestination IDであり、Final Destination IDと区別されることが望ましい場合もある。ただし、場合によっては、IVフォーマットのFinal Destination IDは、Destination IDと置き換えられてもよい。また、eVCをVCと置き換えられてもよく、eDTをDTと置き換えられてもよい。
また、eVCまたはVCは、Video stream、Audio stream、Camera stream、またはDisplay Streamなどの何れかのID(Stream ID)であってもよい。また、Video streamでなくAudio streamがストリームとして用いられてもよいため、Video streamなのかAudio streamなのかを識別できるストリーム情報が初期化ベクトル内に含まれてもよい。その場合、Video streamとAudio streamとの間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
ナンス値の一部または全部は、異なるバーチャルチャネルのデータ内(例えば、フレームスタート内、埋込データ内、画像データ内、フレームエンド内)へ格納されて送信されてもよい。これは、例えば、特定のバーチャルチャネルのデータ内へナンス値の一部または全部を格納する余地がない場合に有効である。
一方、ナンス値の一部または全部は、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、パケットデータ(Generic Short Packet Data Types、Generic Long Packet Data Types)またはユーザ定義データ(User Defined Byte-based Data)またはリザーブド領域データ(Reserved for future use)の少なくとも一部内へ格納されて送信されてもよい。つまり、それらは非画像データ内に格納されてもよい。
なお、以上の説明では、撮像開始を明記しているが、撮像終了について明記してない。これは撮像方式がグローバルシャッタ方式なのかローリングシャッタ方式なのか等によって異なるためである。例えば、グローバルシャッタ方式であれば、全画素を一斉に撮像できるので、次処理の前までに撮像終了してもよいし、フレーム内の最初の画像データを送信する前までに撮像終了してもよい。一方、ローリングシャッタ方式であれば、画素の各行で実行される撮像および高速データ送信の少なくとも一部が重複して実行(並列実行)されてもよいため、フレーム内の最後の画像データを送信する前までに撮像終了すればよい。また、撮像開始の位置は一例であり、フレーム内の最初の画像データを送信する前の位置まで遅らせて実行されてもよい。
<異常の有無を検出し、検出結果に応じたメッセージを、特異メッセージとしてアプリケーションプロセッサに送信するイメージセンサの詳細な構成例>
車両に搭載され、複数の基板が積層された構造の撮像素子における故障を検出できるようにする撮像装置において、第2の基板に設けられた行駆動部が、第1の基板に設けられた画素アレイの画素信号の蓄積および読み出しを制御する制御信号を出力するタイミングと、行駆動部より出力された制御信号が、画素アレイを通過して、検出されるタイミングとが一致するか否かにより、故障を検出する技術が開示されている(国際公開第2017/209221号参照)。
しかしながら、運転支援処理中や自動運転処理中の場合、センサの異常は、死傷事故へと直結する状態を引き起こすので、上述した故障検出によりセンサの異常が検出されるときには、一刻も早くセンサから車両へと警告する必要がある。また、上述した故障検出が実行される場合、センサの異常が検出されたときに、センサが突然画像データのストリームを停止すると、タイミングによっては運転中に画像データが途絶えてしまうので、運転支援処理や自動運転処理が中断することになるので、危険を誘発させる恐れがある。
一方、より精度の良い異常検出用の信号を出力可能な固体撮像装置を提供するために、アナログ信号である画素信号を出力する画素と、画素信号をデジタル信号に変換してデジタル画素信号を生成する読み出し部と、デジタル画素信号を記憶する記憶部と、第1検査信号を記憶部に出力して、記憶部に記憶させる第1検査信号出力部とを有し、記憶部に記憶された第1検査信号は、あるフレームのデジタル画素信号の出力が終了した後、かつ、次のフレームのデジタル画素信号の出力を開始する前の期間に記憶部から出力されることを特徴とする技術が開示されている(特開2018-121325号公報参照)。
このような技術を適用した場合、撮像装置外の画像処理部が第1検査信号と期待値との一致判定をすることになるが、一致判定に時間を要する。また、画像処理部の判定結果は撮像装置には分からない。加えて、第1検査信号は、ノイズ、干渉、および攻撃者による攻撃の少なくともいずれかによって改竄される可能性があり、正常であるにも拘わらず異常があると判定されたり、異常であるにも拘わらず正常であると判定されたりする可能性があった。
すなわち、いずれにおいても、走行、歩行、および飛行などの推進が可能な車両、ロボット、ドローンなどの推進を制御する推進装置おいて、センサの異常に対して適切な対応ができず、安全性が低下する恐れがあった。
そこで、イメージセンサ1211が、異常の有無を検出し、検出結果に応じたメッセージを、特異メッセージとして、画像データを送信する高速データ通信により、アプリケーションプロセッサ1212に送信するようにしてもよい。
このような構成により、イメージセンサ1211の異常の有無に係るメッセージである特異メッセージをアプリケーションプロセッサ1212に対して迅速に通知させることが可能となる。
結果として、アプリケーションプロセッサ1212においては、イメージセンサ1211の異常に対して、迅速に、かつ、適切な対応を実現することが可能となり、より安全性を高めることが可能となる。
ここで、図118を参照して、異常の有無を検出し、検出結果に応じたメッセージを、特異メッセージとしてアプリケーションプロセッサに送信するイメージセンサ1211の詳細な構成例について説明する。図118は、異常の有無を検出し、検出結果に応じたメッセージを、特異メッセージとしてアプリケーションプロセッサに送信するイメージセンサ1211の詳細な構成例を示すブロック図である。
図118のイメージセンサ1211は、画素1501、AD変換器1502、画像処理部1503、拡張モード対応CSI-2送信回路1504、物理層処理部1505、I2C/I3Cスレーブ1506、記憶部1507、妨害検出部1508、障害検出部1509、セキュリティ部1510、侵害検出部1511、および温度検出部1512を備えて構成される。
なお、画素1501、AD変換器1502、画像処理部1503、拡張モード対応CSI-2送信回路1504、物理層処理部1505、I2C/I3Cスレーブ1506、および記憶部1507は、他の実施の形態において対応する画素1301、AD変換器1302、画像処理部1303、拡張モード対応CSI-2送信回路1304、物理層処理部1305、I2C/I3Cスレーブ1306、および記憶部1307と同様の機能を備えた構成であるので、その詳細な説明は省略する。
妨害検出部1508は、画素1501、AD変換器1502、および画像処理部1503の少なくともいずれかと電気的に直接的に、または、間接的に接続されている。尚、図119においては、妨害検出部1508は、画素1501、AD変換器1502、および画像処理部1503の全てと接続される例が示されているが、少なくともそのいずれかと接続されていればよい。
妨害検出部1508は、画素1501において受光した光量に応じた光電変換により出力されるアナログ信号からなる画素信号、AD変換器1502によりデジタル信号に変換された画素信号、および、画像処理部1503より出力される画像処理された画像データの少なくともいずれかの出力結果に基づいて、イメージセンサ1211の画像を実質的に無効化または改竄する光照射攻撃(妨害)の有無から異常を検出し、検出結果に基づいた特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
このような構成により、アプリケーションプロセッサ1212は、高速データ通信により、妨害の有無に応じた特異メッセージを取得することで、特異メッセージに応じた迅速な対応が可能となる。
障害検出部1509は、例えば、通信経路または物理層処理部1505に対して電気的に直接接続または間接接続される。
障害検出部1509は、イメージセンサ1211に対して、例えば、電力注入、電磁照射(注入)、レーザ照射(注入)の何れかによって、イメージセンサ1211内の一部または全部の動作を無効化させる、誤動作させる、偽情報を流入させる、および情報を流出させる等の注入攻撃の有無を検出し、検出結果に基づいた特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
また、障害検出部1509は、イメージセンサ1211に悪影響を与えるハードウエアトロイ(つまり、異物)を挿入することで、イメージセンサ1211内の一部または全部の動作を無効化させる、誤動作させる、偽情報を流入させる、および情報を流出させる等の挿入攻撃の有無を検出し、検出結果に基づいた特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
このような構成により、アプリケーションプロセッサ1212は、高速データ通信により、障害の有無に応じた特異メッセージを取得することで、特異メッセージに応じた迅速な対応が可能となる。
侵害検出部1511は、例えば、セキュリティ部1510に対して電気的に直接接続または間接接続され、セキュリティ部1510の異常を検出し、検出結果に基づいた特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
セキュリティ部1510は、例えば、イメージセンサ1211内の一部または全部の動作を無効化させたり、誤動作させたり、偽情報を流入させたり、情報を流出させる注入攻撃に加えて、イメージセンサ1211に用いられる電力またはイメージセンサ1211から生じる電磁を解析することでイメージセンサ1211内情報を流出させる解析攻撃(電力解析攻撃、電磁解析攻撃)を受ける可能性がある。
そこで、侵害検出部1511は、注入攻撃に伴うセキュリティ部1510内の改竄の有無を論理的に検出したり、電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の付近に存在するか否かを物理的に検出し、検出結果に基づいた特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
このような構成により、アプリケーションプロセッサ1212は、高速データ通信により、侵害の有無に応じた特異メッセージを取得することで、特異メッセージに応じた迅速な対応が可能となる。
温度検出部1512は、イメージセンサ1211の温度を検出し、動作保証温度の上限値(第1閾値)より低く、かつ、下限値(第2閾値)よりも高い状態であるか否かに基づいて、特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
このような構成により、アプリケーションプロセッサ1212は、高速データ通信により、イメージセンサ1211が動作温度に応じた特異メッセージを受信することで、特異メッセージに応じた迅速な対応が可能になる。
メッセージカウンタ1513は、基本的な機能において、メッセージカウンタ1308(図76)と同様であるが、さらに、メッセージカウント値として、インクリメントまたはデクリメントする第1カウンタと、インクリメントまたはデクリメントする第2カウントとを用いる。メッセージカウンタ1513は、第1カウンタと第2カウンタとを用いることにより、メッセージカウント値に対する不具合や改竄に対する耐性を向上させる。尚、メッセージカウンタ1513の詳細については、図150乃至図152を参照して後述する。もちろん、メッセージカウンタ1513の代わりに、メッセージカウンタ1308(第1カウンタと第2カウントとのうちの何れか一方のみ)が用いられてもよい。
<妨害検出部による妨害検出(その1)>
イメージセンサ1211に対して、例えば、所定の強度よりも高い強度の可視光、赤外光、レーザ光などの何れかが照射されると、イメージセンサ1211により撮像される画像を実質的に無効化または改竄されることになる。
このため、例えば、所定の強度よりも高い強度の可視光、赤外光、レーザ光などの何れかが検出されるような場合、光照射攻撃(妨害)に起因する異常が発生したものとみなすことができる。
そこで、出力結果に基づいて、所定の強度よりも高い強度の可視光、赤外光、レーザ光などの何れかが検出されるような場合、妨害検出部1508は、異常が発生したことを示すメッセージを特異メッセージとして、画像データを送信する高速データ通信により、アプリケーションプロセッサ1212に通知する。
これにより、イメージセンサ1211に異常が発生したことを示す特異メッセージが、画像データを送信する高速データ通信により通知されることになるので、アプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
より具体的には、無効化の妨害をイメージセンサ1211が受けた場合、所定範囲(有効画素領域の一部または全部)内の画素群それぞれのR、G、B、IRなどの少なくとも何れかの画素値は、飽和に近づくことになる。
つまり、所定範囲内の画素群の画素値が第1閾値(上限値)以上になる。そこで、所定範囲内の画素群の画素値が第1閾値(上限値)以上になることが検出される場合、例えば、イメージセンサ1211の画素の画素値が飽和に近づいていることを示す異常メッセージが特異メッセージとしてアプリケーションプロセッサ1212に送信されるようにする。
なお、光照射攻撃に限らず、広い範囲(所定範囲)の画素の画素値が飽和に近づいているような場合、広い範囲の画素に異常が発生していることを示す異常メッセージが特異メッセージとして送信されるようにしてもよい。このような特異メッセージの通知は、例えば、イメージセンサ1211に対して妨害光が偶発的に照射された場合でも有効である。
一方、例えば、塗料、暗幕、煙幕、および遮蔽材などの少なくとも何れかによってイメージセンサ1211の表面(受光面)が遮蔽されて、イメージセンサ1211により撮像される画像を実質的に無効化する光遮蔽攻撃(妨害)もある。
そこで、イメージセンサ1211の表面が遮蔽されたことが検出されるような場合、イメージセンサ1211からアプリケーションプロセッサ1212に対して異常を示すメッセージとして特異メッセージが通知されるようにする。
これにより、特異メッセージを受信するアプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
より具体的には、遮蔽による無効化の妨害をイメージセンサ1211が受けた場合、所定範囲内の画素群それぞれのR、G、B、IRなどの少なくとも何れかの画素値は、第2閾値(下限値)に近づくことになる。
すなわち、遮蔽による無効化の妨害をイメージセンサ1211が受けた場合、所定範囲内の画素群の画素値が第2閾値以下になり遮蔽されたことが検出される。そこで、遮蔽されたことが検出された場合、例えば、イメージセンサ1211は画素値が第2閾値に近づいている異常を示す異常メッセージを特異メッセージとして送信する。
なお、光遮蔽攻撃に限らず、広い範囲(所定範囲)内の画素値が第2閾値(下限値)に近づいている場合、異常メッセージが送信されるようにしてもよい。このような特異メッセージの通知は、例えば、イメージセンサ1211の表面(受光面)が偶発的に遮蔽(妨害)された場合にも有効である。
尚、妨害検出部1508の検出結果に基づいて、イメージセンサ1211の無効化の妨害を示す異常が検出されない場合、正常であることを示すメッセージが特異メッセージとして送信されるようにしてもよいし、特異メッセージが送信されないようにしてもよい。
また、妨害検出部1508が用いる第1閾値(上限値)および第2閾値(下限値)は、例えば、記憶部1507に予め記憶させるようにしてもよい。この場合、妨害検出部1508は、記憶部1507に記憶された第1閾値(上限値)および第2閾値(下限値)を読み出して用いるようにしてもよい。また、第1閾値(上限値)および第2閾値(下限値)は、任意に設定できるようにしてもよい。
(妨害検出部による妨害検出処理(その1))
次に、図119のフローチャートを参照して、妨害検出部1508による妨害検出処理(その1)について説明する。
ステップS1001において、画素1501による撮像処理、AD変換器1502によるAD変換処理、および画像処理部1503による画像処理の少なくともいずれかの処理が実行され、処理結果が妨害検出部1508に出力される。
ステップS1002において、妨害検出部1508は、画素1501による撮像処理、AD変換器1502によるAD変換処理、および画像処理部1503による画像処理の少なくともいずれかの処理結果に基づいて、所定範囲内の画素群の画素値が第1閾値(上限値)以上である(上限値よりも大きい)か否かを判定する。
ステップS1002において、所定範囲内の画素群の画素値が第1閾値(上限値)以上であると判定された場合、処理は、ステップS1003に進む。
ステップS1003において、妨害検出部1508は、所定範囲内の画素群の画素値が第1閾値(上限値)以上であり、所定の強度よりも高い強度の可視光、赤外光、レーザ光などの何れかが検出されており、光照射攻撃(妨害)に起因する異常が発生していることを示す第1異常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
また、ステップS1002において、所定範囲内の画素群の画素値が第1閾値(上限値)以上ではないと判定された場合、処理は、ステップS1004に進む。
ステップS1004において、妨害検出部1508は、画素1501による撮像処理、AD変換器1502によるAD変換処理、および画像処理部1503による画像処理の少なくともいずれかの処理結果に基づいて、所定範囲内の画素群の画素値が第2閾値(下限値)以下である(下限値よりも小さい)か否かを判定する。
ステップS1004において、所定範囲内の画素群の画素値が第2閾値(下限値)以下であると判定された場合、処理は、ステップS1005に進む。
ステップS1005において、妨害検出部1508は、所定範囲内の画素群の画素値が第2閾値(下限値)以下であり、例えば、塗料、暗幕、煙幕、および遮蔽材などの少なくとも何れかによってイメージセンサ1211の表面(受光面)が遮蔽されて、イメージセンサ1211により撮像される画像を実質的に無効化する光遮蔽攻撃(妨害)に起因する異常が発生していることを示す第2異常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
さらに、ステップS1004において、所定範囲内の画素群の画素値が第2閾値(下限値)以下ではないと判定された場合、処理は、ステップS1006に進む。
ステップS1006において、妨害検出部1508は、イメージセンサ1211により撮像される画像を実質的に無効化する攻撃(妨害)に起因する異常が発生していないことを示す正常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
以上の処理により、イメージセンサ1211に対する攻撃(妨害)が発生するような場合、画像データを送信する高速データ通信により通知されることになるので、アプリケーションプロセッサ1212において、迅速、かつ適切な対応を実現することが可能となる。
<妨害検出部による妨害検出(その2)>
以上においては、イメージセンサ1211に対する、光の強度の変化による攻撃(妨害)の有無を検出して特異メッセージとして通知する例について説明してきた。
イメージセンサ1211が、ToF(Time of Flight)法を用いた測距センサとして機能される際、光源より照射されるレーザ光の発光パターンに応じた受光パターンを検出することで自らが照射した光源の反射光として認識し、他の光源からの受光パターンと区別する。この際、測距センサは、自らの光源から照射した光の照射タイミングと受光タイミングとの差分に基づいた往復時間により画素単位で測距を実現し、測距結果から距離画像を生成する。
ここで、距離画像とは、被写体の測距センサからの奥行き方向の距離を画素ごとに検出し、検出した距離に基づく距離画素信号からなる画像を指す。その場合に測距センサは、例えば、照明部、撮像部、制御部、表示部、記憶部を備えた構成として実現される。
しかしながら、この発光パターン(受光パターン)が何らかの原因で改竄されると、自らの光源より照射された発光パターンを認識できないので、適切な測距を実現することができない状態となり、異常が発生した状態となる。
そこで、妨害検出部1508は、記憶部1507に予め発光パターン(受光パターン)を格納パターンとして記憶しておき、実際にイメージセンサ1211により受光された受光パターンとの比較により異常の発生の有無を検出するようにしてもよい。
照明部は、照明制御部とレーザ光源を備える。照明制御部は、制御部の制御に基づいてレーザ光源が照射光(レーザ光)を照射するパターンを制御する。例えば、照明制御部は制御部から供給される照射信号に含まれる照射コードに従ってレーザ光源が照射光を照射するパターン(発光パターン)を制御する。
撮像部は、レンズ、撮像素子、および信号処理回路を備える。レンズは入射光を撮像素子の撮像面に結像させる。レンズの構成は任意であり、例えば、複数のレンズ群により構成されていてもよい。撮像素子は、例えば、ToF法を用いたCMOS(Complementary Metal Oxide Semiconductor)イメージセンサから成るイメージセンサ1211により実現される。撮像素子は、制御部の制御に基づいて被写体の撮像を行い、その結果得られた画像信号を信号処理回路に供給する。例えば、撮像素子は、制御部から供給される参照信号と、レーザ光源から照射された照射光が被写体により反射された反射光を含む受信光との相関を示す画素信号を生成し、信号処理回路に供給する。なお、参照信号は、受信光との相関の検出に用いるパターンを示す参照コードを含む。
ここで、受光波形パターン、受光スポットパターン、受光ドットパターン、受光軌跡パターンなどの何れかの受光パターンについて、受信光からイメージセンサ1211が抽出した結果に異常がある場合、撮像素子(画素および変換器に相当)および信号処理回路(画像処理部に相当)を含んで構成される撮像部(イメージセンサ1211に相当)から制御部(アプリケーションプロセッサ1212に相当)に対して異常メッセージが送信されてもよい。
一方、イメージセンサ1211内の記憶部内に格納パターンを格納しないで、特異メッセージとして受光パターンが送信されてもよい。その場合、イメージセンサ1211外の記憶部(例えば、アプリケーションプロセッサ1212)内に格納パターンが格納されることによって、受光パターンとの比較がなされて正常か異常かが判断される。
<受光パターンについて>
受光パターンそのものが送信される場合、受光してない画素に関連する情報が高速データ送信されないようにしてもよい。例えば、図120で示されるような白丸印で示される画素が受光される画素を示すドットパターンである場合、白丸印で示される受光されたドットパターンに関連する情報のみが高速データ送信されるようにしてもよい。例えば、受光してない画素は、受光スポットパターンや受光ドットパターンが正常か異常かを判断するために用いられる。その場合、イメージセンサ1211は、高速データ送信するデータ量を最小限に抑えつつ、受光パターンが正常か異常かを判断できる。
また、周期的な受光ドットパターンであれば、記憶部内に格納される格納パターンの種類を減らすことが可能になる。例えば、図121で示されるような白丸印で示される第1の画素値で受光される画素と、斜線の丸印で示される第2の画素値で受光される画素と、が受光される画素を示すドットパターンである場合、奇数行のドットパターンと偶数行のドットパターンとの2行分のドットパターンが記憶部1507内に格納されれば、実際の受光パターンが正常か異常かを判断することが可能となる。このように、周期的な受光ドットパターンなどでは、繰り返し表される行数分のドットパターンだけを記憶部1507に記憶させるようにすることで、格納パターンが記憶されることになるので、記憶容量を削減することが可能となる。
さらに、受光波形パターンについては、記憶部1507内に格納パターンが格納されることによって正常か異常かが判断されてもよいが、受光波形パターンは画像データや画像パターンとは無関係である。そのため、受光波形パターンで異常の有無を判断させるようにすることで、受光スポットパターン、受光ドットパターン、受光軌跡パターンなどの何れかのパターンが複雑であっても、記憶部1507の容量に対する影響を低減することが可能となる。
(妨害検出部による妨害検出処理(その2))
次に、図122のフローチャートを参照して、妨害検出部1508による受光パターンを用いた妨害検出処理(その2)について説明する。
ステップS1031において、画素1501による撮像処理、AD変換器1502によるAD変換処理、および画像処理部1503による画像処理の少なくともいずれかの処理が実行され、処理結果が妨害検出部1508に出力される。
ステップS1032において、妨害検出部1508は、画素1501による撮像処理、AD変換器1502によるAD変換処理、および画像処理部1503による画像処理の少なくともいずれかの処理結果に基づいて、受光パターンを抽出する。
ステップS1033において、妨害検出部1508は、記憶部1507に予め記憶されている正常時の受光パターンである格納パターンを読み出して、受光パターンと比較する。
ステップS1034において、妨害検出部1508は、受光パターンと格納パターンとの比較結果に基づいて、受光パターンと格納パターンとが一致しているか否かを判定する。
ステップS1034において、受光パターンと格納パターンとが一致していると判定された場合、処理は、ステップS1035に進む。
ステップS1035において、妨害検出部1508は、イメージセンサ1211により実現される測距センサには異常が発生していないものとみなし、異常が発生していないことを示す正常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
ステップS1034において、受光パターンと格納パターンとが一致していないと判定された場合、処理は、ステップS1036に進む。
ステップS1036において、妨害検出部1508は、イメージセンサ1211により実現される測距センサには異常が発生しているものとみなし、異常が発生していることを示す異常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
以上の処理により、イメージセンサ1211により測距センサが実現されるような場合、受光パターンに異常が発生すると、対応する特異メッセージが画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知されることになる。結果として、アプリケーションプロセッサ1212は、イメージセンサ1211において発生した異常に対して、迅速かつ適切な対応を実現することが可能となる。
<障害検出部による障害検出>
次に、障害検出部1509による障害検出について説明する。
イメージセンサ1211は、イメージセンサ1211内の一部または全部の動作を無効化させる、誤動作させる、偽情報を流入させる、および情報を流出させる等の注入攻撃を受けた場合、物理層の電圧状態またはクロック状態に異常な変化が生じる。
そこで、障害検出部1509は、物理層の電圧状態の変化またはクロック状態の変化を検出する。
障害検出部1509は、物理層の電圧状態の異常な変化を検出した場合、例えば、イメージセンサ1211において電力異常または電圧異常(例えば、電圧振幅、電圧極性、IRドロップ)などが生じていることを示す第1異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
また、障害検出部1509は、物理層のクロック状態の異常な変化を検出した場合、クロック異常(例えば、クロックの周波数、周期性、回数、ジッタ)が生じていることを示す第2異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
なお、障害検出部1509は、注入攻撃に限らず、偶発的なノイズまたは干渉などによって異常が生じる場合も、異常を示すメッセージを特異メッセージとして送信してもよい。
さらに、例えば、特定条件を満たす場合に起動してイメージセンサ1211に対して悪影響を与えるハードウエアトロイ(つまり、異物)を挿入することで、イメージセンサ1211内の一部または全部の動作を無効化させたり、誤動作させたり、偽情報を流入させたり、情報を流出させる挿入攻撃がある。
イメージセンサ1211が挿入攻撃を受ける場合、電気特性(例えば、インピーダンス値のZ値、抵抗値のR値、インダクタンス値のL値、キャパシタンス値のC値、品質係数のQ値)または伝送特性(例えば、データ伝送品質、挿入損失、反射損失)などに異常な変化が生じる。
そこで、障害検出部1509は、電気特性を検出し、電気特性に異常な変化が検出される場合、例えば、イメージセンサ1211において電気特性の異常が生じていることを示す第3異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
また、障害検出部1509は、伝送特性を検出し、伝送特性に異常な変化が検出される場合、例えば、イメージセンサ1211において伝送特性の異常が生じていることを示す第4異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
なお、障害検出部1509は、通信経路または物理層処理部1505の開放または短絡、つまり断線または圧迫の有無やその可能性を検出するようにして、検出結果に応じて異常が生じている場合、異常が発生していることを示す特異メッセージを送信するようにしてもよい。
また、障害検出部1509は、挿入攻撃に限らず、偶発的な破損、経年変化、および温度変化などの何れかによって異常が生じる場合も、異常を示すメッセージを特異メッセージとして送信するようにしてもよい。
尚、障害検出部1509は、異常が検出されなかった場合、正常メッセージからなる特異メッセージを送信するようにしてもよいし、特異メッセージを送信しないようにしてもよい。
(障害検出部による障害検出処理)
次に、図123のフローチャートを参照して、障害検出部1509による障害検出処理について説明する。
ステップS1051において、障害検出部1509は、物理層の電圧状態を検出する。
ステップS1052において、障害検出部1509は、物理層の電圧状態が閾値範囲外であるか否か、すなわち、異常な変化が発生しているか否かを判定する。
ステップS1052において、物理層の電圧状態が閾値範囲外であり、異常な変化が発生していると判定された場合、処理は、ステップS1053に進む。
ステップS1053において、障害検出部1509は、イメージセンサ1211において電力異常または電圧異常(例えば、電圧振幅、電圧極性、IRドロップ)などが生じていることを示す第1異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
また、ステップS1052において、物理層の電圧状態が閾値範囲外ではないと判定された場合、処理は、ステップS1054に進む。
ステップS1054において、障害検出部1509は、物理層のクロック状態を検出する。
ステップS1055において、障害検出部1509は、物理層のクロック状態が閾値範囲外であるか否か、すなわち、異常な変化が発生しているか否かを判定する。
ステップS1055において、物理層のクロック状態が閾値範囲外であり、異常な変化が発生していると判定された場合、処理は、ステップS1056に進む。
ステップS1056において、障害検出部1509は、クロック異常(例えば、クロックの周波数、周期性、回数、ジッタ)が生じていることを示す第2異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
さらに、ステップS1055において、物理層のクロック状態が閾値範囲外ではないと判定された場合、処理は、ステップS1057に進む。
ステップS1057において、障害検出部1509は、電気特性を検出する。
ステップS1058において、障害検出部1509は、電気特性が閾値範囲外であるか否か、すなわち、異常な変化が発生しているか否かを判定する。
ステップS1058において、電気特性が閾値範囲外であり、異常な変化が発生していると判定された場合、処理は、ステップS1059に進む。
ステップS1059において、障害検出部1509は、イメージセンサ1211において電気特性の異常が生じていることを示す第3異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
さらに、ステップS1058において、電気特性の異常な変化が発生していないと判定された場合、処理は、ステップS1060に進む。
ステップS1060において、障害検出部1509は、伝送特性を検出する。
ステップS1061において、障害検出部1509は、伝送特性が閾値範囲外であるか否か、すなわち、異常な変化が発生しているか否かを判定する。
ステップS1061において、伝送特性が閾値範囲外であり、異常な変化が発生していると判定された場合、処理は、ステップS1062に進む。
ステップS1062において、障害検出部1509は、イメージセンサ1211において伝送特性の異常が生じていることを示す第4異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
さらに、ステップS1061において、伝送特性の異常な変化が発生していないと判定された場合、処理は、ステップS1063に進む。
ステップS1063において、障害検出部1509は、イメージセンサ1211が正常であることを示すメッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
以上の処理により、注入攻撃や挿入攻撃の有無を検出し、注入攻撃や挿入攻撃が検出される場合には、異常が発生していることを示すメッセージからなる特異メッセージをアプリケーションプロセッサ1212に通知することが可能となる。
結果として、アプリケーションプロセッサ1212は、高速データ通信により、障害の有無に応じた特異メッセージを取得することで、特異メッセージに応じた迅速で、かつ、適切な対応が可能となる。
<侵害検出部によるセキュリティ部の異常検出>
次に、侵害検出部1511によるセキュリティ部1510の異常検出について説明する。
セキュリティ部1510は、例えば、イメージセンサ1211内の一部または全部の動作を無効化させる、誤動作させる、偽情報を流入させる、および情報を流出させる等の注入攻撃に加えて、イメージセンサ1211に用いられる電力またはイメージセンサ1211から生じる電磁を解析することでイメージセンサ1211内情報を流出させる解析攻撃(電力解析攻撃、電磁解析攻撃)を受ける可能性がある。
そこで、侵害検出部1511は、上述した異常検出に加えて、注入攻撃に伴うセキュリティ部1510内部の改竄の有無を論理的に検出したり、電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の近くに有るか無いかを物理的に検出したりすることによって、侵害に係る異常の有無を検出し、異常が検出された場合に異常メッセージを特異メッセージとして送信する。
(侵害検出部によるセキュリティ部の異常検出処理)
次に、図124のフローチャートを参照して、侵害検出部1511によるセキュリティ部1510の異常検出処理について説明する。
ステップS1081において、侵害検出部1511は、セキュリティ部1510の論理状態を示す情報を検出する。
ステップS1082において、侵害検出部1511は、検出したセキュリティ部1510の論理状態を示す情報に基づいて、セキュリティ部1510内部において改竄が発生しているか否かを判定する。
ステップS1082において、セキュリティ部1510内部において改竄が発生していると判定された場合、処理は、ステップS1083に進む。
ステップS1083において、侵害検出部1511は、注入攻撃に伴うセキュリティ部1510内の改竄が発生していることを示す第1異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
ステップS1082において、セキュリティ部1510内部において改竄が発生していないと判定された場合、処理は、ステップS1084に進む。
ステップS1084において、侵害検出部1511は、セキュリティ部1510の物理状態を示す情報を検出する。
ステップS1085において、侵害検出部1511は、検出したセキュリティ部1510の物理状態を示す情報に基づいて、電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の近くに有るか否かを判定する。
ステップS1085において、解析攻撃に用いられる電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の近くに有ると判定された場合、処理は、ステップS1086に進む。
ステップS1086において、侵害検出部1511は、電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の近くに有り、電力解析攻撃や電磁解析攻撃を受ける可能性があることを示す第2異常メッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
ステップS1085において、電力解析または電磁解析に必要な攻撃物体(例えば、プローブ)がセキュリティ部1510の近くにないと判定された場合、処理は、ステップS1087に進む。
ステップS1087において、侵害検出部1511は、イメージセンサ1211が正常であることを示すメッセージを特異メッセージとして、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
以上の処理により、注入攻撃に伴ったセキュリティ部1510の論理的な改竄の有無や解析攻撃の可能性の有無等の侵害が検出され、侵害が検出される場合には、侵害に伴った異常が発生していることを示すメッセージからなる特異メッセージをアプリケーションプロセッサ1212に通知することが可能となる。
結果として、アプリケーションプロセッサ1212は、高速データ通信により、侵害の有無に応じた特異メッセージを取得することで、特異メッセージに応じた迅速かつ適切な対応が可能となる。
<温度検出部による異常検出>
次に、温度検出部1512による異常検出について説明する。
イメージセンサ1211または通信経路の動作保証温度が範囲外となるように、イメージセンサ1211の内部温度またはイメージセンサ1211の外部温度、通信経路内部温度、または通信経路外部温度が意図的に強制されるように、イメージセンサ1211を誤動作させる温度攻撃がある。
そこで、温度検出部1512は、イメージセンサ1211や通信経路に対する温度攻撃の有無を検出する。
すなわち、イメージセンサ1211には、動作保証温度の上限値(第1閾値)および下限値(第2閾値)があるので、イメージセンサ1211の温度が第1閾値(上限値)よりも高い状態、または、第2閾値(下限値)よりも低い状態であれば、温度検出部1512は、異常が発生していることを示すメッセージを特異メッセージとしてアプリケーションプロセッサ1212に通知する。
尚、温度検出部1512で検出された温度が動作保証範囲内である場合、温度検出部1512は、正常であることを示す特異メッセージを送信するようにしてもよいし、特異メッセージを送信しないようにしてもよい。また、異常メッセージや正常メッセージの代わりに、検出された温度の値そのものが特異メッセージとして送信されるようにしてもよい。
さらに、温度検出部1512は、機能安全のために複数設けられてもよく、それぞれの検出結果がそれぞれの閾値の範囲外になる場合に異常を示す特異メッセージが送信されてもよい。その場合、一部の温度検出部1512に異常が発生しても対処できる。
また、特異メッセージを受信するアプリケーションプロセッサ1212においては、複数回取得された特異メッセージ群が解析されることによって、温度検出部1512に異常が発生している範囲や位置を把握することが可能となる。
(温度検出部による異常検出処理)
次に、図125のフローチャートを参照して、温度検出部1512による異常検出処理について説明する。
ステップS1101において、温度検出部1512は、イメージセンサ1211内の温度を検出する。
ステップS1102において、温度検出部1512は、検出したイメージセンサ1211の温度が第1閾値(上限値)以上であるか(第1閾値よりも高いか)否かを判定する。
ステップS1102において、検出したイメージセンサ1211の温度が第1閾値(上限値)以上であると判定された場合、処理は、ステップS1103に進む。
ステップS1103において、温度検出部1512は、イメージセンサ1211が動作保証温度以上であり、異常が発生していることを示す第1異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
また、ステップS1102において、検出したイメージセンサ1211の温度が第1閾値(上限値)以上ではないと判定された場合、処理は、ステップS1104に進む。
ステップS1104において、温度検出部1512は、検出したイメージセンサ1211の温度が第2閾値(下限値)以下であるか(第2閾値よりも低いか)否かを判定する。
ステップS1104において、検出したイメージセンサ1211の温度が第2閾値(下限値)以下であると判定された場合、処理は、ステップS1105に進む。
ステップS1105において、温度検出部1512は、イメージセンサ1211が動作保証温度以下であり、異常が発生していることを示す第2異常メッセージからなる特異メッセージを、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に通知する。
ステップS1104において、検出したイメージセンサ1211の温度が第2閾値(下限値)以下ではないと判定された場合、処理は、ステップS1106に進む。
ステップS1106において、温度検出部1512は、イメージセンサ1211の温度が動作保証温度内であり、異常が発生していないことを示す正常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に送信する。
以上の処理により、イメージセンサ1211に対する温度攻撃が発生するような場合、画像データを送信する高速データ通信により通知されることになるので、アプリケーションプロセッサ1212において、迅速かつ適切な対応を実現することが可能となる。
<イメージセンサの状態や特性に基づいて、異常の有無を検出するアプリケーションプロセッサの詳細な構成例>
以上においては、イメージセンサ1211が、自身の異常の有無を検出して、検出結果に応じた特異メッセージをアプリケーションプロセッサ1212に送信する例について説明してきた。
しかしながら、アプリケーションプロセッサ1212が、イメージセンサ1211の状態や特性を取得して、異常の有無を検出するようにしてもよい。
図126は、イメージセンサ1211の状態や特性を取得して、異常の有無を検出するようにしたアプリケーションプロセッサ1212の構成例を示している。
図126のアプリケーションプロセッサ1212は、物理層処理部1551、拡張モード対応CSI-2受信回路1552、I2C/I3Cマスタ1553、記憶部1554、コントローラ1555、妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560を備えて構成される。
なお、妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560は、いずれもイメージセンサ1211より供給される状態や特性に応じて処理を実行するものである。しかしながら、基本的な機能は、それぞれ図118における妨害検出部1508、障害検出部1509、セキュリティ部1510、侵害検出部1511、および温度検出部1512と同様である。
また、物理層処理部1551、拡張モード対応CSI-2受信回路1552、I2C/I3Cマスタ1553、記憶部1554、セキュリティ部1558、コントローラ1555は、図77の物理層処理部1321、拡張モード対応CSI-2受信回路1322、I2C/I3Cマスタ1323、記憶部1324、セキュリティ部1326、およびコントローラ1327に対応する各ブロックと同様に構成され、その詳細な説明は省略する。
妨害検出部1556は、拡張モード対応CSI-2受信回路1552を介して、イメージセンサ1211より供給される画像データに基づき、受光波形パターン、受光スポットパターン、受光ドットパターン、受光軌跡パターン等の何れかを記憶部1554内に予め格納された格納パターンと比較することによって、イメージセンサ1211または画像データについて正常か異常かを判断する。
妨害検出部1556は、イメージセンサ1211または画像データについて正常か異常かの判定結果を特異メッセージとして後段に出力するようにしてもよい。
また、イメージセンサ1211内およびアプリケーションプロセッサ1212内のそれぞれに、妨害検出部1508,1577が設けられるようにしてもよい。妨害検出部1508,1577の両方がそれぞれに設けられる場合、例えば、異常の有無を2重判断することが可能となる。このため、イメージセンサ1211内の妨害検出部1508またはアプリケーションプロセッサ1212内の妨害検出部1577の何れか一方が攻撃されても、イメージセンサ1211に対する妨害の有無を検出することが可能になる。
障害検出部1557は、アプリケーションプロセッサ1212内の通信経路または物理層処理部1551に対して電気的に直接接続または間接接続される。
また、イメージセンサ1211内およびアプリケーションプロセッサ1212内のそれぞれに障害検出部1509,1557が設けられてもよい。
例えば、イメージセンサ1211は、自らの電気特性を測定し、画像データを送信する高速データ通信によりアプリケーションプロセッサ1212に対して、特異メッセージとして送信する。
障害検出部1557は、「イメージセンサ1211+通信経路(物理層)」内の電気特性を測定することで、キャリブレーション処理によって通信経路内の電気特性を認識する。
ハードウエアトロイは通信経路内(例えば、ワイヤ内)に挿入することが可能なため、通信経路内の電気特性の変化が検出されることによって、ハードウエアトロイの有無を高い精度で検出することが可能になる。
同様に、セキュリティ部1558、侵害検出部1559、および温度検出部1560は、アプリケーションプロセッサ1212内に設けられるのみならず、イメージセンサ1211内に設けられるようにしてもよい。
すなわち、セキュリティ部1510,1558、侵害検出部1511,1559、および温度検出部1512,1560が、イメージセンサ1211内およびアプリケーションプロセッサ1212内のそれぞれに設けられてもよい。
妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、メモリと電気的に直接接続されてもよい。
このメモリは上述したレジスタと電気的に直接接続されてもよく、妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、レジスタと電気的に直接接続されてもよい。
メモリは、メモリ内情報の漏洩または改竄の何れかから保護されたメモリであってもよい。ここでメモリおよびレジスタを記憶部1554と総称する。妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、例えば、複数回の検出結果を記憶部1554内へ保存することによって、短時間内で連続妨害、連続障害、および連続侵害のいずれかを受けていると判断することや、長時間にわたって温度負荷があると判断することが可能であり、そのような状況を示す異常メッセージが送信されてもよい。
なお、格納パターン、閾値、第1閾値、および第2閾値の何れかは、記憶部1554から読み出されてもよい。また、格納パターン、閾値、第1閾値、および第2閾値の何れかは、I2CまたはI3Cを少なくとも介し、アプリケーションプロセッサ1212がイメージセンサ1211内の記憶部1507内に書き込んでもよい。
このように、検出結果がアプリケーションプロセッサ1212外の、例えば、イメージセンサ1211内の保護された記憶部1507内に定期的に保存されることにより、アプリケーションプロセッサ1212内で事故が生じた際に、外部のイメージセンサ1211内の保護された記憶部1507が解析されることによって、事故発生の原因を特定し易くすることが可能となる。同様に、検出結果がイメージセンサ1211外の、例えば、アプリケーションプロセッサ1212内の保護された記憶部1554内に定期的に保存されることにより、イメージセンサ1211内で事故が生じた際に、外部のアプリケーションプロセッサ1212内の保護された記憶部1554が解析されることによって、事故発生の原因を特定し易くすることが可能となる。
妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、それぞれ拡張モード対応CSI-2受信回路1552に対して電気的に直接接続され、それぞれの検出結果が直接的に拡張モード対応CSI-2受信回路1552から伝達されるようにしてもよい。
また、妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、それぞれ拡張モード対応CSI-2受信回路1552に対して記憶部1554などを介して電気的に間接接続され、それぞれの検出結果が間接的に拡張モード対応CSI-2受信回路1552から伝達されるようにしてもよい。
さらに、特異メッセージは、拡張モード対応CSI-2受信回路1552から直接的に出力されてもよいし、記憶部1554などを介して拡張モード対応CSI-2受信回路1552から間接的に出力されてもよい。
また、妨害検出部1556、障害検出部1557、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、それぞれ通信経路に対して電気的に直接接続、または記憶部1554などを介して電気的に間接接続されてもよい。
なお、少なくとも高速データ送信に用いられる通信経路は、低速コマンド送信のみに用いられる通信経路よりも、高周波特性に優れるので攻撃検出に対する感度が高いと考えられる。
また、高速データ送信に用いられる通信経路の一部または全部を介してイメージセンサ1211に電力供給がなされる場合、この電力供給を少なくとも一時的に無効化するだけでイメージセンサ1211の動作や画像データストリームを無効化できる。
例えば、高速データ送信に用いられる通信経路の一部または全部が、ハードウエアトロイが挿入された通信経路と置き換えられ、ハードウエアトロイが無線起動またはタイマ起動されるだけで、移動体装置(推進装置)の事故が簡単に誘発される可能性がある。つまり、障害検出部1557は、低速コマンド送信に特化した通信経路よりも少なくとも高速データ送信に用いられる物理層に対して好適であり、さらに電力伝送にも用いられる物理層に対して特に好適である。
妨害検出部1508,1556、障害検出部1509,1557、セキュリティ部1510,1558、侵害検出部1511,1559、および温度検出部1512,1560の何れかは、それぞれ他ブロック内へ含まれてもよい。
例えば、妨害検出部1508は、画素1501、AD変換器1502、画像処理部1503、記憶部1507、および拡張モード対応CSI-2送信回路1504の何れかに少なくとも一部が含まれてもよい。
また、例えば、妨害検出部1556は、拡張モード対応CSI-2受信回路1552、および記憶部1554の何れかに少なくとも一部が含まれてもよい。
さらに、例えば、障害検出部1509は、物理層処理部1505、記憶部1507、および拡張モード対応CSI-2送信回路1504の何れかに少なくとも一部が含まれてもよい。
また、例えば、障害検出部1557は、拡張モード対応CSI-2受信回路1552および記憶部1554の何れかに少なくとも一部が含まれてもよい。
さらに、例えば、セキュリティ部1510、侵害検出部1511、温度検出部1512の何れかは、それぞれ、記憶部1507、および拡張モード対応CSI-2送信回路1504の何れかに少なくとも一部が含まれてもよい。
また、例えば、セキュリティ部1558、侵害検出部1559、および温度検出部1560の何れかは、それぞれ、記憶部1554、および拡張モード対応CSI-2受信回路1552の何れかに少なくとも一部が含まれてもよい。
また、画素1501、AD変換器1502、画像処理部1503、物理層処理部1505、拡張モード対応CSI-2送信回路1504、拡張モード対応CSI-2受信回路1552、記憶部1507,1554、I2C/I3Cスレーブ1506、I2C/I3Cマスタ1553、妨害検出部1508,1556、障害検出部1509,1557、セキュリティ部1510,1558、侵害検出部1511,1559、および温度検出部1512,1560の何れかは、それぞれ、移動体装置(推進装置)のコントローラ、若しくは制御部、または図示しない新たな制御部によって直接的または間接的に制御されてもよい。
<アプリケーションプロセッサによる、イメージセンサの異常の有無を検出する処理>
次に、図127,図128のフローチャートを参照して、アプリケーションプロセッサによる、イメージセンサの異常の有無を検出する処理について説明する。
なお、図127のフローチャートがイメージセンサ1211の処理を表しており、図128のフローチャートがアプリケーションプロセッサ1212の処理を表している。
ステップS1131(図127)において、イメージセンサ1211は、異常の有無を判定するのに必要とされる自らの状態または特性を検出する。
より詳細には、上述したイメージセンサ1211における妨害検出部1508、障害検出部1509、侵害検出部1511、および温度検出部1512のそれぞれがイメージセンサ1211内における異常の有無を判定する際に必要とされる状態または特性を検出する。
ただし、この処理においては、各種の状態または特性が検出されるのみであり、異常の有無については判定されない。
ステップS1132において、イメージセンサ1211は、検出した自らの状態または特性を、特異メッセージとして、画像データを送信する高速データ通信により送信する。
より詳細には、妨害検出部1508、障害検出部1509、侵害検出部1511、および温度検出部1512のそれぞれがイメージセンサ1211内における異常の有無を判定する際に必要とされる状態または特性を、特異メッセージとして、画像データを送信する高速データ通信により送信する。
尚、以上のようなイメージセンサ1211の妨害検出部1508、障害検出部1509、侵害検出部1511、および温度検出部1512によりなされる処理は、以降においては、単に、イメージセンサ1211が自らの状態または特性を検出する、および、イメージセンサ1211が、検出した自らの状態または特性を、アプリケーションプロセッサ1212に送信する、といった簡略な表現とする。
ステップS1151(図128)において、アプリケーションプロセッサ1212は、イメージセンサ1211より送信されてくる特異メッセージを受信したか否かを判定する。
より詳細には、アプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560は、それぞれイメージセンサ1211の妨害検出部1508、障害検出部1509、侵害検出部1511、および温度検出部1512の少なくともいずれかからの特異メッセージを受信したか否かを判定する。ただし、セキュリティ部1558、コントローラ1555、拡張モード対応CSI-2受信回路1552、および物理層処理部1551などの何れかが、イメージセンサ1211の妨害検出部1508、障害検出部1509、侵害検出部1511、および温度検出部1512の少なくともいずれかからの特異メッセージを受信したか否かを判定してもよい。
ステップS1151において、特異メッセージが受信されたと判定された場合、処理は、ステップS1152に進む。
ステップS1152において、アプリケーションプロセッサ1212は、特異メッセージとして送信されてきたイメージセンサ1211の状態または特性を検出する。
より詳細には、アプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560の少なくとも何れかは、受信した特異メッセージに含まれるそれぞれの異常を検出するための状態または特性を検出する。
ステップS1153において、アプリケーションプロセッサ1212は、検出したイメージセンサ1211の状態または特性に対してキャリブレーション処理を掛けることにより補正する。
より詳細には、アプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560の少なくとも何れかは、検出した状態または特性に対してキャリブレーション処理を掛けて補正する。ただし、セキュリティ部1558、コントローラ1555、拡張モード対応CSI-2受信回路1552、および物理層処理部1551などの何れかが、検出した状態または特性に対してキャリブレーション処理を掛けて補正してもよい。
ステップS1154において、アプリケーションプロセッサ1212は、キャリブレーション処理により補正したイメージセンサ1211の状態または特性が正常とみなされる閾値範囲外であるのか否かを判定する。
より詳細には、アプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560の少なくとも何れかは、キャリブレーション処理により補正した状態または特性が正常とみなされる閾値範囲外であるのか否かを判定する。ただし、セキュリティ部1558、コントローラ1555、拡張モード対応CSI-2受信回路1552、および物理層処理部1551などの何れかが、キャリブレーション処理により補正した状態または特性が正常とみなされる閾値範囲外であるのか否かを判定してもよい。尚、それぞれの状態または特性が正常とみなされる閾値範囲外であるか否かの判定に係る具体的な処理は、図119,図122乃至図125のフローチャートを参照して説明した処理である。
ステップS1154において、状態または特性が正常とみなされる閾値範囲外であると判定される場合、処理は、ステップS1155に進む。
ステップS1155において、アプリケーションプロセッサ1212は、イメージセンサ1211が異常であるものとみなす。
また、ステップS1154において、状態または特性が正常とみなされる閾値範囲外でないと判定される場合、処理は、ステップS1156に進む。
ステップS1156において、アプリケーションプロセッサ1212は、イメージセンサ1211が正常であるものとみなす。
すなわち、アプリケーションプロセッサ1212のセキュリティ部1558、コントローラ1555、拡張モード対応CSI-2受信回路1552、物理層処理部1551、妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560の少なくとも何れかにおいて、キャリブレーション処理により補正した状態または特性が正常とみなされる閾値範囲外であると判定された場合、イメージセンサ1211が異常であるとみなされ、閾値範囲外ではないと判定された場合、イメージセンサ1211が正常であるとみなされる。
以上の処理により、アプリケーションプロセッサ1212においても、イメージセンサ1211の異常の有無を判定することが可能となり、イメージセンサ1211において異常が発生しても、アプリケーションプロセッサ1212により、迅速かつ適切な対応を可能となる。
尚、上述したアプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560によるイメージセンサ1211の異常の有無を判定する処理については、単に、アプリケーションプロセッサ1212が、イメージセンサ1211の状態または特性に基づいて、イメージセンサ1211の異常の有無を判定する処理、または異常診断(処理)と称する。ただし、アプリケーションプロセッサ1212が、イメージセンサ1211の状態や特性を取得しないで、異常の有無を検出するようにしてもよい。つまり、アプリケーションプロセッサ1212の妨害検出部1556、障害検出部1557、侵害検出部1559、および温度検出部1560のそれぞれがアプリケーションプロセッサ1212内における異常の有無を判定する際に必要とされる状態または特性を検出し、異常の有無を判定してもよい。
<画像データの高速データ送信を阻害せずに、特異メッセージの高速データ送信が実行される例>
以上においては、特異メッセージが、画像データの高速データ送信されることを前提としてきたが、送信タイミングを考慮せずに、高速データ送信がなされると、画像データの高速データ送信が阻害される恐れがある。
そこで、画像データの高速データ送信を阻害せずに、特異メッセージの高速データ送信を実現する例について説明する。
画像データの高速データ送信を阻害せずに特異メッセージの高速データ送信を実現するには、画像データの高速データ送信の各種データの送信タイミングに合わせた送信が必要となる。
このため、特異メッセージは、画像データを送信する際の、フレームスタートからフレームエンドまでの期間内、またはフレームエンドからフレームスタートまでの期間内(フレームブランキング期間)とする必要がある。
ここで、フレームスタートからフレームエンドまでの期間内で、特異メッセージを送信できるのは、例えば、図129で示されるように、フレームスタート内、埋込データ内、画像データ内、非画像データ(読み出し応答、およびユーザ定義データ)内、フレームエンド内、ラインブランキング期間内の何れかである。なお、例えばCCIチャネルをVC0に割り当てる場合、図129内のVC0をVC1に、図129内のVC1をVC2に、それぞれ置き換えてもよい。
なお、以降においては、画像データの高速データ送信と特異メッセージの高速データ送信とが、並列実行ではなく直列実行される例を説明する。ただし、画像データの高速データ送信と特異メッセージの送信(高速データ送信または低速コマンド送信)とで通信経路が異なる場合、並列実行されてもよい。
また、高速データ送信と低速コマンド送信とは、フィルタによる周波数分離が可能なので、消費電力に問題なければ、送信の一部または全部が重複(並列実行)されていても構わない。
さらに、上述したイメージセンサ1211による自らの異常の有無の検出処理、および、イメージセンサ1211からの状態または特性に基づいたアプリケーションプロセッサ121によるイメージセンサ1211の異常の有無の検出処理については、以降において、それぞれイメージセンサ1211による異常診断(処理)、およびアプリケーションプロセッサ1212による異常診断(処理)と称する。
ここで、イメージセンサ1211における異常診断(処理)は、イメージセンサ1211が自らの状態または特性にもとづいて異常の有無を判定する場合については、イメージセンサ1211による自らの異常の有無が判定される一連の処理が異常診断(処理)となる。
一方、イメージセンサ1211の状態または特性に基づいて、アプリケーションプロセッサ1212において、イメージセンサ1211の異常診断(処理)がなされる場合については、イメージセンサ1211における異常診断(処理)は、自らの状態または特性を検出するのみの(異常の有無は判定されない)処理となる。
また、所定の時間間隔や所定の動作間隔でなされる異常診断については、定期異常診断と称し、処理の最初になされる異常診断については、初期異常診断と称する。
定期異常診断の結果である特異メッセージは、ベンダ固有コード(Vendor specific)またはリザーブドコード(Reserved for future use)またはリザーブドコードから特異メッセージとして新たに定義されるコードを示す埋込データの少なくとも一部内に格納されて送信されるようにしてもよい。
また、特異メッセージは、新たに定義されるパケット内に格納されて送信されてもよく、ユーザ定義領域パケット内またはリザーブド領域パケット内に格納されて送信されてもよい。
例えば、拡張パケットヘッダのうちリザーブド領域の一部または全部が、特異メッセージとして新たに定義されるようにしてもよい。また、例えば、拡張パケットヘッダのうちユーザ定義領域(例えば、User defined metadata)の一部または全部が、特異メッセージとして新たに定義されるようにしてもよい。
また、例えば、既に定義されている拡張パケットヘッダや拡張パケットフッタのそれぞれの一部または全部が、特異メッセージとして流用されるようにしてもよい。
ただし、特異メッセージは、拡張パケットフッタ内よりも拡張パケットヘッダ内へ格納される方が、即時性が高い(移動体装置の処理において直ぐに異常を認識できる)。特異メッセージは、拡張パケットフッタePF1やePF0の一部または全部であってもよい。特異メッセージが拡張パケットヘッダ内または拡張パケットフッタ内に格納される場合、後方互換を得られる効果もある。
<画像データの高速データ送信を阻害せずに、特異メッセージの高速データ送信が実行される場合の処理>
次に、図130のフローチャートを参照して、画像データの高速データ送信を阻害せずに、特異メッセージの高速データ送信が実行される場合のイメージセンサ1211の処理について説明する。
ステップS1171において、イメージセンサ1211は、初期異常診断を実行する。
ステップS1172において、イメージセンサ1211(の拡張モード対応CSI-2送信回路1504)は、高速データ送信の開始命令を受信したか否かを判定し、高速データ送信の開始命令を受信したと判定されるまで、処理が待機される。そして、ステップS1172において、拡張モード対応CSI-2送信回路1504が、高速データ送信の開始命令を受信したと判定した場合、処理はステップS1173に進む。
ステップS1173において、イメージセンサ1211は、初期異常診断によりイメージセンサ1211において初期異常が発生しているか否かを判定する。
ステップS1173において、初期異常があると判定された場合、処理は、ステップS1174に進む。
ステップS1174において、イメージセンサ1211(の拡張モード対応CSI-2送信回路1504)は、初期異常メッセージを送信する。
すなわち、この場合、以降においては、撮像送信処理がなされない。
一方、ステップS1173において、初期異常が発生していないと判定された場合、処理は、ステップS1175に進む。
ステップS1175において、イメージセンサ1211は、撮像送信処理を実行して、画素1501により撮像され、AD変換器1502によりAD変換され、画像処理部1503により画像処理された画像データが拡張モード対応CSI-2送信回路1504に供給され、アプリケーションプロセッサ1212に送信される。
<撮像送信処理(その1)>
ここで、図131のフローチャートを参照して、撮像送信処理(その1)について説明する。
ステップS1191おいて、画素1501が撮像を開始し、画素1501から出力される画像データが、AD変換器1502および画像処理部1503を介して拡張モード対応CSI-2送信回路1504に供給される。
ステップS1192において、イメージセンサ1211は、定期異常診断を実行する。
ステップS1193において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルのフレームスタートを送信する。
ステップS1194において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの埋込データを送信する。このとき、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの埋込データ内に定期異常診断の診断結果となる特異メッセージを含めて送信する。
ステップS1195において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの画像データを送信する。
ステップS1196において、拡張モード対応CSI-2送信回路1504は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS1196において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS1195に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1196において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS1197に進む。
ステップS1197において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルのフレームエンドを送信する。
ステップS1198において、拡張モード対応CSI-2送信回路1504は、高速データ送信の終了命令を受信したか否かを判定する。
ステップS1198において、拡張モード対応CSI-2送信回路1504が、高速データ送信の終了命令を受信していないと判定した場合、処理はステップS1191に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1198において、拡張モード対応CSI-2送信回路1504が、高速データ送信の終了命令を受信したと判定した場合、処理は終了される。
撮像送信処理は、高速データ送信の終了命令を受信するまで継続実行されてもよく、高速データ送信の開始命令を受信するたびに実行されてもよい。
以上の処理により、画像データの高速データ送信を阻害することなく、特異メッセージを高速データ送信することが可能となる。
<撮像送信処理の応用例>
以上においては、撮像送信処理が、高速データ送信の終了命令が受信された場合に処理を終了させる例について説明してきたが、高速データ送信の開始命令が受信されない場合に処理を終了させてもよい。
図132のフローチャートは、高速データ送信の開始命令が受信されない場合に処理を終了させるようにした撮像送信処理の応用例を示している。
尚、図132のステップS1211乃至S1217の処理については、図131のステップS1191乃至S1197と同様の処理であるので、その説明は省略する。
すなわち、ステップS1218において、拡張モード対応CSI-2送信回路1504が、高速データ送信の開始命令を受信していると判定した場合、処理はステップS1211に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1218において、拡張モード対応CSI-2送信回路1504が、高速データ送信の開始命令を受信していないと判定した場合、処理は終了される。
以上の処理においても、画像データの高速データ送信を阻害することなく、特異メッセージを高速データ送信することが可能となる。
<撮像送信処理(その2)>
以上においては、定期異常診断の診断結果となる特異メッセージが、埋込データに含めて送信される例について説明してきたが、2回目の定期異常診断(第2定期異常診断)を実行して、第2埋込データに含められて送信されるようにしてもよい。
図133は、2回目の定期異常診断(第2定期異常診断)を実行して、第2定期異常診断の診断結果となる特異メッセージが第2埋込データに含められて送信されるようにした撮像送信処理を説明するフローチャートである。
なお、図133のステップS1231,S1233,S1235,S1236,S1239,S1240の処理は、図131のステップS1191,S1193,S1195乃至S1198の処理と同様であるので、その説明は、省略する。
すなわち、ステップS1231の処理により拡張モード対応CSI-2送信回路1504に画像データ供給されると、ステップS1232において、イメージセンサ1211は、1回目の定期異常診断(第1定期異常診断)を実行する。
ステップS1233において、バーチャルチャネルのフレームスタートが送信されると、ステップS1234において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの第1埋込データを送信する。このとき、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの第1埋込データ内に第1定期異常診断の診断結果となる特異メッセージを含めて送信する。
ステップS1235,S1236において、1フレーム分の画像データの送信が完了すると、ステップS1237において、イメージセンサ1211は、2回目の定期異常診断(第2定期異常診断)を実行する。
ステップS1238において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの第2埋込データを送信する。このとき、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの第2埋込データ内に第2定期異常診断の診断結果となる特異メッセージを含めて送信する。
そして、ステップS1239において、バーチャルチャネルのフレームエンドが送信されて、ステップS1240において、高速データ送信の終了命令を受信すると、処理は終了される。
以上の処理により、画像データの高速データ送信を阻害することなく、特異メッセージを高速データ送信することが可能となる。
また、以上の処理においては、第2定期異常診断がラインブランキング期間内に実行されるため、消費電力の最大値へ影響を与えない(送信と同時には定期異常診断しない)。さらに、定期異常診断はラインブランキング期間外に実行されるようにしてもよい。
また、定期異常診断の診断結果に対応する特異メッセージが、フレームスタート直後およびフレームエンド直前の埋込データ内へ格納されため、移動体装置(推進装置)が異常発生タイミングを判断することが可能となる。例えば、異常が、連続的に発生しているのか、画像データ送信前に発生しているのか、画像データ送信後に発生しているのかを判定することが可能となる。なお、最初の埋込データが構成されないようにしてもよい。また、第1定期異常診断が実行されず、第2定期異常診断のみが実行される構成でもよい。
<撮像送信処理(その3)>
以上においては、2回目の定期異常診断(第2定期異常診断)を実行して、第2定期異常診断の診断結果に対応する特異メッセージが、第2埋込データに含められて送信されるようにする例について説明してきたが、定期異常診断の診断結果を読み出し応答に含めて送信するようにしてもよい。
すなわち、低速コマンド送信のマスタであるアプリケーションプロセッサ1212は、低速コマンド送信のスレーブであるイメージセンサ1211から高速データ送信によって送信されたフレームスタート信号が受信される場合、イメージセンサ1211内の特異メッセージをアプリケーションプロセッサ1212に読み出すことを要求する読み出し命令を低速コマンド送信によって送信する。
イメージセンサ1211は、アプリケーションプロセッサ1212から送信された読み出し命令を受信し、読み出し命令に応じた特異メッセージを含む読み出し応答を高速データ送信によって送信する。
アプリケーションプロセッサ1212は、特異メッセージを含む読み出し応答を受信することによって、イメージセンサ1211からの特異メッセージの通知を受信することができる。
つまり、特異メッセージは、フレームスタートとフレームエンドとの間の画像データが送信されないラインブランキングの期間内に送信されてもよく、特にフレームスタートと画像データの間の期間内に送信されることが望ましい。この読み出し命令は、例えば、I2CまたはI3Cの規格におけるRead/WriteのReadに相当する。読み出し応答は、Read戻り値に相当する。これにより、消費電力の最大値へ影響を与えずに、画像データの送信前に異常を迅速に通知することが可能となる。
ここで、図134,図135のフローチャートを参照して、定期異常診断の診断結果を読み出し応答に含めて送信するようにした撮像送信処理を説明する。
なお、図134のフローチャートがイメージセンサ1211の処理を表しており、図135のフローチャートがアプリケーションプロセッサ1212の処理を表している。
また、ステップS1251乃至1253,S1257乃至S1260の処理は、図131のステップS1191乃至S1193,S1195乃至S1198の処理と同様であるので、その説明は省略する。
すなわち、ステップS1251乃至S1253(図134)において、撮像が開始され、定期異常診断が実行され、フレームスタートが送信される。また、ステップS1271(図135)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてきたフレームスタートを受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1271において、イメージセンサ1211より送信されてきたフレームスタートを受信したと判定された場合、処理は、ステップS1272に進む。
ステップS1272において、拡張モード対応CSI-2受信回路1552は、低速コマンド送信により、読み出し命令をイメージセンサ1211に送信する。
これに応じて、ステップS1254(図134)において、イメージセンサ1211の拡張モード対応CSI-2送信回路1504は、アプリケーションプロセッサ1212から送信された読み出し命令を受信したか否かを判定し、受信したと判定するまで、同様の処理を繰り返す。
そして、ステップS1254において、読み出し命令を受信したと判定した場合、処理は、ステップS1255に進む。
ステップS1255において、拡張モード対応CSI-2送信回路1504は、定期異常診断の診断結果となる特異メッセージを含む読み出し応答を、画像データを送信する高速データ送信により、アプリケーションプロセッサ1212に対して送信する。
これに応じて、ステップS1273(図135)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてきた定期異常診断の診断結果となる特異メッセージを含む読み出し応答を受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1273において、イメージセンサ1211より送信されてきた定期異常診断の診断結果となる特異メッセージを含む読み出し応答を受信したと判定された場合、処理は、ステップS1274に進む。
ステップS1274において、アプリケーションプロセッサ1212は、受信した読み出し応答に含まれる特異メッセージに基づいて、イメージセンサ1211の正常または異常を判定する。
ステップS1275において、アプリケーションプロセッサ1212は、高速データ送信の終了命令を送信するか否かを判定し、終了しないと判定した場合、処理は、ステップS1271に戻り、それ以降の処理が繰り返される。
そして、ステップS1275において、高速データ送信の終了命令を送信すると判定した場合、ステップS1276において、拡張モード対応CSI-2受信回路1552が、イメージセンサ1211に対して高速データ送信の終了命令を送信し、処理が終了する。
なお、この処理においては、ステップS1256においては、埋込データに定期異常診断の診断結果となる特異メッセージは含まれない状態で送信されるようにしてもよい。
以上の処理により、定期異常診断の診断結果を読み出し応答に含めて送信することが可能となる。
<撮像送信処理(その4)>
以上においては、フレームスタートに応じて読み出し命令を送信して、定期異常診断の診断結果となる特異メッセージを読み出し応答に含めて送信する例について説明してきたが、フレームエンドに応じて読み出し命令を送信して、定期異常診断の診断結果を読み出し応答に含めて送信するようにしてもよい。
低速コマンド送信のマスタであるアプリケーションプロセッサ1212は、低速コマンド送信のスレーブであるイメージセンサ1211から高速データ送信によって送信されたフレームエンド信号が受信される場合、イメージセンサ1211内の特異メッセージをアプリケーションプロセッサ1212に対して読み出すことを要求する読み出し命令を低速コマンド送信によって送信する。
イメージセンサ1211は、アプリケーションプロセッサ1212から送信された読み出し命令を受信し、それに応じた特異メッセージ(読み出し応答)を高速データ送信によって送信する。
そして、アプリケーションプロセッサ1212は読み出し応答を受信することによって、イメージセンサ122からの特異メッセージの通知を取得する。
つまり、特異メッセージは、フレームエンドと次のフレームスタートとの間の画像データが送信されないフレームブランキングの期間内に送信される。
ここで、図136,図137のフローチャートを参照して、フレームエンドに応じて読み出し命令を送信して、定期異常診断の診断結果を読み出し応答に含めて送信するようにした撮像送信処理について説明する。
図136のフローチャートは、イメージセンサ1211の処理を表しており、図137のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
また、図136のステップS1291乃至S1297,S1300の処理は、図134のステップS1251乃至S1253,S1256乃至S1260の処理と同様であるので、その説明は省略する。
さらに、図137のステップS1312乃至S1316の処理は、図135のステップS1272乃至S1276の処理と同様であるので、その説明は省略する。
すなわち、イメージセンサ1211において、ステップS1291乃至S1297(図136)の処理により、画像が撮像され、定期異常診断が実行され、フレームスタート、埋込データ、画像データ、およびフレームエンドが送信される。
これに応じて、ステップS1311(図137)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてきたフレームエンドを受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1311において、イメージセンサ1211より送信されてきたフレームエンドを受信したと判定された場合、処理は、ステップS1312に進む。
ステップS1312において、拡張モード対応CSI-2受信回路1552は、低速コマンド送信により、読み出し命令をイメージセンサ1211に送信する。
これに応じて、ステップS1298(図136)において、イメージセンサ1211の拡張モード対応CSI-2送信回路1504は、アプリケーションプロセッサ1212から送信された読み出し命令を受信したか否かを判定し、受信したと判定するまで、同様の処理を繰り返す。
そして、ステップS1298において、読み出し命令を受信したと判定した場合、処理は、ステップS1299に進む。
ステップS1299において、拡張モード対応CSI-2送信回路1504は、定期異常診断の診断結果となる特異メッセージを含む読み出し応答を、画像データを送信する高速データ送信により、アプリケーションプロセッサ1212に対して送信する。
これに応じて、ステップS1313乃至S1316(図135)の処理により、アプリケーションプロセッサ1212において、イメージセンサ1211より送信されてきた定期異常診断の診断結果となる特異メッセージを含む読み出し応答が受信され、イメージセンサ1211の正常または異常が判定され、高速データ送信の終了命令が送信されると処理が終了する。
以上の処理により、フレームエンドに応じて読み出し命令を送信して、定期異常診断の診断結果を読み出し応答に含めて送信することが可能となる。
結果として、特異メッセージを、フレームエンドと次のフレームスタートとの間の画像データが送信されないフレームブランキングの期間内に送信することが可能となる。
<撮像送信処理(その5)>
以上においては、フレームエンドに応じて読み出し命令を送信して、定期異常診断の診断結果を読み出し応答に含めて送信する例について説明してきたが、フレームスタート送信の直前に、特異メッセージを含む読み出し応答が送信できるようにしてもよい。
すなわち、例えば、イメージセンサ1211においては、フレームエンドが送信されてから、次のフレームスタートが送信されるまでの間に定期異常診断が実行されるようにする。そして、アプリケーションプロセッサ1212においては、フレームエンドが受信されてから、イメージセンサ1211において定期異常診断が完了するまで、所定時間だけ待機してから、読み出し命令を送信する。尚、時間をカウントするタイマが設けられるようにして、タイマにより待機時間がカウントされるようにしてもよい。
このような処理により、2番目以降のフレームの画像データを送信する前に、イメージセンサ1211の動作に異常が生じる可能性があること、または異常が生じたことを、消費電力の最大値に対して影響することなく、イメージセンサ1211からアプリケーションプロセッサ1212に対して最短時間で通知することが可能となる。
ここで、図138,図139のフローチャートを参照して、フレームエンドに応じて読み出し命令を送信して、定期異常診断の診断結果を読み出し応答に含めて送信するようにした撮像送信処理について説明する。
図138のフローチャートは、イメージセンサ1211の処理を表しており、図139のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
また、図138のステップS1331乃至S1336,S1339乃至S1340の処理は、図136のステップS1291,S1293乃至S1299の処理と同様であるので、その説明は省略する。
さらに、図139のステップS1351,S1353乃至S1357の処理は、図137のステップS1311乃至S1316の処理と同様であるので、その説明は省略する。
すなわち、ステップS1331乃至S1336(図138)において、画像が撮像され、フレームスタート、埋込データ、画像データ、フレームエンドが送信されると、ステップS1337において、画素1501が撮像を開始し、画素1501から出力される画像データが、AD変換器1502および画像処理部1503を介して拡張モード対応CSI-2送信回路1504に供給される。
ステップS1338において、イメージセンサ1211は、定期異常診断を実行する。
一方、アプリケーションプロセッサ1212においては、ステップS1351(図139)において、フレームエンドが受信されると、ステップS1352において、所定時間だけ待機する。この所定時間は、イメージセンサ1211におけるステップS1338の定期異常診断の処理が完了するまでの時間である。
そして、ステップS1352の処理により処理時間だけ待機すると、処理は、ステップS1353に進み、読み出し命令がイメージセンサ1211に送信される。
イメージセンサ1211においては、ステップS1339,S1340(図138)の処理により、読み出し命令に応じて、定期異常診断の診断結果に応じた特異メッセージを含む読み出し応答が、画像データを送信する高速データ送信によりアプリケーションプロセッサ1212に送信される。尚、ステップS1341において、高速データ送信の終了命令を受信しない場合、処理は、ステップS1332の処理に戻り、それ以降の処理が繰り返される。そして、ステップS1341において、高速データ送信の終了命令が受信されると、処理が終了する。
以上の処理により、2番目以降のフレームの画像データを送信する前に、イメージセンサ1211の動作異常の可能性または動作異常を、消費電力の最大値に対して影響することなく、アプリケーションプロセッサ1212に対して迅速に通知することが可能となる。
<撮像送信処理(その6)>
以上においては、フレームスタート送信の直前に、特異メッセージを含む読み出し応答が送信できるようにする例について説明してきたが、読み出し命令送信または読み出し応答送信は、埋込データ送信後のラインブランキング期間内に実施されるようにしてもよい。
このような処理により、画像データを送信する前に、イメージセンサ1211の動作異常の可能性、または動作異常の発生を、消費電力の最大値に対して影響を与えることなく、アプリケーションプロセッサ1212に迅速に通知することが可能となる。
ここで、図140,図141のフローチャートを参照して、読み出し命令送信または読み出し応答送信は、埋込データ送信後のラインブランキング期間内に実施されるようにした撮像送信処理について説明する。
図140のフローチャートは、イメージセンサ1211の処理を表しており、図141のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
また、図140のステップS1371乃至S1373,S1375乃至S1380の処理は、図134のステップS1251乃至S1255,S1257乃至S1260の処理と同様であるので、その説明は省略する。
さらに、図141のステップS1392乃至S1396の処理は、図135のステップS1272乃至S1276の処理と同様であるので、その説明は省略する。
すなわち、ステップS1371乃至S1373(図140)の処理により、画像が撮像され、定期異常診断が実行され、フレームスタートが送信されると、ステップS1374において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの埋込データを送信する。
一方、アプリケーションプロセッサ1212においては、ステップS1391(図141)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてきた埋込データのパケットフッタを受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1391において、イメージセンサ1211より送信されてきた埋込データのパケットフッタを受信したと判定された場合、処理は、ステップS1392に進む。
ステップS1392において、拡張モード対応CSI-2受信回路1552は、低速コマンド送信により、読み出し命令をイメージセンサ1211に送信する。
イメージセンサ1211においては、ステップS1375,S1376(図140)の処理により、読み出し命令に応じて、定期異常診断の診断結果に応じた特異メッセージを含む読み出し応答が、画像データを送信する高速データ送信によりアプリケーションプロセッサ1212に送信される。
以上の処理により、消費電力の最大値に対して影響を与えることなく、画像データを送信する前に、イメージセンサ1211の動作異常の可能性または動作異常の発生を、アプリケーションプロセッサ1212に迅速に通知することが可能となり、特異メッセージに応じた迅速な対応が可能になる。
<撮像送信処理(その7)>
以上においては、読み出し命令送信および読み出し応答送信は、埋込データ送信後のラインブランキング期間内に実施される例について説明してきたが、画像データ送信後のラインブランキング期間内に実施されてもよい。
この場合、画像データのライン毎にイメージセンサ1211において定期異常診断が実施されて、特異メッセージが送信されるので、消費電力の最大値へ影響を与えることなく、各行の画像データに対応する特異メッセージを迅速にアプリケーションプロセッサ1212に通知することが可能となる。
ここで、図142,図143のフローチャートを参照して、読み出し命令送信および読み出し応答送信を、画像データ送信後のラインブランキング期間内に実施されるようにした撮像送信処理について説明する。
図142のフローチャートは、イメージセンサ1211の処理を表しており、図143のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
また、図142のステップS1411乃至S1413,S1416,S1417,S1419,S1420の処理は、図140のステップS1371,S1373乃至S1376,S1379,S1380の処理と同様であるので、その説明は省略する。
さらに、図143のステップS1432乃至S1436の処理は、図141のステップ1392乃至S1396の処理と同様であるので、その説明は省略する。
すなわち、ステップS1411乃至S1413(図142)の処理により、画像が撮像され、フレームスタートが送信され、埋込データが送信されると、ステップS1414において、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの画像データを送信する。
ステップS1415において、イメージセンサ1211は、定期異常診断を実行する。
一方、アプリケーションプロセッサ1212においては、ステップS1431(図143)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてきた画像データのパケットフッタを受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1431において、イメージセンサ1211より送信されてきた画像データのパケットフッタを受信したと判定された場合、処理は、ステップS1432に進む。
ステップS1432において、拡張モード対応CSI-2受信回路1552は、低速コマンド送信により、読み出し命令をイメージセンサ1211に送信する。
イメージセンサ1211においては、ステップS1416,S1417(図142)の処理により、読み出し命令に応じて、定期異常診断の診断結果に応じた特異メッセージを含む読み出し応答が、画像データを送信する高速データ送信によりアプリケーションプロセッサ1212に送信される。
さらに、ステップS1418において、拡張モード対応CSI-2送信回路1504は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS1418において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS1414に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1418において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS1419に進む。
以上の処理により、画像データのライン毎にイメージセンサ1211が定期異常診断を実施して、特異メッセージを送信するので、消費電力の最大値へ影響を与えることなく、各行の画像データに対応する特異メッセージを迅速にアプリケーションプロセッサ1212に通知することが可能となる。
結果として、アプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能となる。
<撮像送信処理(その8)>
以上においては、読み出し命令送信および読み出し応答送信が画像データ送信後のラインブランキング期間内に実施される例について説明してきたが、割り込み機能を用いて特異メッセージが送信されるようにしてもよい。
割り込み機能を用いる場合、イメージセンサ1211は、アプリケーションプロセッサ1212と容易に同期できるので、イメージセンサ1211が決めるタイミングで割り込み実行することによって、イメージセンサ1211が決めるタイミングで特異メッセージを送信することが可能となる。
なお、イメージセンサ1211は、帯域内割込みによって読み出し命令をトリガし、それに応じて読み出し応答を送信してもよいし、帯域内割込みによって読み出し命令を省略して読み出し応答を送信してもよい。
ここで、図144,図145のフローチャートを参照して、割り込み機能を用いて特異メッセージが送信されるようにした撮像送信処理について説明する。
図144のフローチャートは、イメージセンサ1211の処理を表しており、図145のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
また、図144のステップS1451乃至S1453,S1455,S1456,S1458乃至S1461の処理は、図140のステップS1371乃至S1373,S1375乃至S1380の処理と同様であるので、その説明は省略する。
さらに、図145のステップS1472乃至S1476の処理は、図141のステップ1392乃至S1396の処理と同様であるので、その説明は省略する。
すなわち、ステップS1451乃至S1453(図144)の処理により、イメージセンサ1211においては、画像が撮像され、定期異常診断が実行され、フレームスタートが送信される。
ステップS1454において、拡張モード対応CSI-2送信回路1504は、割り込み実行の開始をアプリケーションプロセッサ1212に通知する。
一方、アプリケーションプロセッサ1212においては、ステップS1471(図145)において、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1552は、イメージセンサ1211より送信されてくる割り込み実行の開始を示す通知を受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1471において、イメージセンサ1211より送信されてくる割り込み実行の開始を示す通知を受信したと判定された場合、処理は、ステップS1472に進む。
ステップS1432において、拡張モード対応CSI-2受信回路1552は、低速コマンド送信により、読み出し命令をイメージセンサ1211に送信する。
イメージセンサ1211においては、ステップS1455,S1456(図144)の処理により、読み出し命令に応じて、定期異常診断の診断結果に応じた特異メッセージを含む読み出し応答が、画像データを送信する高速データ送信によりアプリケーションプロセッサ1212に送信される。
さらに、ステップS1457において、拡張モード対応CSI-2送信回路1504は、埋込データを送信する。
以上の処理により、割り込み機能を用いることが可能となるので、イメージセンサ1211が決めるタイミングで割り込み実行することによって、イメージセンサ1211が決めるタイミングで特異メッセージをアプリケーションプロセッサ1212に送信することが可能となる。
なお、イメージセンサ1211は、帯域内割込みによって読み出し命令をトリガし、それに応じて読み出し応答を送信してもよいし、帯域内割込みによって読み出し命令を省略して読み出し応答を送信してもよい。
<撮像送信処理(その9)>
以上においては、割り込み機能を用いて特異メッセージが送信される例について説明してきたが、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルのデータ内(例えば、埋込データ内)に特異メッセージを格納して送信されるようにしてもよい。
画像データ送信とは異なるバーチャルチャネルのデータ内に特異メッセージを格納して送信することにより、画像データ送信のバーチャルチャネルの埋込データ内に特異メッセージを格納する余地がない場合でも特異メッセージを送信することが可能となる。
なお、定期異常診断がフレームブランキング期間内に実行されることで、送信と同時には定期異常診断がなされないようにできるので、消費電力の最大値に対して影響を与えない。また、定期異常診断は、フレームブランキング期間外に実行されるようにしてもよい。
これにより、画像データを送信する前に、イメージセンサ1211の動作異常の可能性、また動作異常の発生を、アプリケーションプロセッサ1212に迅速に通知することが可能となる。
ここで、図146のフローチャートを参照して、イメージセンサ1211による画像データ送信とは異なるバーチャルチャネルのデータ内に特異メッセージを格納して送信するようにした撮像送信処理について説明する。
なお、ここでは、第1のバーチャルチャネル(VC1)において、画像データが送信され、第2のバーチャルチャネル(VC2)において、特異メッセージを含む埋込データが送信される処理について説明する。
ステップS1491において、画素1501が撮像を開始し、画素1501から出力される画像データが、AD変換器1502および画像処理部1503を介して拡張モード対応CSI-2送信回路1504に供給される。
ステップS1492において、イメージセンサ1211は、定期異常診断を実行する。
ステップS1493において、拡張モード対応CSI-2送信回路1504は、第1のバーチャルチャネルのフレームスタートを送信する。
ステップS1494において、拡張モード対応CSI-2送信回路1504は、第2のバーチャルチャネルのフレームスタートを送信する。
ステップS1495において、拡張モード対応CSI-2送信回路1504は、第1のバーチャルチャネルの埋め込みデータを送信する。
ステップS1496において、拡張モード対応CSI-2送信回路1504は、第2のバーチャルチャネルの埋め込みデータを送信する。このとき、拡張モード対応CSI-2送信回路1504は、定期異常診断の診断結果に対応する特異メッセージを含めた第2のバーチャルチャネルの埋め込みデータを送信する。
ステップS1497おいて、拡張モード対応CSI-2送信回路1504は、第1のバーチャルチャネルの画像データを送信する。
ステップS1498において、拡張モード対応CSI-2送信回路1504は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS1498において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS1497に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1498において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS1499に進む。
ステップS1499において、拡張モード対応CSI-2送信回路1504は、第2のバーチャルチャネルのユーザ定義データを送信する。
ステップS1500において、拡張モード対応CSI-2送信回路1504は、第1のバーチャルチャネルのフレームエンドを送信する。
ステップS1501において、拡張モード対応CSI-2送信回路1504は、第2のバーチャルチャネルのフレームエンドを送信する。
ステップS1502において、拡張モード対応CSI-2送信回路1504は、高速データ送信の終了命令を受信したか否かを判定する。
ステップS1502において、拡張モード対応CSI-2送信回路1504が、高速データ送信の終了命令を受信していないと判定した場合、処理はステップS1491に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1502において、拡張モード対応CSI-2送信回路1504が、高速データ送信の終了命令を受信したと判定した場合、処理は終了される。
以上の処理により、画像データ送信のバーチャルチャネルの埋込データ内に特異メッセージを格納する余地がない場合でも特異メッセージを送信することが可能となる。
<撮像送信処理(その10)>
以上においては、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルのデータ内(例えば、埋込データ内)に特異メッセージを格納して送信される例について説明してきたが、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、非画像データの少なくとも一部内に格納されて送信されてもよい。
非画像データは、例えば、パケットデータ(例えば、Generic Short Packet Data Types、Generic Long Packet Data Types)、ユーザ定義データ(User Defined Byte-based Data)またはリザーブド領域データ(Reserved for future use)である。
特異メッセージが、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、非画像データの少なくとも一部内に格納される場合、イメージセンサ1211は、画像データのラインごとに特異メッセージを送信するので、各行の画像データに対応する特異メッセージを迅速に送信することが可能となる。
これにより、特異メッセージを受信するアプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
定期異常診断が画像データ送信の前のラインブランキング期間内に実行されることにより、送信と同時には定期異常診断がなされないため、消費電力の最大値へ影響を与えない。また、定期異常診断は、ラインブランキング期間外に実行されるようにしてもよい。
ここで、図147のフローチャートを参照して、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、非画像データの少なくとも一部内に格納されて送信されるようにした撮像送信処理について説明する。
なお、ここでは、第1のバーチャルチャネル(VC1)において、画像データが送信され、第2のバーチャルチャネル(VC2)において、特異メッセージを含むユーザ定義データが送信される処理について説明する。
また、図147のフローチャートのステップS1521乃至S1525,ステップS1530乃至S1532の処理は、図146のフローチャートのステップS1491,S1493乃至S1496,S1500乃至S1502の処理と同様であるので、その説明は省略する。ただし、ステップS1525の処理は、定期異常診断の診断結果を含まない点でステップS1496の処理とは異なる。
すなわち、ステップS1521乃至S1525の処理により、撮像が開始され、第1のバーチャルチャネルと第2のバーチャルチャネルのそれぞれのフレームスタートと埋込データが送信されると、処理は、ステップS1526に進む。
ステップS1526において、イメージセンサ1211は、定期異常診断を実行する。
ステップS1527おいて、拡張モード対応CSI-2送信回路1504は、第1のバーチャルチャネルの画像データを送信する。
ステップS1528において、拡張モード対応CSI-2送信回路1504は、第2のバーチャルチャネルのユーザ定義データを送信する。このとき、拡張モード対応CSI-2送信回路1504は、定期異常診断の診断結果に対応する特異メッセージを含む第2のバーチャルチャネルのユーザ定義データを送信する。
ステップS1529において、拡張モード対応CSI-2送信回路1504は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS1529において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS1526に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1529において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS1530に進む。
そして、ステップS1530,S1531において、第1のバーチャルチャネルと第1のバーチャルチャネルのフレームエンドが送信される。
以上の処理により、画像データのラインごとに特異メッセージをイメージセンサが送信されるので、各行の画像データに対応する特異メッセージを迅速に送信することが可能となる。
結果として、特異メッセージを受信するアプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
また、以上においては、特異メッセージを含むユーザ定義データが送信される例について説明してきたが、特異メッセージを含む非画像データであれば、ユーザ定義データでなくてもよく、例えば、特異メッセージを含むパケットデータやリザーブド領域データでもよい。
<撮像送信処理(その11)>
以上においては、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、非画像データの少なくとも一部内に特異メッセージが格納されて送信される例について説明してきたが、画像データ内に格納されて送信されてもよい。
特異メッセージが画像データ内に格納されて送信される場合、画像データのライン毎にイメージセンサ1211が特異メッセージを送信するので、各行の画像データに対応する特異メッセージを迅速に送信することが可能となる。
これにより、特異メッセージを受信するアプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
また、定期異常診断がラインブランキング期間内に実行されることにより、送信と同時には定期異常診断されないので、消費電力の最大値へ影響を与えない。
さらに、定期異常診断は、ラインブランキング期間外に実行されるようにしてもよい。
また、特異メッセージが画像データ内へ格納される場合、可視電子透かしメッセージまたは不可視電子透かしメッセージが重畳して格納されてもよい。
例えば、可視電子透かしを用い、特異メッセージとして所定メッセージ(例えば、警告表示)が格納されてもよい。また、可視電子透かしを用い、イメージセンサ1211が高速データ送信を終了するまでのカウントダウンやカウントアップを示すカウントメッセージ(所定メッセージ)が格納されてもよい。
これらは、人が認識できる表現(例えば、固定パターン)であってもよいし、人が認識できない表現(例えば、ランダムパターン)であってもよい。また、画像変化が微小であるために肉眼で視認しにくい、不可視電子透かしを用いて格納されてもよい。
ここで、図148のフローチャートを参照して、特異メッセージが画像データ内に格納されて送信されるようにした撮像送信処理について説明する。
なお、図148のフローチャートのステップS1551,S1552,ステップS1557,S1558の処理は、図131のフローチャートのステップS1191,S1193,S1197,S1198の処理と同様であるので、その説明は省略する。
すなわち、ステップS1551,S1552の処理により、撮像が開始され、フレームスタートが送信され、ステップS1553の処理により、埋込データが送信されると、処理は、ステップS1554に進む。
ステップS1554において、イメージセンサ1211は、定期異常診断を実行する。
ステップS1555おいて、拡張モード対応CSI-2送信回路1504は、バーチャルチャネルの画像データを送信する。このとき、拡張モード対応CSI-2送信回路1504は、定期異常診断の診断結果に対応する特異メッセージを含めて、バーチャルチャネルの画像データを送信する。
ステップS1556において、拡張モード対応CSI-2送信回路1504は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS1556において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS1554に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS1556において、拡張モード対応CSI-2送信回路1504が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS1557に進む。
そして、ステップS1557において、バーチャルチャネルのフレームエンドが送信される。
以上の処理により、画像データのライン毎にイメージセンサ1211が特異メッセージを送信することが可能となり、各行の画像データに対応する特異メッセージをアプリケーションプロセッサ1212に対して迅速に送信することが可能となる。
これにより、特異メッセージを受信するアプリケーションプロセッサ1212は、特異メッセージに応じた迅速な対応が可能になる。
なお、以上の説明では、撮像開始を明記しているが、撮像終了について明記していない。これは撮像方式がグローバルシャッタ方式なのかローリングシャッタ方式なのか等によって異なるためである。
例えば、グローバルシャッタ方式であれば、全画素を一斉に撮像できるので、次処理の前までに撮像終了してもよいし、フレーム内最初の画像データ送信の前までに撮像終了してもよい。
一方、ローリングシャッタ方式であれば、画素の各行で実行される撮像および高速データ送信の少なくとも一部が重複して実行(並列実行)されてもよいため、フレーム内最後の画像データ送信の前までに撮像終了すればよい。
また、撮像開始のタイミングは一例であり、例えば、フレーム内最初の画像データ送信の前のタイミングまで遅らせて実行されてもよい。
さらに、定期異常診断のタイミングも一例であり、例えば、特異メッセージ送信の前のタイミングまで遅らせて実行されてもよい。
<メッセージカウント値について>
メッセージカウンタ1513は、HD(Humming Distance)≧1カウント(バイナリコード)とHD=1カウント(グレイコード)との何れかをインクリメントまたはデクリメントすることでメッセージカウンタ(メッセージカウント値)を生成する。
なお、図149においては、図中の左側にHD(Humming Distance:ハミング距離)≧1のバイナリコードからなるメッセージカウント値の例が示されており、図中の右側にHD=1のグレイコードからなるメッセージカウント値の例が示されており、いずれも図中の下方向に向かってインクリメントされている。
特に、メッセージカウンタ(メッセージカウント値)がグレイコードである場合、インクリメントまたはデクリメントに伴うハミング距離が一定になるので、電力観測攻撃や電磁観測攻撃に対する耐性を向上させることができる。
メッセージカウント値は、カウント方式として、第1コード方式と第2コード方式と(例えば、バイナリコード方式とグレイコード方式と)が切り替えられてもよい。
また、メッセージカウント値のカウント方式が必要に応じて切り替えられる場合、送信されるデータ量自体を変えることなく、イメージセンサ1211からアプリケーションプロセッサ1212に対して付加情報を伝達させるようにすることができる。
例えば、イメージセンサ1211内において異常が検出される場合、メッセージカウント値のカウント方式が切り替えられてもよく、カウント方式に応じてイメージセンサ1211からアプリケーションプロセッサ1212に異常情報(例えば、異常の有無)を伝達することが可能となる。
特に、バイナリコードとグレイコードとが切り替えられる場合、メッセージカウンタのインクリメントまたはデクリメントを維持しながら、付加情報を伝達することが可能となる。
イメージセンサ1211が、バイナリコードとグレイコードとを切り替える場合、カウント切り替えなのかメッセージ送受信の不具合なのかをアプリケーションプロセッサ1212が判別できるようにするために、コード周期(左記は4ビットでコード周期が16カウントの例)を考慮したタイミングで切り替えることが望ましいが、その限りではない。
イメージセンサ1211は、互いに関連性ある第1カウンタと第2カウンタとを備える場合、メッセージカウンタの不具合または改竄の有無を検証することが可能になる。
例えば、インクリメントする第1カウンタとデクリメントする第2カウンタとの演算(例えば、加算)の結果からカウンタの不具合や改竄の有無を検証してもよい。
すなわち、例えば、バイナリコードをインクリメントする第1カウンタとデクリメントする第2カウンタとが用いられる場合、図150で示されるように、それぞれの加算結果は、不具合や改竄がない限り、常に「1111」になる。このため、それぞれの加算結果が、「1111」となる場合、第1カウンタと第2カウンタとは正常値であるので、加算結果が「1111」からなる正常値であるか否かにより、不具合や改竄の有無を検証することができる。
また、カウント方向が同じ第1カウンタと第2カウンタとの演算(例えば、減算)の結果からカウンタの不具合や改竄の有無を検証してもよい。
すなわち、例えば、グレイコードをインクリメントする第1カウンタとデクリメントする第2カウンタとの場合、図151で示されるように、それぞれの減算結果は、不具合や改竄がない限り、常に「0000」になる。このため、それぞれの減算結果が、「0000」となる場合、第1カウンタと第2カウンタとは正常値であるので、減算結果が「0000」からなる正常値であるか否かにより、不具合や改竄の有無を検証することができる。
<メッセージカウント処理>
次に、図152のフローチャートを参照して、メッセージカウント処理について説明する。
ステップS1571において、メッセージカウンタ1513は、第1カウント値および第2カウント値を初期化する。
ステップS1572において、拡張モード対応CSI-2送信回路1504は、拡張パケットヘッダを送信するか否かを判定し、拡張パケットヘッダを送信すると判定されるまで処理を待機する。
ステップS1572において、拡張パケットヘッダを送信すると判定された場合、処理は、ステップS1573に進む。
ステップS1573において、拡張モード対応CSI-2送信回路1504は、メッセージカウンタ1513からメッセージカウント値として第1カウント値を取得し、拡張パケットヘッダに格納する。
ステップS1574において、拡張モード対応CSI-2送信回路1504は、拡張パケットヘッダをアプリケーションプロセッサ1212に送信する。
ステップS1575において、メッセージカウンタ1513は、第1カウント値が最大値であるか否かを判定する。
ステップS1575において、第1カウント値が最大値であると判定された場合、処理は、ステップS1571に戻り、第1カウント値および第2カウント値が初期化される。
また、ステップS1575において、第1カウント値が最大値ではないと判定された場合、処理は、ステップS1576に進む。
ステップS1576において、メッセージカウンタ1513は、第1メッセージカウンタの第1カウント値を更新する(インクリメントまたはデクリメントする)。
ステップS1577において、メッセージカウンタ1513は、第2メッセージカウンタの第2カウント値を更新する(インクリメントまたはデクリメントする)。
ステップS1578において、メッセージカウンタ1513は、第1カウント値と第2カウント値とを演算する(加算または減算する)。
ステップS1579において、メッセージカウンタ1513は、演算結果が正常値であるか否かを判定する。
ステップS1579において、演算結果が正常値であると判定された場合、処理は、ステップS1580に進む。
ステップS1580において、メッセージカウンタ1513は、第1カウント値と第2カウント値とが正常であると判定する。
ステップS1579において、演算結果が正常値ではないと判定された場合、処理は、ステップS1581に進む。
ステップS1581において、メッセージカウンタ1513は、第1カウント値と第2カウント値との少なくともいずれかが異常であると判定する。
以上の処理により、メッセージカウンタのカウント値に対する不具合や改竄に対する耐性を向上させることが可能となる。
なお、イメージセンサ1211は、正常と判断される場合は正常メッセージを、異常と判断される場合は異常メッセージを、それぞれ特異メッセージとして送信してもよい。また、メッセージカウント値は、異常メッセージなどの特異メッセージとして流用されてもよい。
一方、特異メッセージは、フレームエンド外(例えば、フレームスタート内、埋込データ内、画像データ内)の拡張パケットフッタ内に格納されてもよい。また、特異メッセージを含むデータの暗号に基づく完全性演算値は、フレームエンド内の拡張パケットフッタ内に格納されてもよい。さらに、特異メッセージを含むデータの暗号に基づく完全性演算値は、拡張パケットフッタ内ではなく、埋込データ内のパケットデータ内に格納されてもよい。
以上のように、イメージセンサ1211からアプリケーションプロセッサ1212に対して特異メッセージや付加情報が伝達される例を用いて説明したが、同様な考え方に従いアプリケーションプロセッサ1212からイメージセンサ1211またはディスプレイ1213に対して特異メッセージや付加情報が伝達されてもよい。
<異常を識別する情報の格納について>
拡張パケットヘッダ内または拡張パケットフッタ内には、例えば、Fatal warning(重大な異常を検出)、Sensor-internal warning(センサ内部に起因する異常を検出)、Sensor-external warning(センサ外部に起因する異常を検出)、Power-source warning(電源に起因する異常を検出)、Clock-source warning(クロック源に起因する異常を検出)、The others warning(その他に起因する異常を検出)、Physical warning(物理異常を検出)、Logical warning(論理異常を検出)、Power warning(電力異常を検出)、Voltage warning(電圧異常を検出)、Current warning(電流異常を検出)、Electromagnetic warning(電磁異常を検出)、Clock warning(クロック異常を検出)、Thermal warning(温度異常を検出)、Channel warning(伝送路異常を検出)、Message warning(メッセージ異常を検出)、Attack warning(攻撃を検出)、Tamper warning(例えば、侵害を検出)、Blind warning(例えば、妨害を検出)、Saturation warning(例えば、妨害を検出)、Fake warning(例えば、妨害を検出)、Foreign object warning(例えば、障害を検出)、Probe warning(例えば、侵害または障害を検出)、DOS warning(例えば、メッセージカウント異常を検出)、などの何れかを識別できるように定義されるWarning Descriptor(特異メッセージ)が格納されてもよい。
Warning Descriptor(特異メッセージ)は、ベンダ固有領域(Vendor specific)、ユーザ定義領域(User Defined)またはリザーブド領域(Reserved for future use)の少なくとも一部内に格納されてもよい。
また、Warning Descriptor(特異メッセージ)内の何れかの項目は、拡張パケットヘッダ(例えば、Security Descriptor)内または拡張パケットフッタ(例えば、ePF1)内、埋込データ内、および読み出し応答内などの何れかに定義されてもよい。
なお、図153は、図58の拡張パケットヘッダePH2におけるリザーブド領域(Reserved)にWarning Descriptorが設定されるときの拡張パケットヘッダePH2の構成例が示されている。
また、図154においては、Warning Descriptor(特異メッセージ)の各ビットを用いた識別情報の記述例が示されている。
<特異メッセージの分離>
特異メッセージの送信は、第1特異メッセージの送信と第2特異メッセージの送信とに分離されてもよい。
拡張パケットヘッダは、画像データなどのライン(行)の高速データ送信毎に送信されるため、ビット幅が短いことが望ましいが、即時性が高いので、例えば、第1特異メッセージとして警告速報(例えば、Physical attack detection)や警告情報の一部が割り当てられて格納されてもよい。
一方、例えば、第2特異メッセージに警告情報の詳細を示す情報(警告詳細)が割り当てられて、拡張パケットヘッダ外に格納されて送信されるようにする。
図155は、拡張パケットヘッダに、第1特異メッセージとして警告速報(例えば、Physical attack detection)が設定される例を示している。
<特異メッセージを分離して送信するときの送信処理>
次に、図156,図157のフローチャートを参照して、特異メッセージを分離して送信するときの送信処理について説明する。
なお、図156のフローチャートは、イメージセンサ1211の処理を表しており、図157のフローチャートは、アプリケーションプロセッサ1212の処理を表している。
ステップS1591(図156)において、イメージセンサ1211は、異常診断を実行する。
ステップS1592において、拡張モード対応CSI-2送信回路1504が、第1特異メッセージである警告速報を含む拡張パケットヘッダを送信する。
ステップS1593において、拡張モード対応CSI-2送信回路1504が、第2特異メッセージである警告詳細を含む拡張パケットヘッダ外の、例えば、埋込データに含めて送信する。
一方、ステップS1611において、アプリケーションプロセッサ1212は、警告速報を含む拡張パケットヘッダを受信したか否かを判定し、警告速報を含む拡張パケットヘッダを受信するまで、同様の処理を繰り返す。
ステップS1611において、警告速報を含む拡張パケットヘッダを受信したと判定された場合、処理は、ステップS1612に進む。
ステップS1612において、アプリケーションプロセッサ1212は、警告速報に基づいて、異常時処理を開始する。
ステップS1613において、アプリケーションプロセッサ1212は、警告詳細を含む埋込データなどの拡張パケットヘッダを受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
そして、ステップS1613において、警告詳細を含む埋込データなどの拡張パケットヘッダを受信したと判定された場合、処理は、ステップS1614に進む。
ステップS1614において、アプリケーションプロセッサ1212は、警告詳細の情報を、異常時処理に反映させる。
以上の処理により、異常診断により異常が検出される場合に、即時性の高い警告速報(例えば、Physical attack detection)を迅速にアプリケーションプロセッサ1212に送信することが可能となり、異常時処理を迅速に開始することが可能となる。
<特異メッセージを分離して送信するときの送信処理の変形例>
以上においては、第1特異メッセージとして警告速報が送信される例について説明してきたが、さらに、警告速報が送信された後、警告詳細の読み出し命令を送信して、イメージセンサ1211から読み出し応答として警告詳細が送信されるようにしてもよい。
次に、図158のフローチャートを参照して、警告速報が送信された後、警告詳細の読み出し命令を送信する場合の特異メッセージを分離して送信するときの送信処理について説明する。
なお、図158のフローチャートにおけるステップS1631,S1632,S1634,S1635の処理は、図157のフローチャートにおけるステップS1611乃至S1613の処理と同様であるので、その説明は省略する。
すなわち、ステップS1631,S1632の処理により、警告速報が受信されて、異常時処理が開始されると、ステップS1633において、アプリケーションプロセッサ1212が読み出し命令を送信する。
これに応じて、イメージセンサ1211は、読み出し命令に応じて読み出し応答をアプリケーションプロセッサ1212に送信する。
そして、ステップS1634,S1635の処理により、警告詳細が受信されて、異常時処理に反映させる。
以上の処理により、異常診断により異常が検出される場合に、即時性の高い警告速報(例えば、Physical attack detection)を迅速にアプリケーションプロセッサ1212に送信することが可能となり、さらに、警告詳細を迅速に異常時処理に反映させることが可能となる。
<Security Descriptor>
拡張パケットヘッダ内または拡張パケットフッタ内には、パケットデータ(ペイロード)の暗号化の有無や、拡張パケットフッタ内のハッシュ値、メッセージ認証コードまたはデジタル署名の有無や、拡張パケットフッタ内のハッシュ値、メッセージ認証コードまたはデジタル署名のアルゴリズム種類などの何れかが定義されるSecurity Descriptor(例えば、Service Descriptorと呼称されてもよい)が格納されてもよい。
また、イメージセンサ1211は、このSecurity Descriptorを用いて、イメージセンサ1211内外の異常の有無、イメージセンサ1211に対する妨害または攻撃の有無、などの何れかの特異メッセージをアプリケーションプロセッサ1212に通知してもよい。
メッセージ認証コード(MAC: Message Authentication Code)としては、GMAC(Galois MAC)、CMAC(Cipher-based MAC)、HMAC(Hash-based MAC)、などの何れかが用いられてもよい。例えば、AES(Advanced Encryption Standard)またはSHA(Secure Hash Algorithm)が適用された、AES-GMAC、AES-CMAC、SHA2-HMAC、SHA3-HMACなどの何れかが用いられてもよい。
図159は、図153におけるSecurity Descriptorに、イメージセンサ1211内外の異常の有無、およびイメージセンサ1211に対する妨害または攻撃の有無などの何れかの特異メッセージが設定される例が示されている。
<推進装置に実装される例>
イメージセンサ1211およびアプリケーションプロセッサ1212は、所望の推進装置に搭載される構成とすることができる。
推進装置は、例えば、推進(可動、走行、歩行、飛行などの何れか)することが可能な車両、ロボット、ドローンなどの何れかであってもよく、AI(Artificial Intelligence)機能を搭載して自律推進できる、自律車両、自律ロボット、自律ドローンなどの何れかであってもよい。
推進装置の推進は、推進装置の使用者によって制御されてもよく、推進装置は使用者に対して必要に応じて指示または警告を通知してもよい。一方、推進装置は、自らの推進を推進装置自身が自動制御するように構成されてもよい。
図160は、上述したイメージセンサ1211およびアプリケーションプロセッサ1212が搭載される推進装置の制御システムの一例である推進制御システムの概略的な構成例を示すブロック図である。
推進制御システム1600は、通信ネットワーク1601を介して接続された複数の電子制御ユニットを備える。図160に示した例では、推進制御システム1600は、駆動系制御ユニット1615、ボディ系制御ユニット1616、外部情報検出ユニット1617、内部情報検出ユニット1619、及び統合制御ユニット1611を備える。また、統合制御ユニット1611の機能構成として、マイクロコンピュータ1631、音声画像出力部1632、及び車載ネットワークI/F(interface)1633が図示されている。
駆動系制御ユニット1615は、各種プログラムにしたがって推進装置の駆動系に関連する装置の動作を制御する。
ボディ系制御ユニット1616は、各種プログラムにしたがって推進装置に装備された各種装置の動作を制御する。
外部情報検出ユニット1617は、推進制御システム1600を搭載した推進装置の外部の情報を検出する。例えば、外部情報検出ユニット1617には、撮像部1618が接続される。外部情報検出ユニット1617は、撮像部1618に推進装置の外部の画像を撮像させるとともに、撮像された画像を受信する。外部情報検出ユニット1617は、受信した画像に基づいて、人、車、障害物、標識又は路面上の文字等の物体検出処理又は距離検出処理を行ってもよい。また、外部情報検出ユニット1617は、アプリケーションプロセッサ1212に対応する構成であってもよい。
撮像部1618は、イメージセンサ1211に対応する構成であり、光を受光し、その光の受光量に応じた電気信号を出力する光センサである。撮像部1618は、電気信号を画像として出力することもできるし、測距の情報として出力することもできる。また、撮像部1618が受光する光は、可視光であっても良いし、赤外線等の非可視光であっても良い。
内部情報検出ユニット1619は、推進装置の内部の情報を検出する。内部情報検出ユニット1619には、推進装置の内部の情報を検出する検出部1620が接続されるようにしてもよい。ここで、推進装置の内部の情報は、例えば、推進装置の温度や周辺湿度などの情報である。
マイクロコンピュータ1631は、外部情報検出ユニット1617又は内部情報検出ユニット1619で取得される推進装置の内外の情報に基づいて、各種の制御目標値を演算し、駆動系制御ユニット1615に対して制御指令を出力することができる。また、マイクロコンピュータ1631は、アプリケーションプロセッサ1212に対応する構成であってもよい。
また、マイクロコンピュータ1631は、外部情報検出ユニット1617又は内部情報検出ユニット1619で取得される推進装置の周囲の情報に基づいて推進を制御することにより、使用者の操作に拠らずに自律的に走行する自動運転等を目的とした協調制御を行うことができる。
上述したように、撮像部1618はイメージセンサ1211に対応する構成であり、外部情報検出ユニット1617および/またはマイクロコンピュータ1631はアプリケーションプロセッサ1212に対応する構成であるので、撮像部1618と外部情報検出ユニット1617および/またはマイクロコンピュータ1631とは、相互に高速データ通信を実現する。
さらに、マイクロコンピュータ1631は、外部情報検出ユニット1617で取得される推進装置の外部の情報に基づいて、ボディ系制御ユニット1616に対して制御指令を出力することができる。
音声画像出力部1632は、推進装置の搭乗者又は推進装置の外部に対して、視覚的又は聴覚的に情報を通知することが可能な出力装置へ音声及び画像のうちの少なくとも一方の出力信号を送信する。図160の例では、出力装置として、オーディオスピーカ1612、表示部1613及びインストルメントパネル1614が例示されている。表示部1613は、例えば、オンボードディスプレイ及びヘッドアップディスプレイの少なくとも一つを含んでいてもよい。
<推進制御処理(その1)>
推進装置は、図160の推進制御システム1600により、異常メッセージが受信(例えば、1回受信、複数回受信、連続受信)される場合、推進装置の推進状況(例えば、推進装置の推進速度、推進装置周囲の障害物の有無)を調査し、推進状況が安全条件を満たすときには高速データ送信を終了してもよく、推進状況が安全条件を満たさないときには、推進制御を変更(例えば、減速、障害物が少ない位置へ推進装置を誘導)してもよい。
ここで、図161のフローチャートを参照して、推進制御システム1600による上述した推進制御処理について説明する。
ステップS1651において、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に相当する撮像部1618より異常が発生していることを示す異常メッセージ(からなる特異メッセージ)を受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
この処理においては、異常メッセージからなる特異メッセージが、1回受信されたか、複数回受信されたか、または、連続受信されたかのいずれかに基づいて、受信したか否かが判定されるようにしてもよい。
ステップS1651において、異常メッセージを受信したと判定された場合、処理は、ステップS1652に進む。
ステップS1652において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況を調査する。より具体的には、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、例えば、推進装置の推進速度や、推進装置周囲の障害物の有無等を推進状況として調査する。
ステップS1653において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況が安全条件を満たすか否かを判定する。すなわち、推進装置の推進速度が所定の速度よりも高いか否か、および、推進装置周囲の障害物が所定の距離内に存在するか否か等により、推進状況が安全条件を満たすか否かが判定される。
ステップS1653において、推進状況が安全条件を満たさないと判定された場合、処理は、ステップS1654に進む。
ステップS1654において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況が安全条件を満たすように、推進の制御を変更し、処理は、ステップS1652に戻る。
すなわち、例えば、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況が安全条件を満たすまで、駆動系制御ユニット1615やボディ系制御ユニット1616を制御して、例えば、推進装置の推進速度が所定の速度よりも低い速度となるように推進制御を変更したり、推進装置周囲の障害物が所定の距離内に存在しない状態になるように推進制御を変更する処理を繰り返す。
そして、ステップ1653において、推進状況が安全条件を満たすと判定された場合、処理は、ステップS1655に進む。
ステップS1655において、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に相当する撮像部1618との高速データ送信を終了する。
以上の処理により、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に相当する撮像部1618から異常メッセージが供給されても、直ちに高速データ送信を終了するのではなく、推進状況が安全条件を満たすまで推進制御を変更してから、高速データ送信を終了する。
これにより、イメージセンサ1211に相当する撮像部1618において異常が発生していることが分かっていても、直ちに高速データ送信が終了されて、推進制御に必要とされる画像データが突然送信されない状態になり、推進制御が致命的な状態に陥るのを防止することが可能となる。
<推進制御処理(その2)>
推進装置を制御する推進制御システム1600のアプリケーションプロセッサ1212は、画像データを撮像または表示する画像装置(第1情報処理装置または第1プロセッサと通信する第1センサ)と、他データを取得または表示する他データ装置(第2情報処理装置、第1プロセッサまたは第2プロセッサと通信する第2センサ)とを備えてもよい。
推進制御システム1600は、画像装置(第1センサ)の状況を調査し、画像装置(第1センサ)に異常が発生してない場合、画像装置の画像データ(第1センサにより取得されるデータ)を優先して推進制御に用いるようにしてもよい。
また、画像装置(第1センサ)に異常が発生している場合、推進制御システム1600は、推進装置の使用者に対して小警告を通知するようにしてもよい。そして、他データ装置(第2センサ)の状況を調査し、他データ装置(第2センサ)に異常が発生してない場合、他データ装置の他データ(第2センサにより取得されるデータ)を優先して推進制御に用いるようにしてもよい。
さらに、他データ装置(第2センサ)に異常が発生している場合、推進制御システム1600は、推進装置の使用者に対して大警告を通知した上で、推進制御を使用者に移行させるようにして、高速データ送信を終了するようにしてもよい。
なお、画像装置(第1センサ)と他データ装置(第2センサ)とは同種の構成でも別種の構成でもよい。つまり、画像装置(第1センサ)と他データ装置(第2センサ)とは、可視光センサ、赤外光センサ、紫外光センサ、偏光センサ、測距センサ、ToFセンサ、LiDARセンサなどのイメージセンサや、ミリ波レーダセンサ、超音波レーダセンサ、GPSセンサ、GNSSセンサ、RF測距センサ、RF測位センサなどの何れであってもよい。
ここで、図162のフローチャートを参照して、推進制御システム1600による上述した推進制御処理について説明する。
ステップS1671において、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、画像装置(第1センサ)の状況を調査する。より詳細には、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、例えば、画像装置(第1センサ)における異常診断の診断結果を取得することにより状況を調査する。
ステップS1672において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、画像装置(第1センサ)の状況に基づいて、画像装置(第1センサ)に異常が発生しているか否かを判定する。
ステップS1672において、画像装置(第1センサ)に異常が発生していないと判定された場合、処理は、ステップS1673に進む。
ステップS1673において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、画像装置(第1センサ)で取得されるデータを優先して使用し、推進装置の推進を制御し、処理は、ステップS1671に戻り、それ以降の処理が繰り返される。
すなわち、画像装置(第1センサ)に異常が発生していない限り、画像装置(第1センサ)で取得されるデータを使用して、推進装置の推進が制御される。
ステップS1672において、画像装置(第1センサ)に異常が発生していると判定された場合、処理は、ステップS1674に進む。
ステップS1674において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、音声画像出力部1632を制御して、オーディオスピーカ1612、表示部1613、およびインストルメントパネル1614の少なくともいずれかを用いて、音声、および画像の少なくともいずれかを用いて、推進装置の使用者に対して、画像装置(第1センサ)に異常が発生していることを示す小警告の情報を提示する。
ステップS1675において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、他データ装置(第2センサ)の状況を調査する。より詳細には、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、他データ装置(第2センサ)における異常診断の診断結果を取得することにより、状況を調査する。
ステップS1676において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、他データ装置(第2センサ)の状況に基づいて、他データ装置(第2センサ)に異常が発生しているか否かを判定する。
ステップS1676において、他データ装置(第2センサ)に異常が発生していないと判定された場合、処理は、ステップS1677に進む。
ステップS1677において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、他データ装置(第2センサ)で取得されるデータを優先して使用し、推進装置の推進を制御し、処理は、ステップS1671に戻り、それ以降の処理が繰り返される。
すなわち、画像装置(第1センサ)に異常が発生しても、他データ装置(第2センサ)に異常が発生していない限り、他データ装置(第2センサ)で取得されるデータを使用して、推進装置の推進が制御される。
ステップS1676において、他データ装置(第2センサ)に異常が発生していると判定された場合、処理は、ステップS1678に進む。
ステップS1678において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、音声画像出力部1632を制御して、オーディオスピーカ1612、表示部1613、およびインストルメントパネル1614の少なくともいずれかを用いて、音声、および画像の少なくともいずれかを用いて、推進装置の使用者に対して、画像装置(第1センサ)および他データ装置(第2センサ)の両方で異常が発生していることを示す大警告の情報を提示する。
このとき、自律推進が困難な状況になっているので、大警告において、推進装置の推進制御については、使用者で実行するように促す情報が提示されるようにしてもよい。
ステップS1679において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進装置の推進制御は、図示せぬ操作部等が使用者により操作されることで発生する操作信号に応じたものに移行する。ただし、ステップS1679の処理以前に、推進装置の推進制御は、図示せぬ操作部等が使用者により操作されることで発生する操作信号に応じたものに移行されてもよい。
ステップS1680において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に対応する画像装置(第1センサ)および他データ装置(第2センサ)との高速データ送信を終了して、画像装置(第1センサ)からの画像データや他データ装置(第2センサ)からのデータの入力を受け付けない状態とする。
以上の処理により、イメージセンサ1211に相当する撮像装置(第1センサ)に異常が発生すると、小警告が提示されて異常が発生していることが提示されると共に、他データ装置(第2センサ)で取得されるデータに基づいて推進制御が実行される。
また、撮像装置(第1センサ)に加えて、他データ装置(第2センサ)にも異常が発生すると、大警告が提示されて異常が発生して、自律的な推進制御が不能な状態になったことが提示されて、使用者による推進制御に切り替えられると共に、高速データ通信が終了される。
これにより、推進制御に必要とされるデータを取得する一部のセンサ(画像装置(第1センサ))に異常が発生しても、他のセンサ(他データ装置(第2センサ))が取得するデータに基づいた推進制御ができるので、より安全性の高い推進制御を実現することが可能となる。
また、いずれのセンサにも異常が発生した場合については、使用者に推進制御が移行されることになるので、異常が発生しているセンサにより取得される不確かなデータで推進制御が継続されることがなくなり、安全な推進制御を実現することが可能となる。
<推進制御処理(その3)>
特異メッセージとして異常メッセージが受信(例えば、1回受信、複数回受信、連続受信)される場合、推進装置の推進を制御する推進制御システム1600(のアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、推進状況を調査し、高速データ送信を終了できる状態である場合には、高速データ送信を終了してもよい。
また、高速データ送信を終了できない状態である場合には、推進装置の推進を制御する推進制御システム1600(のアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、高速データ送信の維持をイメージセンサ1211に要求してもよい。
これにより、高速データ送信は、推進制御システム1600の撮像部1618(イメージセンサ1211に相当)ではなく推進装置の推進を制御する外部情報検出ユニット1617および/またはマイクロコンピュータ1631(のアプリケーションプロセッサ1212に相当)によって終了されるので、イメージセンサ1211側で一方的に高速データ送信を終了させることで生じる不具合を回避することが可能となる。
また、イメージセンサ1211に相当する撮像部1618は、高速データ送信の終了が必要な場合、特異メッセージとして異常メッセージを送信し、異常メッセージが所定条件を満たした後(例えば、所定時間が経過した後、所定回数の異常メッセージが送信された後、カウントダウン機能またはカウントアップ機能を備える異常メッセージが所定値になった後)に、高速データ送信維持が推進装置から要求されてない場合、高速データ送信を終了してもよい。
一方、高速データ送信維持が推進装置(外部情報検出ユニット1617および/またはマイクロコンピュータ1631(のアプリケーションプロセッサ1212に相当))から要求されている場合、イメージセンサ1211に相当する撮像部1618は、高速データ送信の終了予定を延長してもよい。例えば、所定時間や所定回数が延長されてもよく、カウントダウンやカウントアップを示すカウント値が再設定(例えば、初期値へ再設定)されてもよい。
なお、イメージセンサ1211(に相当する撮像部1618)は、例えば、何かしらの機能を、更新、初期化、再設定、再起動、全遮断するなどの何れかの高速データ送信不可処理を実行するために、高速データ送信を終了したい場合もあり得るが、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631に対して無断で高速データ送信を終了すると、それに起因して推進装置の事故が発生する可能性がある。
上述の処理により、イメージセンサ1211に相当する撮像部1618がアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631に対して無断で高速データ送信が終了されることがないので、撮像部1618からアプリケーションプロセッサ1212に対して突然の高速データ送信が終了することに起因する不具合が回避される。
以上のように、画像装置およびプロセッサは、画像データを用いて推進が直接的または間接的に必要に応じて制御される推進部を備えた推進装置の一部であってもよい。
次に、図163,図164のフローチャートを参照して、上述した推進制御処理について説明する。
なお、図163のフローチャートは、推進装置を制御する推進制御システム1600においてアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631の処理を表しており、図164のフローチャートは、イメージセンサ1211に相当する撮像部1618の処理を表している。
ステップS1691(図163)において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に相当する撮像部1618より異常メッセージ(からなる特異メッセージ)を受信したか否かを判定し、受信したと判定されるまで、同様の処理を繰り返す。
ステップS1691において、異常メッセージを受信したと判定された場合、処理は、ステップS1692に進む。
ステップS1692において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況を調査する。
ステップS1693において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、推進状況に基づいて、高速データ送信を終了できる状態であるか否かを判定する。
ステップS1693において、高速データ送信を終了できる状態であるとき、処理は、ステップS1694に進む。
ステップS1694において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、高速データ通信を終了し、イメージセンサ1211に相当する撮像部1618からの画像データの供給を受け付けない状態にして、処理を終了する。
一方、ステップS1963において、高速データ送信を終了できる状態ではないとき、処理は、ステップS1695に進む。
ステップS1695において、外部情報検出ユニット1617および/またはマイクロコンピュータ1631は、イメージセンサ1211に相当する撮像部1618に対して、高速データ送信の維持を要求する情報を送信する。
一方、ステップS1711において、イメージセンサ1211に相当する撮像部1618は、異常が発生しており、高速データ送信の終了が必要な状態であるか否かを判定し、必要であると判定されるまで、同様の処理を繰り返す。
ステップS1711において、高速データ送信の終了が必要な状態であると判定された場合、処理は、ステップS1712に進む。
ステップS1712において、撮像部1618は、異常メッセージからなる特異メッセージをアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631に送信する。
ステップS1713において、撮像部1618は、異常メッセージが所定条件を満たしたか否かを判定する。所定条件は、例えば、所定時間が経過したか、所定回数の異常メッセージが送信されたか、カウントダウン機能またはカウントアップ機能を備える異常メッセージが所定値になったか等である。
ステップS1713において、異常メッセージが所定条件を満たしたと判定された場合、処理は、ステップS1714に進む。
ステップS1714において、撮像部1618は、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631から高速データ送信維持の要求があったか否かを判定する。
ステップS1714において、高速データ送信維持の要求があったと判定された場合、処理は、ステップS1715に進む。
ステップS1715において、撮像部1618は、高速データ送信の終了予定を延長し、処理は、ステップS1711に戻る。
一方、ステップS1714において、高速データ送信維持の要求がないと判定された場合、処理は、ステップS1716に進む。
ステップS1716において、撮像部1618は、高速データ送信を終了し、画像データをアプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631に対して送信しない状態となる。
以上の処理により、高速データ送信は、撮像部1618(イメージセンサ1211に相当)ではなく推進装置の推進を制御する推進制御システム1600の外部情報検出ユニット1617および/またはマイクロコンピュータ1631(アプリケーションプロセッサ1212に相当)によって終了されるので、イメージセンサ1211側で一方的に高速データ送信を終了させることで生じる不具合を回避することが可能となる。
なお、イメージセンサ1211に相当する撮像部1618に異常(ネガティブな状況)が発生する可能性あること、または発生したことが警告される例を用いて説明したが、その限りではない。
例えば、イメージセンサ1211に相当する撮像部1618にポジティブな状況が発生する可能性あること、または発生したことが伝達されてもよい。また、イメージセンサ1211に相当する撮像部1618にネガティブでもポジティブでもない状況の変化が発生する可能性があること、または発生したことが伝達されてもよい。
そこで、上述した異常メッセージは、好転メッセージや変化メッセージなどの、正常時や通常時とは異なるメッセージであってもよい。上述したように、正常時または通常時は、特異メッセージとして正常メッセージまたは通常メッセージが送信されてもよい。また、正常時または通常時とは異なる場合に限り、特異メッセージが送信されてもよい。また、特異メッセージが推進装置内の推進制御システム1600で用いられる例を用いて説明したが、その限りではなく、特異メッセージは例えばスマートフォンやデジタルカメラなどの何れかのモバイル装置内で用いられてもよい。また、画像データストリームを維持したまま特異メッセージが送信される例を用いて説明したが、その限りではなく、例えば画像データ送信が停止してから特異メッセージが送信されるように構成されてもよい。
ブロック図やフローチャートなどの何れかの図面を構成する要素のタイミングまたは位置は一例であり、異なるように構成されてもよい。上述した各例で説明した実施の形態は、種々の変形例が存在する。即ち、上述した各例の構成要素は、一部が省略されてもよく、一部または全部が変化していてもよく、一部または全部が変更されていてもよい。
また、一部が他の構成要素で置き換えられていてもよく、一部または全部に他の構成要素が追加されていてもよい。更には、構成要素の一部または全部が複数に分割されていてもよく、一部または全部が複数に分離されていてもよく、分割または分離された複数の構成要素の少なくとも一部で機能や特徴を異ならせていてもよい。
さらに、各構成要素の少なくとも一部を移動させて異なる実施の形態としてもよい。更にまた、各構成要素の少なくとも一部の組み合わせに結合要素や中継要素を加えて異なる実施の形態としてもよい。
加えて、各構成要素の少なくとも一部の組み合わせに切り替え機能を加えて異なる実施の形態としてもよい。本実施の形態は、上述した各例で示した構成に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。なお、本明細書に記載された効果はあくまでも例示であって限定されるものではなく、また他の効果があってもよい。
本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含む。
また、プログラムは、1のコンピュータ(プロセッサ)により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。さらに、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。
したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。
さらに、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。また、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
さらに、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。また、例えば、上述したプログラムは、任意の装置において実行することができる。
その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。
さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。
さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
また、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
<データストリームの停止方法>
(HEARTBEAT機能)
HEARTBEAT機能は、リクエスタとレスポンダとの両方でサポートされている場合、セッションの存続要否の判断に用いることができる。
ここで、リクエスタおよびレスポンダは、それぞれアプリケーションプロセッサ1212およびイメージセンサ1211に対応する構成であり、セッションによって1つ以上の通信チャネルを持つことができる。
以降においては、推進装置の推進を制御する推進制御システム1600において、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631がリクエスタであって、イメージセンサ1211に相当する撮像部1618がレスポンダである構成を例に用いてセッションが形成される例について説明を行う。もちろん、外部情報検出ユニット1617および/またはマイクロコンピュータ1631がレスポンダであって、撮像部1618がリクエスタであってもよい。
リクエスタまたはレスポンダは、セッション内にいる間、HEARTBEAT要求メッセージをHEARTBEAT周期(HeartbeatPeriod)内で送信する。HeartbeatPeriodは、例えば、PSK_EXCHANGE_RSP response message内またはSuccessful KEY_EXCHANGE_RSP response message内のParam1内にResponderが格納して指定する。
HEARTBEAT要求メッセージ送信側は、HEARTBEAT要求メッセージ受信側からのHEARTBEAT_ACK応答メッセージまたはERROR応答メッセージが、「所定値(例えば、2)×HEARTBEAT周期(=第1時間)」内で受信されない場合、セッションを終了する。
HEARTBEAT要求メッセージ送信側は、HEARTBEAT要求メッセージ送信を再試行してもよく、再試行する前にHEARTBEAT要求メッセージ受信側からの応答を所定時間待機する。
HEARTBEAT要求メッセージ受信側は、HEARTBEAT要求メッセージが「所定値(例えば、2)×HEARTBEAT周期」内で受信されない場合、セッションを終了する。
このような場合、イメージセンサ1211に相当する撮像部1618に対する攻撃や誤動作などによって、撮像部1618の動作に起因するデータストリームの停止が生じる可能性がある。
例えば、車、ドローン、ロボットなどの推進装置にイメージセンサ1211に相当する撮像部1618が搭載され、撮像部1618からのデータストリームが、推進装置の推進を制御する推進制御システム1600の外部情報検出ユニット1617および/またはマイクロコンピュータ1631で用いられる場合、データストリームが突然停止すると、推進制御に影響が生じて、最悪の場合、死傷事故を誘発する可能性がある。
そこで、データストリームの停止が生じるような場合には、HEARTBEAT機能が無効化(HBEAT_CAP=0)されるようにして、リクエスタ(アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)に無断でレスポンダ(イメージセンサ1211に相当する撮像部1618)により、データストリームが停止されないようにする。
リクエスタ(アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)に無断でデータストリームが停止されないようにされることにより、レスポンダ(イメージセンサ1211に相当する撮像部1618)の動作に起因するデータストリームの停止を回避することが可能となる。
また、リクエスタ(アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、レスポンダ(イメージセンサ1211に相当する撮像部1618)から送信されるカウント値(例えば、メッセージカウンタの値)に基づいて、セッションの存続要否を判断してもよい。
さらに、データストリームが突然停止するような場合、HEARTBEAT機能が有効化(HBEAT_CAP=1)されるようにして、HEARTBEAT周期に関するセッション終了を必須要件(例えば、”shall”または”must”などで表現される)ではなく必須要件外(例えば、”should”または”may”などで表現される任意要件)としてもよい。具体的には、HEARTBEAT周期に関するセッション終了を、HEARTBEAT要求メッセージ送信側は必須要件とし、HEARTBEAT要求メッセージ受信側は必須要件外としてもよい。また、HEARTBEAT周期に関するセッション終了を、HEARTBEAT要求メッセージ送信側は必須要件外とし、HEARTBEAT要求メッセージ受信側は必須要件としてもよい。また、HEARTBEAT周期に関するセッション終了を、HEARTBEAT要求メッセージ送信側は必須要件外とし、HEARTBEAT要求メッセージ受信側は必須要件外としてもよい。なお、一般に公開されているSPDM規格が、HEARTBEAT周期に関するセッション終了を必須要件ではなく必須要件外と定義してもよいし、SPDM規格の一部または全部を参照するセキュリティ規格がHEARTBEAT周期に関するセッション終了を必須要件ではなく必須要件外と定義してもよいし、SPDM規格を参照しないセキュリティ規格がHEARTBEAT周期に関するセッション終了を必須要件ではなく必須要件外と定義してもよい。
また、レスポンダ(イメージセンサ1211に相当する撮像部1618)が、自らに対する攻撃や誤動作などの検知回路または予測回路を備え、自らや画像データに特異状況が発生する可能性あること(特異状況が既に発生したことも含む)を検知または予測してもよい。
例えば、レスポンダ(イメージセンサ1211に相当する撮像部1618)が、HEARTBEAT_NAK応答メッセージを通信ホストである、リクエスタ(アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631)に送信すれば、レスポンダ(撮像部1618)の不具合の発生を通知できるので、リクエスタ(外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、自らのデータストリームの停止の要否を判断できる(例えば、Valueとしては、0x00, 0x05-0x5F, 0x62, 0x6D-0x7DのReserved領域を新たに割り当て可能)。
リクエスタ(外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、データストリームの停止を判断するとき、レスポンダ(撮像部1618)に対して、END_SESSION要求を送信し、データストリームを送信するための高速データ通信を停止させる。ただし、END_SESSION要求の送信は、データストリームの停止を判断(例えば、HEARTBEAT_NAK応答メッセージを受信、ERROR応答メッセージを受信、第1時間が経過)してから所定時間が経過した後に実行されてもよいし、推進状況が安全条件を満たすまで保留されてもよい。
これにより、リクエスタ(外部情報検出ユニット1617および/またはマイクロコンピュータ1631)は、例えば、データストリームを停止させても安全な状況下になった後に、データストリームを停止することができるので、推進制御に対する影響に起因する死傷事故の誘発を抑制することが可能となる。
図165は、HEARTBEAT機能の有効化(HBEAT_CAP=1)または無効化(HBEAT_CAP=0)を設定するResponder flag fields definitionsの構成例を示している。これはレスポンダの構成例であるが、同様にリクエスタは、Requester flag fields definitionsに対応し、Responder flag fields definitions内のValueをResponderからRequesterに置き換えたHBEAT_CAPに対応してもよい。図166は、HEARTBEAT要求メッセージの構成例を示している。図167は、HEARTBEAT_ACK応答メッセージの構成例を示している。図168は、HEARTBEAT_NAK応答メッセージの構成例を示している。図169は、END_SESSION要求メッセージの構成例を示している。なお、SPDMVersionのValueをV1.1またはTBDとする構成例を示しているが、他のValue(例えば、V1.2(=0x12)、V1.3(=0x13)、V2.0(=0x20))であってもよい。また、一般に公開されているSPDM Version 1.1.0からの変更がある場合、例えばHEARTBEAT周期に関するセッション終了を必須要件ではなく必須要件外とする場合、SPDMVersionを他のValueとしてもよい。つまり、SPDMVersionのOffset、Bytes、またはValueの少なくとも何れかの記述は、一般に公開されているSPDM規格の最新仕様に準じてもよい。同様に、この出願に関わる図表または説明に用いられるOffset、Field、Bytes(Size in bytes)、Value、Size、Bit、Description、Name、Error code、Error data、ExtendedErrorData、ID、Vendor ID length、Registry or standards body name、bit assign、Remarks、eDT、eVC、Addr、Initial Value、Setting Data、Attribute、Detail、Embedded Data Format Code、Security MACまたはSecurity protocolなどの少なくとも何れかの記述は、SPDM規格、DMTF内規格、MIPI内規格、または他規格の最新仕様に準じてもよい。
HEARTBEAT_NAK応答メッセージは、異常メッセージの特異メッセージである。また、HEARTBEAT_NAK応答メッセージは、例えばParam1やParam2などの領域を新たに定義して対応ビットを割り当てることによって、特異状況が通知されるようにしてもよい。すなわち、HEARTBEAT_NAK応答メッセージ内に、上述した何れかの他の特異メッセージが格納されてもよい。
<HEARTBEAT処理(その1)>
次に、図170のタイミングチャートを参照して、HEARTBEAT処理(その1)について説明する。
ここで、図170の左部は、CCIホスト(リクエスタ)である、アプリケーションプロセッサ1212に相当する外部情報検出ユニット1617および/またはマイクロコンピュータ1631の動作タイミングが表されている。
また、図170の右部は、CCIデバイス(レスポンダ)であるイメージセンサ1211に相当する撮像部1618の動作タイミングが表されている。
すなわち、ステップS1731,S1751の処理により、CCIホスト(リクエスタ)が、CCIデバイス(レスポンダ)に対してPSK_FINISH要求メッセージを送信する(ステップS507またはS525の一部と同様)。
ステップS1752,S1732の処理により、CCIデバイス(レスポンダ)が、CCIホスト(リクエスタ)に対してPSK_FINISH_RSP応答メッセージ送信する(ステップS507またはS525の一部と同様)。
この処理により、HEARTBEAT機能が有効化状態になる。
ステップS1733,S1753の処理により、CCIホスト(リクエスタ)が、HEARTBEAT要求メッセージをCCIデバイス(レスポンダ)に対して送信する。
これに応じて、ステップS1754,S1734の処理により、CCIデバイス(レスポンダ)が、HEARTBEAT_ACK応答メッセージをCCIホスト(リクエスタ)に対して送信する。
以降、CCIホスト(リクエスタ)は、HEARTBEAT周期(HeartbeatPeriod)毎にHEARTBEAT要求メッセージをCCIデバイス(レスポンダ)に対して送信し、これに応じて、CCIデバイス(レスポンダ)が、HEARTBEAT_ACK応答メッセージをCCIホスト(リクエスタ)に対して送信する処理が繰り返される。
すなわち、ステップS1733乃至S1736およびS1753乃至S1756で示されるように、この処理が継続的に繰り返されている限り、通信状態が正常に確立された状態であることが認識される。
ここで、CCIデバイス(レスポンダ)において異常が検出される状態になると、すなわち、通信状態が確立できていない状態になることを想定する。すると、ステップS1737,S1757の処理により、CCIホスト(リクエスタ)に送信されたHEARTBEAT要求メッセージに対して、ステップS1758,S1738の処理のように、CCIデバイス(レスポンダ)は、HEARTBEAT_NAK応答メッセージをCCIホスト(リクエスタ)に対して送信する。ただし、通信状態が確立できている状態で、異常メッセージとしてHEARTBEAT_NAK応答メッセージをCCIホスト(リクエスタ)に対して送信してもよい。
ステップS1738の処理により、CCIホスト(リクエスタ)がHEARTBEAT_NAK応答メッセージを受信すると、ステップS1739の処理によりセッション(および高速データ通信)の終了を宣言するEND_SESSION要求メッセージをCCIデバイス(レスポンダ)に対して送信し、セッション鍵を破棄またはクリーンアップする。ただし、CCIホスト(リクエスタ)は、END_SESSION要求メッセージを送信してから所定時間が経過した後、CCIデバイス(レスポンダ)からの後述するEND_SESSION_ACK応答メッセージ、END_SESSION_NAK応答メッセージ、またはERROR応答メッセージを受信した後、などの場合にセッション鍵を破棄またはクリーンアップしてもよい。
これに応じて、ステップS1759において、CCIデバイス(レスポンダ)は、END_SESSION要求メッセージを受信すると、ステップS1760において、END_SESSION_ACK応答メッセージをCCIホスト(リクエスタ)に送信し、セッション鍵を破棄またはクリーンアップして、セッション(および高速データ通信)を終了する。
この処理により、HEARTBEAT機能が無効化状態になる。
以上のような一連の処理により、CCIデバイスにおいて異常が発生しても、HEARTBEAT_NAK応答メッセージがCCIホストに供給され、一連の処理がなされた後に、セッション(および高速データ通信)が終了されて、データストリームが停止されることになるので、CCIデバイスが、CCIホストに対して無断でデータストリームを停止させるようなことが防止される。
なお、何らかの原因で、HEARTBEAT要求メッセージが、HEARTBEAT周期(HeartbeatPeriod)毎にCCIデバイス(レスポンダ)において受信できない状態になった場合については、CCIホスト(リクエスタ)がEND_SESSION要求メッセージをCCIデバイス(レスポンダ)に対して送信し、セッション(および高速データ通信)を終了させる。
すなわち、この場合も、セッション(および高速データ通信)の終了は、CCIホスト(リクエスタ)の判断により、END_SESSION要求メッセージが送信されることで実現されることになるので、やはり、CCIデバイスが、CCIホストに対して無断でデータストリームを停止させるようなことが防止される。
<HEARTBEAT処理(その2)>
CCIデバイス(レスポンダ)が異常を検出した場合や、所定時間(=第1時間)内にHEARTBEAT要求メッセージが受信されない場合でも、所定時間(=第2時間)内にCCIデバイス(レスポンダ)において、CCIホスト(リクエスタ)からのEND_SESSION要求メッセージが受信できないことがある。ここで、第1時間は、「所定値(例えば、2)×HEARTBEAT周期(HeartbeatPeriod)」に相当する時間であり、第2時間は、「所定値(例えば、2)×HEARTBEAT周期(HeartbeatPeriod)」に相当する時間が経過してから、END_SESSION要求メッセージが送信されるまでの更なる経過時間である。
そこで、所定時間(=第2時間)内にEND_SESSION要求メッセージがCCIデバイス(レスポンダ)で受信されない場合には、所定時間(=第2時間)内にEND_SESSION要求メッセージがCCIデバイス(レスポンダ)で受信されないことを示すEND_SESSION_NAK応答メッセージを定義し、CCIデバイス(レスポンダ)からCCIホスト(リクエスタ)に対して通知できるようにしてもよい。
図171は、所定時間(=第2時間)内にEND_SESSION要求メッセージがCCIデバイス(レスポンダ)で受信されないことを示すEND_SESSION_NAK応答メッセージの構成例を示している。
また、END_SESSION_NAK応答メッセージは、例えば、図171のParam1やParam2などの領域を新たに定義して対応ビットを割り当てることによって、特異状況が通知されるようにしてもよい。つまり、上述した何れかの特異メッセージまたは異常メッセージまたは付加情報が格納されてもよい。
次に、図172,図173のフローチャートを参照して、HEARTBEAT処理(その2)について説明する。
なお、図172のフローチャートは、CCIホスト(リクエスタ)の処理を表しており、図173のフローチャートは、CCIデバイス(レスポンダ)の処理を表している。
ステップS1771(図172)において、CCIホスト(リクエスタ)は、PSK_FINISH要求メッセージをCCIデバイス(レスポンダ)に送信する。
これに応じて、ステップS1791(図173)において、CCIデバイス(レスポンダ)は、PSK_FINISH要求メッセージが送信されてきたか否かに基づいて、PSK_FINISH_RSP応答メッセージをCCIホスト(リクエスタ)に送信するか否かを判定し、PSK_FINISH_RSP応答メッセージを送信すると判定するまで、同様の処理を繰り返す。
そして、ステップS1791において、PSK_FINISH_RSP応答メッセージを送信すると判定された場合、ステップS1792において、CCIデバイス(レスポンダ)は、PSK_FINISH_RSP応答メッセージをCCIホスト(リクエスタ)に送信する。
ここで、ステップS1772において、CCIホスト(リクエスタ)は、CCIデバイス(レスポンダ)からのPSK_FINISH_RSP応答メッセージを受信したか否かを判定し、PSK_FINISH_RSP応答メッセージを受信したと判定するまで、同様の処理を繰り返す。
ステップS1772において、PSK_FINISH_RSP応答メッセージを受信したと判定した場合、処理は、ステップS1773に進む。
ステップS1773において、CCIホスト(リクエスタ)は、HEARTBEAT要求メッセージをCCIデバイス(レスポンダ)に送信する。
これに対応して、ステップS1793(図173)において、CCIデバイス(レスポンダ)は、HEARTBEAT要求メッセージを受信したか否かを判定する。
ステップS1793において、HEARTBEAT要求メッセージを受信したと判定された場合、処理は、ステップS1794に進む。
ステップS1794において、CCIデバイス(レスポンダ)は、HEARTBEAT_ACK応答メッセージをCCIホスト(リクエスタ)に送信し、処理は、ステップS1793に戻る。
ここで、ステップS1774(図172)において、CCIホスト(リクエスタ)は、HEARTBEAT_ACK応答メッセージを受信したか否かを判定する。
ステップS1774において、HEARTBEAT_ACK応答メッセージを受信したと判定した場合、処理は、ステップS1773に戻る。
CCIホスト(リクエスタ)がHEARTBEAT要求をCCIデバイス(レスポンダ)に送信し、これに応じてCCIデバイス(レスポンダ)がHEARTBERAT_ACK応答メッセージをCCIホスト(リクエスタ)に返す処理を繰り返す限り、ステップS1773,S1774(図172)、およびステップS1793,S1794(図173)の処理が繰り返される。
すなわち、CCIホスト(リクエスタ)とCCIデバイス(レスポンダ)との通信が確立した状態が維持される限り、CCIホスト(リクエスタ)がHEARTBEAT周期(HeartbeatPeriod)でHEARTBEAT要求メッセージをCCIデバイス(レスポンダ)に送信し、これに応じてCCIデバイス(レスポンダ)がHEARTBERAT_ACK応答メッセージをCCIホスト(リクエスタ)に返す処理を繰り返される。
一方、ステップS1793(図173)において、HEARTBEAT要求メッセージを受信しないと判定された場合、処理は、ステップS1795に進む。
ステップS1795において、CCIデバイス(レスポンダ)は、異常診断により異常が検出されたか否かを判定する。
ステップS1795において、異常が検出されたと判定された場合、処理は、ステップS1796に進む。
ステップS1796において、CCIデバイス(レスポンダ)は、HEARTBERAT_NAK応答メッセージをCCIホスト(リクエスタ)に送信する。
これに対し、ステップS1774(図172)において、HEARTBERAT_ACK応答メッセージを受信しないと判定された場合、処理は、ステップS1775に進む。
ステップS1775において、CCIデバイス(レスポンダ)は、HEARTBERAT_NAK応答メッセージを受信したか否かを判定する。
ステップS1775において、HEARTBERAT_NAK応答メッセージを受信したと判定した場合、処理は、ステップS1777に進む。
ステップS1777において、CCIホスト(リクエスタ)は、END_SESSION要求メッセージをCCIデバイス(レスポンダ)に送信する。
ステップS1778において、CCIホスト(リクエスタ)は、セッション鍵を破棄またはクリーンアップして、セッション(および高速データ通信)を終了する。
これに対して、ステップS1798(図173)において、CCIデバイス(レスポンダ)は、第1時間が経過した後、さらに、第2時間が経過するまでの間にEND_SESSION要求メッセージを受信したか否かを判定する。
ステップS1798において、END_SESSION要求メッセージを受信したと判定した場合、処理は、ステップS1799に進む。
ステップS1799において、CCIデバイス(レスポンダ)は、END_SESSION_ACK応答メッセージをCCIホスト(リクエスタ)に送信する。
ステップS1800において、CCIデバイス(レスポンダ)は、セッション鍵を破棄またはクリーンアップして、セッション(および高速データ通信)を終了する。
すなわち、CCIデバイス(レスポンダ)において異常が検出されると、HEARTBERAT_NAK応答メッセージがCCIホスト(リクエスタ)に送信され、END_SESSION要求メッセージがCCIデバイス(レスポンダ)に送信され、これに応じてENDSESSION_ACK応答メッセージがCCIホスト(リクエスタ)に送信されて、CCIホスト(リクエスタ)、およびCCIデバイス(レスポンダ)の双方において、セッション鍵が破棄またはクリーンアップされて、セッション(および高速データ通信)が終了する。
また、ステップS1795(図173)において、異常が検出されない場合、処理は、ステップS1797に進む。
ステップS1797において、CCIデバイス(レスポンダ)は、直前のHEARTBERAT要求メッセージを受信してから第1時間が経過したか否かを判定する。
ステップS1797において、直前のHEARTBERAT要求メッセージを受信してから第1時間が経過していないと判定された場合、処理は、ステップS1793に戻る。
一方、ステップS1775において、HEARTBERAT_NAK応答メッセージを受信しない場合、処理は、ステップS1776に進む。
ステップS1776において、CCIデバイス(レスポンダ)は、直前のHEARTBERAT要求を送信してから第1時間が経過したか否かを判定する。
ステップS1776において、直前のHEARTBERAT要求メッセージを送信してから「所定値(例えば、2)×HEARTBEAT周期(HeartbeatPeriod)」に相当する第1時間が経過していないと判定された場合、処理は、ステップS1774に戻る。
すなわち、CCIデバイス(レスポンダ)において、HEARTBEAT要求メッセージを受信できない状態で、異常が検出されない場合、第1時間が経過するまでは、ステップS1774乃至S1776(図172)の処理、並びに、ステップS1793,S1795,S1797(図173)の処理が繰り返される。
そして、ステップS1776(図172)において、第1時間が経過すると、処理は、ステップS1777,S1778に進み、CCIホスト(リクエスタ)は、END_SESSION要求メッセージを送信して、セッション鍵を破棄またはクリーンアップして、セッション(および高速データ通信)を終了する。
また、CCIデバイス(レスポンダ)においては、ステップS1797(図173)において、第1時間が経過すると、処理は、ステップS1798に進む。
この場合、処理は、ステップS1798乃至S1800の処理がなされる。
したがって、CCIデバイス(レスポンダ)に異常が検出されない状態であっても、CCIデバイス(レスポンダ)において、HEARTBEAT要求メッセージが第1時間以上受信できない状態が継続されると、CCIホスト(リクエスタ)からのEND_SESSION要求メッセージに基づいて、セッション(および高速データ通信)が終了される。
さらに、ステップS1798において、前回HEARTBEAT要求メッセージを受信してから、第1時間が経過した後、さらに、第2時間が経過するまでの間にEND_SESSION要求メッセージを受信しないと判定した場合、処理は、ステップS1801に進む。
ステップS1801において、CCIデバイス(レスポンダ)は、END_SESSION_NAK応答メッセージをCCIホスト(リクエスタ)に送信する。
これにより、何らかの原因で、CCIデバイス(レスポンダ)において、END_SESSION要求メッセージが受信できない状態が、前回HEARTBEAT要求メッセージを受信してから、第1時間が経過した後、さらに、第2時間以上継続した場合には、CCIホスト(リクエスタ)に対してEND_SESSION_NAK応答メッセージが送信されて、セッション(および高速データ通信)が終了される。
この場合、CCIデバイス(レスポンダ)が自身の判断で高速データ通信を終了することになるが、CCIホスト(リクエスタ)に対してEND_SESSION_NAK応答メッセージが送信されるので、CCIホスト(リクエスタ)は、CCIデバイス(レスポンダ)において高速データ通信が終了したことを認識することができる。
また、この処理では、異常が検出された場合、所定時間(=第1時間)を待つ前に、CCIデバイス(レスポンダ)からCCIホスト(リクエスタ)に対して早急に異常が通知される。さらに、HEARTBEAT_NAK応答メッセージは、上述した特異メッセージ、異常メッセージまたは付加情報で置き換えられてもよい。なお、ステップS1797(第1時間が経過したか?)の処理とステップS1798(第2時間内にEND_SESSION要求を受信したか?)の処理との間にステップS1796(HEARTBEAT_NAK応答を送信する)と同様な処理を追加してもよい。つまり、第1時間が経過した場合、HEARTBEAT_NAK応答を送信してもよい。また、異常を検出した場合のHEARTBEAT_NAK応答と第1時間が経過した場合のHEARTBEAT_NAK応答とで、メッセージの一部(例えば、Param1、Param2)または全部が異なってもよい。
<HEARTBEAT処理(その3)>
HEARTBEAT_NAK応答、およびEND_SESSION_NAK応答メッセージは、少なくともいずれか一方を省略するようにしてもよい。
ここで、図174,図175のフローチャートを参照して、HEARTBEAT_NAK応答メッセージ、およびEND_SESSION_NAK応答メッセージの両方を省略するようにしたHEARTBEAT処理(その3)について説明する。
なお、図174のフローチャートは、CCIホスト(リクエスタ)の処理を表しており、図175のフローチャートは、CCIデバイス(レスポンダ)の処理を表している。
ここで、図174のステップS1811乃至S1817の処理は、図172のステップS1771乃至S1774、およびステップS1776乃至S1778の処理に対応しているので、その説明は省略する。また、図175のステップS1831乃至S1838の処理は、図173のステップS1791乃至S1794、およびステップS1797乃至S1800の処理に対応しているので、その説明は省略する。
すなわち、図174のCCIホスト(リクエスタ)の処理においては、異常診断結果に基づいた異常の有無に拘わらず、前回HEARTBEAT要求メッセージを受信してから第1時間が経過した場合については、CCIデバイス(レスポンダ)と通信できない状態になったものとみなし、END_SESSION要求メッセージが送信されて、セッション(および高速データ通信)が終了される。
また、図175のCCIデバイス(レスポンダ)の処理においては、前回HEARTBEAT_ACK応答メッセージを受信してから第1時間が経過するまでに次のHEARTBEAT_ACK応答メッセージが受信できない場合、CCIホスト(リクエスタ)と通信できない状態になったものとみなされ、さらに、第2時間が経過するまでに、END_SESSION要求メッセージが送信されてきたときについては、END_SESSION_ACK応答メッセージが送信されて、セッション(および高速データ通信)が終了される。
一方、さらに、第2時間が経過するまでに、END_SESSION要求メッセージが送信されてこないときについては、そのままセッション(および高速データ通信)が終了される。
以上の処理においても、何らかの原因で、HEARTBEAT要求メッセージが、HEARTBEAT周期(HeartbeatPeriod)毎にCCIデバイス(レスポンダ)において受信できない状態になった場合については、セッション(および高速データ通信)が終了させることが可能となる。
また、この処理においても、セッション(および高速データ通信)の終了は、基本的には、CCIホスト(リクエスタ)の判断により、END_SESSION要求メッセージが送信されることで実現されることになるので、やはり、CCIデバイスが、CCIホストに対して無断でデータストリームを停止させるようなことが防止される。ただし、この処理では、第2時間以上END_SESSION要求メッセージが受信できない場合については、CCIデバイス(レスポンダ)の判断で、高速データ通信からなるセッションが終了される。
<HEARTBEAT処理の応用例1>
CCIデバイス(レスポンダ)は、エラーや不具合などの異常が発生した場合に、CCIホスト(リクエスタ)にERROR応答メッセージを送信するようにしてもよい。
すなわち、CCIデバイス(レスポンダ)は、CCIホスト(リクエスタ)に対して、HEARTBEAT_NAK応答メッセージ、およびEND_SESSION_NAK応答メッセージの少なくとも何れかの代わりに、HEARTBEAT機能に関連するエラーまたは不具合に対応するERROR応答メッセージを送信してもよい。
ERROR応答メッセージは、例えば、図176で示されるような構成とされる。図176で示されるように、ERROR応答メッセージには、例えば、Param1(Error code)、Param2(Error data)およびExtendedErrorDataの領域が定義されるようにして、対応ビットを割り当てることにより、特異状況が通知されるようにしてもよい。
つまり、上述した何れかの特異メッセージ、異常メッセージ、および付加情報の少なくともいずれかが格納されてもよい。また、HEARTBEAT機能またはEND_SESSION要求メッセージなどに関連するエラーまたは不具合に対応するERROR応答メッセージとして、既存のError code(例えば、Unspecified、InvalidSession(Value:0x02、Description:The record layer used an invalid session ID.、Error data:This shall be the invalid session ID.、ExtendedErrorData:No extended error data is provided.))が用いられてもよい。
図177は、Error codeとError dataの設定例を示している。ただし、Reserved領域またはVendor/Other Standards Defined領域が、HEARTBEAT機能またはEND_SESSION要求メッセージなどに関連するエラーまたは不具合に対応するエラー領域として新たに定義されてもよい。また、一般に公開されているSPDM規格によって定義されるSPDM仕様内のError code and error data表内の設定が用いられてもよい。また、図178は、ExtendedErrorDataの設定例を示している。
<HEARTBEAT処理の応用例2>
HEARTBEAT要求メッセージを、VENDOR_DEFINED_REQUEST要求メッセージで疑似的に定義すると共に、HEARTBEAT_ACK応答(およびHEARTBEAT_NAK応答)メッセージを、VENDOR_DEFINED_RESPONSE応答メッセージで疑似的に定義することにより、HEARTBEAT要求およびHEARTBEAT_ACK応答の代わりに用いることで、疑似的にHEARTBEAT機能を実現するようにしてもよい。
以降においては、VENDOR_DEFINED_REQUEST要求メッセージおよびVENDOR_DEFINED_RESPONSE応答メッセージにより実現される、疑似的なHEARTBEAT機能を、単に、疑似HEARTBEAT機能と称する。
すなわち、疑似HEARTBEAT機能が用いられる場合、HEARTBEAT機能は無効化(HBEAT_CAP=0)することが可能となる。
なお、図179は、疑似HEARTBEAT機能が実現される場合のRegistry or standards body IDの設定例を示している。ただし、一般に公開されているSPDM規格によって定義されるSPDM仕様内のRegistry or standards body ID表内の設定が用いられてもよい。つまり、本技術は、DMTF(Distributed Management Task Force)、TCG(Trusted Computing Group)、USB(Universal Serial Bus)、PCI-SIG(Peripheral Component Interconnect Special Interest Group)、IANA(Internet Assigned Numbers Authority)、HDBaseT、MIPI(Mobile Industry Processor Interface)、CXL(Compute Express Link)、JEDEC(Joint Electron Device Engineering Council)などのうちの少なくとも何れかのstandards bodyが定義する規格内に適用されてもよいし、これらのうちの少なくとも何れかのstandards bodyまたは他のstandards bodyが定義する規格内のHEARTBEAT同等機能またはEND_SESSION同等機能に適用されてもよい。また、図180,図181は、それぞれ疑似HEARTBEAT機能が実現される場合のVENDOR_DEFINED_REQUEST要求メッセージおよびVENDOR_DEFINED_RESPONSE応答メッセージの設定例を示している。ただし、疑似HEARTBEAT機能は、SPDM規格に準じる他メッセージまたはCCI規格に準じるメッセージまたは他規格に準じるメッセージなどで定義されてもよい。同様に、END_SESSION要求メッセージを、VENDOR_DEFINED_REQUEST要求メッセージで疑似的に定義すると共に、END_SESSION_ACK応答(およびEND_SESSION_NAK応答)メッセージを、VENDOR_DEFINED_RESPONSE応答メッセージで疑似的に定義することにより、END_SESSION要求およびEND_SESSION_ACK応答の代わりに用いることで、疑似的にEND_SESSION機能を実現するようにしてもよい。以降においては、VENDOR_DEFINED_REQUEST要求メッセージおよびVENDOR_DEFINED_RESPONSE応答メッセージにより実現される、疑似的なEND_SESSION機能を、単に、疑似END_SESSION機能と称する。ただし、疑似END_SESSION機能は、SPDM規格に準じる他メッセージまたはCCI規格に準じるメッセージまたは他規格に準じるメッセージなどで定義されてもよい。
<コンピュータの構成例>
図182は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)2201,ROM(Read Only Memory)2202,RAM(Random Access Memory)2203、およびEEPROM(Electronically Erasable and Programmable Read Only Memory)2204は、バス2205により相互に接続されている。バス2205には、さらに、入出力インタフェース2206が接続されており、入出力インタフェース2206が外部に接続される。
以上のように構成されるコンピュータでは、CPU2201が、例えば、ROM2202およびEEPROM2204に記憶されているプログラムを、バス2205を介してRAM2203にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ(CPU2201)が実行するプログラムは、ROM2202に予め書き込んでおく他、入出力インタフェース2206を介して外部からEEPROM2204にインストールしたり、更新したりすることができる。
ここで、本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含む。
また、プログラムは、1のコンピュータ(プロセッサ)により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
さらに、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
<構成の組み合わせ例>
なお、本技術は以下のような構成も取ることができる。
<1> 他の情報処理装置と通信を行って、画像データを含むフレームのデータを、自らと前記他の情報処理装置との間で所定の方向に送信する高速データ送信する際に、
拡張パケットヘッダおよびパケットデータを含む拡張パケットと、
前記自ら、前記他の情報処理装置、および前記画像データの少なくともいずれかが正常時または通常時とは異なる状態であることを通知可能な特異メッセージとを
前記他の情報処理装置に送信する、または、前記他の情報処理装置から受信する通信部と、
セッション鍵を導出し、前記特異メッセージの保護データの生成、検証、および復号の少なくともいずれかを実行する保護部とを備え、
前記画像データは、前記パケットデータ内に格納され、
前記画像データおよび前記特異メッセージは、前記通信に係る共通の通信経路の一部または全部を介して、異なるタイミングで送信される
情報処理装置。
<2> 前記通信部は、前記高速データ送信に関連する前記所定の方向に対して逆方向の低速コマンド送信を送信または受信し、
前記高速データ送信は、前記低速コマンド送信と比較して高速であって、前記フレームが開始されることを示すフレームスタートの送信、および、前記フレームが終了されることを示すフレームエンドの送信が少なくとも行われ、
前記フレームは、複数個が連続的かつ周期的に送信可能であり、前記フレームエンドと次の前記フレームスタートとの間に前記画像データが送信されないフレームブランキングを含む
<1>に記載の情報処理装置。
<3> 前記低速コマンド送信は、前記自らまたは前記他の情報処理装置に情報の書き込みを要求する書き込み命令、読み出しを要求する読み出し命令、または前記読み出し命令に応じた読み出し応答の送信を含み、
前記特異メッセージは、前記書き込み命令、前記読み出し命令、または前記読み出し応答として、前記フレームブランキング期間内に送信される
<2>に記載の情報処理装置。
<4> 前記フレームは、前記フレームスタートと前記フレームエンドとの間の期間内に前記高速データ送信される埋込データを含み、
前記埋込データは、前記画像データに関連するメタデータを含み、
前記特異メッセージは、前記埋込データ内に格納されて送信される
<2>に記載の情報処理装置。
<5> 前記低速コマンド送信は、前記自らまたは前記他の情報処理装置に情報の書き込みを要求する書き込み命令、読み出しを要求する読み出し命令、または前記読み出し命令に応じた読み出し応答の送信を含み、
前記フレームは、前記フレームスタートと前記フレームエンドとの間に前記画像データが送信されないラインブランキングを含み、
前記特異メッセージは、前記書き込み命令、前記読み出し命令、または前記読み出し応答として、前記ラインブランキングの期間内に送信される
<2>に記載の情報処理装置。
<6> 前記特異メッセージは、前記フレームスタートの内部または前記フレームエンドの内部に格納されて送信される
<2>に記載の情報処理装置。
<7> 前記フレームは、第1バーチャルチャネルである前記画像データとは異なる第2バーチャルチャネルのデータを含み、
前記特異メッセージは、前記第2バーチャルチャネルのデータ内に格納されて送信される
<1>乃至<6>のいずれかに記載の情報処理装置。
<8> 前記拡張パケットは、拡張パケットフッタをさらに含み、
前記特異メッセージは、前記画像データが格納される拡張パケット内の拡張パケットヘッダ内に格納され、
前記保護データは、前記画像データが格納される拡張パケット内の拡張パケットフッタ内に格納されて送信される
<1>乃至<7>のいずれかに記載の情報処理装置。
<9> 前記通信部は、
HEARTBEAT要求または疑似HEARTBEAT要求の送信または受信と、
前記HEARTBEAT要求または前記疑似HEARTBEAT要求に応じた所定時間内のHEARTBEAT_ACK応答または疑似HEARTBEAT_ACK応答の受信または送信とを含み、
前記自らまたは前記他の情報処理装置は、必要に応じて、前記所定時間内に、前記特異メッセージを前記通信の相手に送信する
<1>乃至<8>のいずれかに記載の情報処理装置。
<10> 前記通信部は、
HEARTBEAT要求または疑似HEARTBEAT要求の送信または受信と、
前記HEARTBEAT要求または前記疑似HEARTBEAT要求に応じた所定時間内のHEARTBEAT_ACK応答または疑似HEARTBEAT_ACK応答の受信または送信とを含み、
前記HEARTBEAT要求または前記疑似HEARTBEAT要求が正常に受信されない場合、前記高速データ送信を停止せず、前記HEARTBEAT_ACK応答または前記疑似HEARTBEAT_ACK応答の送信を停止する
<1>乃至<8>のいずれかに記載の情報処理装置。
<11> 前記HEARTBEAT要求および前記HEARTBEAT_ACK応答に非対応することを示すビットフラグが前記自らおよび前記他の情報処理装置の少なくともいずれかに設定され、
前記通信部は、
前記疑似HEARTBEAT要求の送信または受信と、
前記疑似HEARTBEAT要求に応じた所定時間内の前記疑似HEARTBEAT_ACK応答の受信または送信とを含む
<10>に記載の情報処理装置。
<12> 前記画像データを撮像または表示する画素と、
前記画素または前記画像データに対する妨害の有無または前記妨害の可能性を検出する妨害検出部をさらに含み、
前記特異メッセージは、前記妨害検出部の検出結果に関連するメッセージである
<1>乃至<11>のいずれかに記載の情報処理装置。
<13> 前記通信経路に対する障害の有無または前記障害の可能性を検出する障害検出部をさらに備え、
前記特異メッセージは、前記障害検出部の検出結果に関連するメッセージである
<1>乃至<12>のいずれかに記載の情報処理装置。
<14> 前記保護部に対する侵害の有無または前記侵害の可能性を検出する侵害検出部をさらに含み、
前記特異メッセージは、前記侵害検出部の検出結果に関連するメッセージである
<1>乃至<13>のいずれかに記載の情報処理装置。
<15> 前記自らの内部温度を検出する温度検出部をさらに含み、
前記特異メッセージは、前記温度検出部の検出結果に関連するメッセージである
<1>乃至<14>のいずれかに記載の情報処理装置。
<16> 前記高速データ送信は、前記特異メッセージが所定停止条件を満たした後に、前記自らにより停止される
<1>乃至<15>のいずれかに記載の情報処理装置。
<17> 前記自らおよび前記他の情報処理装置は、前記画像データを用いて直接的または間接的に必要に応じて推進を制御する推進部を備えた推進装置の一部であり、
前記高速データ送信は、前記推進装置が所定の停止条件を満たした後に、前記推進装置により停止される
<1>乃至<16>のいずれかに記載の情報処理装置。
<18> 前記自らおよび前記他の情報処理装置は、前記画像データを用いて直接的または間接的に必要に応じて推進を制御する推進部を備えた推進装置の一部であり、
前記推進装置は、前記画像データとは異なる他のデータを取得または表示する処理構成を備え、
前記特異メッセージが受信された場合、前記推進部は、前記画像データよりも前記他のデータを優先して用いて推進を制御する
<1>乃至<17>のいずれかに記載の情報処理装置。
<19> 他の情報処理装置と通信を行って、画像データを含むフレームのデータを、自らと前記他の情報処理装置との間で所定の方向に送信する高速データ送信する際に、
拡張パケットヘッダおよびパケットデータを含む拡張パケットと、
前記自ら、前記他の情報処理装置、および前記画像データの少なくともいずれかが正常時または通常時とは異なる状態であることを通知可能な特異メッセージとを
前記他の情報処理装置に送信する、または、前記他の情報処理装置から受信する通信部と、
セッション鍵を導出し、前記特異メッセージの保護データの生成、検証、および復号の少なくともいずれかを実行する保護部とを備え、
前記画像データは、前記パケットデータ内に格納され、
前記画像データおよび前記特異メッセージは、前記通信に係る共通の通信経路の一部または全部を介して、異なるタイミングで送信される
情報処理装置を備える移動体装置。
<20> 他の情報処理装置と通信を行って、画像データを含むフレームのデータを、自らと前記他の情報処理装置との間で所定の方向に送信する高速データ送信する際に、
拡張パケットヘッダおよびパケットデータを含む拡張パケットと、
前記自ら、前記他の情報処理装置、および前記画像データの少なくともいずれかが正常時または通常時とは異なる状態であることを通知可能な特異メッセージとを
前記他の情報処理装置に送信する、または、前記他の情報処理装置から受信する通信部と、
セッション鍵を導出し、前記特異メッセージの保護データの生成、検証、および復号の少なくともいずれかを実行する保護部とを備え、
前記画像データは、前記パケットデータ内に格納され、
前記画像データおよび前記特異メッセージは、前記通信に係る共通の通信経路の一部または全部を介して、異なるタイミングで送信される
情報処理装置を備える通信システム。
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。