IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝デバイス&ストレージ株式会社の特許一覧

<>
  • 特許-半導体装置及びそれを含むシステム 図1
  • 特許-半導体装置及びそれを含むシステム 図2
  • 特許-半導体装置及びそれを含むシステム 図3
  • 特許-半導体装置及びそれを含むシステム 図4
  • 特許-半導体装置及びそれを含むシステム 図5
  • 特許-半導体装置及びそれを含むシステム 図6
  • 特許-半導体装置及びそれを含むシステム 図7
  • 特許-半導体装置及びそれを含むシステム 図8
  • 特許-半導体装置及びそれを含むシステム 図9
  • 特許-半導体装置及びそれを含むシステム 図10
  • 特許-半導体装置及びそれを含むシステム 図11
  • 特許-半導体装置及びそれを含むシステム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】半導体装置及びそれを含むシステム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20231218BHJP
   G06F 21/31 20130101ALI20231218BHJP
【FI】
G06F11/36 164
G06F21/31
【請求項の数】 8
(21)【出願番号】P 2020157148
(22)【出願日】2020-09-18
(65)【公開番号】P2022050944
(43)【公開日】2022-03-31
【審査請求日】2022-06-22
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】石川 悠司
【審査官】青木 重徳
(56)【参考文献】
【文献】国際公開第2012/172976(WO,A1)
【文献】中国特許出願公開第105025292(CN,A)
【文献】特開2011-022880(JP,A)
【文献】特開2015-130001(JP,A)
【文献】特開2018-128874(JP,A)
【文献】特開2017-146804(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 21/31
(57)【特許請求の範囲】
【請求項1】
第1演算回路を含む第1システムと、
前記第1システムにおけるデバッグ動作を制御する第2システムと
を備える、半導体装置であって、
前記半導体装置は、通常モードとデバッグモードとを含み、
前記半導体装置が前記デバッグモードであ、外部から受信した第1キーと、前記第2システムが保持する第2キーとが対応し、且つデバッグコマンドで指定されるデバッグ対象が、アクセス権限が要求されるアドレス範囲ではない場合に、前記第2システムは、前記第1演算回路に前記デバッグコマンドを送信し、
前記半導体装置が前記デバッグモードであり、前記第1キーと、前記第2キーとが対応し、且つ前記デバッグコマンドで指定される前記デバッグ対象が、アクセス権限が要求されるアドレス範囲である場合に、前記第2システムは、外部から受信した第3キーに基づいて、前記第1演算回路に前記デバッグコマンドを送信する、半導体装置。
【請求項2】
前記第2システムは、第2演算回路を含み、
前記半導体装置が前記デバッグモードであ且つ前記第1キーと、前記第2キーとが対応する場合に、前記第2演算回路は、前記第2システムを、外部から前記デバッグコマンドを受信可能な状態とする、請求項1記載の半導体装置。
【請求項3】
前記第2システムは、外部とネットワークを介した通信を行う通信ポートを更に含み、
前記第2システムは、前記通信ポートを介して外部から前記デバッグコマンドを受信する、請求項2記載の半導体装置。
【請求項4】
前記第2システムは、テーブルを更に含み、
前記半導体装置が前記デバッグモードであり、前記第1キーと、前記第2キーとが対応し、前記デバッグコマンドで指定される前記デバッグ対象が、アクセス権限が要求されるアドレス範囲であ且つ前記第3キーと、前記テーブル内の、前記デバッグコマンドで指定されるアドレス範囲に対応する第4キーとが対応する場合に、前記第2システムは、前記第1演算回路に前記デバッグコマンドを送信する、請求項記載の半導体装置。
【請求項5】
電源投入時、前記第1キーを受信しない場合、前記第2システムは前記通常モードを選択し、前記第1キーを受信した場合、前記第2システムは前記デバッグモードを選択する、請求項1記載の半導体装置。
【請求項6】
前記第2システムは、スイッチを更に含み、
電源投入時、前記スイッチがオフ状態の場合、前記第2システムは前記通常モードを選択し、前記スイッチがオン状態の場合、前記第2システムは前記デバッグモードを選択する、請求項1記載の半導体装置。
【請求項7】
前記スイッチがオフ状態からオン状態に切り替えられた場合、前記第2システムは前記デバッグモードを選択し、前記スイッチがオン状態からオフ状態に切り替えられた場合、前記第2システムは前記通常モードを選択する、請求項記載の半導体装置。
【請求項8】
第1演算回路を含む第1システムと、
前記第1システムにおけるデバッグ動作を制御する第2システムと
を備える、半導体装置と、
前記第2システムとの間でネットワークを介して通信可能なコンピュータと
を備える、システムであって、
前記半導体装置は、通常モードとデバッグモードとを含み、
前記半導体装置が前記デバッグモードであ、外部から受信した第1キーと、前記第2システムが保持する第2キーとが対応し、且つデバッグコマンドで指定されるデバッグ対象が、アクセス権限が要求されるアドレス範囲ではない場合に、前記第2システムは、前記第1演算回路に前記デバッグコマンドを送信し、
前記半導体装置が前記デバッグモードであり、前記第1キーと、前記第2キーとが対応し、且つ前記デバッグコマンドで指定される前記デバッグ対象が、アクセス権限が要求されるアドレス範囲である場合に、前記第2システムは、外部から受信した第3キーに基づいて、前記第1演算回路に前記デバッグコマンドを送信する、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、半導体装置及びそれを含むシステムに関する。
【背景技術】
【0002】
半導体装置において、プログラムのデバッグを行う技術が知られている。現在、半導体装置は、様々なシステムに組み込まれており、その例としては、車載システムや民生のシステム等が挙げられる。車載システムでは、高い信頼性及び安全性が求められるため、プログラムのデバッグを行う需要がある。また、民生のシステムにおいてもプログラムのデバッグを行う需要がある。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第4814319号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
セキュアなリモートデバッグを実現できる半導体装置、及びそれを含むシステムを提供する。
【課題を解決するための手段】
【0005】
本実施形態の半導体装置は、第1演算回路を含む第1システムと、第1システムにおけるデバッグ動作を制御する第2システムとを備える。半導体装置は、通常モードとデバッグモードとを含む。半導体装置がデバッグモードであ、外部から受信した第1キーと、第2システムが保持する第2キーとが対応し、且つデバッグコマンドで指定されるデバッグ対象が、アクセス権限が要求されるアドレス範囲ではない場合に、第2システムは、第1演算回路にデバッグコマンドを送信する。半導体装置がデバッグモードであり、第1キーと、第2キーとが対応し、且つデバッグコマンドで指定されるデバッグ対象が、アクセス権限が要求されるアドレス範囲である場合に、第2システムは、外部から受信した第3キーに基づいて、第1演算回路にデバッグコマンドを送信する。
【図面の簡単な説明】
【0006】
図1図1は、第1実施形態に係る半導体装置を含む車載システムのブロック図。
図2図2は、第1実施形態に係る半導体装置に含まれるセキュアストレージに記憶されているプログラム等を示す図。
図3図3は、第1実施形態に係る半導体装置の動作を示すフローチャート。
図4図4は、第1実施形態に係る半導体装置の動作を説明する図。
図5図5は、第1実施形態に係る半導体装置のデバッグ動作を示すフローチャート。
図6図6は、第1実施形態に係る半導体装置のデバッグ動作を説明する図。
図7図7は、第2実施形態に係る半導体装置に含まれるセキュアストレージに記憶されているプログラム等を示す図。
図8図8は、第2実施形態に係る半導体装置に含まれるセキュアストレージに記憶されているデバッグ情報テーブルの概念図。
図9図9は、第2実施形態に係る半導体装置のデバッグ動作を示すフローチャート。
図10図10は、第2実施形態に係る半導体装置のデバッグ動作を示すフローチャート。
図11図11は、第2実施形態に係る半導体装置のデバッグ動作を説明する図。
図12図12は、第3実施形態に係る半導体装置を含む車載システムのブロック図。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【0008】
1.第1実施形態
第1実施形態に係る半導体装置について説明する。以下では、半導体装置として、画像認識等を行う車載システムに含まれるシステムLSI(以下、「Large Scale Integrated circuit:LSI」と表記する)を例に挙げて説明する。
【0009】
1.1 構成
1.1.1 車載システムの全体構成
まず、本実施形態に係るLSIを含む車載システム(以下、単に「システム」と表記する)の全体構成について、図1を用いて説明する。図1は、本実施形態に係るLSIを含むシステムの全体構成を示すブロック図である。
【0010】
図1に示すように、システム1は、LSI100及びホストPC(Personal Computer)200を含む。なお、図1に示すシステム1では、LSI100に入力画像を送信するカメラ、カメラからの入力画像を受信するLSI100内の画像入力インターフェース(I/F)、出力画像を送信するLSI100内の画像出力I/F、及びLSI100からの出力画像を表示するパネル等の構成要素は省略されている。LSI100は、特定のデータ処理(例えば画像認識等)、秘匿性が必要な処理(例えば暗号化等)、及びLSI100内のプログラムのデバッグ等を行う。ホストPC200は、図示せぬネットワークを介した通信によってLSI100に接続され、LSI100内のプログラムのデバッグを命令するコマンド(以下、「デバッグコマンド」と表記する)等をLSI100に送信する。
【0011】
LSI100は、セキュアサブシステム110、ノンセキュアサブシステム120、ブリッジ130、及びデバッグバスブリッジ140を含む。なお、本実施形態に係るLSI100は、通常モードとデバッグモードとを含む。本明細書において、通常モードとは、アプリケーションプログラムの実行等の通常動作を行う動作モードであり、デバッグモードとは、ホストPC200等の外部デバイスからLSI100内のプログラムのデバッグを実行する動作モードである。
【0012】
セキュアサブシステム110は、セキュアCPU111、セキュアストレージ115、セキュアRAM116、及びセキュアポート117を含む。セキュアCPU111、セキュアストレージ115、セキュアRAM116、及びセキュアポート117は、セキュアバスにそれぞれ接続されている。図1において、セキュアバスは実線で表されている。
【0013】
セキュアサブシステム110は、例えばLSI100全体を管理するための処理、並びに暗号化処理、及び署名処理等を行う。また、セキュアサブシステム110は、例えばセキュアポート117を介してホストPC200と通信し、LSI100内のプログラムのデバッグの制御等を行う。セキュアサブシステム110は、電源投入時、ノンセキュアサブシステム120よりも先に起動する。
【0014】
セキュアCPU111は、LSI100全体の動作を制御する。セキュアCPU111は、3つの機能(回路)ブロック(セキュアブートローダ112、セキュアサービス113、及びセキュアデバッガ114)を含む。なお、セキュアブートローダ112、セキュアサービス113、及びセキュアデバッガ114は、プログラム(ファームウェア)により実現される場合に限定されない。セキュアブートローダ112、セキュアサービス113、及びセキュアデバッガ114は、セキュアサブシステム110内に設けられた、セキュアCPU111とは別の専用回路で実現されてもよい。
【0015】
電源投入時、セキュアCPU111は、セキュアブートローダ112の実行プログラムprog_loaderをセキュアストレージ115からセキュアRAM116にロードし、起動する。これにより、セキュアブートローダ112は動作を開始する。また、セキュアCPU111は、ノンセキュアサブシステム120内のアプリケーションCPU121を起動させる。アプリケーションCPU121の詳細は後述する。
【0016】
セキュアブートローダ112は、セキュアストレージ115に記憶されたセキュアブートローダ112の実行プログラムprog_loaderに基づく演算処理を行う。
【0017】
より具体的には、セキュアブートローダ112は、セキュアCPU111に、セキュアサービス113の実行プログラムprog_serviceをセキュアストレージ115からセキュアRAM116にロードさせ、アプリケーションプログラム及びライブラリをセキュアストレージ115からDRAM123にロードさせる。そして、セキュアブートローダ112は、ロードしたセキュアサービス113の実行プログラムprog_serviceをセキュアCPU111に起動させる。これにより、セキュアサービス113は動作を開始する。セキュアブートローダ112は、アプリケーションプログラム及びライブラリをアプリケーションCPU121に起動させる。また、セキュアブートローダ112は、デバッグモード時に、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger及びデバッガキーをセキュアストレージ115からセキュアRAM116にロードさせる。デバッガキーの詳細は後述する。
【0018】
セキュアサービス113は、セキュアストレージ115に記憶されたセキュアサービス113の実行プログラムprog_serviceに基づく演算処理を行う。
【0019】
例えば、セキュアサービス113は、アプリケーションプログラムを実行しているアプリケーションCPU121からの要求に基づいて、暗号化処理、及び署名処理等を行う。
【0020】
また、セキュアサービス113は、デバッグモード時に、セキュアデバッガ114の実行プログラムprog_debuggerをセキュアCPU111に起動させる。これにより、セキュアデバッガ114は動作を開始する。より具体的には、セキュアサービス113は、セキュアブートローダ112がホストPC200内の図示せぬデバッガユーザインターフェース(UI)からユーザキーを受信すると、セキュアRAM116にロードされているデバッガキーとを比較する。そして、セキュアサービス113は、ユーザキーとデバッガキーとが対応する場合、実行プログラムprog_debuggerをセキュアCPU111に起動させ、ユーザキーとデバッガキーとが対応しない場合、実行プログラムprog_debuggerをセキュアCPU111に起動させない。デバッガUIは、デバッグを行う際に、ユーザが情報の入力や受け取りを行うためのインターフェースである。ユーザキーは、セキュアポート117を介してホストPC200からアプリケーションプログラムのデバッグを実行しようとしているユーザが、実行プログラムprog_debuggerを起動するために入力するキーである。なお、本明細書において、「あるキーと別のキーとが対応する」とは、あるキーと別のキーとが一致する(完全一致)、あるキーの一部と別のキーとが一致する、またはあるキーの一部と別のキーの一部とが一致する等、あるキーと別のキーとが何らかの対応関係を有することを意味する。
【0021】
セキュアデバッガ114は、セキュアストレージ115に記憶されたセキュアデバッガ114の実行プログラムprog_debuggerに基づく演算処理を行う。
【0022】
例えば、セキュアデバッガ114は、デバッグモード時に、セキュアポート117を介してホストPC200からデバッグコマンドを受信すると、受信したデバッグコマンドをアプリケーションCPUに送信し、アプリケーションCPU121の動作を制御する。デバッグコマンドは、デバッグ対象のアドレス範囲等を指定する。
【0023】
セキュアストレージ115は、不揮発性メモリであり、セキュアプログラム、及びアプリケーションプログラム等を記憶する。
【0024】
セキュアRAM116は、揮発性メモリであり、セキュアストレージ115からロードされたセキュアプログラム、及びセキュアプログラム実行時の一時データ等を記憶する。
【0025】
セキュアポート117は、ホストPC200等の外部デバイスとネットワークを介して通信する。通信に使用されるプロトコルの例としては、例えばCAN(Controller Area Network)等が挙げられる。
【0026】
ノンセキュアサブシステム120は、アプリケーションCPU(以下、「App CPU」と表記する)121、ハードウェアアクセラレータ122、及びDRAM123を含む。App CPU121、ハードウェアアクセラレータ122、及びDRAM123は、メインバスにそれぞれ接続されている。図1において、メインバスは実線で表されている。ノンセキュアサブシステム120は、例えば図示せぬ画像入力I/Fを介して図示せぬカメラから入力画像を受信し、画像認識処理、及び人物検出処理等を行う。
【0027】
App CPU121は、ノンセキュアサブシステム120の動作を制御する。App CPU121は、例えばセキュアストレージ115からDRAM123にロードされたアプリケーションプログラムを実行する。App CPU121は、例えばハードウェアアクセラレータ122の動作を制御する。また、App CPU121は、アプリケーションプログラムのデバッグを止めたり、デバッグ中の内部データを見るための機能ブロックとして、図示せぬデバッグユニットを含む。
【0028】
ハードウェアアクセラレータ122は、例えば画像処理(特定の画像の変形、特定の画像の特徴点の抽出、及び画像認識等)を行う。ハードウェアアクセラレータ122の例としては、例えばDSP(Digital Signal Processor)等が挙げられる。
【0029】
DRAM123は、揮発性メモリであり、セキュアストレージ115からロードされたアプリケーションプログラム、及びアプリケーションプログラム実行時の一時データ等を記憶する。
【0030】
ブリッジ130は、セキュアバスとメインバスを接続する。ブリッジ130は、セキュアサブシステム110からノンセキュアサブシステム120へのアクセスを許可する。このため、セキュアサブシステム110は、ブリッジ130を介して、ノンセキュアサブシステム120内のプログラムの実行、ノンセキュアサブシステム120へのデータのロード、ノンセキュアサブシステム120からのデータの読み取り、及びノンセキュアサブシステム120へのデータの書き込み等を行うことができる。また、ブリッジ130は、ノンセキュアサブシステム120からセキュアサブシステム110へのアクセスを許可しない。このため、ノンセキュアサブシステム120は、セキュアサブシステム110内のプログラムの実行、セキュアサブシステム110へのデータのロード、セキュアサブシステム110からのデータの読み取り、及びセキュアサブシステム110へのデータの書き込み等を行うことができない。
【0031】
デバッグバスブリッジ140は、セキュアバスとデバッグバスとを接続する。デバッグバスは、App CPU121及びメインバスに接続されている。図1において、デバッグバスは破線で表されている。デバッグバスブリッジ140は、セキュアサブシステム110からノンセキュアサブシステム120のデバッグバスへのアクセスを許可するが、ノンセキュアサブシステム120からセキュアサブシステム110へのアクセスを許可しない。デバッグモードのときに、セキュアバス、デバッグバスブリッジ140、及びデバッグバスを介して、セキュアサブシステム110からApp CPU121の動作の制御が可能となる。
【0032】
ブリッジ130とデバッグバスブリッジ140には、それぞれ異なるアドレス範囲がマッピングされている。例えば、あるアドレス範囲は、ブリッジ130にマッピングされ、ブリッジ130を介したアクセスが可能であり、他のアドレス範囲は、デバッグバスブリッジ140にマッピングされ、デバッグバスブリッジ140を介したアクセスが可能である。
【0033】
ホストPC200は、セキュアポート117との間でネットワークを介した通信を行う。ホストPC200は、例えばセキュアポート117にデバッグコマンド等を送信する。
【0034】
1.1.2 セキュアストレージ115内のプログラム等
次に、本実施形態に係るLSI100に含まれるセキュアストレージ115に記憶されているプログラム等の詳細について、図2を用いて説明する。図2は、本実施形態に係るLSI100に含まれるセキュアストレージ115に記憶されているプログラム等の一例を示す図である。
【0035】
セキュアストレージ115は、セキュアプログラム、デバッガキー、アプリケーションプログラム、及びライブラリを記憶する。
【0036】
セキュアプログラムは、セキュアブートローダ112の実行プログラムprog_loader、セキュアサービス113の実行プログラムprog_service、及びセキュアデバッガ114の実行プログラムprog_debuggerを含む。セキュアCPU111は、セキュアストレージ115に記憶されたセキュアプログラムをセキュアRAM116に展開する。セキュアサブシステム110は、セキュアCPU111が、セキュアRAM116に展開されたセキュアプログラムを実行することにより、セキュアブートローダ112、セキュアサービス113、及びセキュアデバッガ114を備えるシステムとして機能する。
【0037】
デバッガキーは、セキュアデバッガ114の実行プログラムprog_debuggerを起動するためのキーである。デバッガキーの例としては、例えば特定のユーザID、及びパスワード等が挙げられる。
【0038】
アプリケーションプログラムは、アプリケーションタスク、スケジューラの実行プログラム、及びソフトウェアIP(Intellectual Property)を含む。スケジューラは、App CPU121内に含まれる機能ブロックであるが、図1では省略されている。なお、スケジューラは、ノンセキュアサブシステム120内に設けられた、App CPU121とは別の専用回路で実現されてもよい。スケジューラは、スケジューラの実行プログラムに基づく演算処理を行う。
【0039】
アプリケーションタスクは、各種データ処理が実装されたものである。スケジューラの実行プログラムは、アプリケーションタスクの実行順序を管理するプログラムである。ソフトウェアIPは、特定のデータ処理が実装されたものである。
【0040】
ライブラリは、アプリケーションプログラムに用いられる関数、及びサブルーチン等を集めたものである。
【0041】
1.2 動作
次に、本実施形態に係るLSI100の動作について、図3及び図4を用いて説明する。図3は、LSI100の動作を示すフローチャートである。図4は、図3のステップS10~S15におけるLSI100の動作を説明する図である。
【0042】
LSI100は、まず、電源投入時の動作(後述する図3のステップS10~S16)を行った後、通常動作(後述する図3のステップS17)、またはデバッグ動作(後述する図3のステップS18)を行う。
【0043】
図3に示すように、電源投入時、セキュアCPU111は、セキュアブートローダ112の実行プログラムprog_loaderをロードする(ステップS10)。より具体的には、図4に示すように、セキュアCPU111は、セキュアストレージ115からセキュアRAM116に、セキュアブートローダ112の実行プログラムprog_loaderをロードする。そして、セキュアCPU111は、ロードしたセキュアブートローダ112の実行プログラムprog_loaderを起動する(ステップS11)。
【0044】
次に、セキュアCPU111は、App CPU121を起動する(ステップS12)。
【0045】
次に、セキュアブートローダ112は、セキュアCPU111に、セキュアサービス113の実行プログラムprog_service、アプリケーションプログラム、及びライブラリをロードさせる(ステップS13)。より具体的には、図4に示すように、セキュアブートローダ112は、セキュアCPU111に、セキュアサービス113の実行プログラムprog_serviceをセキュアストレージ115からセキュアRAM116にロードさせ、アプリケーションプログラム及びライブラリをセキュアストレージ115からDRAM123にロードさせる。そして、セキュアブートローダ112は、ロードしたセキュアサービス113の実行プログラムprog_serviceをセキュアCPU111に起動させ、ロードしたアプリケーションプログラム及びライブラリをApp CPU121に起動させる(ステップS14)。
【0046】
次に、セキュアCPU111は、動作モードを選択する(ステップS15)。より具体的には、図4に示すように、一定期間(例えば数秒)の間に、セキュアブートローダ112が、ホストPC200からセキュアポート117を介してユーザキーを受信しなかった場合、セキュアCPU111は、通常モードを選択する。他方で、一定期間の間に、セキュアブートローダ112が、ホストPC200からセキュアポート117を介してユーザキーを受信した場合、セキュアCPU111は、デバッグモードを選択する。
【0047】
通常モードが選択された場合(ステップS16、No)、LSI100は、通常動作を行う(ステップS17)。通常モード時、LSI100は、例えば図示せぬカメラからの入力画像の画像認識処理を行い、画像認識結果を暗号化して図示せぬ外部デバイスに送信する。より具体的には、まず、App CPU121は、ハードウェアアクセラレータ122を制御して、ハードウェアアクセラレータ122に、入力画像の画像認識処理を実行させる。App CPU121は、ハードウェアアクセラレータ122から画像認識結果を得る。次に、App CPU121は、DRAM123に、暗号化の要求を記述する。セキュアサービス113は、例えばポーリングを行うことによって、定期的にDRAM123に暗号化の要求が記述されているかどうかを確認する。なお、セキュアサービス113に、DRAM123に暗号化の要求が記述されているかどうかを確認させる方法は、ポーリングでなくてもよい。例えば、App CPU121が、DRAM123に暗号化の要求を記述した後、セキュアCPU111に割り込みを発行し、セキュアサービス113が、DRAM123に暗号化の要求が記述されているかどうかを確認する、という方法でもよい。App CPU121によって暗号化が要求されたことを知ると、セキュアサービス113は、画像認識結果を暗号化する。次に、セキュアサービス113は、暗号化した画像認識結果を、セキュアポート117を介して外部デバイスに送信する。
【0048】
他方で、デバッグモードが選択された場合(ステップS16、Yes)、LSI100は、デバッグ動作を行う(ステップS18)。
【0049】
以下、本実施形態に係るLSI100のデバッグ動作について、図5及び図6を用いて説明する。図5は、LSI100のデバッグ動作を示すフローチャートである。図6は、LSI100のデバッグ動作を説明する図である。
【0050】
図5に示すように、セキュアブートローダ112は、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger及びデバッガキーをロードさせる(ステップS20)。より具体的には、図6に示すように、セキュアブートローダ112は、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger及びデバッガキーをセキュアストレージ115からセキュアRAM116にロードさせる。
【0051】
次に、セキュアサービス113は、ユーザキーとデバッガキーとを比較(照合)する(ステップS21)。比較の結果、ユーザキーとデバッガキーとが対応する場合(ステップS21、Yes)、セキュアサービス113は、セキュアデバッガ114の実行プログラムprog_debuggerをセキュアCPU111に起動させる(ステップS22)。他方で、ユーザキーとデバッガキーとが対応しない場合(ステップS21、No)、セキュアサービス113は、セキュアデバッガ114の実行プログラムprog_debuggerをセキュアCPU111に起動させず(デバッグの実行を拒否し)、LSI100は、デバッグ動作を終了する。
【0052】
次に、セキュアデバッガ114は、デバッグコマンドを受信する(ステップS23)。より具体的には、図6に示すように、セキュアデバッガ114は、ホストPC200からセキュアポート117を介してデバッグコマンドを受信する。ホストPC200からデバッグコマンドを受信すると、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信する(ステップS24)。セキュアデバッガ114からデバッグコマンドを受信すると、App CPU121は、アプリケーションプログラムのデバッグを実行する(ステップS25)。
【0053】
1.3 効果
本実施形態に係るLSI100では、セキュアブートローダ112がホストPC200からデバッガキーと対応するユーザキーを受信した場合に、セキュアCPU111によってセキュアデバッガ114の実行プログラムprog_debuggerが起動され、セキュアデバッガ114がデバッグコマンドを受信可能となる。そして、セキュアデバッガ114は、受信したデバッグコマンドをApp CPU121に送信する。
【0054】
この構成によれば、セキュアブートローダ112がデバッガキーと対応するユーザキーを受信しなければホストPC200からセキュアデバッガ114によるアプリケーションプログラムのデバッグを実行できない。よって、悪意のあるユーザによる、アプリケーションプログラムへのアクセス、及びアプリケーションプログラムの改変を防ぐことができるため、セキュアなリモートデバッグを実現できる。
【0055】
2.第2実施形態
第2実施形態に係るLSI100について説明する。本実施形態に係るLSI100は、第1実施形態と異なり、セキュアストレージ115内に更にデバッグ情報テーブルが記憶されている。デバッグ情報テーブルの追加に伴い、セキュアブートローダ112の構成、セキュアブートローダ112の実行プログラムprog_loader、セキュアデバッガ114の構成、及びセキュアデバッガ114の実行プログラムprog_debuggerが、第1実施形態と異なる。以下では、第1実施形態と異なる点についてのみ説明する。
【0056】
2.1 セキュアブートローダ112の構成
セキュアブートローダ112は、第1実施形態と同様に、セキュアストレージ115に記憶されたセキュアブートローダ112の実行プログラムprog_loaderに基づく演算処理を行う。例えば、セキュアブートローダ112は、デバッグモード時に、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger、デバッガキー、及びデバッグ情報テーブルをセキュアストレージ115からセキュアRAM116にロードさせる。この動作を除いて、セキュアブートローダ112の動作は、第1実施形態と同じである。デバッグ情報テーブルの詳細は後述する。
【0057】
2.2 セキュアデバッガ114の構成
セキュアデバッガ114は、第1実施形態と同様に、セキュアストレージ115に記憶されたセキュアデバッガ114の実行プログラムprog_debuggerに基づく演算処理を行う。
【0058】
例えば、セキュアデバッガ114は、デバッグモード時に、セキュアポート117を介してホストPC200からデバッグコマンド及びアクセスキーを受信する。デバッグコマンド及びアクセスキーを受信すると、セキュアデバッガ114は、受信したデバッグコマンド、アクセスキー、及びデバッグ情報テーブルに基づいて、受信したデバッグコマンドをApp CPU121に送信する。これらの動作の詳細は後述する。アクセスキーは、セキュアポート117を介してホストPC200からアプリケーションプログラムのデバッグを実行しようとしているユーザが、アプリケーションプログラムにアクセスするために入力するキーである。例えば、ユーザが複数のアプリケーションプログラムのデバッグを実行する場合、ユーザは、各アプリケーションプログラムに対応する複数のアクセスキーを入力する。なお、セキュアデバッガ114が、デバッグコマンドを受信して、アクセスキーを受信していない場合があってもよい。この場合、例えば、セキュアデバッガ114がアクセスキーを受信しておらず、且つデバッグコマンドで指定されるデバッグ対象が、アクセスキーによるアクセス権限が要求されるアドレス範囲にある場合には、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信しない。他方で、セキュアデバッガ114はアクセスキーを受信していないが、デバッグコマンドで指定されるデバッグ対象が、アクセスキーによるアクセス権限が要求されるアドレス範囲にはない場合には、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信してもよい。
【0059】
2.3 セキュアストレージ115内のプログラム等
本実施形態に係るLSI100に含まれるセキュアストレージ115に記憶されているプログラム等の詳細について、図7を用いて説明する。図7は、本実施形態に係るLSI100に含まれるセキュアストレージ115に記憶されているプログラム等の一例を示す図である。
【0060】
セキュアストレージ115は、セキュアプログラム、デバッガキー、デバッグ情報テーブル、アプリケーションプログラム、及びライブラリを記憶する。
【0061】
セキュアプログラムは、第1実施形態と同様に、セキュアブートローダ112の実行プログラムprog_loader、セキュアサービス113の実行プログラムprog_service、及びセキュアデバッガ114の実行プログラムprog_debuggerを含む。セキュアブートローダ112の実行プログラムprog_loaderは、セキュアブートローダ112の上述の機能を実現する。セキュアデバッガ114の実行プログラムprog_debuggerは、セキュアデバッガ114の上述の機能を実現する。セキュアサービス113の実行プログラムprog_service、デバッガキー、アプリケーションプログラム、及びライブラリは、第1実施形態と同じである。
【0062】
デバッグ情報テーブルは、デバッグ対象のアプリケーションプログラムへのアクセスを許可するためのテーブルである。デバッグ情報テーブルの概念について、図8を用いて説明する。図8は、デバッグ情報テーブルの一例を示す概念図である。
【0063】
図8に示すように、デバッグ情報テーブルは、複数(図8の例では3個)のエントリを有する。各エントリは、アプリケーションプログラム、アドレス範囲、及び許可キーを含む。アプリケーションプログラムは、アプリケーションプログラムの名称である。アドレス範囲は、対応するアプリケーションプログラムにおける、アクセスキーによるアクセス権限が要求されるアドレス範囲である。許可キーは、対応するアドレス範囲に対してアクセスを許可するキーである。
【0064】
例えば、図8の例の場合、アプリケーションタスクtask001について、アクセスキーによるアクセス権限が要求されるアドレス範囲は、0x4000_000~0x4100_000であり、アクセスを許可する許可キーは、0x12345678である。アプリケーションタスクtask002について、アクセスキーによるアクセス権限が要求されるアドレス範囲は、0x4200_000~0x4300_000であり、アクセスを許可する許可キーは、0xaa55bb44である。ソフトウェアIP softIP001について、アクセスキーによるアクセス権限が要求されるアドレス範囲は、0x5000_000~0x5300_000、及び0x6000_000~0x6100_000であり、アクセスを許可する許可キーは、0x18273645である。
【0065】
2.4 動作
次に、本実施形態に係るLSI100の動作について説明する。本実施形態に係るLSI100の動作は、デバッグ動作を除いて、第1実施形態と同じである。以下、本実施形態に係るLSI100のデバッグ動作について説明する。図9及び図10は、LSI100のデバッグ動作を示すフローチャートである。図11は、LSI100のデバッグ動作を説明する図である。
【0066】
図9に示すように、セキュアブートローダ112は、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger、デバッガキー及びデバッグ情報テーブルをロードさせる(ステップS30)。より具体的には、図11に示すように、セキュアブートローダ112は、セキュアCPU111に、セキュアデバッガ114の実行プログラムprog_debugger、デバッガキー、及びデバッグ情報テーブルをセキュアストレージ115からセキュアRAM116にロードさせる。
【0067】
次に、セキュアサービス113は、ユーザキーとデバッガキーとを比較する(ステップS31)。比較の結果、ユーザキーとデバッガキーとが対応する場合(ステップS31、Yes)、セキュアサービス113は、セキュアデバッガ114の実行プログラムprog_debuggerをセキュアCPU111に起動させる(ステップS32)。他方で、ユーザキーとデバッガキーとが対応しない場合(ステップS31、No)、図10に示すように、セキュアサービス113は、実行プログラムprog_debuggerをセキュアCPU111に起動させず、LSI100は、デバッグ動作を終了する。
【0068】
次に、セキュアデバッガ114は、デバッグコマンドを受信する(ステップS33)。より具体的には、図11に示すように、セキュアデバッガ114は、ホストPC200からセキュアポート117を介してデバッグコマンドを受信する。ホストPC200からデバッグコマンドを受信すると、セキュアデバッガ114は、デバッグコマンドで指定されるデバッグ対象が、アクセスキーによるアクセス権限が要求されるアドレス範囲かどうかを判断する(ステップS34)。より具体的には、例えば、セキュアデバッガ114は、デバッグ情報テーブルから、アクセスキーによるアクセス権限が要求されるアドレス範囲をOR演算し、演算結果がデバッグコマンドで指定されるデバッグ対象のアドレス範囲を含むかどうかを判断する。例えば、演算結果がデバッグコマンドで指定されるデバッグ対象のアドレス範囲を含む場合、セキュアデバッガ114は、デバッグ対象がアクセスキーによるアクセス権限が要求されるアドレス範囲であると判断する。また、演算結果がデバッグコマンドで指定されるデバッグ対象のアドレス範囲を含まない場合、セキュアデバッガ114は、デバッグ対象がアクセスキーによるアクセス権限が要求されるアドレス範囲ではないと判断する。
【0069】
セキュアデバッガ114が、デバッグ対象がアクセスキーによるアクセス権限が要求されるアドレス範囲ではないと判断した場合(ステップS34、No)、図10に示すように、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信する(ステップS37)。セキュアデバッガ114からデバッグコマンドを受信すると、App CPU121は、アプリケーションプログラムのデバッグを実行する(ステップS38)。
【0070】
他方で、セキュアデバッガ114が、デバッグ対象がアクセスキーによるアクセス権限が要求されるアドレス範囲であると判断した場合(ステップS34、Yes)、図10に示すように、セキュアデバッガ114は、アクセスキーを受信したかどうかを確認する(ステップS35)。より具体的には、図11に示すように、セキュアデバッガ114は、ホストPC200からセキュアポート117を介してアクセスキーを受信したかどうかを確認する。
【0071】
セキュアデバッガ114がアクセスキーを受信していない場合(ステップS35、No)、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信せず(デバッグの実行を拒否し)、LSI100は、デバッグ動作を終了する。
【0072】
他方で、セキュアデバッガ114がアクセスキーを受信した場合(ステップS35、Yes)、セキュアデバッガ114は、デバッグコマンドで指定されるアドレス範囲に対応するアプリケーションプログラムの許可キーと、アクセスキーとが対応するかどうかを確認する(ステップS36)。例えば、セキュアデバッガ114がホストPC200から2個以上のアクセスキーを受信した場合、セキュアデバッガ114は、各アクセスキーについて、デバッグコマンドで指定されるアドレス範囲に対応するアプリケーションプログラムの許可キーと、各アクセスキーとが対応するかどうかを確認する。
【0073】
確認の結果、デバッグコマンドで指定されるアドレス範囲に対応するアプリケーションプログラムの許可キーと、アクセスキーとが対応する場合(ステップS36、Yes)、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信する(ステップS37)。セキュアデバッガ114からデバッグコマンドを受信すると、App CPU121は、アプリケーションプログラムのデバッグを実行する(ステップS38)。他方で、デバッグコマンドで指定されるアドレス範囲に対応するアプリケーションプログラムの許可キーと、アクセスキーとが対応しない場合(ステップS36、No)、セキュアデバッガ114は、デバッグコマンドをApp CPU121に送信せず(デバッグの実行を拒否し)、LSI100は、デバッグ動作を終了する。
【0074】
2.5 効果
本実施形態に係るLSI100では、セキュアブートローダ112がデバッガキーと対応するユーザキーを受信した場合に、セキュアCPU111によってセキュアデバッガ114が起動され、セキュアデバッガ114がデバッグコマンドを受信可能となる。
【0075】
また、本実施形態に係るLSI100では、セキュアデバッガ114がアクセスキーによるアクセス権限が要求されるアドレス範囲をデバッグ対象とするデバッグコマンドを受信した場合には、セキュアデバッガ114がアクセスキーを受信し、そのアクセスキーと、デバッグ情報テーブル内の、デバッグコマンドで指定されるアドレス範囲に対応するアプリケーションプログラムの許可キーとが対応する場合に、セキュアデバッガ114がApp CPU121にデバッグコマンドを送信可能となる。
【0076】
この構成によれば、悪意のあるユーザによる、アクセス権限が要求されるアドレス範囲(秘匿したいアドレス範囲)を含むアプリケーションプログラムへのアクセス、及びアクセス権限が要求されるアドレス範囲を含むアプリケーションプログラムの改変を防ぐことができるため、セキュアなリモートデバッグを実現できる。また、アプリケーションプログラムごとに分業が敷かれている場合を想定して、アクセス権限の無いユーザが知的財産として保護されるべきソフトウェアIPを不正に読み取り・改変することを防ぐことができる。
【0077】
3.第3実施形態
第3実施形態に係るLSI100について説明する。本実施形態に係るLSI100は、第1実施形態と比較し、LSI100内に更にスイッチが設けられている。以下では、第1実施形態と異なる点についてのみ説明する。
【0078】
3.1 車載システムの全体構成
本実施形態に係るLSI100を含むシステムの全体構成について、図12を用いて説明する。図12は、本実施形態に係るLSIを含むシステムの全体構成を示すブロック図である。
【0079】
図12に示すように、セキュアサブシステム110は、更にスイッチ118を含む。スイッチ118は、セキュアバスに接続されている。スイッチ118は、ユーザによって制御され、例えばオフに設定された場合、通常モードが選択され、オンに設定された場合、デバッグモードが選択される。スイッチ118の例としては、例えばディップスイッチ等が挙げられる。
【0080】
3.2 動作
次に、本実施形態に係るLSI100の動作について説明する。本実施形態に係るLSI100の動作は、動作モードを選択する動作を除いて、第1実施形態と同じである。また、本実施形態に係るLSI100の動作を示すフローチャートは、図3及び図5と同じである。以下、本実施形態に係るLSI100が動作モードを選択する動作について説明する。
【0081】
本実施形態では、セキュアCPU111は、電源投入時、スイッチ118がオン状態かオフ状態かに基づいて動作モードを選択する(図3のステップS15)。例えば、スイッチ118がオフ状態の場合、セキュアCPU111は、通常モードを選択し、通常動作を行う(図3のステップS17)。他方で、スイッチ118がオン状態の場合、セキュアCPU111は、デバッグモードを選択し、デバッグ動作を行う(図3のステップS18、及び図5のステップS20~S25)。
【0082】
また、本実施形態では、セキュアCPU111は、電源オンの状態で、ユーザによってスイッチ118が切り替えられたとき、スイッチ118がオン状態かオフ状態かに基づいて動作モードを選択する。例えば、電源オンの状態で、ユーザによってスイッチ118がオフ状態からオン状態に切り替えられたとき、セキュアCPU111は、デバッグモードを選択し、デバッグ動作を行う。他方で、電源オンの状態で、ユーザによってスイッチ118がオン状態からオフ状態に切り替えられたとき、セキュアCPU111は、通常モードを選択し、通常動作を行う。
【0083】
3.3 効果
本実施形態によれば、セキュアなリモートデバッグを実現できる。なお、本実施形態に係る構成を、第2実施形態に適用することもできる。
【0084】
4.変形例等
上記のように、実施形態に係る半導体装置は、第1演算回路(121)を含む第1システム(120)と、第1システムにおけるデバッグ動作を制御する第2システム(110)とを備える。半導体装置は、通常モードとデバッグモードとを含む。半導体装置がデバッグモードである場合、外部から受信した第1キー(ユーザキー)と、第2システムが保持する第2キー(デバッガキー)とが対応する場合に、第2システムは、第1演算回路にデバッグコマンドを送信する。
【0085】
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【0086】
上記では、デバッグモード時に、ユーザがデバッグコマンドを送信するたびにアクセスキーを送信する例について説明した。セキュアデバッガ114は、ユーザによってホストPC200から最後に送信されたアクセスキーを記憶しておいてもよい。この場合、ユーザは、デバッグコマンドを送信するたびにアクセスキーを送信しなくてよい。セキュアデバッガ114は、受信したデバッグコマンド、記憶しておいたアクセスキー、及びデバッグ情報テーブルに基づいて、デバッグコマンドをApp CPU121に送信することができる。
【0087】
また、上記では、実施形態に係るLSIを車載システムに適用した例について説明したが、実施形態に係るLSIを民生のシステムにも適用できる。
【0088】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0089】
1…車載システム、100…LSI、110…セキュアサブシステム、111…セキュアCPU、112…セキュアブートローダ、113…セキュアサービス、114…セキュアデバッガ、115…セキュアストレージ、116…セキュアRAM、117…セキュアポート、118…スイッチ、120…ノンセキュアサブシステム、121…アプリケーションCPU、122…ハードウェアアクセラレータ、123…DRAM、130…ブリッジ、140…デバッグバスブリッジ、200…ホストPC
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12