JP2016507848A - リードオンリメモリのブートコードパッチ - Google Patents

リードオンリメモリのブートコードパッチ Download PDF

Info

Publication number
JP2016507848A
JP2016507848A JP2015558880A JP2015558880A JP2016507848A JP 2016507848 A JP2016507848 A JP 2016507848A JP 2015558880 A JP2015558880 A JP 2015558880A JP 2015558880 A JP2015558880 A JP 2015558880A JP 2016507848 A JP2016507848 A JP 2016507848A
Authority
JP
Japan
Prior art keywords
boot code
boot
execution
rom
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015558880A
Other languages
English (en)
Other versions
JP6318425B2 (ja
Inventor
アクデミア、カラマン、ディー.
アイテク、トルガ、ニハット
カラコユンル、デニズ
Original Assignee
マーベル ワールド トレード リミテッド
マーベル ワールド トレード リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マーベル ワールド トレード リミテッド, マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2016507848A publication Critical patent/JP2016507848A/ja
Application granted granted Critical
Publication of JP6318425B2 publication Critical patent/JP6318425B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本開示は、リードオンリメモリ(ROM)のブートコードパッチのための複数の装置及び技術を説明する。いくつかの態様において、ROMからのブートコードの実行は、デバイスのブート処理を開始するように開始される。ROMからのブートコードの実行は、次に、他のメモリからの訂正されたブートコード及び追加ブートコードのような他のブートコードの実行を可能とするために割り込まれる。他のブートコードが一度実行されると、ROMからのブートコードの実行は、コンピューティングデバイスのブートを継続するために再開される。こうすることによって、訂正されたブートコード及び追加ブートコードは、ROMに格納されたブートコードをパッチするために有効なブート処理中に、実行されてもよい。

Description

[関連出願]
本開示は、2013年2月22日出願の米国仮特許出願第61/768,097号に対する優先権を主張し、その開示全体が参照によって本明細書に組み込まれる。
本明細書において提供される説明の背景は、概して、開示内容を与えすることを目的とする。現在挙げられている複数の発明者の業績は、この背景の項において記載される範囲で、及び出願時には先行技術として認められていない場合がある説明の複数の態様の範囲において、明示的にもまたは暗黙的にも本開示に対する先行技術として認めていない。
コンピューティングデバイス及び電子デバイスは、デバイスの複数のリソースまたは複数のコンポーネントを構成するためのパワーアップに対するブートコードを実行することが多い。一度複数のリソース及び複数のコンポーネントが構成されると、オペレーティングシステムは、ブートコードによってロードされ、実行される。デバイスの制御は、次に、デバイスの複数の機能または複数のアプリケーションを実装する、実行中のオペレーティングシステムに渡される。
承認されていないソフトウェアのデバイス上での実行を防止するために、ブートコードは、オペレーティングシステム及びブートコードの上の複数のソフトウェアレイヤの真正性を認証してもよい。ブートコードは、電源オン時に実行される最低レベルのコードであるため、ブートコードの真正性を保証するために、ブートコードは、デバイスのハードウェアにハードコーディングされることが多い。ブートコードのハードコーディングはブートコードの悪質な変形を防止するが、ハードコーディングは、複数のエラーを修正するためのブートコードの変形をも防止する。従って、ブートコードのエラーを修正するために、デバイスのハードウェアは、再設計及び再生産を必要とすることが多く、これにより、膨大な時間、資金及びリソースを消費する。
1つまたは複数の実装の複数の詳細は、以下の複数の添付図面及び明細書において説明される。複数の他の特徴及び利点は、説明及び複数の図面から明らかとなる。この概要自体は、複数の必須の特徴を説明するものと見なされるべきではなく、かつ、特許請求の範囲に係る主題の範囲を限定するために用いられるべきではない。
コンピューティングデバイスのブート処理を開始するために、リードオンリメモリ(ROM)からの第1のブートコードの実行を開始するための方法が記載される。方法は、次に、他のメモリからの第2のブートコードの実行を可能とするために、第1のブートコードの実行に割り込む。第2のブートコードが実行された後、コンピューティングデバイスのブート処理を継続するために、第1のブートコードの実行が再開される。
ROMからのブートコードの実行を開始するための他の方法が記載され、ここで、ブートコードの実行は、プログラムカウンタを介して進められる。プログラムカウンタがブートコードの予め定められたアドレスに到達したことに応答して、ブートコードの実行は、割り込まれる。方法は、次に、ROMのブートコードのいくつかに代えて、ワンタイムプログラマブル(OTP)メモリからの代替ブートコードを実行する。代替ブートコードの実行に応答して、プログラムカウンタは、ROMからのブートコードの実行を再開するために有効なブートコードのアドレスに戻される。
プロセッサ、ROM、OTPメモリ、及び、プロセッサのプログラムカウンタに応答して、ブートコードにおいて予め定められたアドレスに遭遇したプロセッサによるROMからのブートコードの実行に割り込むように構成される割り込みマネージャを含むシステムオンチップ(SoC)が記載される。割り込みマネージャは、プロセッサにOTPメモリからの追加ブートコードを実行させ、次に、プログラムカウンタを、プロセッサにROMからのブートコードの実行を再開させるために有効なブートコードにおけるアドレスに戻すようにさらに構成される。
1つまたは複数の実装の複数の詳細は、以下の複数の添付図面及び明細書において説明される。複数の他の特徴及び利点は、説明及び複数の図面から明らかとなる。
複数の図面において、参照番号の最も左の桁は、参照番号が最初に現れる図面の番号を特定する。説明及び複数の図面の異なる複数の例で同じ参照番号を用いる場合、それらは同様の複数の要素を示す。
1つまたは複数の態様に係る複数のコンピューティングデバイスを有するオペレーション環境を示す。 1つまたは複数の態様に係るコンピューティングデバイスのブートアーキテクチャの例を示す。 リードオンリメモリからのブートコードの実行に割り込むための方法を示す。 ワンタイムプログラマブルメモリからの代替ブートコードを実行するための方法を示す。 1つまたは複数の態様に係るブートコード及びブートコードパッチの複数の例を示す。 ブートコードをワンタイムプログラマブルメモリの複数のヒューズに焼くための方法を示す。 本明細書に記載された複数の技術の複数の態様を実装するためのシステムオンチップ(SoC)環境を示す。
リードオンリメモリ(ROM)からのブートコードパッチのための複数の従来技術は、典型的には、ブートコードが書き込まれる(例えば、焼かれる)ROMハードウェアの再生産を必要とする。ROMハードウェアのこのような再生産は、他に一連のプレシリコン検証、シリコンテープアウトまたはマスキング、ROM移植、ROMハードウェアの製造及びポストシリコン検証を含むことが多い。ブートコードにパッチをするためのROMハードウェアの再生産自体は、膨大な量の時間、資金及びリソースを消費する。
本開示は、ROMのブートコードパッチのための複数の装置及び技術を記載し、これらは、他のメモリからの他のブートコード(例えば、代替または追加ブートコード)がブート処理中に実行されることを可能とする。いくつかの態様において、他のメモリは、ROMを含むハードウェアの製作後に他のブートコードが焼かれるワンタイムプログラマブル(OTP)メモリである。ブートコードがシステムオンチップ(SoC)において具現される場合、SoCは、他のコード(例えば、パッチコード)に対するロックアウトメカニズムを与えてもよい。例えば、ブートコード(例えば、BootROM)検証の後、ブートコードが具現される製品の出荷前に、パッチが必要でないと決定される場合、SoCは、製品寿命にわたりブートコードのセキュリティを保証する機能を無効化する性能を与えてもよい。同様に、ブートコードのパッチが必要な場合、SoCは、他のブートコードのセキュリティを保証するためにハードウェアの出荷前に一度パッチされたら、OTPメモリの残りの複数のブロックをロックアウトするための他の性能を与えてもよい。
以下の説明は、オペレーション環境、当該オペレーション環境で使用可能な複数の技術、及び当該オペレーション環境の複数のコンポーネントが具現され得るシステムオンチップ(SoC)を記載する。以下の記載において、オペレーション環境を参照して説明するが、あくまでも例として記載する。
[オペレーション環境]
図1は、各々が様々なデータを通信し、これにアクセスし、これを与え、またはこれを処理することが可能な複数のコンピューティングデバイス102を有するオペレーション環境100の例を示す。コンピューティングデバイス102は、スマートフォン104、タブレットコンピュータ106、ネットワーク接続ストレージドライブ108(NASドライブ108)、デジタルカメラ110及びインターネットプロトコル対応テレビ112(IPTV112)を含む。図示されていないが、デスクトップコンピュータ、サーバ、モバイルインターネットデバイス(MID)、ファクシミリ機、プリンタ、デジタルカムコーダ、ネットブック、ウルトラブック、ゲームコンソール、ホームオートメーション端末、モバイルホットスポット、ネットワーク対応メディアプレイヤ等のような、複数のコンピューティングデバイス102の他の複数の構成も、検討される。
概して、コンピューティングデバイス102は、「オフ」状態から「オン」状態にわたる複数のオペレーション状態を有する。これら複数のオペレーション状態は、完全なオフ状態(機械的オフ)、休止状態、スリープ状態、サスペンド状態、アイドル状態、アクティブ状態等を含んでもよい。より低いオペレーション状態からより高いオペレーション状態に(例えば、オフ状態からアクティブ状態に)移行する場合、コンピューティングデバイス102はブートされる。コンピューティングデバイス102のブートは、オペレーティングシステムまたは複数のより高レベルアプリケーションによるアクセスのためのコンピューティングデバイス102の複数のコンポーネントまたはリソースを構成する低レベルコード(例えば、ブートコードまたはバイナリ)の実行を含む。
各コンピューティングデバイス102は、プロセッサコア114(例えば、アプリケーションプロセッサコア)及びコンピュータ可読ストレージメディア116(CRM116)を含む。単一のコアとして示されているが、プロセッサコア114は、任意の適切な態様(例えば、へテロジニアスマルチコアアプリケーションプロセッサ)で構成され得る任意の適した数及び/または種類の処理コアの1つであってもよい。いくつかの場合、プロセッサコア114は、マイクロコントローラ、組み込みコントローラまたはデジタル信号プロセッサのコアとして実装される。
CRM116は、揮発性メモリ118及び不揮発性メモリ120を含み、これらは、任意の適切な種類、組み合わせまたは数の内部及び/または外部メモリデバイスを含んでもよい。CRM116の各メモリは、ハードウェアのオンチップメモリエリア、またはデータインタフェースまたはバスを介してプロセッサコア114とデータ通信を行うオフチップメモリデバイスとして実装されてもよい。この特定の例では、揮発性メモリ118は、スタティックランダムアクセスメモリ122(SRAM122)及び同期式ダイナミックランダムアクセスメモリ124(DRAM124)を含む。代替的に、またはさらに、揮発性メモリ118は、ランダムアクセスメモリ(RAM)、非同期式ダイナミックRAM、ダブルデータレートRAM(DDR)等などの、複数の他の適した種類のメモリを含んでもよい。
不揮発性メモリ120は、シリアルペリフェラルインタフェース(SPI)フラッシュ126、NANDフラッシュ128、リードオンリメモリ130及びワンタイムプログラマブル(OTP)メモリ132を含む。検討される複数の他の不揮発性メモリは、不揮発性RAM(NVRAM)、電気的消去可能プログラマブルROM、組み込みマルチメディアカード(eMMC)デバイス、NORフラッシュ、シングルレベルセル(SLC)フラッシュ、マルチレベルセル(MLC)フラッシュ等を含む。この特定の例では、ROM130及びOTPメモリ132は、オンチップメモリエリアとして実装され、これらは、チップの様々な金属または半導体レイヤに製造される。
不揮発性メモリ120は、パワーダウンまたはサスペンドされる場合に、コンピューティングデバイス102のデータを持続的に格納する。コンピューティングデバイス102のブートコードは、SPIフラッシュ126、NANDフラッシュ128及びROM130などの、1つまたは複数の不揮発性メモリコンポーネントに格納される。例えば、最低レベルまたはセキュアなブートコードは、ROM130を含むチップの製造中にROM130に書き込まれ、または焼かれる。こうすることによって、ブートROMとも称されるROM130のブートコードは、チップの製造後は修正不可能である。ROM130の修正不可能な性質は、ROM130に格納されたブートコードの真正性及びセキュリティを保証する。コンピューティングデバイス102のより高レベルのブートコードは、それぞれがSPIフラッシュ126及びNANDフラッシュ128に格納される複数のブートローダとして実装される。SPIフラッシュ126及びNANDフラッシュ128の複数の内容は修正可能またはユーザアクセス可能であるため、これらの複数のデバイスに格納されるより高レベルのブートコードは、セキュアではない。
いくつかの態様において、ブートコードは、一度に書き込み可能なOTPメモリ132に書き込まれる。OTPメモリ132は、それぞれが設定可能なバイナリ値を表す複数のヒューズの複数のブロックを含む。より詳細には、OTPメモリ132は、その全てが1またはゼロの複数のブロックなどの初期またはデフォルト状態に設定された複数のヒューズを有するように製造される。データをOTPメモリ132に書き込むために、複数の適切なヒューズがデフォルト状態から非デフォルト状態に焼かれることにより、所望のバイナリ値を示す。従って、OTPメモリ132のヒューズが一度非デフォルト状態に焼かれると、もはやヒューズは他のデータをOTPメモリ132に書き込むために有用ではなくなる。代替的に、またはさらに、OTPメモリ132の複数の内容は、複数の不使用ヒューズブロック及び複数の不使用ヒューズブロックと関連付けられた複数のエラー訂正コードビットの複数のヒューズを焼くことによって、永久的にロックされてもよい。
コンピューティングデバイス102の複数のオペレーティングシステム、アプリケーションまたはユーザデータ(不図示)は、揮発性メモリ118、不揮発性メモリ120または任意の他の適した種類のCRM116によって格納され、または、これらから実行されてもよい。代替的に、またはさらに、コンピューティングデバイス102の複数のオペレーティングシステム及び/または複数のアプリケーションは、ファームウェアまたは複数の他のプロセッサ実行可能命令、バイナリまたはコードとして、具現されてもよい。デバイス102の複数のオペレーティングシステム及び複数のアプリケーションは、プロセッサコア114によって実行可能であることにより、コンピューティングデバイス102のユーザインタフェース、複数の様々な機能及び/または複数のサービスを与える。
CRM116は、割り込みマネージャ134をさらに含み、これは、この特定の例において、様々な複数の機能を実装するためにプロセッサコア114によって実行可能な複数のプロセッサ実行可能命令として具現される。代替的に、またはさらに、割り込みマネージャ134は、部分的にまたは全体として、ファームウェアもしくはハードウェア(不図示)またはそれらの任意の適切な組み合せを介して実装されてもよい。いくつかの場合、割り込みマネージャ134は、ROM130またはROM130が存在するチップの製作(例えば、製造)中に、ROM130のブートコードにハードコーディングされる。割り込みマネージャ134は、複数の他のメモリからのブートコードの実行を可能とするために、ROM130からのブートコードの実行に割り込んでもよい。割り込みマネージャ134の実装及び使用は、様々であり、以下に記載される。
コンピューティングデバイス102は、複数のI/Oポート136、ディスプレイ138またはネットワークインタフェース140をさらに含んでもよい。複数のI/Oポート136は、コンピューティングデバイス102が複数の他のデバイスまたは複数のユーザとインタラクトすることを可能とする。複数のI/Oポート136は、USBポート、オーディオポート、シリアルATA(SATA)ポート、PCIエクスプレス対応ポートまたはカードスロット、セキュアデジタル入出力(SDIO)スロット及び/または他の複数のレガシーポートのような、複数の内部または外部ポートの任意の組み合わせを含んでもよい。様々な複数の周辺機器、例えば、ヒューマンインプットデバイス(HID)、外部コンピュータ可読ストレージメディアまたは他の複数の周辺機器が、複数のI/Oポート136と動作可能に連結されてもよい。
ディスプレイ138は、コンピューティングデバイス102のオペレーティングシステムまたはアプリケーションと関連付けられたユーザインタフェースまたはレンダリングされたグラフィクスを与えてもよい。ディスプレイ138は、タッチスクリーンまたはタッチ反応オーバレイなどのタッチ入力センサ(不図示)を含んでもよい。ネットワークインタフェース140は、1つまたは複数のネットワーク及びこれらに接続される複数の他のデバイスへの接続性を与える。複数のネットワークインタフェース140を介して通信されるデータは、コンピューティングデバイス102が通信を行う通信プロトコルまたは規格によってパケット化またはフレーム化されてもよい。複数のネットワークインタフェース140は、ローカルネットワーク、イントラネットまたはインターネットを介して通信を行うためのEthernet(登録商標)または光ファイバインタフェースのような複数の有線インタフェースを含んでもよい。ネットワークインタフェース140は、無線LAN、セルラネットワークまたは無線パーソナルエリアネットワーク(例えば、Bluetooth(登録商標))のような複数の無線ネットワークを介した通信を容易にする複数の無線インタフェースをさらに含んでもよい。
図2は、200において、1つまたは複数の態様に係るコンピューティングデバイスのブートアーキテクチャの例を示す。ブート処理中のブートコードの実行は、コンピューティングデバイスのハードウェア202及びソフトウェア204において行われる。ハードウェア202は、ROM130を含み、ブートコード(ブートROM206)のバイナリは、ROM130の製造中にこれに焼かれる。ブートROM206は、コンピューティングデバイスのブート処理を開始させるように実行される。ブートROM206はROM130に焼かれ、修正可能ではないため、ブートROM206の実行は、ブートROM206が「信頼の起点」として機能する、信頼されたブート処理を実装してもよい。より詳細には、ブートROM206がROM130に一度書き込まれると、読み出しのみを行うROM130の性質は、ブートROM206の真正性及びセキュリティを保証する。
ハードウェア202は、複数のバイナリ値を格納可能な複数のヒューズの複数のブロックとして構成されるOTPメモリ132をさらに含む。この特定の例では、OTPメモリ132は、ブートROMパッチ208を格納し、これは、コンピューティングデバイスのブートシーケンス中に実行されるバイナリコードを含む。いくつかの場合、ブートROMパッチ208は、ブートROMの一部206がエラーまたはバグを含む場合などに、ブートROMの一部206に代えて実行される代替ブートコードを含む。複数の他の場合には、ブートROMパッチ208は、ブートROM206と共に実行される追加ブートコードを含む。このような場合、追加ブートコードの実行は、ブートシーケンス中にコンピューティングデバイスの追加的な複数の機能を実装してもよい。OTPメモリに書き込まれるコードの実装及び使用は、様々であり、以下に記載される。
ブートシーケンス中、ブートROM206の実行は、より高レベルのブートローダをソフトウェア204にロードし、これは次いで他のより高レベルのブートローダをロードし、ブートシーケンスは、オペレーティングシステムがロードされるまで継続する。この特定の例では、ブートROM206の実行は、レベル2ブートローダ210をSPIフラッシュ126からロードする。複数のリソースの制御をレベル2ブートローダ210に移す前に、ブートROM206は、暗号署名またはハッシュを検証することによって、ブートローダのコードの真正性を検証する。こうすることによって、ブートROM206は、次のレベルのブートローダがセキュアであること(例えば、改ざんされていないこと)を保証し、信頼の連鎖が、「信頼の起点」からブートシーケンスの次の段階に確立される。
複数のリソースの制御がブートROM206からレベル2ブートローダ210に一度渡されると、ブートローダの実行は、さらに、コンピューティングデバイスの複数のリソースを構成し、レベル3ブートローダ212をNANDフラッシュ128からロードする。ここで、信頼の連鎖を継続するために、レベル2ブートローダ210は、複数のリソースの制御が3ブートローダ212に移される前に、3ブートローダ212の真正性を検証する。図2に示されるように、ブートシーケンスが任意の数のブートローダを介して進行するため、ブートシーケンスは、レベルNのブートローダ214がロード、検証及び実行されるまで継続する。信頼されたブート処理を実装するために、各レベルのブートコードまたはブートローダの真正性は、前のブートローダによって検証される。
ブートシーケンスを完了させるために、レベルNのブートローダ214の実行は、オペレーティングシステム216を不揮発性120からロードし、オペレーティングシステム216に関連付けられた暗号署名またはハッシュを検証することによって、オペレーティングシステムの真正性を検証する。こうすることによって、信頼されたブート処理は、コンピューティングデバイス上で実行しているソフトウェアが真正かつ認証されていることを保証するように実装される。信頼されたブート処理の「信頼の起点」は、ブートROM206であり、これは、ROM130が、メモリが一度製造されると変更不可能であることにより、セキュアであることが保証されている。
[リードオンリメモリのブートコードパッチの複数の技術]
以下の説明は、リードオンリメモリのブートコードパッチの複数の技術を記載する。これら複数の技術は、コンピューティングデバイス102上で具現される図1の割り込みマネージャ134のような、前述された環境または複数のエンティティを用いて実装されてもよい。これら複数の技術は、図3、4及び6に示される複数の方法を含み、これらの各々は、1つまたは複数のエンティティによって実行される複数のオペレーションのセットとして示される。これら複数の方法は、複数のオペレーションを実行するために示される複数の順序に、必ずしも限定されない。さらに、これら複数の方法は、同じエンティティ、別個の複数のエンティティ、またはそれらの任意の組み合わせによって実行されるかに関わらず、全体としてまたは部分的に、互いと共に用いられてもよい。以下の説明の複数の部分では、例として、図1のオペレーション環境100及び図2及び5の複数のエンティティが参照される。このような参照は、オペレーション環境100に限定されるものではなく、様々な複数の例の1つの例示として取られるべきである。
図3は、リードオンリメモリからのブートコードの実行に割り込むための方法300を示し、図1の割り込みマネージャ134によって実行される複数のオペレーションを含む。
302において、リードオンリメモリ(ROM)からの第1のブートコードの実行が開始される。第1のブートコードの実行を開始させることにより、コンピューティングデバイスのブート処理を開始させる。いくつかの場合、第1のブートコードは、ROMの製造中にハードウェアに焼かれるセキュアなブートROMである。第1のブートコードの実行は、コンピューティングデバイスの電源オンというイベントに応答して開始されてもよい。例えば、スマートフォンまたはタブレットコンピュータが電源オンされた場合、マイクロコントローラまたはハードウェアロジック回路は、ブートROMバイナリの実行を開始させてもよい。
304において、第1のブートコードの実行は、他のメモリからの第2のブートコードの実行を可能とするために、割り込まれる。第1のブートコードの実行は、第1のブートコードの実行を中断するために有効な予め定められたポイントにおいて割り込まれる。予め定められたポイントは、割り込み、ブレイク、ジャンプ等のトリガとなる第1のブートコードのアドレスまたは命令であってもよい。第1のブートコードが実行しない場合、コンピューティングデバイスの他のメモリからの第2のブートコードは、実行されてもよい。いくつかの場合、第2のブートコードは、第1のブートコードの一部、例えば、バグまたはエラーを含む部分に代わって実行される。複数の他の場合、第2のブートコードの実行は、デバイスのブート処理中に追加の機能または特徴を与える。
306において、ROMからの第1のブートコードの実行は、第2のブートコードの実行後に再開される。ROMからの第1のブートコードの実行を再開することにより、デバイスのブート処理を継続させる。いくつかの場合、第1のブートコードの実行は、リターンアドレスのような予め定められたリターンポイントにおいて再開される。第1のブートコードの実行が継続されることにより、デバイスの高レベルブートローダまたはオペレーティングシステムをロードしてもよい。いくつかの場合、より高レベルのブートローダまたはオペレーティングシステムの真正性は、複数のデバイスリソースの制御が第1のブートコードから渡される前に検証される。これは、デバイスの制御がより低レベルのブートローダから移される前にブート処理の各レベルまたはレイヤが検証を行う、信頼されたブート処理を実装するために有効である。ROM及びOTPメモリからの起点レベルのブートコードを実行することによって、最低レベルのブートコードのセキュリティがこれらのメモリの修正不可能な性質により保証される。
図4は、ワンタイムプログラマブルメモリからの代替ブートコードを実行するための方法400を示し、図1の割り込みマネージャ134によって実行される複数のオペレーションを含む。
402において、リードオンリメモリ(ROM)からのブートコードの実行が開始される。ROMに格納されたブートコードは、コンピューティングデバイスをブートするために実行されるブートROMバイナリを含んでもよい。いくつかの場合、ブートROMは、ROMの複数の物理的導体または半導体レイヤに焼かれ、修正可能ではない。このような場合、ブートROMは、セキュアなブートROMであり、信頼されたブート処理の「信頼の起点」として機能してもよい。ブートコードの実行は、プログラムカウンタによって進められ、これは、ブートの複数のアドレスを介してインクリメントすることにより、各アドレスに関連付けられた複数の命令の実行をさせる。
例として、ユーザが図1のスマートフォン104を電源オンにするとみなす。ここで、スマートフォン104は、スマートフォン104の複数のコンポーネント及び複数のリソースがパワーダウンされた「オフ」状態から、「オン」状態にブートすると仮定する。「オン」状態にブートするために、ブートROM206は、ユーザがスマートフォン104を電源オンしたことに応答して実行を開始する。図5に示されるように、ブートROM206は、複数のアドレス502及びバイナリ504を含み、実行された場合に、バイナリから複数のマシンコード命令(複数の命令506)に変換される。スマートフォン104のプロセッサコア114は、プログラムカウンタ508が複数のアドレス502を介して進むと、一連のバイナリ504、または対応する命令506を実行する。
404において、ROMからのブートコードの実行は、割り込まれる。これは、プログラムカウンタがブートコードの予め定められたアドレスに到達したことに応答して行われてもよい。予め定められたアドレスは、予め定められたアドレスが修正不可能であることを保証するために、ワンタイムプログラマブルメモリのような異なるメモリに格納されてもよい。いくつかの場合、割り込みサービスルーチン(例えば、ハードウェア型割り込みロジック)は、プログラムカウンタがブートコードの予め定められたアドレスに到達した場合に割り込みを発するように構成される。このような場合、発せられた割り込みは、割り込みハンドラに他のコードを実行させるために有効であってもよい。予め定められたアドレスは、エラーまたはバグを含む、その実行が回避されるべき一連のブートコードを示してもよい。代替的に、またはさらに、予め定められたアドレスは、エラーまたはバグを含むブートコードのセクションの第1のアドレスであってもよい。
本例に関して、ブートROMセクション510は、実行されたことに応答して、スマートフォン104が電源オンになることを防止するエラーを含むと仮定する。従って、アドレス512(0x5E0123FC)は、「BNE」命令の実行を防止するための処理への割り込みを開始するように選択される。割り込みを発するために選択されるアドレスは割り込みアドレス514としてブートROMパッチ208に書き込まれる。プログラムカウンタ508が割り込みアドレス514に到達した場合、割り込みマネージャ134は、プロセッサコア114が「BNE」命令を実行することを防止するために有効な割り込みを発する。
406において、ワンタイムプログラマブル(OTP)メモリからの代替ブートコードが実行される。この代替ブートコードは、ROMに格納されるブートコードの部分に代わって実行される。いくつかの場合、代替ブートコードの実行は、ROMからのブートコードの実行中に割り込みが発されたことに応答してなされる。このような場合、割り込みは、代替ブートコードを実行するように構成される割り込みハンドラによってクリアされてもよい。この割り込ハンドラは、前のブートコードの実行中に実装または構成されてもよい。
説明中の例を継続すると、割り込みハンドラ516は、割り込みマネージャ134によって発せられた割り込みをクリアする。ブートROM206の実行が停止されている間、割り込みハンドラ516は、ブートROMパッチ208のパッチバイナリ518を実行し、OTPメモリ132に格納される。ここで、パッチバイナリ518は、ブートROMセクション510に代わって実行され、ブートROMセクション510の誤ったコードの実行は回避される。こうすることによって、ブートROMセクション510のコードは、ROM130の内容を変更または修正することなく、パッチされてもよい。さらに、パッチバイナリ518は、OTPメモリ132に焼かれ、OTPメモリの内容は一度焼かれると修正不可能であるため、ブートコードの「信頼の起点」は維持される。
408において、プログラムカウンタは、ROMからのブートコードの実行を再開するために有効なブートコードのアドレスに戻される。ブートコードのリターンアドレスは、ブートコードの1つまたは複数の命令がスキップされるように構成されてもよい。任意に、方法400は、ROMからのブートコードの実行に割り込むために、オペレーション404に戻ってもよい。例えば、いくつかの場合、ブートコードの複数のセクションは、パッチされてもよい。方法400のオペレーション404から408のイタレーション自体は、ROMに格納されたブートコードをパッチするために複数の追加のバイナリを実行するように、任意の適した回数実行されてもよい。
説明中の例を結論付けると、ブートROMセクション510に続くアドレス520(0x5E01241C)は、リターンアドレス522としてブートROMパッチ208に焼かれると仮定する。ここで、割り込みハンドラ516は、パッチバイナリ518の実行後、プログラムカウンタ508をリターンアドレス522に設定する。これは、プロセッサコア114にブートROMセクション510をスキップさせ、アドレス520においてブートROM206の実行を再開させるために有効である。ブートROM206の実行がスマートフォン104のブートローダを一度ロードすると、ブートROM206は、ブートローダを真正なものとして検証し、スマートフォン104のブートを継続するために、ブートローダに制御を渡す。
図6は、ブートコードをワンタイムプログラマブルメモリの複数のヒューズに焼くための方法600を示す。
602において、ブートコードは、ワンタイムプログラマブル(OTP)メモリの複数のヒューズに焼かれる。ブートコードは、リードオンリメモリ(ROM)に格納されたブートROMバイナリなどの他のブートコードを補足する代替ブートコードまたは追加ブートコードであってもよい。例として、信頼されたブートROMバイナリが、その1つがエラーを含むコードの複数のセクションを含むとみなす。ブートROMの誤ったセクションの代わりに実行されるように設計されるパッチバイナリは、OTPメモリの複数のヒューズに焼かれる。ブートシーケンス中に複数のヒューズに焼かれるブートコードの実行自体は、ブートROMのエラー(またはバグ)をパッチするために有効であってもよい。
604において、割り込みサービスのための第1のアドレスは、OTPの複数のヒューズに焼かれる。OTPメモリに第1のアドレスを含むことは、プログラムカウンタが第1のアドレスに遭遇した場合に、割り込みサービスに割り込みを発させるために有効であってもよい。代替的に、またはさらに、第1のアドレスは、ブートシーケンス中に、OTPメモリからのブートコードの実行をさせるために有効である。上述の例に関して、ブートROMにおいてエラーの前に位置するアドレスは、OTPメモリの複数のヒューズに焼かれる。エラーの前のアドレスを選択することによって、ブートROMの実行は、エラーへの遭遇前に、割り込みサービスによって割り込まれる。さらに、プログラムカウンタがこのアドレスに到達した場合、割り込みハンドラは、エラーを含むブートROMのセクションの代わりに、パッチバイナリを実行するようにされてもよい。
606において、割り込みサービスのための第2のアドレスは、OTPの複数のヒューズに焼かれる。OTPメモリにこの第2のアドレスを含むことは、割り込みがサービスされた後、割り込みサービスにプログラムカウンタを第2のアドレスに設定させるために有効であってもよい。いくつかの場合、第2のアドレスは、ブートROMなどのROMから実行されるブートコード内に位置する。プログラムカウンタをブートROMのアドレスに設定することによって、ブートROMの実行は、プログラムカウンタが設定されるアドレスから再開されてもよい。
いくつかの場合、第2のアドレスは、割り込みが開始されるアドレスの直後には続かない。このような場合、これは、ブートコードの特定の部分またはセクションの実行を防止するために有効であってもよい。説明中の例を継続すると、ブートROMにおいてエラーの後に位置するアドレスは、OTPメモリの複数のヒューズに焼かれる。OTPメモリの複数のヒューズに焼かれる複数のアドレス間に位置するブートROMのバイナリ自体は、実行されない。
任意に、608において、OTPメモリの複数の追加ヒューズは、OTPメモリに前に焼かれたデータをセキュアにするために焼かれる。複数の追加ヒューズは、OTPメモリの複数の不使用ブロックの複数のヒューズであり、複数の不使用ブロックに関連付けられた複数のエラー訂正コードビットの複数のヒューズである。こうすることによって、OTPメモリは、修正不可能であり、これは、複数のブートコードパッチのようなOTPメモリの内容をセキュアにするために有効である。代替的に、またはさらに、OTPメモリに関連付けられた最小在庫管理単位(SKU)の数は、OTPメモリに焼かれたブートコードによって与えられた機能を反映するように、更新または変更されてもよい。例えば、ブートROMパッチを格納するOTPメモリを含むチップのSKU数は、チップ内のブートROMパッチを含むことを反映するように修正されてもよい。
[システムオンチップ]
図7は、システムオンチップ(SoC)700を示し、これは、複数のメモリからのブートコードのロードの複数の様々な態様を実装してもよい。SoCは、任意の適切なデバイス、例えば、ビデオゲームコンソール、IP対応テレビ、スマートフォン、ラップトップコンピュータ、パーソナルナビゲーションデバイス、アクセスポイント、無線ルータ、セルラブロードバンドルータ、タブレットコンピュータ、サーバ、ネットワーク対応プリンタ、セットトップボックス、プリンタ、スキャナ、カメラ、ピクチャフレーム、家電製品、サーモスタット、ホームオートメーションデバイス及び/または任意の他の種類の電子デバイスに実装されてもよい。
SoC700は、電子回路、マイクロプロセッサ、メモリ、入出力(I/O)ロジック制御、複数の通信インタフェース、他のハードウェア、ファームウェア、及び/または上に列挙された複数のデバイスのようなデバイスの複数の機能を与えるために必要なソフトウェアと一体化されてもよい。SoC700は、複数のコンポーネント間のデータ通信のためにSoCの複数の様々なコンポーネントを連結する一体化されたデータバス(不図示)をさらに含んでもよい。SoC700を含む電子またはコンピューティングデバイスは、異なる複数のコンポーネントの多数の組み合わせと共にさらに実装されてもよい。いくつかの場合、これらの異なる複数のコンポーネントは、様々な複数の内部または外部データインタフェースに対して本明細書に記載される複数の概念を実装するように構成されてもよい。
この例において、SoC700は、(例えば、電子回路及びマイクロプロセッサ704を含むように)入出力(I/O)ロジック制御702のような複数の様々なコンポーネントを含む。SoC700は、メモリ706をさらに含み、これは、任意の種類及び/または組み合わせのRAM、SRAM、DRAM、フラッシュ、低レイテンシ不揮発性メモリ、ROM及び/または他の適した電子データストレージであってもよい。少なくともいくつかの態様において、SoC700のブートコードは、ROMとして実装されるメモリ706の部分に格納される。
SoC700は、追加または代替ブートコードが格納されるワンタイムプログラマブルメモリ132(OTPメモリ132)をさらに含む。この代替または追加ブートコードは、本明細書に記載されたように、ROMのブートコードパッチの1つまたは複数の態様を実装するために用いられてもよい。SoC700の例として、及びこれに関して、所望のパッチアドレスを捕捉する能力は、OTP132の複数のワンタイムプログラマブルヒューズに基づいて、システムオンチップによって実装される機能である。他のブートコード(例えば、パッチコード)が所望のパッチアドレスに遭遇したことに応答して一度実行されると、ROMからのブートコードの実行が再開されることにより、SoC700が具現されるコンピューティングデバイスのブートを継続する。
代替的に、またはさらに、SoC700は、外部SRAM、DRAMまたはフラッシュメモリのような追加または外部オフチップメモリにアクセスするためのデータインタフェース(不図示)を備えてもよい。図示されていないが、外部メモリ(またはメモリ706)は、図1を参照して記載されるように、複数のブートローダ及び/またはブートコードの部分を各々格納する複数の不揮発性メモリデバイスを含んでもよい。SoC700は、オペレーティングシステム708のような様々なファームウェア及び/またはソフトウェアをさらに含んでもよく、これは、メモリ706によって維持される複数のコンピュータ実行可能命令であり、マイクロプロセッサ704によって実行されてもよい。SoC700は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の適切な組み合せとして具現される他の様々な複数の通信インタフェース及びコンポーネントをさらに含んでもよい。
SoC700は、割り込みマネージャ134をさらに含んでもよく、これは、異種のまたは組み合わせられた複数のコンポーネント、ロジック、複数のルーチンまたは複数のサービスとして具現されてもよい。これら複数の様々なコンポーネント、機能及び/またはエンティティ、及びこれらの対応する機能の複数の例は、環境100の複数のコンポーネントの各々及び様々な複数の構成を図2および5によって示される参照して記載される。割り込みマネージャ134は、本明細書に記載された様々な複数の実施形態及び/または複数の特徴を実装するために、独立してまたは他の複数のエンティティ(例えば、割り込みサービスルーチン)との組み合わせのいずれかで、メモリ706によって維持され、マイクロプロセッサ704によって実行される複数のコンピュータ実行可能命令として実装されてもよい。割り込みマネージャ134は、SoCの他の複数のエンティティ、例えば、マイクロプロセッサ704と関連付けられたハードウェア割り込みロジック、または他の適切なソフトウェア、ファームウェア、またはSoC700内の複数のハードウェアコンポーネントと一体的にさらに与えられてもよい。代替的にまたはさらに、割り込みマネージャ134及び他の複数のコンポーネントは、ハードウェア、ファームウェア、固定ロジック回路、またはI/Oロジック制御702及び/またはSoC700の他の複数の信号処理及び制御回路に関して実装されるそれらの任意の組み合わせとして実装されてもよい。
主題は、複数の構造的特徴及び/または複数の方法論的オペレーションに固有の用語で記載されてきたが、添付された特許請求の範囲に定義された主題は、上述された特定の複数の特徴または複数のオペレーション、及びこれらが実行される複数の順序に、必ずしも限定されるものではないことが理解されるべきである。

Claims (20)

  1. リードオンリメモリ(ROM)から、第1のブートコードの実行を開始することにより、コンピューティングデバイスのブート処理を開始する段階と、
    前記コンピューティングデバイスの前記ブート処理中に、前記第1のブートコードの前記実行に割り込むことにより、他のメモリからの第2のブートコードの実行を可能とする段階と、
    前記第2のブートコードが実行された後、前記第1のブートコードの前記実行を再開することにより、前記コンピューティングデバイスの前記ブート処理を継続する段階と、
    を備える、方法。
  2. 前記他のメモリは、前記第2のブートコードが焼かれるワンタイムプログラマブルメモリである、請求項1に記載の方法。
  3. 前記第1のブートコードの前記実行の前記割り込みに応答して、前記他のメモリからの前記第2のブートコードを実行する段階をさらに備える、請求項1または2に記載の方法。
  4. 前記第1のブートコードの前記実行に割り込む段階は、前記第1のブートコードの実行中に、ハードウェア型割り込みを発したことに応答してなされる、請求項1から3のいずれか1項に記載の方法。
  5. 前記ハードウェア型割り込みを発したことに応答して、前記発されたハードウェア型割り込みをクリアにする段階と、前記第2のブートコードの実行をさせる段階と、前記第1のブートコードの実行の予め定められたポイントに戻る段階とをさらに備える、請求項4に記載の方法。
  6. 前記第1のブートコードの実行が戻される前記予め定められたポイントは、前記第1のブートコードの実行が割り込まれるポイントと異なる、請求項5に記載の方法。
  7. 前記第1のブートコードは、前記ROMが具現されるデバイスまたはチップの製造中に、前記ROMに書き込まれる、請求項1から6のいずれか1項に記載の方法。
  8. リードオンリメモリ(ROM)からの第1のブートコードの実行を開始する段階であって、前記第1のブートコードの前記実行は、プログラムカウンタを介して進められる、段階と、
    前記プログラムカウンタが前記第1のブートコードの予め定められたアドレスに到達したことに応答して、前記第1のブートコードの前記実行に割り込む段階と、
    前記第1のブートコードの少なくともいくつかに代えて、ワンタイムプログラマブル(OTP)メモリからの第2のブートコードを実行する段階と、
    前記第2のブートコードの実行完了に応答して、前記ROMからの前記第1のブートコードの実行を再開するために有効な前記第1のブートコードのアドレスに、前記プログラムカウンタを戻す段階と、
    を備える、方法。
  9. 前記第1のブートコードの実行が割り込まれる前記予め定められたアドレス、または前記プログラムカウンタが戻される前記アドレスは、前記OTPメモリに格納される、請求項8に記載の方法。
  10. 前記第1のブートコード及び前記第2のブートコードの実行は、ブートローダをロードするために有効であり、前記方法は、前記ブートローダに制御を移す前に、前記ブートローダの暗号署名または暗号ハッシュを検証することにより、前記ブートローダの真正性を保証する段階をさらに備える、請求項8または9に記載の方法。
  11. 前記第1のブートコードの前記実行に割り込む段階は、割り込みを発する段階を含み、前記方法は、前記第2のブートコードを実行する段階の前に、前記発せられた割り込みをクリアする段階をさらに備える、請求項8から10のいずれか1項に記載の方法。
  12. 前記第1のブートコードの少なくともいくつかは、コーディングエラーを含み、前記プログラムカウンタが戻される前記アドレスは、前記コーディングエラーが実行されないように、前記第1のブートコードの前記コーディングエラーの後に位置する、請求項8から11のいずれか1項に記載の方法。
  13. 前記第1のブートコード及び前記第2のブートコードの実行が信頼されたブート処理の少なくとも一部を実装するように、前記第1のブートコードは、前記ROMに焼かれ、前記第2のブートコードは、前記OTPメモリに焼かれる、請求項8から12のいずれか1項に記載の方法。
  14. システムオンチップであって、
    プログラムカウンタを介して、前記システムオンチップが具現されるデバイスをブートするためのコードを実行するプロセッサと、
    前記デバイスのための第1のブートコードを格納するリードオンリメモリ(ROM)と、
    第2のブートコードを格納するワンタイムプログラマブル(OTP)メモリと、
    前記プログラムカウンタが前記第1のブートコードの予め定められたアドレスに遭遇したことに応答して、前記ROMからの前記第1のブートコードの実行に割り込み、
    前記プロセッサに、前記OTPメモリからの前記第2のブートコードを実行させ、
    前記第2のブートコードが実行された後、前記ROMからの前記第1のブートコードの実行を再開するために有効な前記第1のブートコードのアドレスに、前記プログラムカウンタを戻す
    割り込みマネージャと、
    を備える、システムオンチップ。
  15. 前記OTPメモリは、データを格納するための複数のヒューズの1つまたは複数のブロックを含み、前記第2のブートコードは、前記複数のヒューズの1つまたは複数のブロックに焼かれる、請求項14に記載のシステムオンチップ。
  16. 前記複数のヒューズの複数の不使用ブロック及び前記複数のヒューズの前記複数の不使用ブロックに関連付けられた複数のエラー訂正コードビットは、前記OTPメモリの内容が修正不可能であるように焼かれる、請求項15に記載のシステムオンチップ。
  17. 前記システムオンチップは、前記第2のブートコードが実行された後、前記プログラムカウンタが戻される前記アドレスを格納するアドレスリンクレジスタを含む、請求項14から16のいずれか1項に記載のシステムオンチップ。
  18. 前記割り込みマネージャは、前記第1のブートコードの実行が割り込まれる前記予め定められたアドレスの直後であるアドレスに、前記アドレスリンクレジスタをさらに設定する、請求項17に記載のシステムオンチップ。
  19. 前記割り込みマネージャは、前記プロセッサに、前記ROMに格納された前記第1のブートコードの一部を実行させないために有効な前記予め定められたアドレスの直後ではないアドレスに、前記アドレスリンクレジスタをさらに設定する、請求項17に記載のシステムオンチップ。
  20. 前記システムオンチップが具現される前記デバイスは、コンピューティングデバイス、電子デバイスまたは通信デバイスの1つを備える、請求項14から19のいずれか1項に記載のシステムオンチップ。
JP2015558880A 2013-02-22 2014-02-13 リードオンリメモリのブートコードパッチ Active JP6318425B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361768097P 2013-02-22 2013-02-22
US61/768,097 2013-02-22
PCT/US2014/016259 WO2014130338A1 (en) 2013-02-22 2014-02-13 Patching boot code of read-only memory

Publications (2)

Publication Number Publication Date
JP2016507848A true JP2016507848A (ja) 2016-03-10
JP6318425B2 JP6318425B2 (ja) 2018-05-09

Family

ID=50236280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015558880A Active JP6318425B2 (ja) 2013-02-22 2014-02-13 リードオンリメモリのブートコードパッチ

Country Status (7)

Country Link
US (1) US9880856B2 (ja)
EP (1) EP2959378A1 (ja)
JP (1) JP6318425B2 (ja)
KR (1) KR102026393B1 (ja)
CN (1) CN104981778A (ja)
TW (1) TWI664574B (ja)
WO (1) WO2014130338A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013142948A1 (en) * 2012-03-30 2013-10-03 Irdeto Canada Corporation Method and system for preventing and detecting security threats
EP2778910B1 (en) * 2013-03-15 2021-02-24 Maxim Integrated Products, Inc. Systems and methods to extend rom functionality
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
US9753874B2 (en) * 2015-02-20 2017-09-05 Qualcomm Incorporated Multi-step programming of heat-sensitive non-volatile memory (NVM) in processor-based systems
CN105335200B (zh) * 2015-11-24 2019-05-07 小米科技有限责任公司 系统升级方法及装置
CN105468410B (zh) * 2015-11-24 2019-02-12 小米科技有限责任公司 系统升级方法及装置
US11354117B2 (en) 2016-07-13 2022-06-07 Oracle International Corporation Adaptable patching mechanism for mixed memory systems
CN106445662B (zh) * 2016-09-13 2019-09-10 广东欧珀移动通信有限公司 一种移植应用程序的方法及终端设备
US10382436B2 (en) * 2016-11-22 2019-08-13 Daniel Chien Network security based on device identifiers and network addresses
KR102629408B1 (ko) * 2017-02-01 2024-01-24 삼성전자주식회사 반도체 시스템 및 반도체 장치의 동작 방법
US10530617B2 (en) 2017-08-07 2020-01-07 Micron Technology, Inc. Programmable channel equalization for multi-level signaling
US10447512B2 (en) 2017-08-07 2019-10-15 Micron Technology, Inc. Channel equalization for multi-level signaling
US10277435B2 (en) 2017-08-07 2019-04-30 Micron Technology, Inc. Method to vertically align multi-level cells
US10853309B2 (en) 2018-08-13 2020-12-01 Micron Technology, Inc. Fuseload architecture for system-on-chip reconfiguration and repurposing
US10990384B2 (en) * 2018-09-27 2021-04-27 Intel Corporation System, apparatus and method for dynamic update to code stored in a read-only memory (ROM)
US11188622B2 (en) 2018-09-28 2021-11-30 Daniel Chien Systems and methods for computer security
KR102567097B1 (ko) 2018-12-05 2023-08-14 삼성전자주식회사 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법
US10848489B2 (en) 2018-12-14 2020-11-24 Daniel Chien Timestamp-based authentication with redirection
US10826912B2 (en) 2018-12-14 2020-11-03 Daniel Chien Timestamp-based authentication
CN109739565B (zh) * 2019-01-07 2022-03-29 深圳忆联信息系统有限公司 一种保证Bootrom正常运行的方法、装置、计算机设备及存储介质
TWI738135B (zh) * 2019-04-07 2021-09-01 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
WO2020223950A1 (zh) * 2019-05-09 2020-11-12 深圳市德明利技术股份有限公司 一种防止 u 盘数据丢失和系统损坏的方法和装置以及设备
KR20210046418A (ko) 2019-10-18 2021-04-28 삼성전자주식회사 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법
US11677754B2 (en) 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods
TWI707350B (zh) * 2020-02-13 2020-10-11 大陸商北京集創北方科技股份有限公司 一次性編程唯讀記憶體之操作方法、處理器晶片及資訊處理裝置
US11037647B1 (en) * 2020-02-19 2021-06-15 Semiconductor Components Industries, Llc Systems and methods for updating memory circuitry
CN111694594B (zh) * 2020-05-18 2023-03-03 成都盛芯微科技有限公司 补丁程序的控制方法和系统
US11438145B2 (en) 2020-05-31 2022-09-06 Daniel Chien Shared key generation based on dual clocks
US11509463B2 (en) 2020-05-31 2022-11-22 Daniel Chien Timestamp-based shared key generation
CN112083961B (zh) * 2020-08-05 2022-01-14 北京智芯微电子科技有限公司 嵌入式芯片的引导加载方法
EP3989478B1 (en) * 2020-10-22 2023-10-18 Moxa Inc. Computing system and device for handling a chain of trust
US11604655B2 (en) * 2020-11-12 2023-03-14 Ati Technologies Ulc Sync point mechanism between master and slave nodes
US11392450B1 (en) * 2020-12-07 2022-07-19 Amazon Technologies, Inc. Data integrity check for one-time programmable memory
EP4330811A1 (en) * 2021-05-24 2024-03-06 Google LLC Memory patching with associative and directly mapped patch data
CN113377565B (zh) * 2021-06-10 2024-05-28 博流智能科技(南京)有限公司 Bootrom修正系统及方法以及芯片
US11775284B2 (en) 2022-01-27 2023-10-03 Realtek Singapore Private Limited Electronic device and code patching method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04346127A (ja) * 1991-05-23 1992-12-02 Sony Corp 電子装置
JPH10232772A (ja) * 1997-02-20 1998-09-02 Nec Corp プログラム変更装置
JP2001256044A (ja) * 2000-03-14 2001-09-21 Sony Corp データ処理装置
JP2007102791A (ja) * 2005-09-30 2007-04-19 Fiinikkusu Technologies Ltd 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
US20100106953A1 (en) * 2008-10-23 2010-04-29 Horizon Semiconductors Ltd. Method for patching rom boot code

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
JP3727485B2 (ja) * 1999-04-02 2005-12-14 シャープ株式会社 不揮発性メモリ内蔵マイクロコンピュータ
JP3795744B2 (ja) * 2000-11-21 2006-07-12 沖電気工業株式会社 マイクロコントローラ
US7310800B2 (en) * 2001-02-28 2007-12-18 Safenet, Inc. Method and system for patching ROM code
US6925521B2 (en) * 2001-09-10 2005-08-02 Texas Instruments Incorporated Scheme for implementing breakpoints for on-chip ROM code patching
JP2003196117A (ja) * 2001-12-26 2003-07-11 Toshiba Corp マイクロプロセッサ
US7039776B2 (en) * 2003-04-17 2006-05-02 Broadcom Corporation Patch memory system for a ROM-based processor
GB0424424D0 (en) * 2004-11-04 2004-12-08 St Microelectronics Belgium Nv A code patching device
US20060265692A1 (en) * 2005-05-20 2006-11-23 Mengjin Su Method, apparatus, and computer program product for code patching
US7523299B2 (en) * 2005-07-29 2009-04-21 Broadcom Corporation Method and system for modifying operation of ROM based boot code of a network adapter chip
US7739469B2 (en) * 2005-11-08 2010-06-15 Freescale Semiconductor, Inc. Patching ROM code
US7486534B2 (en) * 2005-12-08 2009-02-03 Macronix International Co., Ltd. Diode-less array for one-time programmable memory
US7644223B2 (en) * 2006-10-30 2010-01-05 Via Telecom Co., Ltd. Circuit and method for patching for program ROM
US20080263533A1 (en) * 2007-04-19 2008-10-23 Proton World International N.V. Implementation of patches by a processing unit
US9348597B2 (en) * 2008-06-30 2016-05-24 Infineon Technologies Ag Device and method for bypassing a first program code portion with a replacement program code portion
WO2010073444A1 (ja) * 2008-12-24 2010-07-01 パナソニック株式会社 バスコントローラ及び初期ブートプログラムのパッチ方法
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
CN102243587B (zh) * 2010-05-14 2015-09-23 康佳集团股份有限公司 嵌入式系统中对rom程序的升级方法
CN101916348A (zh) * 2010-08-16 2010-12-15 武汉天喻信息产业股份有限公司 一种用户操作系统的安全引导方法及引导系统
US8812832B2 (en) * 2011-02-18 2014-08-19 Avast Software A.S. Method and system of using a non-native operating system for scanning and modifying system configuration data of a native operating system
CN102163143B (zh) * 2011-04-28 2013-05-01 北京北大众志微系统科技有限责任公司 一种实现值关联间接跳转预测的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04346127A (ja) * 1991-05-23 1992-12-02 Sony Corp 電子装置
JPH10232772A (ja) * 1997-02-20 1998-09-02 Nec Corp プログラム変更装置
JP2001256044A (ja) * 2000-03-14 2001-09-21 Sony Corp データ処理装置
JP2007102791A (ja) * 2005-09-30 2007-04-19 Fiinikkusu Technologies Ltd 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
US20100106953A1 (en) * 2008-10-23 2010-04-29 Horizon Semiconductors Ltd. Method for patching rom boot code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
町井和美: "「Windows,Linuxを生かして産業用機器をリアルタイム制御しよう 組み込みコンピュータを用い", INTERFACE, vol. 第33巻,第8号, JPN6017045161, 1 August 2007 (2007-08-01), JP, pages 74 - 88 *

Also Published As

Publication number Publication date
WO2014130338A1 (en) 2014-08-28
JP6318425B2 (ja) 2018-05-09
KR20150120429A (ko) 2015-10-27
US20140244991A1 (en) 2014-08-28
US9880856B2 (en) 2018-01-30
EP2959378A1 (en) 2015-12-30
TWI664574B (zh) 2019-07-01
KR102026393B1 (ko) 2019-11-04
TW201502990A (zh) 2015-01-16
CN104981778A (zh) 2015-10-14

Similar Documents

Publication Publication Date Title
JP6318425B2 (ja) リードオンリメモリのブートコードパッチ
US10860305B1 (en) Secure firmware deployment
EP3356986B1 (en) Nand-based verified boot
US9880908B2 (en) Recovering from compromised system boot code
US9846617B2 (en) System and method for self-healing basic input/output system boot image and secure recovery
US11809544B2 (en) Remote attestation for multi-core processor
US9575768B1 (en) Loading boot code from multiple memories
US10860302B2 (en) Memory-efficient upgrade staging
US9836306B2 (en) Parallelizing boot operations
US20200257521A1 (en) Update of boot code handlers
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
US10235183B2 (en) Booting a system-on-a-chip device
US20190347164A1 (en) Fault tolerant device upgrade
WO2023098569A1 (zh) 补丁处理方法、装置及计算机设备
US11068276B2 (en) Controlled customization of silicon initialization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180313

R150 Certificate of patent or registration of utility model

Ref document number: 6318425

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250