(57)【特許請求の範囲】
【請求項１】
メモリデバイスをプログラムするための装置であって、
無線デバイスに使用される前記メモリデバイスに、第１及び第２のコードイメージを書き込むように構成されたプロセッサ、ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶する、
を備えており、
前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされ、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされ、前記メモリデバイスは不揮発性メモリであり、
前記プロセッサは、前記第１のコードイメージに基づいて第１のセキュリティ情報を生成するように、前記第２のコードイメージに基づいて第２のセキュリティ情報を生成するように、そして前記メモリデバイスに前記第１及び第２のセキュリティ情報を書き込むように、さらに構成されており、前記第１及び第２のセキュリティ情報は、それぞれ、前記第１及び第２のコードイメージを認証するために使用され、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記プロセッサは、
前記第２のコードイメージの各ページが、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証されることができるように、前記第２のコードイメージの各ページについてセキュリティ情報を生成し、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
装置。
【請求項２】
メモリデバイスをプログラムするための装置であって、
無線デバイスに使用される前記メモリデバイスに、第１及び第２のコードイメージを書き込むように構成されたプロセッサ、ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶する、
を備えており、
前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされ、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされ、前記メモリデバイスは不揮発性メモリであり、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記プロセッサは、
前記第２のコードイメージの各ページが、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証されることができるように、前記第２のコードイメージの各ページについてセキュリティ情報を生成する、
装置。
【請求項３】
前記プロセッサは、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名を生成するように、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するように、そして、前記メモリデバイスに前記証明書と前記デジタル署名を書き込むように、構成されている、請求項１に記載の装置。
【請求項４】
前記プロセッサは、前記第２のコードイメージを複数のページに分割するように、前記のページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするように、前記複数のページについてのハッシュダイジェストのテーブルを生成するように、そして、前記メモリデバイスにハッシュダイジェストの前記テーブルを書き込むように、構成されている、請求項１に記載の装置。
【請求項５】
前記プロセッサは、ハッシュダイジェストの前記テーブルにさらに基づいてデジタル署名を生成するように構成されている、請求項４に記載の装置。
【請求項６】
方法であって、
無線デバイスが使用するメモリデバイスに第１のコードイメージを第１コードイメージプログラム手段が書き込むことと、なお、前記無線デバイスをブート手段がブートし前記無線デバイスを動作可能手段が動作可能にするために、前記第１のコードイメージを前記メモリデバイスから前記無線デバイスの中の揮発性メモリに第１コードイメージロード手段がロードし、前記メモリデバイスは不揮発性メモリである；および、
前記メモリデバイスに第２のコードイメージを第２コードプログラム手段が書き込むことと、なお、前記無線デバイスを前記ブート手段がさらにブートするために、前記無線デバイスが動作可能である間に、前記第２のコードイメージを前記メモリデバイスから前記無線デバイスの中の揮発性メモリに第２コードイメージロード手段がロードする；
を備えており、ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記方法は、さらに、
前記第１のコードイメージに基づいて第１のセキュリティ情報を第１セキュリティ情報生成手段が生成することと；
前記第２のコードイメージに基づいて第２のセキュリティ情報を第２セキュリティ情報生成手段が生成することと；
前記メモリデバイスに前記第１及び第２のセキュリティ情報をセキュリティ情報プログラム手段が書き込むことと、なお、前記第１及び第２のコードイメージを認証手段が認証するために、前記認証手段は、前記第１及び第２のセキュリティ情報を、それぞれ、使用する；
を備え、
前記無線デバイスを前記ブート手段がブートするために前記第１コードイメージロード手段がロードする前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントから前記第１コードイメージロード手段がロードする前記第１のコードイメージを含み、前記無線デバイスをブートするように適合手段が適合するプログラムコードを備え；
前記第２コードイメージロード手段がロードする前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとして前記第２コードイメージロード手段がロードする前記第２のコードイメージを含み；
前記第２のコードイメージの各ページを、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、前記認証手段が認証できるように、前記第２のコードイメージの各ページについて、セキュリティ情報を前記第２セキュリティ情報生成手段が生成する、
方法。
【請求項７】
方法であって、
無線デバイスに使用されるメモリデバイスに第１のコードイメージを第１コードイメージプログラム手段が書き込むことと、なお、前記無線デバイスをブート手段がブートし前記無線デバイスを動作可能手段が動作可能にするために、前記第１のコードイメージを前記メモリデバイスから前記無線デバイスの中の揮発性メモリに第１コードイメージロード手段がロードし、前記メモリデバイスは不揮発性メモリである；
前記メモリデバイスに第２のコードイメージを第２コードプログラム手段が書き込むことと、なお、前記無線デバイスを前記ブート手段がさらにブートするために、前記無線デバイスが動作可能である間に、前記第２のコードイメージを前記メモリデバイスから前記揮発性メモリに第２コードイメージロード手段がロードする；
を備えており、ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスを前記ブート手段がブートするために前記第１コードイメージロード手段がロードする前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントからロードする前記第１のコードイメージを含み、前記無線デバイスをブートするように適合手段が適合するプログラムコードを備え；
前記第２コードイメージロード手段がロードする前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとして前記第２コードイメージロード手段がロードする前記第２のコードイメージを含み；
前記第２のコードイメージの各ページを、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証手段が認証できるように、前記第２のコードイメージの各ページについて、セキュリティ情報を第２セキュリティ情報生成手段が生成し、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
方法。
【請求項８】
前記第１のセキュリティ情報を前記第１セキュリティ情報生成手段が生成することは、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名をデジタル署名生成手段が生成することと、前記プライベートキーに対応するパブリックキーを含んでいる証明書を証明書生成手段が生成することと、を備えており、前記第１及び第２のセキュリティ情報を前記セキュリティ情報プログラム手段がプログラムすることは、前記メモリデバイスに前記証明書と前記デジタル署名を、証明書およびデジタル署名プログラム手段が書き込むこと、を備えている、請求項６に記載の方法。
【請求項９】
メモリデバイスをプログラムするための装置であって、
無線デバイスに使用される前記メモリデバイスに第１のコードイメージを書き込むための手段と、なお、前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされており、なお、前記メモリデバイスは、不揮発性メモリである；
前記メモリデバイスに第２のコードイメージを書き込むための手段と、なお、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされ、ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し；
前記第１のコードイメージに基づいて第１のセキュリティ情報を生成するための手段と；
前記第２のコードイメージに基づいて第２のセキュリティ情報を生成するための手段と；
前記メモリデバイスに前記第１及び第２のセキュリティ情報を書き込むための手段と、なお、前記第１及び第２のセキュリティ情報は、それぞれ、前記第１及び第２のコードイメージを認証するために使用される；
を備え、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページが、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証されることができるように、前記第２のコードイメージの各ページについて、セキュリティ情報が生成され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
装置。
【請求項１０】
メモリデバイスをプログラムするための装置であって、
無線デバイスに使用される前記メモリデバイスに第１のコードイメージを書き込むための手段と、なお、前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされており、なお、前記メモリデバイスは、不揮発性メモリである；
前記メモリデバイスに第２のコードイメージを書き込むための手段と、なお、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスから前記無線デバイスの中の揮発性メモリにロードされている；
を備え、
ここで、前記メモリデバイスは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記メモリデバイスの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページが、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証されることができるように、前記第２のコードイメージの各ページについて、セキュリティ情報が生成され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
装置。
【請求項１１】
前記第１のセキュリティ情報を生成するための手段は、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名を生成するための手段と、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するための手段と、を備えており、前記第１及び第２のセキュリティ情報を書き込むための手段は、前記メモリデバイスに前記証明書と前記デジタル署名を書き込むための手段、を備えている、請求項９に記載の装置。
【請求項１２】
前記第２のセキュリティ情報を生成するための手段は、前記第２のコードイメージを複数のページに分割するための手段と、前記ページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするための手段と、前記複数のページについてのハッシュダイジェストのテーブルを生成するための手段と、を備えており、前記第１及び第２のセキュリティ情報を書き込むための手段は、前記メモリデバイスにハッシュダイジェストの前記テーブルを書き込むための手段を備えている、請求項９に記載の装置。
【請求項１３】
無線デバイスであって、
前記無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードするように構成されたメモリコントローラと、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするように構成されたメインコントローラと、なお、前記メモリコントローラは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージをロードするようにさらに構成されている；
を備えており、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記メモリコントローラは、前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を得るように、そして、前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証するように、構成されており、前記メインコントローラは、前記第１のコードイメージが認証される場合には前記無線デバイスを動作可能にするように構成され、
前記メモリコントローラは、
前記外部メモリから、前記第２のコードイメージについての第２のセキュリティ情報を得るように、
前記第２のセキュリティ情報に基づいて前記第２のコードイメージを認証するように、
認証される場合には、前記第２のコードイメージの実行をイネーブルにするように、
構成され、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記メインコントローラは、さらに、
前記第２のコードイメージの各ページを、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証するように、構成されており、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
無線デバイス。
【請求項１４】
無線デバイスであって、
前記無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードするように構成されたメモリコントローラと、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするように構成されたメインコントローラと、
なお、前記メモリコントローラは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージをロードするようにさらに構成されている；
を備えており、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記メインコントローラは、さらに、
前記第２のコードイメージの各ページを、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に認証するように、構成されており、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
無線デバイス。
【請求項１５】
前記メモリコントローラは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第２のコードイメージをロードするように構成されている、請求項１３に記載の無線デバイス。
【請求項１６】
前記メモリコントローラは、
前記第２のコードイメージのページについてのメモリアクセスを受け取るように、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第２のコードイメージの予め決定された数のページをロードするように、
構成されている、請求項１３に記載の無線デバイス。
【請求項１７】
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記メモリコントローラは、ルートパブリックキーに基づいて前記証明書を認証するように、前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを認証するように、構成されている、請求項１３に記載の無線デバイス。
【請求項１８】
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記メモリコントローラは、前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストを認証するように、そして、前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを認証するように、構成されている、請求項１３に記載の無線デバイス。
【請求項１９】
前記第２のコードイメージは、複数のページを備えており、前記メモリコントローラは、前記外部メモリから、１度に１ページ、前記第２のコードイメージの前記複数のページをロードするように構成されている、請求項１３に記載の無線デバイス。
【請求項２０】
前記メモリコントローラは、前記外部メモリからロードされた前記第２のコードイメージのページと、ロードされなかった前記第２のコードイメージのページと、を示す少なくとも１つのテーブルを保持するように構成されている、請求項１９に記載の無線デバイス。
【請求項２１】
前記メモリコントローラは、前記第２のコードイメージをロードする前に前記少なくとも１つのテーブルを作成するように、そして、前記第２のコードイメージをロードした後で前記少なくとも１つのテーブルを削除するように、構成されている、請求項２０に記載の無線デバイス。
【請求項２２】
前記メモリコントローラは、マルチプルアドレス範囲についてのマルチプルエントリを備えたメインテーブルを保持するように、前記マルチプルアドレス範囲についてのマルチプルページテーブルを保持するように、構成されており各アドレス範囲につき１つのページテーブルがあり、各ページテーブルは、前記ページテーブルについての前記アドレス範囲内でマルチプルページについてのマルチプルエントリを含む、請求項１９に記載の無線デバイス。
【請求項２３】
前記メインテーブルの各エントリは、対応するページテーブルに対するポインタを含んでおり、前記対応するページテーブルの各エントリは、関連ページがアクセス可能かどうかを示す、請求項２２に記載の無線デバイス。
【請求項２４】
前記外部メモリは、ＮＡＮＤフラッシュメモリであり、前記メモリコントローラは、前記ＮＡＮＤフラッシュからシンクロナス動的ランダムアクセスメモリ（ＳＤＲＡＭ）まで、前記第１及び第２のコードイメージをロードするように構成されている、請求項１３に記載の無線デバイス。
【請求項２５】
動作可能である間に、前記無線デバイスは、キーパッド入力を処理すること、無線通信システムとの呼び出しを確立すること、のうちの少なくとも１つが可能である、請求項１３に記載の無線デバイス。
【請求項２６】
方法であって、
無線デバイスをブート手段がブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージを第１コードイメージロード手段がロードすることと、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能手段が動作可能にすることと；
前記無線デバイスをさらに前記ブート手段がブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージを第２コードイメージロード手段がロードすることと、ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し；
前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を第１セキュリティ情報取得手段が得ることと；
前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証することと、なお、前記第１のコードイメージを認証する場合には前記無線デバイスを動作可能にする；
前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を第２セキュリティ情報取得手段が得ることと；
前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを第２コードイメージ認証手段が認証することと；
認証する場合には、イネーブル手段が前記第２のコードイメージの実行をイネーブルにすることと；
を備え、
前記無線デバイスを前記ブート手段がブートするために前記第１コードイメージロード手段がロードする前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントから前記第１コードイメージロード手段がロードする前記第１のコードイメージを含み、前記無線デバイスをブートするように適合手段が適合するプログラムコードを備え；
前記第２コードイメージロード手段がロードする前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとして前記第２コードイメージロード手段がロードする前記第２のコードイメージを含み；
前記第２コードイメージロード手段が各ページをロードするときに、第２コードイメージ認証手段が、前記第２のコードイメージの各ページを、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証し、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
方法。
【請求項２７】
方法であって、
無線デバイスをブート手段がブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージを第１コードイメージロード手段がロードすることと、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能手段が動作可能にすることと；
前記無線デバイスをさらに前記ブート手段がブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージを第２コードイメージロード手段がロードすることと；
を備え、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスを前記ブート手段がブートするために前記第１コードイメージロード手段がロードする前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントから前記第１コードイメージロード手段がロードし、前記無線デバイスをブートするように適合手段が適合するプログラムコードを備える、前記第１のコードイメージを含み；
前記第２コードイメージロード手段がロードする前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとして前記第２コードイメージロード手段がロードする前記第２のコードイメージを含み；
前記第２コードイメージロード手段が各ページをロードするときに、第２コードイメージ認証手段が、前記第２のコードイメージの各ページを、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証し、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
方法。
【請求項２８】
前記第２のコードイメージを前記第２コードイメージロード手段がロードすることは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第２のコードイメージを前記第２コードイメージロード手段がロードすることを備えている、請求項２６に記載の方法。
【請求項２９】
前記第２のコードイメージを前記第２コードイメージロード手段がロードすることは、
前記第２のコードイメージのページについてのメモリアクセスを受け取り手段が受け取ることと、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第２のコードイメージの予め決定された数のページを、ページロード手段がロードすることと、
を備えている、請求項２６に記載の方法。
【請求項３０】
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第１のコードイメージを第１コードイメージ認証手段が認証することは、
ルートパブリックキーに基づいて前記証明書を証明書認証手段が認証することと、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを前記第１コードイメージ認証手段が認証することと、
を備えている、請求項２６に記載の方法。
【請求項３１】
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記第２のコードイメージを前記第２コードイメージ認証手段が認証することは、
前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストをハッシュダイジェスト認証手段が認証することと、
前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを前記第２コードイメージ認証手段が認証することと、
を備える、請求項２６に記載の方法。
【請求項３２】
無線デバイスであって、
前記無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードするための手段と、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするための手段と；
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の前記揮発性メモリに第２のコードイメージをロードするための手段と；
を備え、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスはさらに、
前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を得るための手段と；
前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証するための手段と、なお、前記無線デバイスは、前記第１のコードイメージが認証される場合には、動作可能にされる；
前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を得るための手段と；
前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを認証するための手段と；
前記第２のコードイメージが認証される場合には、前記第２のコードイメージの実行をイネーブルにするための手段と；
を備え、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページは、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
無線デバイス。
【請求項３３】
無線デバイスであって、
前記無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードするための手段と、なお、前記外部メモリは不揮発性メモリである；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするための手段と；
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージをロードするための手段と；
を備え、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページは、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
無線デバイス。
【請求項３４】
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第１のコードイメージを認証するための手段は、
ルートパブリックキーに基づいて前記証明書を認証するための手段と、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを認証するための手段と、
を備えている、請求項３２に記載の無線デバイス。
【請求項３５】
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記第２のコードイメージを認証するための手段は、
前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストを認証するための手段と、
前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを認証するための手段と、
を備えている、請求項３２に記載の無線デバイス。
【請求項３６】
コンピュータ可読記憶媒体であって、
コンピュータに、無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードさせるためのコードと、なお、前記外部メモリは不揮発性メモリである、
コンピュータに、前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にさせるためのコードと、
コンピュータに、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージをロードさせるためのコードと、
を備え、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記コンピュータ可読記憶媒体はさらに、
コンピュータに、前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を取得させるためのコードと、
コンピュータに、前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証させるためのコードと、
コンピュータに、前記第１のコードイメージが認証される場合には、前記無線デバイスを動作可能にさせるためのコードと、
コンピュータに、前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を取得させるためのコードと、
コンピュータに、前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを認証させるためのコードと、
コンピュータに、前記第２のコードイメージが認証される場合には、前記第２のコードイメージの実行をイネーブルにさせるためのコードと、
を備え、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページは、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
コンピュータ可読記憶媒体。
【請求項３７】
コンピュータ可読記憶媒体であって、
コンピュータに、無線デバイスをブートするために外部メモリから前記無線デバイスの中の揮発性メモリに第１のコードイメージをロードさせるためのコードと、なお、前記外部メモリは不揮発性メモリである、
コンピュータに、前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にさせるためのコードと、
コンピュータに、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから前記無線デバイスの中の揮発性メモリに第２のコードイメージをロードさせるためのコードと、
を備え、
ここで、前記外部メモリは、非ページ化セグメントと、ページ化セグメントとを含み、前記非ページ化セグメントは、第１のコードイメージを記憶し、前記ページ化セグメントは、前記第２のコードイメージを記憶し、
前記無線デバイスをブートするためにロードされる前記第１のコードイメージは、
前記外部メモリの、コードイメージがページ分割されていない非ページ化セグメントからロードされ、前記無線デバイスをブートするように適合されるプログラムコードを備える前記第１のコードイメージを含み；
ロードされる前記第２のコードイメージは、
前記外部メモリの、コードイメージがページ分割されているページ化セグメントから別々のページとしてロードされる前記第２のコードイメージを含み；
前記第２のコードイメージの各ページは、各ページがロードされるときに、前記第２のコードイメージの他のページおよび前記第１のコードイメージとは別個に、認証され、
ここで、前記第１のコードイメージは、前記無線デバイスをイネーブルにする前にロードされるべきプログラムコードを含み、前記第２のコードイメージは、残りのプログラムコードを含む、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景】
【０００１】
Ｉ．分野
本開示は、一般的にエレクトロニクスに関し、より具体的には、パワーアップ時に無線デバイスをブートするための技術(techniques for booting a wireless device at power up)に関する。
【０００２】
ＩＩ．背景
無線デバイス（例、携帯電話）は、一般的には、無線デバイス内のハードウェアを制御し様々な設計された機能をサポートするプログラムコード(program codes)に基づいて動作する。プログラムコードは、バルク不揮発性メモリにおいて保存され、パワーアップ時(at power up)に、より速い揮発性メモリへとロードされることができる。バルク不揮発性メモリは、経済的に大量のデータを保存することができるが、一度に１ページのみアクセスされることができるＮＡＮＤ型ＦＬＡＳＨであってもよい。ページは、ＮＡＮＤ型ＦＬＡＳＨから検索されることができるデータの最小単位であり、４キロバイト（ＫＢ）あるいはある他のサイズであってもよい。より速い揮発性メモリは、ランダムアクセスをサポートすることができるシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）であってもよい。メモリは、望ましいストレージキャパシティおよびアクセス機能を提供するように、また、可能なかぎり経済的になるように、選択されることができる。
【０００３】
無線デバイスにパワーアップされる(is powered up)ときに、プログラムコードのすべては、バルク不揮発性メモリからより速い揮発性メモリへとロードされることができる。いったんプログラムコードのすべてがロードされると、無線デバイスは、イネーブルにされることができ、ユーザ入力を受諾し、ユーザ選択された機能を実行する。パワーアップ時にロードするプログラムコードの量は大きくてもよく、ブート時間は比較的長くてもよい。したがって、ユーザは、無線デバイスが動作可能(operational)である前に、延長された時間の期間(extended period of time)、待機する必要がある可能性がある。
【発明の概要】
【０００４】
一態様においては、装置(apparatus)は、無線デバイスに使用されるメモリデバイスに、第１及び第２のコードイメージをプログラムするように構成されたプロセッサを備えており、なお第１のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするために、メモリデバイスからロードされており、第２のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている。
【０００５】
別の態様では、方法は、無線デバイスに使用されるメモリデバイスに、第１のコードイメージをプログラムすることを含んでおり、なお第１のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするためにメモリデバイスからロードされている。該方法は、メモリデバイスに、第２のコードイメージをプログラムすることをさらに含んでおり、なお第２のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている。
【０００６】
別の態様では、装置は、無線デバイスに使用されるメモリデバイスに第１のコードイメージをプログラムするための手段と、なお第１のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするためにメモリデバイスからロードされている；メモリデバイスに第２のコードイメージをプログラムするための手段と、なお第２のコードイメージは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、メモリデバイスからロードされている；を含む。
【０００７】
別の態様では、装置は、無線デバイスをブートするために外部メモリから第１のコードイメージをロードするように構成されたメモリコントローラと、第１のコードイメージをロードした後で無線デバイスを動作可能にするように構成されたメインコントローラと、を含んでおり、なお、メモリコントローラは、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第２のコードイメージをロードするようにさらに構成されている。
【０００８】
別の態様では、方法は、無線デバイスをブートするために外部メモリから第１のコードイメージをロードすることと、第１のコードイメージをロードした後で無線デバイスを動作可能にすることと、そして、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第２のコードイメージをロードすることと、を含む。
【０００９】
別の態様においては、装置は、無線デバイスをブートするために外部メモリから第１のコードイメージをロードするための手段と、第１のコードイメージをロードした後で無線デバイスを動作可能にするための手段と、そして、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第２のコードイメージをロードするための手段と、を含む。
【００１０】
別の態様においては、コンピュータプログラムプロダクト(computer program product)は、無線デバイスをブートするために外部メモリから第１のコードイメージをコンピュータにロードさせるためのコードと、第１のコードイメージをロードした後でコンピュータに無線デバイスを動作可能にさせるためのコードと、無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、外部メモリから第２のコードイメージをコンピュータにロードさせるためのコードと、を備えるコンピュータ可読媒体(computer-readable medium)を含む。
【００１１】
別の態様では、装置は、外部メモリから、コードイメージの複数のページ(a plurality of pages of a code image)を検索するように、なお、複数のページは、別個のセキュリティ情報と関連づけられている；ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証するように；構成されたメモリコントローラ、を含む。
【００１２】
別の態様では、方法は、外部メモリから、コードイメージの複数のページを検索することと、なお、複数のページは、別個のセキュリティ情報と関連づけられている；ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証することと；を含む。
【００１３】
別の態様では、装置は、外部メモリから、コードイメージの複数のページを検索するための手段と、なお、複数のページは、別個のセキュリティ情報と関連づけられている；ページについてのセキュリティ情報に基づいて、外部メモリから検索された各ページを認証するための手段と；を含んでいる。
【図面の簡単な説明】
【００１４】
【図１】図１は、無線通信デバイスのブロック図を示す。
【図２】図２は、ＮＡＮＤフラッシュのページングされていないセグメントとページングされたセグメントのプログラミングを示す。
【図３】図３は、第２のコードイメージとハッシュダイジェストテーブルを示す。
【図４】図４は、第１及び第２のコードイメージのロード及び認証を示す。
【図５】図５は、第１のコードイメージにおけるモジュールを示す。
【図６】図６は、無線デバイスにおけるＳＤＲＡＭを示す。
【図７】図７は、第２のコードイメージのページのロードステータスを追跡するために使用される２−レベル構造を示す。
【図８】図８は、メモリデバイスをプログラムするためのプロセスを示す。
【図９】図９は、パワーアップ時に、無線デバイスをプログレッシブに(progressively)ブートするためのプロセスを示す。
【図１０】図１０は、第２のコードイメージを認証するためのプロセスを示す。
【図１１】図１１は、プログラミング局(programming station)を示す。
【詳細な説明】
【００１５】
ここにおいて記載されたブート技術(boot techniques)は、例えば、無線通信デバイス、ハンドヘルドデバイス、ゲームデバイス、コンピューティングデバイス、顧客エレクトロニクスデバイス、コンピュータ、等のような様々な電子デバイスに使用されることができる。明瞭にするために、ＮＡＮＤフラッシュメモリ及びＳＤＲＡＭのようなメモリを有する無線通信デバイスについて、下記で技術が説明されている。
【００１６】
図１は、発明の一態様にしたがった、無線通信装置１００のブロック図を示しており、そしてそれは、セルラ電話、携帯情報端末(personal digital assistant)（ＰＤＡ）、ハンドセット、ハンドヘルドデバイス(handheld device)、無線モジュール、端末、モデム等、であってもよい。無線デバイス１００は、送信パス及び受信パスを介した１つまたは複数の無線通信システムとの双方向コミュニケーション(bi-directional communication)を提供することができる。送信パス上で、デジタルセクション１２０は、無線デバイス１００によって送信される予定であるデータを提供することができる。送信機（ＴＭＴＲ）１１４は、無線周波数(radio frequency)（ＲＦ）出力信号を生成するためにデータを処理することができ、そしてそれは、基地局に対してアンテナ１１２を介して送信されることができる。受信パス上で、基地局によって送信された信号は、アンテナ１１２によって受信され、受信機（ＲＣＶＲ）１１６に対して提供されることができる。受信機１１６は、その受信された信号を、条件付け、デジタル化し、そして、さらなる処理のためにデジタルセクション１２０に対してサンプルを提供することができる。
【００１７】
デジタルセクション１２０は、無線デバイス１００のためのデジタル処理をサポートする、様々なプロセッシングユニット、インターフェースユニット、及びメモリユニットを含むことができる。図１で示される設計において、デジタルセクション１２０は、モデムプロセッサ１２２、中央プロセッシングユニット（ＣＰＵ）／縮小命令セット型コンピュータ(reduced instruction set computer)（ＲＩＳＣ）１２４、メインコントローラ１３０、静的ＲＡＭ（ＳＲＡＭ）１３２、読み出し専用メモリ（ＲＯＭ）１３４、ＮＡＮＤフラッシュコントローラ１４０、及びＳＤＲＡＭコントローラ１４２を含んでおり、それらのすべては、１つまたは複数のバス１６０を介して互いに通信することができる。モデムプロセッサ１２２は、データ送信及び受信のための処理、例えば符号化、変調、復調、復号等を実行することができる。ＣＰＵ／ＲＩＳＣ１２４は、無線デバイス１００のための汎用処理、例えばオーディオ、ビデオ、グラフィクス、及び／または他のアプリケーションのための処理、を実行することができる。メインコントローラ１３０は、デジタルセクション１２０内で様々なユニットのオペレーションを指示する(direct)ことができる。ＳＲＡＭ１３２は、デジタルセクション１２０内のコントローラおよびプロセッサによって使用されるプログラムコード及びデータを保存することができる。ＲＯＭ１３４は、ブートコード１３６およびルートパブリックキー１３８を保存することができる。ブートコード１３６は、パワーアップブートの初期部分(an initial part of power-up boot)を実行することができ、無線デバイス１００のパワーアップされるときに、ＮＡＮＤフラッシュ１５０からプログラムコードをロードすることを開始することができる。ルートパブリックキー１３８は、例えばＮＡＮＤフラッシュ１５０からロードされたプログラムコードを認証するために、セキュリティ機能に使用されることができる。
【００１８】
ＮＡＮＤフラッシュコントローラ１４０は、ＮＡＮＤフラッシュ１５０とデジタルセクション１２０との間のデータの転送を容易にすることができる。ＳＤＲＡＭコントローラ１４２は、ＳＤＲＡＭ１５２とデジタルセクション１２０との間のデータの転送を容易にすることができる。メインコントローラ１３０は、ＮＡＮＤフラッシュコントローラ１４０および／またはＳＤＲＡＭコントローラ１４２、のオペレーションを指示することができる。例えば、メインコントローラ１３０は、ブートアップの間に、例えば無線デバイス１００がパワーオンされる(is powered on)とき、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までのプログラムコードのロードを指示することができる。
【００１９】
ＮＡＮＤフラッシュ１５０及びＳＤＲＡＭ１５２は、デジタルセクション１２０内のプロセッシングユニットのためのマスストレージを提供することができる。ＮＡＮＤフラッシュ１５０は、デジタルセクション１２０によって使用されるプログラムコード及びデータのための不揮発性のストレージを提供することができる。ＮＡＮＤフラッシュ１５０はまた、他のタイプの不揮発性メモリ、例えばＮＯＲフラッシュ、と置き替えられることができる。ＳＤＲＡＭ１５２は、デジタルセクション１２０によって使用されるプログラムコード及びデータのためのランダムアクセス機能をストレージに提供することができる。ＳＤＲＡＭ１５２も、他のタイプの揮発性メモリ、例えばＳＲＡＭ、ＤＲＡＭ等、と置き替えられることができる。
【００２０】
一般に、デジタルセクション１２０は、任意の数の、プロセッシングユニット、インターフェースユニット、および、メモリユニットを含むことができる。デジタルセクション１２０はまた、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰｓ）、マイクロプロセッサ、ＲＩＳＣプロセッサ、等でインプリメントされることができる。デジタルセクション１２０は、１つまたは複数の特定用途向け集積回路（ＡＳＩＣｓ）及び／または他のあるタイプの集積回路（ＩＣｓ）上で、組み立てられることができる。
【００２１】
図１で示されているように、無線デバイス１００は、異なるタイプのメモリを備えたメモリアーキテクチャ(memory architecture)を利用することができる。ＳＤＲＡＭ１５２は、いったんパワーが取り除かれる(removed)とそのデータを失う、揮発性メモリである。ＳＤＲＡＭ１５２は、ランダムな方法でアクセスされることができ、メイン実行時間メモリとして一般に使用される。ＮＡＮＤフラッシュ１５０は、パワーが取り除かれた後でさえもそのデータを保持することができる、不揮発性メモリである。ＮＡＮＤフラッシュ１５０は、大きなストレージキャパシティ(large storage capacity)、継続メモリアクセスのための良い速度(good speed for continued memory access)、そして低コスト、を有する。しかしながら、ＮＡＮＤフラッシュ１５０は、ランダムメモリアクセスについて悪いパフォーマンス(poor performance)を有しており、典型的には、ページの単位で、一度に１ページ(one page at a time)、アクセスされ、各ページは、特定のサイズである（例、４ＫＢ）。
【００２２】
図１のメモリアーキテクチャは、ＮＡＮＤフラッシュ１５０及びＳＤＲＡＭ１５２の両方を組込んでおり、低減されたコストで、ランダムアクセスを大きなストレージキャパシティに提供することが可能である。このメモリアーキテクチャについては、プログラムコードは、ＮＡＮＤフラッシュ１５０において永久的に保存されることができる。プログラムコードは、様々な設計された機能及び特徴をサポートすることに加えて、無線デバイス１００内のハードウェアを制御することができる。パワーアップ時に、無線デバイス１００は、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までのプログラムコードを転送することを必要とすることができるブートを実行することができる。ＮＡＮＤフラッシュ１５０は、大量のプログラムコードを保存することができる。したがって、パワーアップ時の、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までのプログラムコードのすべてロードする時間の量は、比較的長くてもよい。
【００２３】
一態様では、ＮＡＮＤフラッシュ１５０に保存されるべきプログラムコードは、ＮＡＮＤフラッシュ１５０の異なるセグメントにおいて保存されることができるマルチプルコードイメージ(multiple code images)に分割されることができる。セグメントはまた、パーティション(partition)、セクション(section)、等と呼ばれることができる。一設計では、プログラムコードは、第１のコードイメージと第２のコードイメージに分割されることができる。第１のコードイメージは、無線デバイス１００の基本的な機能性をサポートするために使用されるプログラムコードを含んでおり、そして、ＮＡＮＤフラッシュ１５０のページングされていないセグメント（すなわち、非ページ化セグメント）(non-paged segment)に保存されることができる。第２のコードイメージは、残りのプログラムコードを含むことができ、そして、ＮＡＮＤフラッシュ１５０のページングされたセグメント（すなわち、ページ化セグメント）に保存されることができる。パワーアップ時のプログレッシブブート(progressive boot)については、第１のコードイメージは、ＮＡＮＤフラッシュ１５０のページングされていないセグメントからＳＤＲＡＭ１５２へと最初にロードされることができる。いったん第１のコードイメージがロードされると、無線デバイス１００は、イネーブルにされることができ、ユーザにとって機能的しうるものとして見られることができる(may appear as functional to a user)。無線デバイス１００が動作可能である間に、第２のコードイメージは、ＮＡＮＤフラッシュ１５０のページングされたセグメントからＳＤＲＡＭ１５２へと、例えば必要であればバックグラウンドタスクおよび／またはオンデマンドとして、ロードされることができる。プログレッシブブートは、パワーアップ時に無線デバイス１００をイネーブルにするために時間の量を短縮することができ、そしてそれはユーザ経験を改善し、他の利益を提供することができる。
【００２４】
ＮＡＮＤフラッシュ１５０において保存されたプログラムコードは、無線デバイス１００のオペレーション、すなわち様々な設計された特徴及び機能をサポートする高層アプリケーション、を制御するコード、工場テストコード、及び／または、他のタイプのコード、を含むことができる。ＮＡＮＤフラッシュ１５０において保存されたプログラムコードが使用のために認証されているかどうかを確実にすること、認証されるプログラムコードの実行を可能にすること、そして、認証されていないプログラムコードの実行を防ぐこと、は望ましいあるいは必要である。さらに、プログレッシブブートに使用されたマルチプルコードイメージのために、効率的な方法でセキュリティを提供することが望ましい。
【００２５】
別の態様では、セキュリティは、全体の第１のコードイメージについての認証、また第２のコードイメージの各ページについての認証を実行することによって、プログレッシブブートのために効率的に提供されることができる。第１のコードイメージは、パワーアップ時に、ＮＡＮＤフラッシュ１５０から、その全体において、最初にロードされることができ、そして、ロードされたときに認証されることができる。第２のコードイメージはページに分割され、ＮＡＮＤフラッシュ１５０から一度に１ページ、ロードされることができる。第２のコードイメージのページは、メモリアクセスに依存して、異なる順序でロードされることができる。第２のコードイメージの各ページは、第２のコードイメージの他のページに対する考慮なしに、ページがロードされ使用されることを可能にするために、個々に認証されることができる。
【００２６】
図２は、ＮＡＮＤフラッシュ１５０の設計を示しており、そしてそれは、本発明の態様にしたがって、ページングされていないセグメント２１０とページングされたセグメント２２０を含む。この設計では、ページングされていないセグメント２１０は、第１のコードイメージ２１２、ハッシュダイジェストテーブル２１４、証明書２１６、およびデジタル署名２１８を保存する。証明書２１６は、ページングされていないセグメント２１０とページングされたセグメント２２０を認証するために使用される暗号の情報を含むことができる。デジタル署名２１８は、第１のコードイメージ２１２とハッシュテーブル２１４の両方に関して生成され、これらの２つの部分を認証するために使用されることができる。第１のコードイメージ２１２は、無線デバイス１００をイネーブルにする前にＮＡＮＤフラッシュ１５０からロードされるべきプログラムコード及び／またはデータ、例えばドライバ、ユーザインタフェース（ＵＩ）、モデム等のためのコード、を含むことができる。テーブル２１４は、第２のコードイメージ２２２の個々のページについての暗号ハッシュダイジェストを含むことができる。第２のコードイメージ２２２は、無線デバイス１００を可能にした後でＮＡＮＤフラッシュ１５０からロードされるべきプログラムコードおよび／またはデータ、例えばより高層アプリケーションのためのコード、を含むことができる。一般に、コードイメージはプログラムコード、データ等を含むことができる。
【００２７】
図２はまた、ＮＡＮＤフラッシュ１５０のページングされていないセグメント２１０とページングされたセグメント２２０をプログラムするために、プロセス２００の設計を示す。プロセス２００は、ＮＡＮＤフラッシュ１５０の製造(manufacturing)、無線デバイス１００のプロビジョニング(provisioning of wireless device 100)、等の間に実行されることができる。図２の設計は、下記の２セットの暗号キーを使用している：（１）ページングされていないセグメント２１０を署名し認証する１セットのプライベート及びパブリックキー、そしてそれらはプライベートｘとパブリックキーｘと呼ばれる、（２）ソースエンティティを認証する１セットのプライベート及びパブリックキー、そしてそれらはルートプライベートキーｒ及びルートパブリックキーｒと呼ばれる。ルートプライベートキーｒおよびプライベートキーｘは秘密であり、ソースコードベンダ(source code vendor)、製造者等であるソースエンティティにのみ知られている。ルートパブリックキーｒは無線デバイス１００にとって利用可能とされ、ルートプライベートキーｒで生成されるデジタル署名をベリファイするために使用される。パブリックキーｘは、プライベートキーｘで生成されたデジタル署名をベリファイするために使用され、証明書２１６で送られることができる。
【００２８】
サイン関数２３２は、パブリックキーｘと、ルートプライベートキーｒを使用しているおそらく他の情報、に関してデジタル署名を生成することができる。このデジタル署名は署名ｃｘと呼ばれることができ、ソースエンティティを認証するために使用されることができる。サイン関数２３２は、ＲＳＡ（Ｒｉｖｅｓｔ、Ｓｈａｍｉｒ及びＡｄｌｅｍａｎ）アルゴリズム、デジタル署名アルゴリズム(Digital Signature Algorithm)（ＤＳＡ）、あるいは他のある暗号（デジタル署名または暗号化）アルゴリズムをインプリメントすることができる。証明書生成器２３４は、署名ｃｘ、パブリックキーｘ、そして、ことによると例えばソースエンティティの識別子、使用に選択される暗号アルゴリズム、証明書の満了日等のような他の情報、を含んでいる証明書を形成することができる。この証明書は、Ｘ．５０９証明書としてあるいは当技術分野において知られている他のあるフォーマットで、ＮＡＮＤフラッシュ１５０において保存されることができる。ルートパブリックキーｒは、いずれの方法で、無線デバイス１００にとって利用可能とされ、図１の無線デバイス１００内のＲＯＭ１３４において安全に保存されることができる。
【００２９】
図２で示される設計では、第２のコードイメージ２２２が最初に処理され保存されることができ、第１のコードイメージ２１２が次に処理され、保存されることができる。ページ分割ユニット２５２は、第２のコードイメージ２２２を受信し、それを特定のサイズ（例、４ＫＢ）のページに分割することができ、そして、安全ハッシュ関数２５４に対し、また、ＮＡＮＤフラッシュ１５０に対し、一度に１ページを提供することができる。関数２５４は、安全ハッシュアルゴリズムで、ユニット２５２からの各ページをハッシュし、そのページについてのハッシュダイジェストを提供することができる。関数２５４はＳＨＡ−１（安全ハッシュアルゴリズム）、ＳＨＡ−２（それはＳＨＡ−２２４、ＳＨＡ−２５６、ＳＨＡ−３８４およびＳＨＡ−５１２を含む）、ＭＤ−４（メッセージダイジェスト）、ＭＤ−５、あるいは、当技術分野において知られているいくつかの他の安全ハッシュアルゴリズムをインプリメントすることができる。安全ハッシュアルゴリズムは暗号プロパティを有しているので、入力メッセージとそのダイジェスト（擬似ランダムビットストリング）との間の関数は取り消しできず(irreversible)、同じダイジェストにマッピングしている２つの入力メッセージの可能性は非常に小さい。安全ハッシュアルゴリズムは、任意の長さの入力メッセージを受け取ることができ、固定長のハッシュダイジェストを提供することができる。テーブル生成器２５６は、第２のコードイメージ２２２のすべてのページについてのハッシュダイジェストのテーブルを生成することができ、ＮＡＮＤフラッシュ１５０においてハッシュダイジェストテーブル２１４としてこのテーブルを保存することができる。
【００３０】
第１のコードイメージ２１２は、マルチプレクサ（Ｍｕｘ）２４２に対して提供され、さらに、ＮＡＮＤフラッシュ１５０において保存されることができる。マルチプレクサ２４２はまた、生成器２５６からハッシュダイジェストテーブル２１４を受け取ることができ、そして、安全ハッシュ関数２４４に対して、第１のコードイメージ２１２とハッシュダイジェストテーブル２１４を連続して提供することができる。関数２４４は、安全ハッシュアルゴリズムで、第１のコードイメージ２１２とハッシュダイジェストテーブル２１４の両方をハッシュすることができ、そしてダイジェストｘと呼ばれることができるハッシュダイジェストを提供することができる。関数２４４はＳＨＡ−１、ＳＨＡ−２、ＭＤ−５、あるいは他のある安全ハッシュアルゴリズムをインプリメントすることができる。サイン関数２４６は、プライベートキーｘを使用して、ダイジェストｘにわたってデジタル署名を生成することができる。このデジタル署名はＮＡＮＤフラッシュ１５０において、デジタル署名２１８として保存されることができる。サイン関数２４６は、ＲＳＡ、ＤＳＡ、あるいは他のある暗号のアルゴリズムをインプリメントすることができる。サイン関数２３２及び２４６は、同じあるいは異なる暗号アルゴリズムをインプリメントすることができる。
【００３１】
図３は、ＮＡＮＤフラッシュ１５０における、第２のコードイメージ２２２とハッシュダイジェストテーブル２１４の設計を示す。この設計では、第２のコードイメージ２２２は、Ｎページ ０〜Ｎ−１に分割されることができ、ここではＮは、任意の整数値であることができる。各コードページは、対応するハッシュダイジェストを生成するために、安全ハッシュアルゴリズム（Ｈａｓｈ）でハッシュされることができる。ハッシュダイジェストテーブル２１４は、Ｎ個のコードページについてＮ個のハッシュダイジェストを保存することができる。
【００３２】
図４は、本発明の態様にしたがってＮＡＮＤフラッシュ１５０のページングされていないセグメント２１０とページングされたセグメント２２０をロードし認証するプロセス４００の設計を示す。無線デバイス１００がパワーアップされる等のとき、プロセス４００が実行されることができる。ベリファイ関数４３２は、図１の無線デバイス１００内のＮＡＮＤフラッシュ1５０からは証明書２１６を、ＲＯＭ１３４からはルートパブリックキーｒを、受信することができる。ベリファイ関数４３２は、証明書２１６から、署名ｃｘとパブリックキーｘを抽出し、ルートパブリックキーｒで署名ｃｘをベリファイし、そして、署名ｃｘがベリファイされる場合にはパブリックキーｘを提供する。第３者による証明書ｘのいずれの改ざん(tampering)も、ベリファイされていない署名ｃｘによって容易に検出されることができる。
【００３３】
マルチプレクサ４４２は、第１のコードイメージ２１２とハッシュダイジェストテーブル２１４を受け取ることができ、そして、両方の部分を安全ハッシュ関数４４４に対して順次提供することができる。関数４４４は第１のコードイメージ２１２とハッシュダイジェストテーブル２１４の両方をハッシュし、ダイジェストｘ’と呼ばれることができるハッシュダイジェストを提供することができる。関数４４４は、図２の安全ハッシュ関数２４４によって使用される同じ安全ハッシュアルゴリズムをインプリメントすることができる。ベリファイ関数４４６は、安全ハッシュ関数４４４からダイジェストｘ’を、ＮＡＮＤフラッシュ１５０からデジタル署名ｘを、ベリファイ関数４３２からパブリックキーｘを、受信することができる。ベリファイ関数４４６は、パブリックキーｘとダイジェストｘ’でデジタル署名２１８をベリファイすることができ、デジタル署名２１８がベリファイされるかどうかを示すことができる。パブリックキーｘは、ルートパブリックキーｒで認証される。したがって、デジタル署名２１８、第１のコードイメージ２１２、及び／または第３者によるハッシュダイジェストテーブル２１４のいずれの改ざんも、ベリファイしていないデジタル署名２１８によって容易に検出されることができる。
【００３４】
デジタル署名２１８がベリファイされる場合には、第１のコードイメージ２１２は、使用するために提供されることができ、ハッシュダイジェストテーブル２１４は、テーブル４５６で保存されることができる。いったん第１のコードイメージ２１２がＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までロードされると、無線デバイス１００はイネーブルにされることができる。デジタル署名２１８がベリファイされない場合には、ローディングプロセスは、中断され(aborted)、エラーメッセージは提供されることができる。
【００３５】
無線デバイス１００をイネーブルにした後で、第２のコードイメージ２２２は、必要であればバックグラウンドタスク及び／またはオンデマンドとして、１度に１ページ、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までロードされることができる。安全ハッシュ関数４５４は、ＮＡＮＤフラッシュ１５０から検索されたページをハッシュし、検索されたページについて、ハッシュダイジェストｙ’を提供することができる。関数４５４は、図２の安全ハッシュ関数２５４によって使用される同じ安全ハッシュアルゴリズムをインプリメントすることができる。ベリファイ関数４５８は、安全ハッシュ関数４５４からのハッシュダイジェストｙ’と、テーブル４５６からの検索されたページについて認証されたハッシュダイジェストｙと、を受信することができる。ベリファイ関数４５８は、２つのハッシュダイジェストｙ’とｙを比較することができ、２つのダイジェストが整合する場合には認証されたものとして検索されたページを宣言することができる。ハッシュダイジェストテーブル２１４は、ルートパブリックキーｒで認証されることができる。安全ハッシュアルゴリズムの暗号プロパティは、同じハッシュダイジェストｙへの別のページマッピングの可能性は非常に小さいということを保証する。したがって、第３者によるページのいずれの改ざんも、２つのハッシュダイジェスト間の不整合によって容易に検出されることができる。ハッシュダイジェストが整合する場合には、検索されたページは、使用のために提供されることができる。ローディングプロセスは、ハッシュダイジェストが整合しない場合には、中断されることができ、エラーメッセージが提供されることができる。
【００３６】
図２〜４は、ＮＡＮＤフラッシュ１５０の１つの設計を示しており、そしてそれは、ページングされていないセグメント２１０とページングされたセグメント２２０のプログレッシブブートをサポートしており、セグメント２１０及び２２０において保存されたコードイメージの認証をさらにサポートする。一般に、ＮＡＮＤフラッシュ１５０は、ＰページングされたセグメントにおいてＰコードイメージを、ＱページングされていないセグメントにおいてＱコードイメージを、保存することができ、Ｐ及びＱはそれぞれ、１以上の整数値であることができる。Ｑページングされていないセグメントからのコードイメージは、無線デバイス１００をイネーブルにする前に、ＮＡＮＤフラッシュ１５０からロードされることができる。Ｐページングされたセグメントからのコードイメージは、無線デバイス１００をイネーブルにした後で、ＮＡＮＤフラッシュ１５０からロードされることができる。
【００３７】
ページングされていないセグメントとページングされたセグメントにおいて保存されたコードイメージについてのセキュリティは、様々な方法でインプリメントされることができる。一般に、認証に使用されたセキュリティ情報は、１つまたは複数の証明書、デジタル署名、ハッシュダイジェスト、等を備えることができる。ページングされていないセグメント（あるいは単にページングされていないコードイメージ）からコードイメージを認証するために使用されるセキュリティ情報は、例えば、そのページングされていないセグメントにおいて、指定されたページングされていないセグメントにおいて、保存されることができる。ページングされたセグメント（あるいは単にページングされたコードイメージ）からコードイメージを認証するために使用されるセキュリティ情報は、例えば、そのページセグメントにおいて、別のページングされたセグメントにおいて、ページングされていないセグメントにおいて、保存されることができる。各ページが別々にロードされ認証されることを可能にするために、セキュリティ情報は、ページングされたコードイメージの各ページについて提供されることができる。セキュリティ情報はまた、全体のページングされたコードイメージのために提供されることができる。１つの設計では、１つのページングされていないセグメントは、上記で説明されているように、すべてのページングされていないセグメントとページングされたセグメントについてのセキュリティ情報を保存することができる。別の設計では、認証は、一連の方法(a daisy chain manner)で実行されることができ、各セグメントは、ロードされるべき次のセグメントについてのセキュリティ情報を保存する。ページングされていないコードイメージとページングされたコードイメージの認証もまた、他の方法で実行されることができる。
【００３８】
明瞭にするために、次の説明は、図２−４で示された構造の使用と、ＮＡＮＤフラッシュ１５０がページングされていないセグメント２１０とページングされたセグメント２２０を含むということ、を想定する。ページングされていないセグメント２１０は、無線デバイス１００の基本的な機能性をサポートするプログラムコード、プログレッシブブートをサポートするコード、等を含むことができる。ページングされたセグメント２２０は、無線デバイス１００のための残りのプログラムコードを含むことができる。
【００３９】
図５は、ＮＡＮＤフラッシュ１５０のページングされていないセグメント２１０において保存された第１のコードイメージ２１２の設計を示す。この設計では、第１のコードイメージ２１２は、プログレッシブブート、ドライバ５３０、ユーザインタフェース（ＵＩ）コード５４０、及びモデムコード５５０、をサポートするモジュール５１０を含む。
【００４０】
モジュール５１０内では、ヘッダ５１２は、例えば、ページングされたセグメントとページングされていないセグメントの数、各セグメントのスターティングアドレス及びサイズ、各セグメントヘッダのロケーション等、のようなＮＡＮＤフラッシュ１５０についての関連情報を含むことができる。ブートローダ(boot loader)５１４は、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までのページングされていないセグメント２１０のロードを扱うことができる。ＮＡＮＤドライバ５１６は、ＮＡＮＤフラッシュ１５０からページを検索し、これらのページをＳＤＲＡＭ１５２にコピーすることができる。メモリマネージャ５１８は、ＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までのページングされたセグメント２２０のロードを扱うことができ、第２のコードイメージ２２２のどのページがロードされたかを追跡することができる。中断ハンドラ５２０は、ＮＡＮＤフラッシュ１５０からロードされていない第２のコードイメージ２２２のページのメモリアクセスによる、ページ欠陥(page faults)を扱うことができる。ページ欠陥が生じるとき、中断ハンドラ５２０は、現在のタスクのコンテキストを保存することができ、そのあとで、要求されたページを含んでいる１つまたは複数のページをロードするように、ページャハンドラ(pager handler)５２２に要求することができる。ページャハンドラ５２２は、ＮＡＮＤフラッシュ１５０からの第２のコードイメージ２２２の要求されたページの、バックグラウンド及びオンデマンドページングを扱うことができる。ブートローダ５１４及びページャハンドラ５２２は、ＮＡＮＤフラッシュ１５０から特定のページを検索し、これらのページをＳＤＲＡＭ１５２にコピーするように、ＮＡＮＤドライバ５１６に要求することができる。
【００４１】
ドライバ５３０は、液晶ディスプレイ（ＬＣＤ）、キーパッド、マイクロホン、スピーカー等のような入力／出力（Ｉ／Ｏ）デバイスをサポートすることができる。ＵＩコード５４０は、パワーアップ時のアニメーションのディスプレイ、キーパッド入力の受諾、ＬＣＤ上で押された文字のディスプレイ(display of pressed characters on the LCD)、のような様々なＵＩ機能をサポートすることができる。ＵＩコード５４０は、ワイヤレスデバイス１００に関する寿命のインジケーション(indication)を提供することができ、そしてユーザ入力を受諾することができるので、無線デバイスはユーザにとって動作可能と認識されることができる。モデムコード５５０は、無線通信をサポートするために様々な機能を実行することができ、例えば、送信機１１４及び受信機１１６を初期化すること、無線システムをサーチすること、呼び出しを開始し受信すること、呼び出しのための処理を実行すること（例えば、符号化し復号する）等がある。
【００４２】
図５は、ページングされていないセグメント２１０の１つの設計を示す。ページングされていないセグメント２１０はまた、図５で示されていない、異なるおよび／または他のモジュールを含むことができる。例えば、ページングされていないセグメント２１０は工場テストコード、無線用のバイナリ実行時間環境(Binary Runtime Environment for Wireless)（ＢＲＥＷ）アプリケーション実行環境(Application Execution Environment)（ＡＥＥＥ）コード、等を含むことができる。
【００４３】
図６は、図１の無線デバイス１００におけるＳＤＲＡＭ１５２の設計を示す。第１のコードイメージ２１２は、ＮＡＮＤフラッシュ１５０から検索され、プログレッシブブートの第１の部分の間にＳＤＲＡＭ１５２に保存されることができる。第２のコードイメージ２２２のページ０〜Ｎ−１は、ＮＡＮＤフラッシュ１５０からの任意の順序で検索され、プログレッシブブートの第２の部分の間にＳＤＲＡＭ１５２の適切なロケーションに保存されることができる。
【００４４】
第２のコードイメージ２２２のバックグラウンドローディングは、第１のコードイメージ２１２がＳＤＲＡＭ１５２へとロードされた後で、開始することができる。バックグラウンドローディングについては、第２のコードイメージ２２２のＮページは、一度に１ページ、ＮＡＮＤフラッシュ１５０から連続した順序(sequential order)で検索され、認証され、そして、ＳＤＲＡＭ１５２の対応する位置において保存されることができる。全体の第２のコードイメージ２２２は、特定の時間の量においてＳＤＲＡＭ１５２へと完全にロードされることができ、そしてそれは、セカンダリロード時間と呼ばれることができる。バックグラウンドローディングは、無線デバイス１００によって実行された他のタスクよりも低いプライオリティを与えられることができる。したがって、セカンダリロード時間は可変であってもよく、そして、例えば第２のコードイメージ２２２のサイズ、ＮＡＮＤフラッシュとＳＤＲＡＭ１５２間の転送レート、無線デバイス１００におけるアクティビティ量１００等、のような様々な要因に依存することができる。
【００４５】
バックグラウンドローディングを実行している間、まだロードされていない第２のコードイメージ２２２のページはアクセスされることができ、ページ欠陥が生じうる。要求されたページは、ＮＡＮＤフラッシュ１５０からオンデマンドでロードされることができ、使用のために提供される。一設計では、要求されたページのみが、ＮＡＮＤフラッシュ１５０からロードされる。別の設計では、要求されたページ、及び１つまたは複数の近いページは、ＮＡＮＤフラッシュ１５０からロードされることができる。この設計は、繰り返されたページ欠陥を回避し、したがって、性能を改善する。要求されたページのオンデマンドのページングを完成した後で、第２のコードイメージ２２２の残りのページのバックグラウンドローディングは再開されることができる(resumed)。
【００４６】
メモリマネージャ５１８は、第２のコードイメージ２２２のどのページがＮＡＮＤフラッシュ１５０からロードされたかを追跡することができる。この情報は、要求されたページがＳＤＲＡＭ１５２に保存されるかどうか、あるいは、ＮＡＮＤフラッシュ１５０から検索されるべきであるかどうか、を決定するために使用されることができる。第２のコードイメージ２２２のページのロードステータス(load status)は、様々な方法で保存されることができる。
【００４７】
図７は、第２のコードイメージ２２２の与えられたページがＳＤＲＡＭ１５２に保存されるかどうか決定するために使用されることができる２−レベルの構造７００の設計を示す。この設計では、３２ビットのメモリアドレス７０２は、ビット０〜３１を含むことができ、０〜４ギガバイト（ＧＢ）のアドレス範囲(address range)を有することができる。アドレス範囲は、４０９６のセクションに分割されることができ、各アドレスセクションは、１メガバイト（ＭＢ）をカバーする。各アドレスセクションは、２５６ページをカバーすることができ、各ページは４ＫＢであることができる。
【００４８】
構造７００は、４０９６のアドレスセクションについて４０９６のエントリ、すなわち各アドレスセクションにつき１つのエントリ、を備えた１つのメインテーブル７１０を含むことができる。構造７００は、各アドレスセクションについて１つのページテーブル７２０をさらに含むことができる。各ページテーブルは、２５６ページについて２５６のエントリ、すなわち各ページにつき１つのエントリ、を含むことができる。
【００４９】
一設計では、全体の第２のコードイメージ２２２のためのメインテーブルおよびページテーブルは、第２のコードイメージ２２２のいずれのページもロードする前に、作成され初期化されることができる。例えば、１つのメインテーブルおよび６４のページテーブルは、ページング用の仮想メモリ６４ＭＢをサポートするために、ＳＤＲＡＭ１５２内で作成されることができる。メインテーブルの各エントリは、そのメインテーブルエントリに対応するページテーブルのスタートに対する、ポインタ(pointer)を含むことができる。各ページテーブルの２５６のエントリは、これらのエントリによってカバーされた２５６ページはＳＤＲＡＭ１５２へとロードされなかった（あるいは、これら２５６ページについてのアクセス許可がない）ということを示すために、予め決定された値に初期化されることができる。ページがＮＡＮＤフラッシュ１５０からＳＤＲＡＭ１５２までロードされるとき、そのページをカバーするページテーブルが確認されることができ、そのページについてのエントリは、ページがＳＤＲＡＭ１５２へとロードされたということを示すために更新されることができる。
【００５０】
第２のコードイメージ２２２がＮＡＮＤフラッシュ１５０からロードされている間、ＳＤＲＡＭ１５２の各メモリアクセスは、要求されたページがＳＤＲＡＭ１５２に保存されるかどうかを決定するためにチェックされることができる。メモリアクセス用のメモリアドレスの１２最上位ビット（ＭＳＢｓ）は、メインテーブルにおいてエントリにアクセスするために使用されることができる。このメインテーブルエントリからのポインタは、メモリアドレスをカバーするアドレスセクションについてのページテーブルのスタートを決定するために使用されることができる。メモリアドレスの８つの次のＭＳＢ(The 8 next MSBs of the memory address)は、アクセスされているページについてのページテーブルエントリ(page table entry)を決定するために使用されることができる。このページテーブルエントリは、アクセスされているページがＳＤＲＡＭ１５２へとロードされたかどうかを決定するためにチェックされることができる。ページがロードされた場合には、ＳＤＲＡＭ１５２は、要求されたプログラムコードあるいはデータを得るために、アクセスされることができる。ページがロードされていない場合、中断ハンドラ５２０は通知されることができ、要求されたページは、ＳＤＲＡＭ１５２へとロードされることができる。
【００５１】
メインテーブルとページテーブルは、第２のコードイメージ２２２の個々のページがＳＤＲＡＭ１５２へとロードされるかどうかを決定するために使用されることができる。インジケータは、第２のコードイメージ２２２のＮページのすべてがＳＤＲＡＭ１５２へとロードされたかどうか示すために使用されることができる。このインジケータは１つの値（例えば０）に初期化され、いったん第２のコードイメージ２２２のページのすべてがＳＤＲＡＭ１５２へとロードされると、別の値（例えば１）に設定されることができる。全体の第２のコードイメージ２２２がロードされた後で、メインテーブルとページテーブルは削除されることができる。
【００５２】
図７は、第２コードイメージ２２２のページがＳＤＲＡＭ１５２へとロードされたかどうかを決定する構造７００の一設計を示す。構造７００は、どのページがアクセス可能であるかを追跡するために、メモリ保護に使用された構造と類似であることができる。したがって、構造７００は、メモリ保護に使用される構造と同じ方法で、インプリメントされ、更新されうる。
【００５３】
様々な他の構造はまた、第２のコードイメージ２２２のどのページがＳＤＲＡＭ１５２へとロードされたかを追跡するために使用されることができる。例えば、各ページについて１ビットを含んでいるビットマップが使用されることができる。各ページについてのビットは、ページがＳＤＲＡＭ１５２へとロードされていない場合には１つの値（例、０）に設定され、あるいは、ページがロードされている場合には別の値（例、１）に設定されることができる。
【００５４】
図８は、本発明の態様にしたがって、例えばフェーズを製造(manufacture)あるいはプロビジョンニングしている間に、メモリデバイスをプログラムするためのプロセス８００の設計を示す。第１のセキュリティ情報は、第１のコードイメージとあるいは他の情報に基づいて生成されることができる（ブロック８１２）。第２のセキュリティ情報は、第２のコードイメージに基づいて生成されることができる（ブロック８１４）。第１のコードイメージは、無線デバイスに使用されたメモリデバイスにプログラムされることができる（ブロック８１６）。第１のコードイメージは、無線デバイスをブートし無線デバイスを動作可能にするために、メモリデバイスからロードされることができる。第２のコードイメージはメモリデバイスにプログラムされることができる（ブロック８１８）。無線デバイスをさらにあるいは十分にブートするために、無線デバイスが動作可能である間、第２のコードイメージは、メモリデバイスからロードされることができる。第１及び第２のセキュリティ情報はメモリデバイスへプログラムされ、それぞれ、第１及び第２のコードイメージを認証するために使用されることができる（ブロック８２０）。
【００５５】
ブロック８１４については、第２のコードイメージは、複数のページに分割されることができ、各ページは、そのページについてのハッシュダイジェストを得るために安全ハッシュアルゴリズムでハッシュされることができる。複数のページについてのハッシュダイジェストのテーブルが生成されることができ、ブロック８２０でメモリデバイスにプログラムされることができる。ブロック８１２については、デジタル署名は、第１のコードイメージ、プライベートキー、および第２のコードイメージについてのハッシュダイジェストのテーブル、に基づいて生成されることができる。プライベートキーに対応するパブリックキーを含んでいる証明書が生成されることができる。証明書とデジタル署名は、ブロック８２０でメモリデバイスへとプログラムされることができる。
【００５６】
図９は、本発明の態様にしたがって、パワーアップ時に無線デバイスのプログレッシブブートを実行するためのプロセス９００の設計を示す。第１のコードイメージは、無線デバイスをブートするために外部メモリからロードされることができ、例えばＮＡＮＤフラッシュからＳＤＲＡＭまでロードされる（ブロック９１２）。第１のコードイメージについての第１のセキュリティ情報は、外部メモリから得られることができる（ブロック９１４）。第１のコードイメージは、第１のセキュリティ情報に基づいて認証されることができる（ブロック９１６）。無線デバイスは、第１のコードイメージをロードし認証した後で動作可能にされうる（ブロック９１８）。動作可能である間に、無線デバイスは、キーパッド入力を処理し、無線システムを用いて呼び出しを確立すること等が可能である。
【００５７】
無線デバイスをさらにブートするために、無線デバイスが動作可能である間に、第２のコードイメージは、外部メモリからロードされることができる（ブロック９２０）。第２のコードイメージについての第２のセキュリティ情報は、外部メモリから得られることができる（ブロック９２２）。第２のコードイメージは、第２のセキュリティ情報に基づいて認証されることができる（ブロック９２４）。認証される場合には、第２のコードイメージの実行はイネーブルにされることができる（ブロック９２６）。
【００５８】
ブロック９２０については、無線デバイスが動作可能である間に、第２のコードイメージは、バックグラウンドタスク及び／またはオンデマンドとして、ロードされることができる。オンデマンドのロードについては、第２のコードイメージのページについてのメモリアクセスは受け取られることができる。アクセスされているページを含んでいる第２のコードイメージの予め決定された数のページは、メモリアクセスに応じて、外部メモリからロードされることができる。
【００５９】
第２のコードイメージは、複数のページを備えることができ、そしてそれは外部メモリから、一度に１ページ、ロードされることができる。少なくとも１つのテーブルは、ロードされた第２のコードイメージのページと、ロードされていない第２のコードイメージのページと、を追跡するために保持されることができる。例えば、マルチプルアドレス範囲についてのマルチプルエントリを備えたメインテーブルは、保持されることができる。マルチプルアドレス範囲についてのマルチプルページテーブルもまた保持されることができ、各アドレス範囲につき１つのページテーブルがあり、各ページテーブルは、そのページテーブルについてのアドレス範囲内でマルチプルページについてのマルチプルエントリを含む。メインテーブルの各エントリは、対応するページテーブルに対するポインタを含むことができる。対応するページテーブルの各エントリは、関連するページがロードされアクセス可能かどうかを示すことができる。テーブル（単数または複数）は、第２のコードイメージをロードする前に作成され、そして、第２のコードイメージをロードした後で削除されることができる。
【００６０】
ブロック９１６については、第１のセキュリティ情報は、証明書とデジタル署名を備えることができる。証明書は、ルートパブリックキーに基づいて認証されることができ、そしてそれは無線デバイスで安全に保存されることができる。第１のコードイメージは、デジタル署名と証明書からのパブリックキーに基づいて認証されることができる。ブロック９２４については、第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えることができ、そしてそれは、第１のセキュリティ情報に基づいて認証されることができる。第２のコードイメージは、少なくとも１つのハッシュダイジェストに基づいて、認証されることができる。
【００６１】
図１０は、本発明の態様にしたがって、コードイメージを認証するためのプロセス１の設計を示す。プロセス１０００は、図９のブロック９２０〜９２４に使用されることができる。コードイメージの複数のページは、外部メモリから検索されることができ、複数のページは、別個のセキュリティ情報と関連づけられる（ブロック１０１２）。複数のページは、一度に１ページ、そして、予め決定された順序において（例、バックグラウンドローディング用）、あるいは、コードイメージのページについてのメモリアクセスに基づいて決定されるランダムな順序において（例、オンデマンドローディング用）、のいずれかで、検索されることができる。外部メモリから検索された各ページは、ページについてのセキュリティ情報に基づいて、認証されることができる（ブロック１０１４）。１つの設計では、複数のページのハッシュダイジェストのテーブルは、外部メモリから検索され認証されることができる。各検索されたページは、そのページについて生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいてハッシュされることができる。生成されたハッシュダイジェストがページについて認証されたハッシュダイジェストと整合する場合には、検索されたページは、認証されたものとして宣言されることができ、そしてそれは、ハッシュダイジェストのテーブルからであってもよい。
【００６２】
図１１は、本発明の態様にしたがった、ＮＡＮＤフラッシュ１５０のためのプログラミング局１１００の設計のブロック図を示す。プログラミング局１１００は、コントローラ／プロセッサ１１１０、メモリ１１１２、プログラミングツール１１１４、そしてデータベース１１１６、を含む。コントローラ／プロセッサ１１１０は、図２で示される安全な処理を実行し、プログラミング局１１００のオペレーションをさらに指示することができる。メモリ１１１２は、コントローラ／プロセッサ１１１０によって使用されるデータ及びコードを保存することができる。プログラミングツール１１１４は、ＮＡＮＤフラッシュ１５０を、例えば図２に示されるように、プログラムすることができる。データベース１１１６は、ＮＡＮＤフラッシュ１５０、暗号キー等にプログラムされるべきコードイメージを保存することができる。プログラミング局１１００は、図８のプロセス８００及び／またはメモリをプログラムする他のプロセス、を実行することができる。
【００６３】
明らかにするために、ブート技術は、ＮＡＮＤフラッシュ及びＳＤＲＡＭを備えたメモリ構成について説明されている。ブート技術はまた、他のメモリ構成及び他のタイプのメモリに使用されることができる。ブート技術は、任意の数のページングされていないコードイメージ及びページングされたコードイメージ、任意の数のページングされていないセグメント及びページングされたセグメント、任意のページサイズ、等にさらに使用されることができる。
【００６４】
ここにおいて説明されたブート技術は、ある利益(certain advantages)を提供することができる。より短い知覚ブート時間は、パワーアップ時にメモリロードのために達成されることができる。このことは、工場テストコードがページングされていないセグメントにおいて保存され最初にロードされることができるので、より短い工場テスト時間をもたらすことができる。工場テストコードは、これらのコードの初期ロードに依存することができ、無線デバイスがローディングプロセスを終了しなかった場合にさえ、パワーアップ後すぐに無線デバイスに対するテスト機器トーク(test equipment talk)を有することができる。より短い知覚ブート時間は、パワーアップ後、ユーザが待機する時間の量を減らすることができ、したがって、ユーザ経験を改善することができる。
【００６５】
当業者は、情報と信号は様々な異なる技術および技法(technologies and techniques)のうちのいずれかを使用して表わされることができるということを理解するであろう。例えば、上記説明の全体にわたって参照されることができるデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場あるいは磁性粒子、光場あるいは光学粒子、あるいはそれらのいずれの組合せによって表わされることができる。
【００６６】
当業者は、様々な説明のための論理ブロック、モジュール、回路、および、ここに開示された態様に関連して説明されたアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアあるいは両方の組合せとしてインプリメントされることができる、ということをさらに理解するであろう。ハードウェアとソフトウェアのこの互換性を明瞭に説明するために、様々な説明のためのコンポーネント、ブロック、モジュール、回路およびステップが、一般に、それらの機能性という観点から、上記に説明されてきた。そのような機能性が、ハードウェアあるいはソフトウェアとしてインプリメントされるかどうかは、特定のアプリケーションと全体のシステムに課された設計制約(design constraints)に依存する。熟練職人は、各特定のアプリケーションについて様々な方法で、説明された機能性をインプリメントすることができるが、そのようなインプリメンテーションの決定は、本発明の範囲からの逸脱を生じさせるものとして解釈されるべきでない。
【００６７】
ここでの開示に関連して説明された様々な説明のための論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）あるいは他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいは、ここに説明された機能を実行するように設計されたそれらのいずれの組み合わせ、でインプリメントされる、あるいは実行されることができる。汎用プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステート機械(state machine)であってもよい。プロセッサはまた、コンピューティングデバイス(computing devices)の組み合わせ、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアを併用しての１つまたは複数のマイクロプロセッサ、あるいはいずれの他のそのような構成のもの、としてインプリメントされることができる。
【００６８】
ここでの開示に関連して説明された方法あるいはアルゴリズムのステップは、直接的にハードウェアにおいて、プロセッサによって実行されたソフトウェアモジュールにおいて、あるいはこれら２つの組み合わせにおいて、具現化されることができる。ソフトウェアモジュール、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭあるいは当技術分野において知られているストレージ媒体のいずれの他の形態、において存在する(reside)ことができる。例示的なストレージ媒体は、プロセッサに結合されるので、プロセッサがストレージ媒体から情報を読み取ることができ、またストレージ媒体に情報を書き込むことができる。あるいは、ストレージ媒体は、プロセッサに一体化されることができる。プロセッサとストレージ媒体は、ＡＳＩＣにおいて存在していてもよい。ＡＳＩＣは、ユーザ端末に存在していてもよい。あるいは、プロセッサとストレージ媒体は、ユーザ端末において、ディスクリートコンポーネントとして存在していてもよい。
【００６９】
１つまたは複数の例示的な設計において、説明された機能は、ハードウェア、ソフトウェア、及び／または、ファームウェア、あるいは、それらのいずれの組み合わせ、においてインプリメントされることができる。ソフトウェアでインプリメントされる場合には、関数(functions)は、コンピュータ可読媒体上の１つまたは複数の命令あるいはコードとして、保存されあるいは送信されることができる。コンピュータ可読媒体(Computer-readable media)は、コンピュータストレージ媒体(computer storage media)と、１つの場所から別の場所へとコンピュータプログラムの転送を容易にするいずれの媒体をも含む通信媒体と、を両方含んでいる。ストレージ媒体は、汎用あるいは専用のコンピュータによってアクセスされることができる、いずれの利用可能な媒体であることができる。例として、また限定されないが、そのようなコンピュータ可読メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭあるいは他の光学ディスクストレージ(optical disk storage)、磁気ディスクストレージ(magnetic disk storage)あるいは他の磁気ストレージデバイス(magnetic storage devices)、あるいは、任意の他の媒体も備えることができ、それらは、命令あるいはデータ構造の形態において望ましいプログラムコード手段(desired program code means)を保存あるいは搬送するように使用されることができ、また、汎用あるいは専用のコンピュータ、あるいは、汎用あるいは専用のプロセッサ、によってアクセスされることができる。また、いずれの接続(connection)もコンピュータ可読メディア(computer-readable medium)と適切に名付けられる。例えば、ソフトウェアがウェブサイト、サーバ、あるいは、同軸ケーブル、光ファイバーケーブル、ツイストペア(twisted pair)、デジタル加入者ライン(digital subscriber line)（ＤＳＬ）、あるいは赤外線、無線、およびマイクロ波のような無線技術を使用している他の遠隔ソース、から送信される場合には、そのときには、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、あるいは赤外線、無線、およびマイクロ波のような無線技術は、媒体(medium)の定義に含まれている。ここに使用されているように、ディスク(disk)とディスク(disc)は、コンパクトディスク(compact disc)（ＣＤ）、レーザーディスク（登録商標）(laser disc)、光学ディスク(optical disc)、デジタル汎用ディスク(digital versatile disc)（ＤＶＤ）、フロッピー（登録商標）ディスク(disk)およびブルーレイディスク(blu-ray disc)を含んでおり、「ディスク(disks)」は、大抵、データを磁気で再生しているが、「ディスク(discs)」は、レーザーで光学的に再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００７０】
本開示の上記の説明は、いずれの当業者も本開示を作り、あるいは、使用することを可能にするために提供されている。本開示に対する様々な修正は、当業者にとっては容易に明らかであり、そして、ここにおいて定義された包括的な原理は、本開示の範囲から逸脱することなく、他の変形に適用されることができる。したがって、本開示は、ここにおいて説明された例及び設計に限定されるようには意図されてはおらず、ここにおいて開示された原理および新規な特徴に整合する最も広い範囲が与えられるべきである。
以下に、本願発明の当初の［特許請求の範囲］に記載された発明を付記する。
［１］
無線デバイスに使用されるメモリデバイスに、第１及び第２のコードイメージをプログラムするように構成されたプロセッサ、
を備え、前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされており、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされる、
装置。
［２］
前記プロセッサは、前記第１のコードイメージに基づいて第１のセキュリティ情報を生成するように、前記第２のコードイメージに基づいて第２のセキュリティ情報を生成するように、そして前記メモリデバイスに前記第１及び第２のセキュリティ情報をプログラムするように、構成されており、前記第１及び第２のセキュリティ情報は、それぞれ、前記第１及び第２のコードイメージを認証するために使用される、［１］に記載の装置。
［３］
前記プロセッサは、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名を生成するように、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するように、そして、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムするように、構成されている、［１］に記載の装置。
［４］
前記プロセッサは、前記第２のコードイメージを複数のページに分割するように、前記のページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするように、前記複数のページについてのハッシュダイジェストのテーブルを生成するように、そして、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムするように、構成されている、［３］に記載の装置。
［５］
前記プロセッサは、ハッシュダイジェストの前記テーブルにさらに基づいて前記デジタル署名を生成するように構成されている、［４］に記載の装置。
［６］
無線デバイスに使用されるメモリデバイスに第１のコードイメージをプログラムすることと、なお、前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされている；
前記メモリデバイスに第２のコードイメージをプログラムすることと、なお、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされている；
を備えている方法。
［７］
前記第１のコードイメージに基づいて第１のセキュリティ情報を生成することと、
前記第２のコードイメージに基づいて第２のセキュリティ情報を生成することと、
前記メモリデバイスに前記第１及び第２のセキュリティ情報をプログラムすることと、
をさらに備えており、前記第１及び第２のセキュリティ情報は、それぞれ、前記第１及び第２のコードイメージを認証するために使用される、［６］に記載の方法。
［８］
前記第１のセキュリティ情報を生成することは、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名を生成することと、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成することと、を備えており、前記第１及び第２のセキュリティ情報をプログラムすることは、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムすること、を備えている、［７］に記載の方法。
［９］
前記第２のセキュリティ情報を生成することは、前記第２のコードイメージを複数のページに分割することと、前記ページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュすることと、前記複数のページについてのハッシュダイジェストのテーブルを生成することと、を備えており、前記第１及び第２のセキュリティ情報をプログラムすることは、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムすることを備えている、［７］に記載の方法。
［１０］
無線デバイスに使用されるメモリデバイスに第１のコードイメージをプログラムするための手段と、なお、前記第１のコードイメージは、前記無線デバイスをブートし前記無線デバイスを動作可能にするために、前記メモリデバイスからロードされている；
前記メモリデバイスに第２のコードイメージをプログラムするための手段と、なお、前記第２のコードイメージは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記メモリデバイスからロードされている；
を備えている装置。
［１１］
前記第１のコードイメージに基づいて第１のセキュリティ情報を生成するための手段と、
前記第２のコードイメージに基づいて第２のセキュリティ情報を生成するための手段と、
前記メモリデバイスに前記第１及び第２のセキュリティ情報をプログラムするための手段と、
をさらに備え、前記第１及び第２のセキュリティ情報は、それぞれ、前記第１及び第２のコードイメージを認証するために使用されている、［１０］に記載の装置。
［１２］
前記第１のセキュリティ情報を生成するための手段は、前記第１のコードイメージとプライベートキーとに基づいてデジタル署名を生成するための手段と、前記プライベートキーに対応するパブリックキーを含んでいる証明書を生成するための手段と、を備えており、前記第１及び第２のセキュリティ情報をプログラムするための手段は、前記メモリデバイスに前記証明書と前記デジタル署名をプログラムするための手段、を備えている、［１１］に記載の装置。
［１３］
前記第２のセキュリティ情報を生成するための手段は、前記第２のコードイメージを複数のページに分割するための手段と、前記ページについてのハッシュダイジェストを得るために前記複数のページのそれぞれをハッシュするための手段と、前記複数のページについてのハッシュダイジェストのテーブルを生成するための手段と、を備えており、前記第１及び第２のセキュリティ情報をプログラムするための手段は、前記メモリデバイスにハッシュダイジェストの前記テーブルをプログラムするための手段を備えている、［１１］に記載の装置。
［１４］
無線デバイスをブートするために外部メモリから第１のコードイメージをロードするように構成されたメモリコントローラと；
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするように構成されたメインコントローラと、なお、前記メモリコントローラは、前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第２のコードイメージをロードするようにさらに構成されている；
を備える装置。
［１５］
前記メモリコントローラは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第２のコードイメージをロードするように構成されている、［１４］に記載の装置。
［１６］
前記メモリコントローラは、
前記第２のコードイメージのページについてのメモリアクセスを受け取るように、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第２のコードイメージの予め決定された数のページをロードするように、
構成されている、［１４］に記載の装置。
［１７］
前記メモリコントローラは、前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を得るように、そして、前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証するように、構成されており、前記メインコントローラは、前記第１のコードイメージが認証される場合には前記無線デバイスを動作可能にするように構成されている、［１４］に記載の装置。
［１８］
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記メモリコントローラは、ルートパブリックキーに基づいて前記証明書を認証するように、前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを認証するように、構成されている、［１７］に記載の装置。
［１９］
前記メモリコントローラは、
前記外部メモリから、前記第２のコードイメージについての第２のセキュリティ情報を得るように、
前記第２のセキュリティ情報に基づいて前記第２のコードイメージを認証するように、
認証される場合には、前記第２のコードイメージの実行をイネーブルにするように、
構成されている、
［１７］に記載の装置。
［２０］
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記メモリコントローラは、前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストを認証するように、そして、前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを認証するように、構成されている、［１９］に記載の装置。
［２１］
前記第２のコードイメージは、複数のページを備えており、前記メモリコントローラは、前記外部メモリから、１度に１ページ、前記第２のコードイメージの前記複数のページをロードするように構成されている、［１４］に記載の装置。
［２２］
前記メモリコントローラは、前記外部メモリからロードされた前記第２のコードイメージのページと、ロードされなかった前記第２のコードイメージのページと、を示す少なくとも１つのテーブルを保持するように構成されている、［２１］に記載の装置。
［２３］
前記メモリコントローラは、前記第２のコードイメージをロードする前に前記少なくとも１つのテーブルを作成するように、そして、前記第２のコードイメージをロードした後で前記少なくとも１つのテーブルを削除するように、構成されている、［２２］に記載の装置。
［２４］
前記メモリコントローラは、マルチプルアドレス範囲についてのマルチプルエントリを備えたメインテーブルを保持するように、前記マルチプルアドレス範囲についてのマルチプルページテーブルを保持するように、構成されており、各アドレス範囲につき１つのページテーブルがあり、各ページテーブルは、前記ページテーブルについての前記アドレス範囲内でマルチプルページについてのマルチプルエントリを含む、［２１］に記載の装置。
［２５］
前記メインテーブルの各エントリは、対応するページテーブルに対するポインタを含んでおり、前記対応するページテーブルの各エントリは、関連ページがアクセス可能かどうかを示す、［２４］に記載の装置。
［２６］
前記外部メモリは、ＮＡＮＤフラッシュメモリであり、前記メモリコントローラは、前記ＮＡＮＤフラッシュからシンクロナス動的ランダムアクセスメモリ（ＳＤＲＡＭ）まで、前記第１及び第２のコードイメージをロードするように構成されている、［１４］に記載の装置。
［２７］
動作可能である間に、前記無線デバイスは、キーパッド入力を処理すること、無線通信システムとの呼び出しを確立すること、のうちの少なくとも１つが可能である、［１４］に記載の装置。
［２８］
無線デバイスをブートするために外部メモリから第１のコードイメージをロードすることと、
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にすることと、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第２のコードイメージをロードすることと、
を備える方法。
［２９］
前記第２のコードイメージをロードすることは、前記無線デバイスが動作可能である間に、バックグラウンドタスクとして前記第２のコードイメージをロードすることを備えている、［２８］に記載の方法。
［３０］
前記第２のコードイメージをロードすることは、
前記第２のコードイメージのページについてのメモリアクセスを受け取ることと、
前記メモリアクセスに応じて前記外部メモリから、アクセスされている前記ページを含んでいる前記第２のコードイメージの予め決定された数のページをロードすることと、
を備えている、［２８］に記載の方法。
［３１］
前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を得ることと、
前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証することと、
をさらに備えており、前記無線デバイスは、前記第１のコードイメージが認証される場合には動作可能にされる、［２８］に記載の方法。
［３２］
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第１のコードイメージを認証することは、
ルートパブリックキーに基づいて前記証明書を認証することと、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを認証することと、
を備えている、［３１］に記載の方法。
［３３］
前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を得ることと、
前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを認証することと、
認証される場合には、前記第２のコードイメージの実行をイネーブルにすることと、
をさらに備えている［３１］に記載の方法。
［３４］
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記第２のコードイメージを認証することは、
前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストを認証することと、
前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを認証することと、
を備える、［２３］に記載の方法。
［３５］
無線デバイスをブートするために外部メモリから第１のコードイメージをロードするための手段と、
前記第１のコードイメージをロードした後で前記無線デバイスを動作可能にするための手段と、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第２のコードイメージをロードするための手段と、
を備える装置。
［３６］
前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を得るための手段と、
前記第１のセキュリティ情報に基づいて前記第１のコードイメージを認証するための手段と、
をさらに備えており、前記無線デバイスは、前記第１のコードイメージが認証される場合には、動作可能にされる、［３５］に記載の装置。
［３７］
前記第１のセキュリティ情報は、証明書とデジタル署名とを備えており、前記第１のコードイメージを認証するための手段は、
ルートパブリックキーに基づいて前記証明書を認証するための手段と、
前記デジタル署名と前記証明書からのパブリックキーとに基づいて前記第１のコードイメージを認証するための手段と、
を備えている、［３６］に記載の装置。
［３８］
前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を得るための手段と、
前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを認証するための手段と、
認証される場合には、前記第２のコードイメージの実行をイネーブルにするための手段と、
をさらに備えている［３６］に記載の装置。
［３９］
前記第２のセキュリティ情報は、少なくとも１つのハッシュダイジェストを備えており、前記第２のコードイメージを認証するための手段は、
前記第１のセキュリティ情報に基づいて前記少なくとも１つのハッシュダイジェストを認証するための手段と、
前記少なくとも１つのハッシュダイジェストに基づいて前記第２のコードイメージを認証するための手段と、
を備えている、［３８］に記載の装置。
［４０］
コンピュータプログラムプロダクトであって、
無線デバイスをブートするために外部メモリから第１のコードイメージをコンピュータにロードさせるためのコードと、
前記第１のコードイメージをロードした後でコンピュータに前記無線デバイスを動作可能にさせるためのコードと、
前記無線デバイスをさらにブートするために、前記無線デバイスが動作可能である間に、前記外部メモリから第２のコードイメージをコンピュータにロードさせるためのコードと、
を備えるコンピュータ可読媒体、
を備えるコンピュータプログラムプロダクト。
［４１］
前記コンピュータ可読媒体は、
前記外部メモリから、前記第１のコードイメージについての第１のセキュリティ情報を前記コンピュータに得させるためのコードと、
前記第１のセキュリティ情報に基づいて前記第１のコードイメージを前記コンピュータに認証させるためのコードと、
前記第１のコードイメージが認証される場合には、前記コンピュータに前記無線デバイスを動作可能にさせるためのコードと、
をさらに備えている［４０］に記載のコンピュータプログラムプロダクト。
［４２］
前記コンピュータ可読媒体は、
前記外部メモリから前記第２のコードイメージについての第２のセキュリティ情報を前記コンピュータに得させるためのコードと、
前記第２のセキュリティ情報に基づいて、前記第２のコードイメージを前記コンピュータに認証させるためのコードと、
認証される場合には、前記第２のコードイメージの実行を前記コンピュータにイネーブルにさせるためのコードと、
をさらに備えている［４１］に記載のコンピュータプログラムプロダクト。
［４３］
外部メモリから、コードイメージの複数のページを検索するように、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている；
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証するように；ｊ
構成されたメモリコントローラ、
を備えている装置。
［４４］
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページについては、前記メモリコントローラは、生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュするように、そして、前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言するように、構成される、［４３］に記載の装置。
［４５］
前記メモリコントローラは、
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索するように、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている；
ハッシュダイジェストの前記テーブルを認証するように；
前記の認証されたハッシュダイジェストのテーブルに基づいて前記コードイメージの前記複数のページを認証するように；
構成されている、［４３］に記載の装置。
［４６］
前記メモリコントローラは、前記外部メモリから、一度に１ページで予め決定された順序で、前記コードイメージの前記複数のページを検索するように構成されている、［４３］に記載の装置。
［４７］
前記メモリコントローラは、一度に１ページで、前記コードイメージのページについてのメモリアクセスに基づいて決定されたランダムな順序で、前記コードイメージの前記複数のページを検索するように構成されている、［４３］に記載の装置。
［４８］
外部メモリから、コードイメージの複数のページを検索することと、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている；
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証することと；
を備えている方法。
［４９］
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページを認証することは、
生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュすることと、
前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言することと、
を備える、［４８］に記載の方法。
［５０］
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索することと、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている；
ハッシュダイジェストの前記テーブルを認証することと、なお、前記外部メモリから検索された各ページは、前記ページについて認証されたハッシュダイジェストに基づいて認証される；
をさらに備えている、［４８］に記載の方法。
［５１］
外部メモリから、コードイメージの複数のページを検索するための手段と、なお、前記複数のページは、別個のセキュリティ情報と関連づけられている；
前記ページについてのセキュリティ情報に基づいて、前記外部メモリから検索された各ページを認証するための手段と、
を備えている装置。
［５２］
前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストを備えており、前記外部メモリから検索された各ページを認証するための手段は、
生成されたハッシュダイジェストを得るために安全ハッシュアルゴリズムに基づいて前記検索されたページをハッシュするための手段と、
前記生成されたハッシュダイジェストが前記ページについて認証されたハッシュダイジェストと整合する場合には、認証されたものとして前記検索されたページを宣言するための手段と、
を備える、［５１］に記載の装置。
［５３］
前記外部メモリから前記コードイメージの前記複数のページについてのハッシュダイジェストのテーブルを検索するための手段と、なお、前記コードイメージの各ページについての前記セキュリティ情報は、ハッシュダイジェストの前記テーブルにおいてハッシュダイジェストを備えている；
ハッシュダイジェストの前記テーブルを認証するための手段と、なお、前記外部メモリから検索された各ページは、前記ページについて認証されたハッシュダイジェストに基づいて認証される；
をさらに備えている、［５１］に記載の装置。
【図１】
0005936820.tif 000002
【図２】
0005936820.tif 000003
【図３】
0005936820.tif 000004
【図４】
0005936820.tif 000005
【図５】
0005936820.tif 000006
【図６】
0005936820.tif 000007
【図７】
0005936820.tif 000008
【図８】
0005936820.tif 000009
【図９】
0005936820.tif 000010
【図１０】
0005936820.tif 000011
【図１１】
0005936820.tif 000012