説明

無線デバイスのためのプログレッシブブート

無線デバイスのための知覚ブート時間を減らすためにプログレッシブブートを実行するための技術が説明されている。バルク不揮発性メモリにおいて保存されるプログラムコードは、マルチプルコードイメージに分割されることができる。第1のコードイメージは、無線デバイスの基本的な機能性をサポートするために使用されるプログラムコードを含むことができる。第2のコードイメージは、残りのプログラムコードを含むことができる。プログレッシブブートについては、第1のコードイメージは、バルク不揮発性メモリから最初にロードされることができる。いったん第1のコードイメージがロードされると、無線デバイスは、動作可能にされることができ、ユーザにとって機能しうるように見えることができる。無線デバイスが動作可能である間に、第2のコードイメージは、必要であればバックグラウンドタスク及び/またはオンデマンドとして、バルク不揮発性メモリからロードされることができる。

【発明の詳細な説明】
【背景】
【0001】
I.分野
本開示は、一般的にエレクトロニクスに関し、より具体的には、パワーアップ時に無線デバイスをブートするための技術(techniques for booting a wireless device at power up)に関する。
【0002】
II.背景
無線デバイス(例、携帯電話)は、一般的には、無線デバイス内のハードウェアを制御し様々な設計された機能をサポートするプログラムコード(program codes)に基づいて動作する。プログラムコードは、バルク不揮発性メモリにおいて保存され、パワーアップ時(at power up)に、より速い揮発性メモリへとロードされることができる。バルク不揮発性メモリは、経済的に大量のデータを保存することができるが、一度に1ページのみアクセスされることができるNAND型FLASHであってもよい。ページは、NAND型FLASHから検索されることができるデータの最小単位であり、4キロバイト(KB)あるいはある他のサイズであってもよい。より速い揮発性メモリは、ランダムアクセスをサポートすることができるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)であってもよい。メモリは、望ましいストレージキャパシティおよびアクセス機能を提供するように、また、可能なかぎり経済的になるように、選択されることができる。
【0003】
無線デバイスにパワーアップされる(is powered up)ときに、プログラムコードのすべては、バルク不揮発性メモリからより速い揮発性メモリへとロードされることができる。いったんプログラムコードのすべてがロードされると、無線デバイスは、イネーブルにされることができ、ユーザ入力を受諾し、ユーザ選択された機能を実行する。パワーアップ時にロードするプログラムコードの量は大きくてもよく、ブート時間は比較的長くてもよい。したがって、ユーザは、無線デバイスが動作可能(operational)である前に、延長された時間の期間(extended period of time)、待機する必要がある可能性がある。
【発明の概要】
【0004】
一態様においては、装置(apparatus)は、無線デバイスに使用されるメモリデバイスに、第1及び第2のコードイメージをプログラムするように構成されたプロセッサを備えており、なお第1のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするために、メモリデバイスからロードされており、第2のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている。
【0005】
別の態様では、方法は、無線デバイスに使用されるメモリデバイスに、第1のコードイメージをプログラムすることを含んでおり、なお第1のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするためにメモリデバイスからロードされている。該方法は、メモリデバイスに、第2のコードイメージをプログラムすることをさらに含んでおり、なお第2のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている。
【0006】
別の態様では、装置は、無線デバイスに使用されるメモリデバイスに第1のコードイメージをプログラムするための手段と、なお第1のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするためにメモリデバイスからロードされている;メモリデバイスに第2のコードイメージをプログラムするための手段と、なお第2のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている;を含む。
【0007】
別の態様では、装置は、無線デバイスをブートするために外部メモリから第1のコードイメージをロードするように構成されたメモリコントローラと、第1のコードイメージをロードした後で無線デバイスを動作可能にするように構成されたメインコントローラと、を含んでおり、なお、メモリコントローラは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第2のコードイメージをロードするようにさらに構成されている。
【0008】
別の態様では、方法は、無線デバイスをブートするために外部メモリから第1のコードイメージをロードすることと、第1のコードイメージをロードした後で無線デバイスを動作可能にすることと、そして、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第2のコードイメージをロードすることと、を含む。
【0009】
別の態様においては、装置は、無線デバイスをブートするために外部メモリから第1のコードイメージをロードするための手段と、第1のコードイメージをロードした後で無線デバイスを動作可能にするための手段と、そして、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第2のコードイメージをロードするための手段と、を含む。
【0010】
別の態様においては、コンピュータプログラムプロダクト(computer program product)は、無線デバイスをブートするために外部メモリから第1のコードイメージをコンピュータにロードさせるためのコードと、第1のコードイメージをロードした後でコンピュータに無線デバイスを動作可能にさせるためのコードと、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第2のコードイメージをコンピュータにロードさせるためのコードと、を備えるコンピュータ可読媒体(computer-readable medium)を含む。
【0011】
別の態様では、装置は、外部メモリから、コードイメージの複数のページ(a plurality of pages of a code image)を検索するように、なお、複数のページは、別個のセキュリティ情報と関連づけられている;ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証するように;構成されたメモリコントローラ、を含む。
【0012】
別の態様では、方法は、外部メモリから、コードイメージの複数のページを検索することと、なお、複数のページは、別個のセキュリティ情報と関連づけられている;ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証することと;を含む。
【0013】
別の態様では、装置は、外部メモリから、コードイメージの複数のページを検索するための手段と、なお、複数のページは、別個のセキュリティ情報と関連づけられている;ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証するための手段と;を含んでいる。
【図面の簡単な説明】
【0014】
【図1】図1は、無線通信デバイスのブロック図を示す。
【図2】図2は、NANDフラッシュのページングされていないセグメントとページングされたセグメントのプログラミングを示す。
【図3】図3は、第2のコードイメージとハッシュダイジェストテーブルを示す。
【図4】図4は、第1及び第2のコードイメージのロード及び認証を示す。
【図5】図5は、第1のコードイメージにおけるモジュールを示す。
【図6】図6は、無線デバイスにおけるSDRAMを示す。
【図7】図7は、第2のコードイメージのページのロードステータスを追跡するために使用される2−レベル構造を示す。
【図8】図8は、メモリデバイスをプログラムするためのプロセスを示す。
【図9】図9は、パワーアップ時に、無線デバイスをプログレッシブに(progressively)ブートするためのプロセスを示す。
【図10】図10は、第2のコードイメージを認証するためのプロセスを示す。
【図11】図11は、プログラミング局(programming station)を示す。
【詳細な説明】
【0015】
ここにおいて記載されたブート技術(boot techniques)は、例えば、無線通信デバイス、ハンドヘルドデバイス、ゲームデバイス、コンピューティングデバイス、顧客エレクトロニクスデバイス、コンピュータ、等のような様々な電子デバイスに使用されることができる。明瞭にするために、NANDフラッシュメモリ及びSDRAMのようなメモリを有する無線通信デバイスについて、下記で技術が説明されている。
【0016】
図1は、発明の一態様にしたがった、無線通信装置100のブロック図を示しており、そしてそれは、セルラ電話、携帯情報端末(personal digital assistant)(PDA)、ハンドセット、ハンドヘルドデバイス(handheld device)、無線モジュール、端末、モデム等、であってもよい。無線デバイス100は、送信パス及び受信パスを介した1つまたは複数の無線通信システムとの双方向コミュニケーション(bi-directional communication)を提供することができる。送信パス上で、デジタルセクション120は、無線デバイス100によって送信される予定であるデータを提供することができる。送信機(TMTR)114は、無線周波数(radio frequency)(RF)出力信号を生成するためにデータを処理することができ、そしてそれは、基地局に対してアンテナ112を介して送信されることができる。受信パス上で、基地局によって送信された信号は、アンテナ112によって受信され、受信機(RCVR)116に対して提供されることができる。受信機116は、その受信された信号を、条件付け、デジタル化し、そして、さらなる処理のためにデジタルセクション120に対してサンプルを提供することができる。
【0017】
デジタルセクション120は、無線デバイス100のためのデジタル処理をサポートする、様々なプロセッシングユニット、インターフェースユニット、及びメモリユニットを含むことができる。図1で示される設計において、デジタルセクション120は、モデムプロセッサ122、中央プロセッシングユニット(CPU)/縮小命令セット型コンピュータ(reduced instruction set computer)(RISC)124、メインコントローラ130、静的RAM(SRAM)132、読み出し専用メモリ(ROM)134、NANDフラッシュコントローラ140、及びSDRAMコントローラ142を含んでおり、それらのすべては、1つまたは複数のバス160を介して互いに通信することができる。モデムプロセッサ122は、データ送信及び受信のための処理、例えば符号化、変調、復調、復号等を実行することができる。CPU/RISC124は、無線デバイス100のための汎用処理、例えばオーディオ、ビデオ、グラフィクス、及び/または他のアプリケーションのための処理、を実行することができる。メインコントローラ130は、デジタルセクション120内で様々なユニットのオペレーションを指示する(direct)ことができる。SRAM132は、デジタルセクション120内のコントローラおよびプロセッサによって使用されるプログラムコード及びデータを保存することができる。ROM134は、ブートコード136およびルートパブリックキー138を保存することができる。ブートコード136は、パワーアップブートの初期部分(an initial part of power-up boot)を実行することができ、無線デバイス100のパワーアップされるときに、NANDフラッシュ150からプログラムコードをロードすることを開始することができる。ルートパブリックキー138は、例えばNANDフラッシュ150からロードされたプログラムコードを認証するために、セキュリティ機能に使用されることができる。
【0018】
NANDフラッシュコントローラ140は、NANDフラッシュ150とデジタルセクション120との間のデータの転送を容易にすることができる。SDRAMコントローラ142は、SDRAM152とデジタルセクション120との間のデータの転送を容易にすることができる。メインコントローラ130は、NANDフラッシュコントローラ140および/またはSDRAMコントローラ142、のオペレーションを指示することができる。例えば、メインコントローラ130は、ブートアップの間に、例えば無線デバイス100がパワーオンされる(is powered on)とき、NANDフラッシュ150からSDRAM152までのプログラムコードのロードを指示することができる。
【0019】
NANDフラッシュ150及びSDRAM152は、デジタルセクション120内のプロセッシングユニットのためのマスストレージを提供することができる。NANDフラッシュ150は、デジタルセクション120によって使用されるプログラムコード及びデータのための不揮発性のストレージを提供することができる。NANDフラッシュ150はまた、他のタイプの不揮発性メモリ、例えばNORフラッシュ、と置き替えられることができる。SDRAM152は、デジタルセクション120によって使用されるプログラムコード及びデータのためのランダムアクセス機能をストレージに提供することができる。SDRAM152も、他のタイプの揮発性メモリ、例えばSRAM、DRAM等、と置き替えられることができる。
【0020】
一般に、デジタルセクション120は、任意の数の、プロセッシングユニット、インターフェースユニット、および、メモリユニットを含むことができる。デジタルセクション120はまた、1つまたは複数のデジタルシグナルプロセッサ(DSPs)、マイクロプロセッサ、RISCプロセッサ、等でインプリメントされることができる。デジタルセクション120は、1つまたは複数の特定用途向け集積回路(ASICs)及び/または他のあるタイプの集積回路(ICs)上で、組み立てられることができる。
【0021】
図1で示されているように、無線デバイス100は、異なるタイプのメモリを備えたメモリアーキテクチャ(memory architecture)を利用することができる。SDRAM152は、いったんパワーが取り除かれる(removed)とそのデータを失う、揮発性メモリである。SDRAM152は、ランダムな方法でアクセスされることができ、メイン実行時間メモリとして一般に使用される。NANDフラッシュ150は、パワーが取り除かれた後でさえもそのデータを保持することができる、不揮発性メモリである。NANDフラッシュ150は、大きなストレージキャパシティ(large storage capacity)、継続メモリアクセスのための良い速度(good speed for continued memory access)、そして低コスト、を有する。しかしながら、NANDフラッシュ150は、ランダムメモリアクセスについて悪いパフォーマンス(poor performance)を有しており、典型的には、ページの単位で、一度に1ページ(one page at a time)、アクセスされ、各ページは、特定のサイズである(例、4KB)。
【0022】
図1のメモリアーキテクチャは、NANDフラッシュ150及びSDRAM152の両方を組込んでおり、低減されたコストで、ランダムアクセスを大きなストレージキャパシティに提供することが可能である。このメモリアーキテクチャについては、プログラムコードは、NANDフラッシュ150において永久的に保存されることができる。プログラムコードは、様々な設計された機能及び特徴をサポートすることに加えて、無線デバイス100内のハードウェアを制御することができる。パワーアップ時に、無線デバイス100は、NANDフラッシュ150からSDRAM152までのプログラムコードを転送することを必要とすることができるブートを実行することができる。NANDフラッシュ150は、大量のプログラムコードを保存することができる。したがって、パワーアップ時の、NANDフラッシュ150からSDRAM152までのプログラムコードのすべてロードする時間の量は、比較的長くてもよい。
【0023】
一態様では、NANDフラッシュ150に保存されるべきプログラムコードは、NANDフラッシュ150の異なるセグメントにおいて保存されることができるマルチプルコードイメージ(multiple code images)に分割されることができる。セグメントはまた、パーティション(partition)、セクション(section)、等と呼ばれることができる。一設計では、プログラムコードは、第1のコードイメージと第2のコードイメージに分割されることができる。第1のコードイメージは、無線デバイス100の基本的な機能性をサポートするために使用されるプログラムコードを含んでおり、そして、NANDフラッシュ150のページングされていないセグメント(non-paged segment)に保存されることができる。第2のコードイメージは、残りのプログラムコードを含むことができ、そして、NANDフラッシュ150のページングされたセグメントに保存されることができる。パワーアップ時のプログレッシブブート(progressive boot)については、第1のコードイメージは、NANDフラッシュ150のページングされていないセグメントからSDRAM152へと最初にロードされることができる。いったん第1のコードイメージがロードされると、無線デバイス100は、イネーブルにされることができ、ユーザにとって機能的しうるものとして見られることができる(may appear as functional to a user)。無線デバイス100が動作可能である間に、第2のコードイメージは、NANDフラッシュ150のページングされたセグメントからSDRAM152へと、例えば必要であればバックグラウンドタスクおよび/またはオンデマンドとして、ロードされることができる。プログレッシブブートは、パワーアップ時に無線デバイス100をイネーブルにするために時間の量を短縮することができ、そしてそれはユーザ経験を改善し、他の利益を提供することができる。
【0024】
NANDフラッシュ150において保存されたプログラムコードは、無線デバイス100のオペレーション、すなわち様々な設計された特徴及び機能をサポートする高層アプリケーション、を制御するコード、工場テストコード、及び/または、他のタイプのコード、を含むことができる。NANDフラッシュ150において保存されたプログラムコードが使用のために認証されているかどうかを確実にすること、認証されるプログラムコードの実行を可能にすること、そして、認証されていないプログラムコードの実行を防ぐこと、は望ましいあるいは必要である。さらに、プログレッシブブートに使用されたマルチプルコードイメージのために、効率的な方法でセキュリティを提供することが望ましい。
【0025】
別の態様では、セキュリティは、全体の第1のコードイメージについての認証、また第2のコードイメージの各ページについての認証を実行することによって、プログレッシブブートのために効率的に提供されることができる。第1のコードイメージは、パワーアップ時に、NANDフラッシュ150から、その全体において、最初にロードされることができ、そして、ロードされたときに認証されることができる。第2のコードイメージはページに分割され、NANDフラッシュ150から一度に1ページ、ロードされることができる。第2のコードイメージのページは、メモリアクセスに依存して、異なる順序でロードされることができる。第2のコードイメージの各ページは、第2のコードイメージの他のページに対する考慮なしに、ページがロードされ使用されることを可能にするために、個々に認証されることができる。
【0026】
図2は、NANDフラッシュ150の設計を示しており、そしてそれは、本発明の態様にしたがって、ページングされていないセグメント210とページングされたセグメント220を含む。この設計では、ページングされていないセグメント210は、第1のコードイメージ212、ハッシュダイジェストテーブル214、証明書216、およびデジタル署名218を保存する。証明書216は、ページングされていないセグメント210とページングされたセグメント220を認証するために使用される暗号の情報を含むことができる。デジタル署名218は、第1のコードイメージ212とハッシュテーブル214の両方に関して生成され、これらの2つの部分を認証するために使用されることができる。第1のコードイメージ212は、無線デバイス100をイネーブルにする前にNANDフラッシュ150からロードされるべきプログラムコード及び/またはデータ、例えばドライバ、ユーザインタフェース(UI)、モデム等のためのコード、を含むことができる。テーブル214は、第2のコードイメージ222の個々のページについての暗号ハッシュダイジェストを含むことができる。第2のコードイメージ222は、無線デバイス100を可能にした後でNANDフラッシュ150からロードされるべきプログラムコードおよび/またはデータ、例えばより高層アプリケーションのためのコード、を含むことができる。一般に、コードイメージはプログラムコード、データ等を含むことができる。
【0027】
図2はまた、NANDフラッシュ150のページングされていないセグメント210とページングされたセグメント220をプログラムするために、プロセス200の設計を示す。プロセス200は、NANDフラッシュ150の製造(manufacturing)、無線デバイス100のプロビジョニング(provisioning of wireless device 100)、等の間に実行されることができる。図2の設計は、下記の2セットの暗号キーを使用している:(1)ページングされていないセグメント210を署名し認証する1セットのプライベート及びパブリックキー、そしてそれらはプライベートxとパブリックキーxと呼ばれる、(2)ソースエンティティを認証する1セットのプライベート及びパブリックキー、そしてそれらはルートプライベートキーr及びルートパブリックキーrと呼ばれる。ルートプライベートキーrおよびプライベートキーxは秘密であり、ソースコードベンダ(source code vendor)、製造者等であるソースエンティティにのみ知られている。ルートパブリックキーrは無線デバイス100にとって利用可能とされ、ルートプライベートキーrで生成されるデジタル署名をベリファイするために使用される。パブリックキーxは、プライベートキーxで生成されたデジタル署名をベリファイするために使用され、証明書216で送られることができる。
【0028】
サイン関数232は、パブリックキーxと、ルートプライベートキーrを使用しているおそらく他の情報、に関してデジタル署名を生成することができる。このデジタル署名は署名cxと呼ばれることができ、ソースエンティティを認証するために使用されることができる。サイン関数232は、RSA(Rivest、Shamir及びAdleman)アルゴリズム、デジタル署名アルゴリズム(Digital Signature Algorithm)(DSA)、あるいは他のある暗号(デジタル署名または暗号化)アルゴリズムをインプリメントすることができる。証明書生成器234は、署名cx、パブリックキーx、そして、ことによると例えばソースエンティティの識別子、使用に選択される暗号アルゴリズム、証明書の満了日等のような他の情報、を含んでいる証明書を形成することができる。この証明書は、X.509証明書としてあるいは当技術分野において知られている他のあるフォーマットで、NANDフラッシュ150において保存されることができる。ルートパブリックキーrは、いずれの方法で、無線デバイス100にとって利用可能とされ、図1の無線デバイス100内のROM134において安全に保存されることができる。
【0029】
図2で示される設計では、第2のコードイメージ222が最初に処理され保存されることができ、第1のコードイメージ212が次に処理され、保存されることができる。ページ分割ユニット252は、第2のコードイメージ222を受信し、それを特定のサイズ(例、4KB)のページに分割することができ、そして、安全ハッシュ関数254に対し、また、NANDフラッシュ150に対し、一度に1ページを提供することができる。関数254は、安全ハッシュアルゴリズムで、ユニット252からの各ページをハッシュし、そのページについてのハッシュダイジェストを提供することができる。関数254はSHA−1(安全ハッシュアルゴリズム)、SHA−2(それはSHA−224、SHA−256、SHA−384およびSHA−512を含む)、MD−4(メッセージダイジェスト)、MD−5、あるいは、当技術分野において知られているいくつかの他の安全ハッシュアルゴリズムをインプリメントすることができる。安全ハッシュアルゴリズムは暗号プロパティを有しているので、入力メッセージとそのダイジェスト(擬似ランダムビットストリング)との間の関数は取り消しできず(irreversible)、同じダイジェストにマッピングしている2つの入力メッセージの可能性は非常に小さい。安全ハッシュアルゴリズムは、任意の長さの入力メッセージを受け取ることができ、固定長のハッシュダイジェストを提供することができる。テーブル生成器256は、第2のコードイメージ222のすべてのページについてのハッシュダイジェストのテーブルを生成することができ、NANDフラッシュ150においてハッシュダイジェストテーブル214としてこのテーブルを保存することができる。
【0030】
第1のコードイメージ212は、マルチプレクサ(Mux)242に対して提供され、さらに、NANDフラッシュ150において保存されることができる。マルチプレクサ242はまた、生成器256からハッシュダイジェストテーブル214を受け取ることができ、そして、安全ハッシュ関数244に対して、第1のコードイメージ212とハッシュダイジェストテーブル214を連続して提供することができる。関数244は、安全ハッシュアルゴリズムで、第1のコードイメージ212とハッシュダイジェストテーブル214の両方をハッシュすることができ、そしてダイジェストxと呼ばれることができるハッシュダイジェストを提供することができる。関数244はSHA−1、SHA−2、MD−5、あるいは他のある安全ハッシュアルゴリズムをインプリメントすることができる。サイン関数246は、プライベートキーxを使用して、ダイジェストxにわたってデジタル署名を生成することができる。このデジタル署名はNANDフラッシュ150において、デジタル署名218として保存されることができる。サイン関数246は、RSA、DSA、あるいは他のある暗号のアルゴリズムをインプリメントすることができる。サイン関数232及び246は、同じあるいは異なる暗号アルゴリズムをインプリメントすることができる。
【0031】
図3は、NANDフラッシュ150における、第2のコードイメージ222とハッシュダイジェストテーブル214の設計を示す。この設計では、第2のコードイメージ222は、Nページ 0〜N−1に分割されることができ、ここではNは、任意の整数値であることができる。各コードページは、対応するハッシュダイジェストを生成するために、安全ハッシュアルゴリズム(Hash)でハッシュされることができる。ハッシュダイジェストテーブル214は、N個のコードページについてN個のハッシュダイジェストを保存することができる。
【0032】
図4は、本発明の態様にしたがってNANDフラッシュ150のページングされていないセグメント210とページングされたセグメント220をロードし認証するプロセス400の設計を示す。無線デバイス100がパワーアップされる等のとき、プロセス400が実行されることができる。ベリファイ関数432は、図1の無線デバイス100内のNANDフラッシュ150からは証明書216を、ROM134からはルートパブリックキーrを、受信することができる。ベリファイ関数432は、証明書216から、署名cxとパブリックキーxを抽出し、ルートパブリックキーrで署名cxをベリファイし、そして、署名cxがベリファイされる場合にはパブリックキーxを提供する。第3者による証明書xのいずれの改ざん(tampering)も、ベリファイされていない署名cxによって容易に検出されることができる。
【0033】
マルチプレクサ442は、第1のコードイメージ212とハッシュダイジェストテーブル214を受け取ることができ、そして、両方の部分を安全ハッシュ関数444に対して順次提供することができる。関数444は第1のコードイメージ212とハッシュダイジェストテーブル214の両方をハッシュし、ダイジェストx’と呼ばれることができるハッシュダイジェストを提供することができる。関数444は、図2の安全ハッシュ関数244によって使用される同じ安全ハッシュアルゴリズムをインプリメントすることができる。ベリファイ関数446は、安全ハッシュ関数444からダイジェストx’を、NANDフラッシュ150からデジタル署名xを、ベリファイ関数432からパブリックキーxを、受信することができる。ベリファイ関数446は、パブリックキーxとダイジェストx’でデジタル署名218をベリファイすることができ、デジタル署名218がベリファイされるかどうかを示すことができる。パブリックキーxは、ルートパブリックキーrで認証される。したがって、デジタル署名218、第1のコードイメージ212、及び/または第3者によるハッシュダイジェストテーブル214のいずれの改ざんも、ベリファイしていないデジタル署名218によって容易に検出されることができる。
【0034】
デジタル署名218がベリファイされる場合には、第1のコードイメージ212は、使用するために提供されることができ、ハッシュダイジェストテーブル214は、テーブル456で保存されることができる。いったん第1のコードイメージ212がNANDフラッシュ150からSDRAM152までロードされると、無線デバイス100はイネーブルにされることができる。デジタル署名218がベリファイされない場合には、ローディングプロセスは、中断され(aborted)、エラーメッセージは提供されることができる。
【0035】
無線デバイス100をイネーブルにした後で、第2のコードイメージ222は、必要であればバックグラウンドタスク及び/またはオンデマンドとして、1度に1ページ、NANDフラッシュ150からSDRAM152までロードされることができる。安全ハッシュ関数454は、NANDフラッシュ150から検索されたページをハッシュし、検索されたページについて、ハッシュダイジェストy’を提供することができる。関数454は、図2の安全ハッシュ関数254によって使用される同じ安全ハッシュアルゴリズムをインプリメントすることができる。ベリファイ関数458は、安全ハッシュ関数454からのハッシュダイジェストy’と、テーブル456からの検索されたページについて認証されたハッシュダイジェストyと、を受信することができる。ベリファイ関数458は、2つのハッシュダイジェストy’とyを比較することができ、2つのダイジェストが整合する場合には認証されたものとして検索されたページを宣言することができる。ハッシュダイジェストテーブル214は、ルートパブリックキーrで認証されることができる。安全ハッシュアルゴリズムの暗号プロパティは、同じハッシュダイジェストyへの別のページマッピングの可能性は非常に小さいということを保証する。したがって、第3者によるページのいずれの改ざんも、2つのハッシュダイジェスト間の不整合によって容易に検出されることができる。ハッシュダイジェストが整合する場合には、検索されたページは、使用のために提供されることができる。ローディングプロセスは、ハッシュダイジェストが整合しない場合には、中断されることができ、エラーメッセージが提供されることができる。
【0036】
図2〜4は、NANDフラッシュ150の1つの設計を示しており、そしてそれは、ページングされていないセグメント210とページングされたセグメント220のプログレッシブブートをサポートしており、セグメント210及び220において保存されたコードイメージの認証をさらにサポートする。一般に、NANDフラッシュ150は、PページングされたセグメントにおいてPコードイメージを、QページングされていないセグメントにおいてQコードイメージを、保存することができ、P及びQはそれぞれ、1以上の整数値であることができる。Qページングされていないセグメントからのコードイメージは、無線デバイス100をイネーブルにする前に、NANDフラッシュ150からロードされることができる。Pページングされたセグメントからのコードイメージは、無線デバイス100をイネーブルにした後で、NANDフラッシュ150からロードされることができる。
【0037】
ページングされていないセグメントとページングされたセグメントにおいて保存されたコードイメージについてのセキュリティは、様々な方法でインプリメントされることができる。一般に、認証に使用されたセキュリティ情報は、1つまたは複数の証明書、デジタル署名、ハッシュダイジェスト、等を備えることができる。ページングされていないセグメント(あるいは単にページングされていないコードイメージ)からコードイメージを認証するために使用されるセキュリティ情報は、例えば、そのページングされていないセグメントにおいて、指定されたページングされていないセグメントにおいて、保存されることができる。ページングされたセグメント(あるいは単にページングされたコードイメージ)からコードイメージを認証するために使用されるセキュリティ情報は、例えば、そのページセグメントにおいて、別のページングされたセグメントにおいて、ページングされていないセグメントにおいて、保存されることができる。各ページが別々にロードされ認証されることを可能にするために、セキュリティ情報は、ページングされたコードイメージの各ページについて提供されることができる。セキュリティ情報はまた、全体のページングされたコードイメージのために提供されることができる。1つの設計では、1つのページングされていないセグメントは、上記で説明されているように、すべてのページングされていないセグメントとページングされたセグメントについてのセキュリティ情報を保存することができる。別の設計では、認証は、一連の方法(a daisy chain manner)で実行されることができ、各セグメントは、ロードされるべき次のセグメントについてのセキュリティ情報を保存する。ページングされていないコードイメージとページングされたコードイメージの認証もまた、他の方法で実行されることができる。
【0038】
明瞭にするために、次の説明は、図2−4で示された構造の使用と、NANDフラッシュ150がページングされていないセグメント210とページングされたセグメント220を含むということ、を想定する。ページングされていないセグメント210は、無線デバイス100の基本的な機能性をサポートするプログラムコード、プログレッシブブートをサポートするコード、等を含むことができる。ページングされたセグメント220は、無線デバイス100のための残りのプログラムコードを含むことができる。
【0039】
図5は、NANDフラッシュ150のページングされていないセグメント210において保存された第1のコードイメージ212の設計を示す。この設計では、第1のコードイメージ212は、プログレッシブブート、ドライバ530、ユーザインタフェース(UI)コード540、及びモデムコード550、をサポートするモジュール510を含む。
【0040】
モジュール510内では、ヘッダ512は、例えば、ページングされたセグメントとページングされていないセグメントの数、各セグメントのスターティングアドレス及びサイズ、各セグメントヘッダのロケーション等、のようなNANDフラッシュ150についての関連情報を含むことができる。ブートローダ(boot loader)514は、NANDフラッシュ150からSDRAM152までのページングされていないセグメント210のロードを扱うことができる。NANDドライバ516は、NANDフラッシュ150からページを検索し、これらのページをSDRAM152にコピーすることができる。メモリマネージャ518は、NANDフラッシュ150からSDRAM152までのページングされたセグメント220のロードを扱うことができ、第2のコードイメージ222のどのページがロードされたかを追跡することができる。中断ハンドラ520は、NANDフラッシュ150からロードされていない第2のコードイメージ222のページのメモリアクセスによる、ページ欠陥(page faults)を扱うことができる。ページ欠陥が生じるとき、中断ハンドラ520は、現在のタスクのコンテキストを保存することができ、そのあとで、要求されたページを含んでいる1つまたは複数のページをロードするように、ページャハンドラ(pager handler)522に要求することができる。ページャハンドラ522は、NANDフラッシュ150からの第2のコードイメージ222の要求されたページの、バックグラウンド及びオンデマンドページングを扱うことができる。ブートローダ514及びページャハンドラ522は、NANDフラッシュ150から特定のページを検索し、これらのページをSDRAM152にコピーするように、NANDドライバ516に要求することができる。
【0041】
ドライバ530は、液晶ディスプレイ(LCD)、キーパッド、マイクロホン、スピーカー等のような入力/出力(I/O)デバイスをサポートすることができる。UIコード540は、パワーアップ時のアニメーションのディスプレイ、キーパッド入力の受諾、LCD上で押された文字のディスプレイ(display of pressed characters on the LCD)、のような様々なUI機能をサポートすることができる。UIコード540は、ワイヤレスデバイス100に関する寿命のインジケーション(indication)を提供することができ、そしてユーザ入力を受諾することができるので、無線デバイスはユーザにとって動作可能と認識されることができる。モデムコード550は、無線通信をサポートするために様々な機能を実行することができ、例えば、送信機114及び受信機116を初期化すること、無線システムをサーチすること、呼び出しを開始し受信すること、呼び出しのための処理を実行すること(例えば、符号化し復号する)等がある。
【0042】
図5は、ページングされていないセグメント210の1つの設計を示す。ページングされていないセグメント210はまた、図5で示されていない、異なるおよび/または他のモジュールを含むことができる。例えば、ページングされていないセグメント210は工場テストコード、無線用のバイナリ実行時間環境(Binary Runtime Environment for Wireless)(BREW)アプリケーション実行環境(Application Execution Environment)(AEEE)コード、等を含むことができる。
【0043】
図6は、図1の無線デバイス100におけるSDRAM152の設計を示す。第1のコードイメージ212は、NANDフラッシュ150から検索され、プログレッシブブートの第1の部分の間にSDRAM152に保存されることができる。第2のコードイメージ222のページ0〜N−1は、NANDフラッシュ150からの任意の順序で検索され、プログレッシブブートの第2の部分の間にSDRAM152の適切なロケーションに保存されることができる。
【0044】
第2のコードイメージ222のバックグラウンドローディングは、第1のコードイメージ212がSDRAM152へとロードされた後で、開始することができる。バックグラウンドローディングについては、第2のコードイメージ222のNページは、一度に1ページ、NANDフラッシュ150から連続した順序(sequential order)で検索され、認証され、そして、SDRAM152の対応する位置において保存されることができる。全体の第2のコードイメージ222は、特定の時間の量においてSDRAM152へと完全にロードされることができ、そしてそれは、セカンダリロード時間と呼ばれることができる。バックグラウンドローディングは、無線デバイス100によって実行された他のタスクよりも低いプライオリティを与えられることができる。したがって、セカンダリロード時間は可変であってもよく、そして、例えば第2のコードイメージ222のサイズ、NANDフラッシュとSDRAM152間の転送レート、無線デバイス100におけるアクティビティ量100等、のような様々な要因に依存することができる。
【0045】
バックグラウンドローディングを実行している間、まだロードされていない第2のコードイメージ222のページはアクセスされることができ、ページ欠陥が生じうる。要求されたページは、NANDフラッシュ150からオンデマンドでロードされることができ、使用のために提供される。一設計では、要求されたページのみが、NANDフラッシュ150からロードされる。別の設計では、要求されたページ、及び1つまたは複数の近いページは、NANDフラッシュ150からロードされることができる。この設計は、繰り返されたページ欠陥を回避し、したがって、性能を改善する。要求されたページのオンデマンドのページングを完成した後で、第2のコードイメージ222の残りのページのバックグラウンドローディングは再開されることができる(resumed)。
【0046】
メモリマネージャ518は、第2のコードイメージ222のどのページがNANDフラッシュ150からロードされたかを追跡することができる。この情報は、要求されたページがSDRAM152に保存されるかどうか、あるいは、NANDフラッシュ150から検索されるべきであるかどうか、を決定するために使用されることができる。第2のコードイメージ222のページのロードステータス(load status)は、様々な方法で保存されることができる。
【0047】
図7は、第2のコードイメージ222の与えられたページがSDRAM152に保存されるかどうか決定するために使用されることができる2−レベルの構造700の設計を示す。この設計では、32ビットのメモリアドレス702は、ビット0〜31を含むことができ、0〜4ギガバイト(GB)のアドレス範囲(address range)を有することができる。アドレス範囲は、4096のセクションに分割されることができ、各アドレスセクションは、1メガバイト(MB)をカバーする。各アドレスセクションは、256ページをカバーすることができ、各ページは4KBであることができる。
【0048】
構造700は、4096のアドレスセクションについて4096のエントリ、すなわち各アドレスセクションにつき1つのエントリ、を備えた1つのメインテーブル710を含むことができる。構造700は、各アドレスセクションについて1つのページテーブル720をさらに含むことができる。各ページテーブルは、256ページについて256のエントリ、すなわち各ページにつき1つのエントリ、を含むことができる。
【0049】
一設計では、全体の第2のコードイメージ222のためのメインテーブルおよびページテーブルは、第2のコードイメージ222のいずれのページもロードする前に、作成され初期化されることができる。例えば、1つのメインテーブルおよび64のページテーブルは、ページング用の仮想メモリ64MBをサポートするために、SDRAM152内で作成されることができる。メインテーブルの各エントリは、そのメインテーブルエントリに対応するページテーブルのスタートに対する、ポインタ(pointer)を含むことができる。各ページテーブルの256のエントリは、これらのエントリによってカバーされた256ページはSDRAM152へとロードされなかった(あるいは、これら256ページについてのアクセス許可がない)ということを示すために、予め決定された値に初期化されることができる。ページがNANDフラッシュ150からSDRAM152までロードされるとき、そのページをカバーするページテーブルが確認されることができ、そのページについてのエントリは、ページがSDRAM152へとロードされたということを示すために更新されることができる。
【0050】
第2のコードイメージ222がNANDフラッシュ150からロードされている間、SDRAM152の各メモリアクセスは、要求されたページがSDRAM152に保存されるかどうかを決定するためにチェックされることができる。メモリアクセス用のメモリアドレスの12最上位ビット(MSBs)は、メインテーブルにおいてエントリにアクセスするために使用されることができる。このメインテーブルエントリからのポインタは、メモリアドレスをカバーするアドレスセクションについてのページテーブルのスタートを決定するために使用されることができる。メモリアドレスの8つの次のMSB(The 8 next MSBs of the memory address)は、アクセスされているページについてのページテーブルエントリ(page table entry)を決定するために使用されることができる。このページテーブルエントリは、アクセスされているページがSDRAM152へとロードされたかどうかを決定するためにチェックされることができる。ページがロードされた場合には、SDRAM152は、要求されたプログラムコードあるいはデータを得るために、アクセスされることができる。ページがロードされていない場合、中断ハンドラ520は通知されることができ、要求されたページは、SDRAM152へとロードされることができる。
【0051】
メインテーブルとページテーブルは、第2のコードイメージ222の個々のページがSDRAM152へとロードされるかどうかを決定するために使用されることができる。インジケータは、第2のコードイメージ222のNページのすべてがSDRAM152へとロードされたかどうか示すために使用されることができる。このインジケータは1つの値(例えば0)に初期化され、いったん第2のコードイメージ222のページのすべてがSDRAM152へとロードされると、別の値(例えば1)に設定されることができる。全体の第2のコードイメージ222がロードされた後で、メインテーブルとページテーブルは削除されることができる。
【0052】
図7は、第2コードイメージ222のページがSDRAM152へとロードされたかどうかを決定する構造700の一設計を示す。構造700は、どのページがアクセス可能であるかを追跡するために、メモリ保護に使用された構造と類似であることができる。したがって、構造700は、メモリ保護に使用される構造と同じ方法で、インプリメントされ、更新されうる。
【0053】
様々な他の構造はまた、第2のコードイメージ222のどのページがSDRAM152へとロードされたかを追跡するために使用されることができる。例えば、各ページについて1ビットを含んでいるビットマップが使用されることができる。各ページについてのビットは、ページがSDRAM152へとロードされていない場合には1つの値(例、0)に設定され、あるいは、ページがロードされている場合には別の値(例、1)に設定されることができる。
【0054】
図8は、本発明の態様にしたがって、例えばフェーズを製造(manufacture)あるいはプロビジョンニングしている間に、メモリデバイスをプログラムするためのプロセス800の設計を示す。第1のセキュリティ情報は、第1のコードイメージとあるいは他の情報に基づいて生成されることができる(ブロック812)。第2のセキュリティ情報は、第2のコードイメージに基づいて生成されることができる(ブロック814)。第1のコードイメージは、無線デバイスに使用されたメモリデバイスにプログラムされることができる(ブロック816)。第1のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするために、メモリデバイスからロードされることができる。第2のコードイメージはメモリデバイスにプログラムされることができる(ブロック818)。無線デバイスをさらにあるいは十分にブートするために、無線デバイスが動作可能である間、第2のコードイメージは、メモリデバイスからロードされることができる。第1及び第2のセキュリティ情報はメモリデバイスへプログラムされ、それぞれ、第1及び第2のコードイメージを認証するために使用されることができる(ブロック820)。
【0055】
ブロック814については、第2のコードイメージは、複数のページに分割されることができ、各ページは、そのページについてのハッシュダイジェストを得るために安全ハッシュアルゴリズムでハッシュされることができる。複数のページについてのハッシュダイジェストのテーブルが生成されることができ、ブロック820でメモリデバイスにプログラムされることができる。ブロック812については、デジタル署名は、第1のコードイメージ、プライベートキー、および第2のコードイメージについてのハッシュダイジェストのテーブル、に基づいて生成されることができる。プライベートキーに対応するパブリックキーを含んでいる証明書が生成されることができる。証明書とデジタル署名は、ブロック820でメモリデバイスへとプログラムされることができる。
【0056】
図9は、本発明の態様にしたがって、パワーアップ時に無線デバイスのプログレッシブブートを実行するためのプロセス900の設計を示す。第1のコードイメージは、無線デバイスをブートするために外部メモリからロードされることができ、例えばNANDフラッシュからSDRAMまでロードされる(ブロック912)。第1のコードイメージについての第1のセキュリティ情報は、外部メモリから得られることができる(ブロック914)。第1のコードイメージは、第1のセキュリティ情報に基づいて認証されることができる(ブロック916)。無線デバイスは、第1のコードイメージをロードし認証した後で動作可能にされうる(ブロック918)。動作可能である間に、無線デバイスは、キーパッド入力を処理し、無線システムを用いて呼び出しを確立すること等が可能である。
【0057】
無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、第2のコードイメージは、外部メモリからロードされることができる(ブロック920)。第2のコードイメージについての第2のセキュリティ情報は、外部メモリから得られることができる(ブロック922)。第2のコードイメージは、第2のセキュリティ情報に基づいて認証されることができる(ブロック924)。認証される場合には、第2のコードイメージの実行はイネーブルにされることができる(ブロック926)。
【0058】
ブロック920については、無線デバイスが動作可能である間に、第2のコードイメージは、バックグラウンドタスク及び/またはオンデマンドとして、ロードされることができる。オンデマンドのロードについては、第2のコードイメージのページについてのメモリアクセスは受け取られることができる。アクセスされているページを含んでいる第2のコードイメージの予め決定された数のページは、メモリアクセスに応じて、外部メモリからロードされることができる。
【0059】
第2のコードイメージは、複数のページを備えることができ、そしてそれは外部メモリから、一度に1ページ、ロードされることができる。少なくとも1つのテーブルは、ロードされた第2のコードイメージのページと、ロードされていない第2のコードイメージのページと、を追跡するために保持されることができる。例えば、マルチプルアドレス範囲についてのマルチプルエントリを備えたメインテーブルは、保持されることができる。マルチプルアドレス範囲についてのマルチプルページテーブルもまた保持されることができ、各アドレス範囲につき1つのページテーブルがあり、各ページテーブルは、そのページテーブルについてのアドレス範囲内でマルチプルページについてのマルチプルエントリを含む。メインテーブルの各エントリは、対応するページテーブルに対するポインタを含むことができる。対応するページテーブルの各エントリは、関連するページがロードされアクセス可能かどうかを示すことができる。テーブル(単数または複数)は、第2のコードイメージをロードする前に作成され、そして、第2のコードイメージをロードした後で削除されることができる。
【0060】
ブロック916については、第1のセキュリティ情報は、証明書とデジタル署名を備えることができる。証明書は、ルートパブリックキーに基づいて認証されることができ、そしてそれは無線デバイスで安全に保存されることができる。第1のコードイメージは、デジタル署名と証明書からのパブリックキーに基づいて認証されることができる。ブロック924については、第2のセキュリティ情報は、少なくとも1つのハッシュダイジェストを備えることができ、そしてそれは、第1のセキュリティ情報に基づいて認証されることができる。第2のコードイメージは、少なくとも1つのハッシュダイジェストに基づいて、認証されることができる。
【0061】
図10は、本発明の態様にしたがって、コードイメージを認証するためのプロセス1の設計を示す。プロセス1000は、図9のブロック920〜924に使用されることができる。コードイメージの複数のページは、外部メモリから検索されることができ、複数のページは、別個のセキュリティ情報と関連づけられる(ブロック1012)。複数のページは、一度に1ページ、そして、予め決定された順序において(例、バックグラウンドローディング用)、あるいは、コードイメージのページについてのメモリアクセスに基づいて決定されるランダムな順序において(例、オンデマンドローディング用)、のいずれかで、検索されることができる。外部メモリから検索された各ページは、ページについてのセキュリティ情報に基づいて、認証されることができる(ブロック1014)。1つの設計では、複数のページのハッシュダイジェストのテーブルは、外部メモリから検索され認証されることができる。各検索されたページは、そのページについて生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいてハッシュされることができる。生成されたハッシュダイジェストがページについて認証されたハッシュダイジェストと整合する場合には、検索されたページは、認証されたものとして宣言されることができ、そしてそれは、ハッシュダイジェストのテーブルからであってもよい。
【0062】
図11は、本発明の態様にしたがった、NANDフラッシュ150のためのプログラミング局1100の設計のブロック図を示す。プログラミング局1100は、コントローラ/プロセッサ1110、メモリ1112、プログラミングツール1114、そしてデータベース1116、を含む。コントローラ/プロセッサ1110は、図2で示される安全な処理を実行し、プログラミング局1100のオペレーションをさらに指示することができる。メモリ1112は、コントローラ/プロセッサ1110によって使用されるデータ及びコードを保存することができる。プログラミングツール1114は、NANDフラッシュ150を、例えば図2に示されるように、プログラムすることができる。データベース1116は、NANDフラッシュ150、暗号キー等にプログラムされるべきコードイメージを保存することができる。プログラミング局1100は、図8のプロセス800及び/またはメモリをプログラムする他のプロセス、を実行することができる。
【0063】
明らかにするために、ブート技術は、NANDフラッシュ及びSDRAMを備えたメモリ構成について説明されている。ブート技術はまた、他のメモリ構成及び他のタイプのメモリに使用されることができる。ブート技術は、任意の数のページングされていないコードイメージ及びページングされたコードイメージ、任意の数のページングされていないセグメント及びページングされたセグメント、任意のページサイズ、等にさらに使用されることができる。
【0064】
ここにおいて説明されたブート技術は、ある利益(certain advantages)を提供することができる。より短い知覚ブート時間は、パワーアップ時にメモリロードのために達成されることができる。このことは、工場テストコードがページングされていないセグメントにおいて保存され最初にロードされることができるので、より短い工場テスト時間をもたらすことができる。工場テストコードは、これらのコードの初期ロードに依存することができ、無線デバイスがローディングプロセスを終了しなかった場合にさえ、パワーアップ後すぐに無線デバイスに対するテスト機器トーク(test equipment talk)を有することができる。より短い知覚ブート時間は、パワーアップ後、ユーザが待機する時間の量を減らすることができ、したがって、ユーザ経験を改善することができる。
【0065】
当業者は、情報と信号は様々な異なる技術および技法(technologies and techniques)のうちのいずれかを使用して表わされることができるということを理解するであろう。例えば、上記説明の全体にわたって参照されることができるデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場あるいは磁性粒子、光場あるいは光学粒子、あるいはそれらのいずれの組合せによって表わされることができる。
【0066】
当業者は、様々な説明のための論理ブロック、モジュール、回路、および、ここに開示された態様に関連して説明されたアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアあるいは両方の組合せとしてインプリメントされることができる、ということをさらに理解するであろう。ハードウェアとソフトウェアのこの互換性を明瞭に説明するために、様々な説明のためのコンポーネント、ブロック、モジュール、回路およびステップが、一般に、それらの機能性という観点から、上記に説明されてきた。そのような機能性が、ハードウェアあるいはソフトウェアとしてインプリメントされるかどうかは、特定のアプリケーションと全体のシステムに課された設計制約(design constraints)に依存する。熟練職人は、各特定のアプリケーションについて様々な方法で、説明された機能性をインプリメントすることができるが、そのようなインプリメンテーションの決定は、本発明の範囲からの逸脱を生じさせるものとして解釈されるべきでない。
【0067】
ここでの開示に関連して説明された様々な説明のための論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)あるいは他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいは、ここに説明された機能を実行するように設計されたそれらのいずれの組み合わせ、でインプリメントされる、あるいは実行されることができる。汎用プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステート機械(state machine)であってもよい。プロセッサはまた、コンピューティングデバイス(computing devices)の組み合わせ、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアを併用しての1つまたは複数のマイクロプロセッサ、あるいはいずれの他のそのような構成のもの、としてインプリメントされることができる。
【0068】
ここでの開示に関連して説明された方法あるいはアルゴリズムのステップは、直接的にハードウェアにおいて、プロセッサによって実行されたソフトウェアモジュールにおいて、あるいはこれら2つの組み合わせにおいて、具現化されることができる。ソフトウェアモジュール、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROMあるいは当技術分野において知られているストレージ媒体のいずれの他の形態、において存在する(reside)ことができる。例示的なストレージ媒体は、プロセッサに結合されるので、プロセッサがストレージ媒体から情報を読み取ることができ、またストレージ媒体に情報を書き込むことができる。あるいは、ストレージ媒体は、プロセッサに一体化されることができる。プロセッサとストレージ媒体は、ASICにおいて存在していてもよい。ASICは、ユーザ端末に存在していてもよい。あるいは、プロセッサとストレージ媒体は、ユーザ端末において、ディスクリートコンポーネントとして存在していてもよい。
【0069】
1つまたは複数の例示的な設計において、説明された機能は、ハードウェア、ソフトウェア、及び/または、ファームウェア、あるいは、それらのいずれの組み合わせ、においてインプリメントされることができる。ソフトウェアでインプリメントされる場合には、関数(functions)は、コンピュータ可読媒体上の1つまたは複数の命令あるいはコードとして、保存されあるいは送信されることができる。コンピュータ可読媒体(Computer-readable media)は、コンピュータストレージ媒体(computer storage media)と、1つの場所から別の場所へとコンピュータプログラムの転送を容易にするいずれの媒体をも含む通信媒体と、を両方含んでいる。ストレージ媒体は、汎用あるいは専用のコンピュータによってアクセスされることができる、いずれの利用可能な媒体であることができる。例として、また限定されないが、そのようなコンピュータ可読メディアは、RAM、ROM、EEPROM、CD−ROMあるいは他の光学ディスクストレージ(optical disk storage)、磁気ディスクストレージ(magnetic disk storage)あるいは他の磁気ストレージデバイス(magnetic storage devices)、あるいは、任意の他の媒体も備えることができ、それらは、命令あるいはデータ構造の形態において望ましいプログラムコード手段(desired program code means)を保存あるいは搬送するように使用されることができ、また、汎用あるいは専用のコンピュータ、あるいは、汎用あるいは専用のプロセッサ、によってアクセスされることができる。また、いずれの接続(connection)もコンピュータ可読メディア(computer-readable medium)と適切に名付けられる。例えば、ソフトウェアがウェブサイト、サーバ、あるいは、同軸ケーブル、光ファイバーケーブル、ツイストペア(twisted pair)、デジタル加入者ライン(digital subscriber line)(DSL)、あるいは赤外線、無線、およびマイクロ波のような無線技術を使用している他の遠隔ソース、から送信される場合には、そのときには、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、あるいは赤外線、無線、およびマイクロ波のような無線技術は、媒体(medium)の定義に含まれている。ここに使用されているように、ディスク(disk)とディスク(disc)は、コンパクトディスク(compact disc)(CD)、レーザーディスク(登録商標)(laser disc)、光学ディスク(optical disc)、デジタル汎用ディスク(digital versatile disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(blu-ray disc)を含んでおり、「ディスク(disks)」は、大抵、データを磁気で再生しているが、「ディスク(discs)」は、レーザーで光学的に再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0070】
本開示の上記の説明は、いずれの当業者も本開示を作り、あるいは、使用することを可能にするために提供されている。本開示に対する様々な修正は、当業者にとっては容易に明らかであり、そして、ここにおいて定義された包括的な原理は、本開示の範囲から逸脱することなく、他の変形に適用されることができる。したがって、本開示は、ここにおいて説明された例及び設計に限定されるようには意図されてはおらず、ここにおいて開示された原理および新規な特徴に整合する最も広い範囲が与えられるべきである。

【特許請求の範囲】
【請求項1】
無線デバイスに使用されるメモリデバイスに、第1及び第2のコードイメージをプログラムするように構成されたプロセッサ、
を備え、前記第1のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされており、前記第2のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされる、
装置。
【請求項2】
前記プロセッサは、前記第1のコードイメージに基づいて第1のセキュリティ情報を生成するように、前記第2のコードイメージに基づいて第2のセキュリティ情報を生成するように、そして前記メモリデバイスに前記第1及び第2のセキュリティ情報をプログラムするように、構成されており、前記第1及び第2のセキュリティ情報は、それぞれ、前記第1及び第2のコードイメージを認証するために使用される、請求項1に記載の装置。
【請求項3】
前記プロセッサは、前記第1のコードイメージとプライベートキーとに基づいてデジタル署名を生成するように、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するように、そして、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムするように、構成されている、請求項1に記載の装置。
【請求項4】
前記プロセッサは、前記第2のコードイメージを複数のページに分割するように、前記のページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするように、前記複数のページについてのハッシュダイジェストのテーブルを生成するように、そして、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムするように、構成されている、請求項3に記載の装置。
【請求項5】
前記プロセッサは、ハッシュダイジェストの前記テーブルにさらに基づいて前記デジタル署名を生成するように構成されている、請求項4に記載の装置。
【請求項6】
無線デバイスに使用されるメモリデバイスに第1のコードイメージをプログラムすることと、なお、前記第1のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされている;
前記メモリデバイスに第2のコードイメージをプログラムすることと、なお、前記第2のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされている;
を備えている方法。
【請求項7】
前記第1のコードイメージに基づいて第1のセキュリティ情報を生成することと、
前記第2のコードイメージに基づいて第2のセキュリティ情報を生成することと、
前記メモリデバイスに前記第1及び第2のセキュリティ情報をプログラムすることと、
をさらに備えており、前記第1及び第2のセキュリティ情報は、それぞれ、前記第1及び第2のコードイメージを認証するために使用される、請求項6に記載の方法。
【請求項8】
前記第1のセキュリティ情報を生成することは、前記第1のコードイメージとプライベートキーとに基づいてデジタル署名を生成することと、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成することと、を備えており、前記第1及び第2のセキュリティ情報をプログラムすることは、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムすること、を備えている、請求項7に記載の方法。
【請求項9】
前記第2のセキュリティ情報を生成することは、前記第2のコードイメージを複数のページに分割することと、前記ページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュすることと、前記複数のページについてのハッシュダイジェストのテーブルを生成することと、を備えており、前記第1及び第2のセキュリティ情報をプログラムすることは、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムすることを備えている、請求項7に記載の方法。
【請求項10】
無線デバイスに使用されるメモリデバイスに第1のコードイメージをプログラムするための手段と、なお、前記第1のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされている;
前記メモリデバイスに第2のコードイメージをプログラムするための手段と、なお、前記第2のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされている;
を備えている装置。
【請求項11】
前記第1のコードイメージに基づいて第1のセキュリティ情報を生成するための手段と、
前記第2のコードイメージに基づいて第2のセキュリティ情報を生成するための手段と、
前記メモリデバイスに前記第1及び第2のセキュリティ情報をプログラムするための手段と、
をさらに備え、前記第1及び第2のセキュリティ情報は、それぞれ、前記第1及び第2のコードイメージを認証するために使用されている、請求項10に記載の装置。
【請求項12】
前記第1のセキュリティ情報を生成するための手段は、前記第1のコードイメージとプライベートキーとに基づいてデジタル署名を生成するための手段と、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するための手段と、を備えており、前記第1及び第2のセキュリティ情報をプログラムするための手段は、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムするための手段、を備えている、請求項11に記載の装置。
【請求項13】
前記第2のセキュリティ情報を生成するための手段は、前記第2のコードイメージを複数のページに分割するための手段と、前記ページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするための手段と、前記複数のページについてのハッシュダイジェストのテーブルを生成するための手段と、を備えており、前記第1及び第2のセキュリティ情報をプログラムするための手段は、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムするための手段を備えている、請求項11に記載の装置。
【請求項14】
無線デバイスをブートするために外部メモリから第1のコードイメージをロードするように構成されたメモリコントローラと;
前記第1のコードイメージをロードした後で前記無線デバイスを動作可能にするように構成されたメインコントローラと、なお、前記メモリコントローラは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第2のコードイメージをロードするようにさらに構成されている;
を備える装置。
【請求項15】
前記メモリコントローラは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第2のコードイメージをロードするように構成されている、請求項14に記載の装置。
【請求項16】
前記メモリコントローラは、
前記第2のコードイメージのページについてのメモリアクセスを受け取るように、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第2のコードイメージの予め決定された数のページをロードするように、
構成されている、請求項14に記載の装置。
【請求項17】
前記メモリコントローラは、前記外部メモリから、前記第1のコードイメージについての第1のセキュリティ情報を得るように、そして、前記第1のセキュリティ情報に基づいて前記第1のコードイメージを認証するように、構成されており、前記メインコントローラは、前記第1のコードイメージが認証される場合には前記無線デバイスを動作可能にするように構成されている、請求項14に記載の装置。
【請求項18】
前記第1のセキュリティ情報は、証明書とデジタル署名とを備えており、前記メモリコントローラは、ルートパブリックキーに基づいて前記証明書を認証するように、前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第1のコードイメージを認証するように、構成されている、請求項17に記載の装置。
【請求項19】
前記メモリコントローラは、
前記外部メモリから、前記第2のコードイメージについての第2のセキュリティ情報を得るように、
前記第2のセキュリティ情報に基づいて前記第2のコードイメージを認証するように、
認証される場合には、前記第2のコードイメージの実行をイネーブルにするように、
構成されている、
請求項17に記載の装置。
【請求項20】
前記第2のセキュリティ情報は、少なくとも1つのハッシュダイジェストを備えており、前記メモリコントローラは、前記第1のセキュリティ情報に基づいて前記少なくとも1つのハッシュダイジェストを認証するように、そして、前記少なくとも1つのハッシュダイジェストに基づいて前記第2のコードイメージを認証するように、構成されている、請求項19に記載の装置。
【請求項21】
前記第2のコードイメージは、複数のページを備えており、前記メモリコントローラは、前記外部メモリから、1度に1ページ、前記第2のコードイメージの前記複数のページをロードするように構成されている、請求項14に記載の装置。
【請求項22】
前記メモリコントローラは、前記外部メモリからロードされた前記第2のコードイメージのページと、ロードされなかった前記第2のコードイメージのページと、を示す少なくとも1つのテーブルを保持するように構成されている、請求項21に記載の装置。
【請求項23】
前記メモリコントローラは、前記第2のコードイメージをロードする前に前記少なくとも1つのテーブルを作成するように、そして、前記第2のコードイメージをロードした後で前記少なくとも1つのテーブルを削除するように、構成されている、請求項22に記載の装置。
【請求項24】
前記メモリコントローラは、マルチプルアドレス範囲についてのマルチプルエントリを備えたメインテーブルを保持するように、前記マルチプルアドレス範囲についてのマルチプルページテーブルを保持するように、構成されており、各アドレス範囲につき1つのページテーブルがあり、各ページテーブルは、前記ページテーブルについての前記アドレス範囲内でマルチプルページについてのマルチプルエントリを含む、請求項21に記載の装置。
【請求項25】
前記メインテーブルの各エントリは、対応するページテーブルに対するポインタを含んでおり、前記対応するページテーブルの各エントリは、関連ページがアクセス可能かどうかを示す、請求項24に記載の装置。
【請求項26】
前記外部メモリは、NANDフラッシュメモリであり、前記メモリコントローラは、前記NANDフラッシュからシンクロナス動的ランダムアクセスメモリ(SDRAM)まで、前記第1及び第2のコードイメージをロードするように構成されている、請求項14に記載の装置。
【請求項27】
動作可能である間に、前記無線デバイスは、キーパッド入力を処理すること、無線通信システムとの呼び出しを確立すること、のうちの少なくとも1つが可能である、請求項14に記載の装置。
【請求項28】
無線デバイスをブートするために外部メモリから第1のコードイメージをロードすることと、
前記第1のコードイメージをロードした後で前記無線デバイスを動作可能にすることと、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第2のコードイメージをロードすることと、
を備える方法。
【請求項29】
前記第2のコードイメージをロードすることは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第2のコードイメージをロードすることを備えている、請求項28に記載の方法。
【請求項30】
前記第2のコードイメージをロードすることは、
前記第2のコードイメージのページについてのメモリアクセスを受け取ることと、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第2のコードイメージの予め決定された数のページをロードすることと、
を備えている、請求項28に記載の方法。
【請求項31】
前記外部メモリから、前記第1のコードイメージについての第1のセキュリティ情報を得ることと、
前記第1のセキュリティ情報に基づいて前記第1のコードイメージを認証することと、
をさらに備えており、前記無線デバイスは、前記第1のコードイメージが認証される場合には動作可能にされる、請求項28に記載の方法。
【請求項32】
前記第1のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第1のコードイメージを認証することは、
ルートパブリックキーに基づいて前記証明書を認証することと、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第1のコードイメージを認証することと、
を備えている、請求項31に記載の方法。
【請求項33】
前記外部メモリから前記第2のコードイメージについての第2のセキュリティ情報を得ることと、
前記第2のセキュリティ情報に基づいて、前記第2のコードイメージを認証することと、
認証される場合には、前記第2のコードイメージの実行をイネーブルにすることと、
をさらに備えている請求項31に記載の方法。
【請求項34】
前記第2のセキュリティ情報は、少なくとも1つのハッシュダイジェストを備えており、前記第2のコードイメージを認証することは、
前記第1のセキュリティ情報に基づいて前記少なくとも1つのハッシュダイジェストを認証することと、
前記少なくとも1つのハッシュダイジェストに基づいて前記第2のコードイメージを認証することと、
を備える、請求項23に記載の方法。
【請求項35】
無線デバイスをブートするために外部メモリから第1のコードイメージをロードするための手段と、
前記第1のコードイメージをロードした後で前記無線デバイスを動作可能にするための手段と、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第2のコードイメージをロードするための手段と、
を備える装置。
【請求項36】
前記外部メモリから、前記第1のコードイメージについての第1のセキュリティ情報を得るための手段と、
前記第1のセキュリティ情報に基づいて前記第1のコードイメージを認証するための手段と、
をさらに備えており、前記無線デバイスは、前記第1のコードイメージが認証される場合には、動作可能にされる、請求項35に記載の装置。
【請求項37】
前記第1のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第1のコードイメージを認証するための手段は、
ルートパブリックキーに基づいて前記証明書を認証するための手段と、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第1のコードイメージを認証するための手段と、
を備えている、請求項36に記載の装置。
【請求項38】
前記外部メモリから前記第2のコードイメージについての第2のセキュリティ情報を得るための手段と、
前記第2のセキュリティ情報に基づいて、前記第2のコードイメージを認証するための手段と、
認証される場合には、前記第2のコードイメージの実行をイネーブルにするための手段と、
をさらに備えている請求項36に記載の装置。
【請求項39】
前記第2のセキュリティ情報は、少なくとも1つのハッシュダイジェストを備えており、前記第2のコードイメージを認証するための手段は、
前記第1のセキュリティ情報に基づいて前記少なくとも1つのハッシュダイジェストを認証するための手段と、
前記少なくとも1つのハッシュダイジェストに基づいて前記第2のコードイメージを認証するための手段と、
を備えている、請求項38に記載の装置。
【請求項40】
コンピュータプログラムプロダクトであって、
無線デバイスをブートするために外部メモリから第1のコードイメージをコンピュータにロードさせるためのコードと、
前記第1のコードイメージをロードした後でコンピュータに前記無線デバイスを動作可能にさせるためのコードと、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第2のコードイメージをコンピュータにロードさせるためのコードと、
を備えるコンピュータ可読媒体、
を備えるコンピュータプログラムプロダクト。
【請求項41】
前記コンピュータ可読媒体は、
前記外部メモリから、前記第1のコードイメージについての第1のセキュリティ情報を前記コンピュータに得させるためのコードと、
前記第1のセキュリティ情報に基づいて前記第1のコードイメージを前記コンピュータに認証させるためのコードと、
前記第1のコードイメージが認証される場合には、前記コンピュータに前記無線デバイスを動作可能にさせるためのコードと、
をさらに備えている請求項40に記載のコンピュータプログラムプロダクト。
【請求項42】
前記コンピュータ可読媒体は、
前記外部メモリから前記第2のコードイメージについての第2のセキュリティ情報を前記コンピュータに得させるためのコードと、
前記第2のセキュリティ情報に基づいて、前記第2のコードイメージを前記コンピュータに認証させるためのコードと、
認証される場合には、前記第2のコードイメージの実行を前記コンピュータにイネーブルにさせるためのコードと、
をさらに備えている請求項41に記載のコンピュータプログラムプロダクト。
【請求項43】
外部メモリから、コードイメージの複数のページを検索するように、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている;
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証するように;j
構成されたメモリコントローラ、
を備えている装置。
【請求項44】
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページについては、前記メモリコントローラは、生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュするように、そして、前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言するように、構成される、請求項43に記載の装置。
【請求項45】
前記メモリコントローラは、
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索するように、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている;
ハッシュダイジェストの前記テーブルを認証するように;
前記の認証されたハッシュダイジェストのテーブルに基づいて前記コードイメージの前記複数のページを認証するように;
構成されている、請求項43に記載の装置。
【請求項46】
前記メモリコントローラは、前記外部メモリから、一度に1ページで予め決定された順序で、前記コードイメージの前記複数のページを検索するように構成されている、請求項43に記載の装置。
【請求項47】
前記メモリコントローラは、一度に1ページで、前記コードイメージのページについてのメモリアクセスに基づいて決定されたランダムな順序で、前記コードイメージの前記複数のページを検索するように構成されている、請求項43に記載の装置。
【請求項48】
外部メモリから、コードイメージの複数のページを検索することと、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている;
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証することと;
を備えている方法。
【請求項49】
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページを認証することは、
生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュすることと、
前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言することと、
を備える、請求項48に記載の方法。
【請求項50】
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索することと、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている;
ハッシュダイジェストの前記テーブルを認証することと、なお、前記外部メモリから検索された各ページは、前記ページについて認証されたハッシュダイジェストに基づいて認証される;
をさらに備えている、請求項48に記載の方法。
【請求項51】
外部メモリから、コードイメージの複数のページを検索するための手段と、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている;
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証するための手段と、
を備えている装置。
【請求項52】
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページを認証するための手段は、
生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュするための手段と、
前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言するための手段と、
を備える、請求項51に記載の装置。
【請求項53】
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索するための手段と、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている;
ハッシュダイジェストの前記テーブルを認証するための手段と、なお、前記外部メモリから検索された各ページは、前記ページについて認証されたハッシュダイジェストに基づいて認証される;
をさらに備えている、請求項51に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公表番号】特表2011−501321(P2011−501321A)
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2010−531169(P2010−531169)
【出願日】平成20年10月21日(2008.10.21)
【国際出願番号】PCT/US2008/080653
【国際公開番号】WO2009/055394
【国際公開日】平成21年4月30日(2009.4.30)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】