JP2005010942A - ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 - Google Patents
ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 Download PDFInfo
- Publication number
- JP2005010942A JP2005010942A JP2003172334A JP2003172334A JP2005010942A JP 2005010942 A JP2005010942 A JP 2005010942A JP 2003172334 A JP2003172334 A JP 2003172334A JP 2003172334 A JP2003172334 A JP 2003172334A JP 2005010942 A JP2005010942 A JP 2005010942A
- Authority
- JP
- Japan
- Prior art keywords
- access memory
- cpu
- boot code
- random access
- memory
- 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.)
- Pending
Links
Images
Abstract
【課題】NANDフラッシュ等のシーケンシャル・メモリデバイスにブートコードを格納したシステムのブートアップ方法を提供する。
【解決手段】少なくともリセット開放直後においてRAM23にリセットアドレスを割り当て、シーケンシャルアクセスの必要な不揮発性メモリデバイス(NANDフラッシュ)22にブートコードを格納する。リセット開放直後、NANDフラッシュ22に格納したブートコードを、主記憶/NANDフラッシュ転送ユニット20により、RAM23に転送する。ウエイト生成ユニット13は、転送ユニット20の進捗に従い、必要に応じてCPU11のリセットアドレスへの命令フェッチ、およびそれに続く命令フェッチに対してウエイトを生成する。CPU11の命令フェッチに先立って、NANDフラッシュ22からRAM23へブートコードを転送することを実現し、ブートROMを別途必要としないブートアップを可能にする。
【選択図】 図1
【解決手段】少なくともリセット開放直後においてRAM23にリセットアドレスを割り当て、シーケンシャルアクセスの必要な不揮発性メモリデバイス(NANDフラッシュ)22にブートコードを格納する。リセット開放直後、NANDフラッシュ22に格納したブートコードを、主記憶/NANDフラッシュ転送ユニット20により、RAM23に転送する。ウエイト生成ユニット13は、転送ユニット20の進捗に従い、必要に応じてCPU11のリセットアドレスへの命令フェッチ、およびそれに続く命令フェッチに対してウエイトを生成する。CPU11の命令フェッチに先立って、NANDフラッシュ22からRAM23へブートコードを転送することを実現し、ブートROMを別途必要としないブートアップを可能にする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、CPU(中央演算処理ユニット)を内蔵したマイクロコントローラやシステムLSIなどの装置の起動(ブートアップ)に関する。特に、NAND型フラッシュメモリ(以下、「NANDフラッシュ」と称する。)のようにセクタ構成を有し、シーケンシャルアクセスを必要とするメモリデバイスにブートアップ命令コード(本明細書において「ブートコード」と称する。)を格納した装置およびその起動方法に関する。
【0002】
【従来の技術】
デジタルAV(オーディオ・ビジュアル)機器の急速な普及に伴い、機器の機能・性能の向上が著しい。このため、これらの機器を制御するためのソフトウェア・プログラム(以下、「ファームウェア」と称する。)の大規模化が急速に進んでいる。一方、システムコストを削減するために、CPU(中央演算処理ユニット)、AVコーデック機能、および周辺IO機能などを集積した大規模システムLSIが開発されつつある。
【0003】
このように機能・性能の向上した機器では、CPUによる直接的アクセスが可能な記憶装置(主記憶:メインメモリ)を備えるとともに、この主記憶とは別に、機器の制御に必要なファームウェアを格納した不揮発性メモリが必要である。
【0004】
従来、このような不揮発性メモリとしては、ランダムアクセスが可能なNOR型フラッシュメモリ(以下、「NORフラッシュ」と称する)が用いられてきた。しかし、NORフラッシュは、NANDフラッシュに比べると、ビット単価が高いという問題がある。このため、NORフラッシュに代えて、NANDフラッシュを採用することがシステムコストを低減する上で好ましい。
【0005】
しかしながら、NANDフラッシュはセクタ構成を有しており、アクセスはシーケンシャルに実行する必要がある。このため、NANDフラッシュは、CPUがファームウェアを実行するときに必要なメモリへのランダムアクセスに対応することができない。従って、NORフラッシュの代わりにNANDフラッシュを用いる場合は、NANDフラッシュに格納されていたファームウェアを、いったん、ランダムアクセスの可能な主記憶へ転送し、その後にファームウェアの実行を行う必要がある。このような主記憶には、例えば、SDRAM(シンクロナス・ダイナミック・RAM)などのRAM(ランダムアクセス・メモリ)が用いられ得る。
【0006】
以上のようなシステム構成を実現するためには、マスクROM(リード・オンリー・メモリ)やNORフラッシュなどのメモリ容量の小さな小型記憶装置(以下、「ブートROM」と称する。)を備え、NANDフラッシュに格納されていたファームウェアを主記憶に転送して実行するために必要な前処理を行うソフトウェアを、そのブートROMに格納しておく必要がある。
【0007】
一般に、ブートROMのコストは、メモリ容量が小さいほど低くなるため、ブートROMに格納するソフトウェアは必要最低限に限定される。多くの場合は、ブートROMには、外部バス制御ユニットやメモリ制御ユニットの初期設定を行う命令コード、およびNANDフラッシュに格納されているファームウェアを主記憶に転送する命令コードのみが格納される。
【0008】
本明細書では、NANDフラッシュなどのシーケンシャルアクセス・メモリに格納されたファームウェアを主記憶に転送するために必要な命令コードを「ローダー」と称する。上記の従来技術においては、装置の電源がオン状態になると、ブートROMに格納されている「ローダー」を実行することにより、NANDフラッシュに格納されているファームウェアがNANDフラッシュから主記憶に転送されることになる。
【0009】
近年、OS(オペレーティング・システム)を含む機器の動作に必要なファームウェアは非常に大規模になってきているため、NANDフラッシュ内のファームウェアは、圧縮されていたり、セキュリティを高める目的で暗号化されている場合がある。これらの状況に対応するため、ローダーの容量も増大してきている。
【0010】
ローダーの容量増加に応じてブートROMを大型化することは、コストの上昇を招くため、好ましくない。ブートROMの大型化を避ける目的で、ローダーをイニシャルプログラムローダ(IPL)と、セカンドプログラムローダ(SPL)に分け、ブートROMにはIPLだけを格納しておくことが行われている。この場合、ブートROMのIPLは、NANDフラッシュ内のSPLを主記憶に転送する役割を担い、NANDフラッシュ内のSPLは、主記憶に転送された後、NANDフラッシュ内に残るファームウェアを主記憶に転送する役割を担う。SPLによって主記憶に転送されるファームウェアは、OSを含むような大規模なものであり得るため、SPLは「メインローダー」と称される場合がある。
【0011】
このようにして、NANDフラッシュから主記憶へのファームウェアの転送を2段階にわけて行うことは、ブートROMに格納する命令コードのサイズの抑制とローダーの柔軟性を向上させるのに有利である。
【0012】
以下、図5を参照しながら、ブートROMを備えた従来のマイクロコントローラのブートアップ動作を説明する。図5に示すマイクロコントローラ1は、CPU11とバス制御ユニット12とを内蔵しており、CPU11は、このバス制御ユニット12を介して外部バスと接続されている。バス制御ユニット12の内部には、CPU11に対してウエイトを挿入するための信号(ウエイト信号)を生成する生成ユニット13が設けられている。
【0013】
外部バスには、NANDフラッシュ22、主記憶23、ブートROM21、およびNANDフラッシュ制御ユニット29が接続されている。
【0014】
ブートROM21は、リセットアドレスが割り当てられたランダムアクセス可能なROMまたはフラッシュメモリであり、装置の初期設定の一部を行うコードとIPLとを格納している。ここで、「リセットアドレス」とは、リセットベクタとしてCPUのレジスタに格納されたアドレス値である。ブートROM21にリセットアドレスが割り当てられていることにより、リセット直後のCPU11は、ブートROM21にアクセスする。
【0015】
NANDフラッシュ22は、不揮発性のシーケンシャルアクセス・メモリであり、この例では、SPLと装置の動作に必要なファームウェアとを格納している。主記憶23は、ランダムアクセス・メモリであり、主記憶装置として機能する。NANDフラッシュ制御ユニット29は、バス制御ユニット12からNANDフラッシュ22へのアクセスを補助する。NANDフラッシュ制御ユニット29は、マイクロコントローラ1に内蔵されていても良い。
【0016】
図6は、図5のシステムにおけるブートアップ動作の概略を示すフローチャートである。図6に示すように、まず、リセットが開放されると、ブートROM21に格納されたコードが実行される。そして、ステップ51において、NANDフラッシュ22や主記憶23にアクセスするために必要なハードウェア設定などの最低限の初期設定が行われる。この後、ステップ52で、NANDフラッシュ22に格納されていたSPLが主記憶23に転送される。SPLの主記憶23への展開(転送)が完了すると、主記憶23に展開されたSPLの先頭アドレスにジャンプし、装置の制御が主記憶23に移される(ステップ53)。その後、SPLによってファームウェアがNANDフラッシュ22から主記憶23へ転送される(ステップ54)。
【0017】
ステップ55では、ステップ51で実行できなかった残りの初期設定(入出力やOSの初期化など)が実行される。ステップ56では、OSに制御が移され、ブートアップが完了する。
【0018】
ステップ51からステップ53が完了するまでの間に実行される命令コードは、ブートROM21に格納されている。これに対して、ステップ54およびそれ以降のステップで実行される命令コードは、当初、NANDフラッシュ22に格納されていたものが、ステップ52およびステップ54の処理により、NANDフラッシュ22から主記憶23に転送されたものである。なお、NANDフラッシュにSPLを格納せず、ブートROMのローダーでファームウェアの全体を主記憶に転送する場合には、ステップ54の処理が省略される。
【0019】
次に、再び図5を参照しながら、リセット開放直後のハードウェアの動作をさらに詳細に説明する。
【0020】
まず、図5の装置で電源がオンすると、リセット信号が生成され、CPU11や図示されている各デバイスが、このリセット信号を受け取る。電源がオンした直後において、各デバイスは不安定な状態にあるが、前記リセット信号を受け取ると、安定した既知状態をとるに至る。各デバイスが安定した既知状態になると、リセット信号が無効化(ネゲート)される。リセット信号がネゲートされるまで、各デバイスに対するアクセスは不能な状態にあるが、ネゲート後はアクセス可能になる。
【0021】
CPU11は、リセット信号がネゲートされると、リセットアドレスの命令フェッチ(読出し命令)を発行する。本明細書では、リセット信号がネゲートされた時を「リセットが開放された時」と称することとする。また、リセット開放直後とは、リセットが開放された時からブートアップが完了するまでの間を意味するものとする。
【0022】
リセットが開放された後、バス制御ユニット12は、リセットアドレスが割り当てられているブートROM21に対して、命令読出しのためのリードプロトコルを外部バス上に発行する。リセット開放直後のバス制御ユニット12は、どのような種類のROMからでもブートコードが読み出せるように、比較的長いバスアクセスタイミングを生成する固定ウエイトのリードプロトコルを発行するのが一般的である。バス制御ユニット12は、ブートROM21からのリードデータが読み込まれるのに充分な時間を与えるため、ウエイト生成ユニット13にウエイト信号を生成させ、CPU11にウエイトを挿入する。このとき、外部ウエイト信号は使用しない。
【0023】
リセットアドレスには、ブートアップ処理を実際に行う命令コードの先頭が配置されているアドレス(以下、「ブート先頭アドレス」と称する)へのジャンプ命令が格納されている。
【0024】
このため、CPU11は、ウエイトの後、ブート先頭アドレスの命令フェッチを発行することになる。そのため、バス制御ユニット12は、リセットアドレスとは不連続となる前記ブート先頭アドレスのリードプロトコルを発行する。以降、順次ブートコードが実行されるのであるが、それに従い、バス制御ユニット12の生成するリードプロトコルは、ブートROM21に対するランダムアクセスを必要とする。このような構成を有する装置は、例えば特許文献1に記載されている。
【0025】
ブートROMを必須とする上記の装置に対して、非特許文献1には、ブートROMを必要としないデバイス(商品名「DiskOnChip」)が開示されている。図9は、このデバイス90を含む装置の構成を示している。デバイス90は、ブートコードやファームウェアを格納するNANDフラッシュ91と、NANDフラッシュ91内のブートコードが転送されて格納される小型RAM92と、転送制御ユニット93と、これらの動作を制御するコントローラ94とを内蔵している。デバイス90は、CPU100およびRAM110とバス120を介して接続される。
【0026】
図9に示す構成の装置が起動するとき、リセット開放前において、デバイス90の内部で先行的にNANDフラッシュ91から小型RAM92へブートコード(IPLなど)が転送される。そして、このブートコードの転送が完了した後、リセットが開放される。リセット解放後は、デバイス90の小型RAM92がブートアップに必要なCPU100からのランダムアクセスに対応することになる。具体的には、IPLが実行され、SPLなどのファームウェアがNANDフラッシュ91からRAM110に転送される。
【0027】
【特許文献1】
特開2002−278781号公報
【非特許文献1】
Designing The DiskOnChip as a Flash Disk & Boot Device Replacement、AP−DOC−047 M−Systems社
【0028】
【発明が解決しようとする課題】
特許文献1に記載されている従来の装置によれば、NANDフラッシュなどのシーケンシャル・メモリデバイスにファームウェアを格納したシステムのブートアップが実現できるが、ブートROMが別途必要になるため、コストが上昇する。
【0029】
また、非特許文献1に開示されている図9のデバイス90によれば、標準のNANDフラッシュに比べて、内部RAM92や転送制御ユニット93などの追加回路をデバイス90の内部に設ける必要がある。このため、デバイス90の構造が複雑になり、デバイス90のコストが単体のNANDフラッシュに比べて上昇するともに、デバイス90のセカンドソースを確保することが難しいという問題もある。
【0030】
本発明は、上記の課題を解決するためになされたものであり、本発明の目的とするところは、NANDフラッシュなどのシーケンシャル・メモリデバイスを用いながら、追加のブートROMを必要とせずにブートアップできる方法および装置を提供する。
【0031】
【課題を解決するための手段】
本発明の装置は、CPUと、少なくともリセット開放時においてリセットアドレスが割り当てられているランダムアクセス・メモリと、ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリと、リセット開放後、前記シーケンシャルアクセス・メモリに格納されたブートコードをシーケンシャルに前記ランダムアクセス・メモリに転送するブートコード転送ユニットと、前記ブートコード転送ユニットによる転送の進捗に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行うウエイト生成ユニットとを備える。
【0032】
好ましい実施形態において、前記ウエイト生成ユニットは、所定量のブートコードの転送が完了するまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0033】
好ましい実施形態において、前記ウエイト生成ユニットは、前記CPUの発行する命令フェッチのアドレスと、前記ブートコード転送ユニットが転送するアドレスを監視し、前記CPUの発行する命令フェッチのアドレスが、前記ブートコード転送ユニットによる転送が完了していないブートコードのアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う。
【0034】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUと同一のLSIパッケージに封じられているオンチップメモリである。
【0035】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成されたメモリである。
【0036】
好ましい実施形態において、前記ウエイト生成ユニットは、前記CPUと外部バスとを接続するバス制御ユニット内に設けられている。
【0037】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、前記外部バスに接続されている。
【0038】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、NAND型フラッシュメモリである。
【0039】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記外部バスとは異なるバスに接続されている。
【0040】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、前記ブートコードに加え、装置の動作を制御するファームウェアを格納している。
【0041】
好ましい実施形態において、前記ランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記ランダムアクセス・メモリに転送する。
【0042】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納されているブートコードは、前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するローダーを含んでおり、前記ウエイト生成ユニットは、前記ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0043】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納されているブートコードは、前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するメインローダーと、前記メインローダーを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送する初期ローダーとを含んでおり、前記ウエイト生成ユニットは、前記初期ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0044】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成された第1のランダムアクセス・メモリであり、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを格納する第2のランダムアクセス・メモリを更に備えている。
【0045】
好ましい実施形態において、前記第1のランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記第2のランダムアクセス・メモリを転送する。
【0046】
本発明の起動方法は、CPUと、リセットアドレスに配置されたランダムアクセス・メモリと、ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリとを備えた装置の起動方法であって、前記シーケンシャルアクセス・メモリに格納されたブートコードを前記ランダムアクセス・メモリに転送するとき、前記ブートコードの転送の進捗状況に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行う。
【0047】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納された所定量のブートコードが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0048】
好ましい実施形態において、前記CPUの発行する命令フェッチのアドレスが、前記ブートコードのうち、転送の完了していない部分のアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う。
【0049】
好ましい実施形態において、前記ブートコードを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送した後、前記シーケンシャルアクセス・メモリに格納されているファームウェアを前記ランダムアクセス・メモリまたは他のランダムアクセス・メモリに転送する。
【0050】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明の好適な実施形態を説明する。なお、添付の図面において同一の構成要素には同一の参照符号を付し、重複する部分の詳細な説明は繰り返さない。
【0051】
(実施形態1)
まず、図1を参照しながら、本発明の第1の実施形態を説明する。
【0052】
図1に示す本実施形態の装置は、CPU11を内蔵したマイクロコントローラ1と、外部バスを介してマイクロコントローラ1に接続された主記憶/NANDフラッシュ制御ユニット20、NANDフラッシュ22、および主記憶23とを備えている。
【0053】
マイクロコントローラ1にはバス制御ユニット12も内蔵されており、CPU11は、このバス制御ユニット12を介して外部バスと接続されている。バス制御ユニット12の内部には、CPU11に対してウエイトを挿入するための信号(ウエイト信号)を生成するウエイト生成ユニット13が設けられている。
【0054】
NANDフラッシュ22は、前述のように不揮発性のシーケンシャルアクセス・メモリであり、装置の起動に必要なブートコードおよびOSを含むファームウェアを格納している。本実施形態のNANDフラッシュに格納されるブートコードは、具体的には、装置の初期化を行うコード、IPLおよびSPLを含む。なお、本明細書におけるIPLは、SPLの転送前に行う最低限の初期設定(図6のステップ51)のコードを含むものとし、SPLは、OSに制御を移す前に行う残りの初期設定(図6のステップ55)のコードを含むものとする。また、本明細書における「ブートコード」の用語は、装置の電源をオンしてから制御がOSに移るまでの期間における装置の初期動作を規定するプログラムを指すものとする。
【0055】
主記憶23は、少なくともリセット開放直後においてリセットアドレスが割り当てられているランダムアクセス・メモリであり、主記憶装置として機能する。リセットアドレスの値は、CPU11のリセットベクタに規定されており、リセット開放後、CPU11が最初にアクセスしようとするメモリ位置を示している。
【0056】
主記憶/NANDフラッシュ制御ユニット20は、バス制御ユニット12からのアクセス信号を受けて、NANDフラッシュ22および主記憶23を制御する。また、主記憶/NANDフラッシュ制御ユニット20は、必要に応じて、外部ウエイト信号を生成し、バス制御ユニット12内のウエイト生成ユニット13を介して、CPU11にウエイト信号として入力する。
【0057】
本発明では、図5に示す従来例とは異なり、シーケンシャルアクセスが必要なNANDフラッシュにブートコードやファームウェアを格納するとともに、少なくともリセット開放直後において、ランダムアクセス・メモリ(RAM)をリセットアドレスに割り当てている点に主要な特徴を有している。
【0058】
本発明では、ブートコードをNANDフラッシュからRAMに転送する処理を行う際、この処理の少なくとも初期の段階をCPU11から隠蔽することにより、CPU11によるRAMへのアクセスを停止し、その間に必要な量のブートコードを転送する。ここで、「必要な量」とは、ブートコードが転送される先のメモリの種類/容量やせクタによって規定される。転送先のメモリとして、後述する実施形態のようにキャッシュメモリを用いる場合、このキャッシュメモリの容量(例えば4kB〜16kB)よりも少ない量のブートコードが転送されることになる。また、転送先としてオンチップメモリを用いる場合、オンチップメモリの容量(例えば1kB以上)よりも少ない量のブートコードが転送されることになる。
【0059】
CPU11にウエイトを挿入しながらブートコードを転送するために必要なハードウェアの構成を考えると、最初にNANDフラッシュから読み出されて転送されるブートコードの量は、できるだけ少なく設定することが好ましい。これらのことを総合的に勘案すると、CPU11から隠蔽しつつ転送されるブートコードの量は1kB〜4kB程度の範囲内に設定され、好ましくは1kB〜2kBの範囲内に設定される。
【0060】
本発明において、少なくともリセット開放直後にリセットアドレスが割り当てられるRAMは、装置内に備えられている主記憶、オンチップRAM、キャッシュメモリなどの既存のリソースを用いて実現することができるため、コストの増加を抑えることができる。前述の非特許文献1に開示されているデバイスによれば、装置が備えるRAMとは別にデバイス内部に別の小型RAMが必須になるが、本発明によれば、特別のRAMを備える必要がなく、コスト上昇を抑えることができる。
【0061】
以下、ブートコードの転送先として外部バスに接続された主記憶23を用いる本実施形態の装置におけるリセット動作を詳細に説明する。
【0062】
図1のCPU11は、図示されていないリセット信号がネゲートされると、バス制御ユニット12に対してリセットアドレスの命令フェッチを発行する。バス制御ユニット12は、前記リセットアドレスに格納された命令データの読出しのためのリードプロトコルを外部バス上に発行する。
【0063】
上記のように、リセット信号がネゲートされると、CPU11は、リセットアドレスが割り当てられているメモリ位置にアクセスして当該メモリ位置に格納されている命令を読み出そうとするが、その時点における本実施形態の装置において、前記メモリ位置には、どのような命令もまだ格納されてはいない。
【0064】
本実施形態では、主記憶/NANDフラッシュ制御ユニット20が上記のリードプロトコルを受けとると、NANDフラッシュ22に格納されたブートコードを、リセットアドレスが割り当てられている主記憶23へ転送する動作を開始し、それによって、バス制御ユニット12から主記憶23へのランダムアクセスに対する準備を行う。
【0065】
この時、本実施形態では、バス制御ユニット12に対してウエイトを挿入するために外部ウエイト信号を使用する。この外部ウエイト信号は、データの確定のタイミングを示すデータアクノレッジ信号などのマイクロコントローラ1の外部バスにおけるハンドシェーク信号を使用することで実現できる。このことは、後述する他の実施形態でも同様に行うことができる。
【0066】
ウエイト信号の挿入により、CPU11は、リセットアドレスに対するアクセスを実行できず、待機させられ、その間にブートコードの少なくとも一部が転送されることになる。最初にウエイトが解除されるのは、リセットアドレスおよびブート先頭アドレスを含むアドレスに「所定量」のブートコードが転送されたときである。ここで「所定量」の値とは、前述したように、転送先のメモリ容量などに基づいて適宜決定される量である。
【0067】
主記憶/NANDフラッシュ制御ユニット20が生成する外部ウエイト信号の生成ストラテジには、以下の2通りの方法が考えられる。
【0068】
第1の方法は、少なくともIPLを含む「所定量」のブートコードをNANDフラッシュ22から主記憶23へ転送完了するまでバス制御ユニット12に対しウエイトを挿入しつづける方法である。この場合、CPU11は、上記所定量のブートコードが主記憶23にすべて格納されるまで待たされるため、CPU11がブートコードの実行を開始した後は、主記憶/NANDフラッシュ制御ユニット20がNANDフラッシュ22から主記憶23への命令データの転送を継続する必要はない。このため、バス制御ユニット12から主記憶23へのブートコード読出しのリードプロトコルは、固定ウエイトで実行できる。
【0069】
第2の方法は、バス制御ユニット12の発行する各々のリードプロトコルに従って読み出されるべき命令データが主記憶23にあるかどうかを逐次判定し、主記憶23にある場合には即座に主記憶23の読出しを行う方法である。この方法によれば、読み出されるべき命令データが主記憶23に無い場合(未転送の場合)のみ、NANDフラッシュ22から主記憶23へのブートコードの転送を優先的に実行し、読み出されるべき命令データが転送完了した時点で外部ウエイト信号を解除し、CPU11の動作を継続させる。
【0070】
この第2の方法によれば、主記憶/NANDフラッシュ制御ユニット20は、NANDフラッシュ22から主記憶23へのブートコードの転送を継続させながら、バス制御ユニット12が発行するリードプロトコルの要求アドレスを監視する。そして、要求アドレスが転送アドレスより小さければ(すなわち転送済み)であれば、即座に主記憶を読み出す。一方、要求アドレスが転送アドレスより大きければ(すなわち未転送)であれば、ブートコードの転送を継続し、要求アドレスに一致する命令コードが転送されるまでバス制御ユニットに対してウエイトをかけ続ける。
【0071】
第1および第2の方法のいずれにせよ、外部ウエイト信号を使用することによってCPU11を待機させることができるため、NANDフラッシュ22から主記憶23へのブートコードの転送をCPU11から隠蔽することができる。
【0072】
NANDフラッシュ22から主記憶23へのブートコードの転送が完了すると、次は、ブートコードを実行することにより、NANDフラッシュ22に格納されていたファームウェアを主記憶23に転送することになる。
【0073】
ブートコードの転送は、従来技術について説明したように、2段階で行なうことができる。具体的には、ブートコードを、SPL(NANDフラッシュ22に格納しているファームウェアを主記憶23に転送するメインローダー)と、IPL(メインローダーをNANDフラッシュ22から主記23に転送する初期ローダー)とに分け、まずはIPLを主記憶23に転送し、その後にSPLを主記憶23に転送するようにしてもよい。この場合、ウエイト生成ユニット13は、IPLが主記憶23に転送されるまでCPU11を待機させ、IPLの転送をCPU11から隠蔽する。この場合、SPLの主記憶23への転送は、主記憶23に格納されたIPLを実行することによって行うことになり、IPLの実行は、CPU11による主記憶23へのランダムアクセスによって進行する。
【0074】
なお、本実施形態によれば、メモリ容量の大きな主記憶23にブートコードを転送するため、ブートROMを用いる従来技術に比較して、ブートコードをIPLとSPLとに分ける必要性は小さい。したがって、ローダーをIPLとSPLとに分けることなく、1つのローダーとして扱い、このローダーの全体がNANDフラッシュ22から主記憶23に転送されるまでの間、CPU11のリセットアドレスへの命令フェッチに対してウエイト挿入を行うようにしてもよい。
【0075】
NANDフラッシュ22から主記憶23へのブートコードおよびファームウェアの転送は、NANDフラッシュ22に対するシーケンシャルなアクセスによって行われる。
【0076】
CPU11がウエイト信号によって待機している間、本実施形態では、主記憶/NANDフラッシュ制御ユニット20がCPU11に代わってNANDフラッシュ22からの命令データの読み出しおよび主記憶23への書き込みを制御する。読み出し/書き込みは、例えば256ワード毎にシーケンシャルに実行される。本実施形態における主記憶/NANDフラッシュ制御ユニット20は、このような制御をハードウェア的に実行するように構成されている。
【0077】
このように本実施形態によれば、標準のNANDフラッシュを用いてブートコードの格納を行うため、追加のブートROMなどが不要になり、低コストで機能・性能の向上した装置が提供可能になる。
【0078】
なお、リセットアドレスが主記憶23に割り当てられるのは、少なくともリセット開放直後の所定の期間であれば良く、リセットアドレスがどのメモリに割り当てられるかは、装置の起動後に、動的に変更され得る。
【0079】
(実施形態2)
以下、図2を参照しながら本発明の装置の第2の実施形態を説明する。
【0080】
近年のシステムLSIおよびマイクロコントローラでは、SDRAMを主記憶に採用した場合、主記憶とファームウェアを格納する各種不揮発性メモリとが別々のバスに配置されていることが多い。
【0081】
図2の装置では、マイクロコントローラ1に内蔵されたCPU11は、バス制御ユニット12を通して外部バスおよび主記憶23と接続されている。外部バスには、NANDフラッシュ22が接続されている。本実施形態でも、少なくともリセット開放直後において、リセットアドレスは主記憶23に割り当てられている。主記憶23に対するアドレスの割り当ては、装置の起動後に、動的に変更され得る。この点、後述する他の実施形態でも同様である。
【0082】
CPU11は、リセット信号がネゲートされると、バス制御ユニット12に対し、リセットアドレスの命令フェッチを発行する。バス制御ユニット12は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット13を用いてCPU11へのウエイト信号を生成し、CPU11にウエイトをかけるとともに、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22から主記憶23へ所定量のブートコードの転送を開始する。つまり、図2の構成の装置によれば、NANDフラッシュ22から主記憶23へのブートコードを転送する場合において、少なくともIPLの転送は、バス制御ユニット12によって制御される。
【0083】
本実施形態においても、バス制御ユニット12がCPU11にウエイトをかける生成ストラテジは、図1に示す第1の実施形態における構成と同様に、「所定量」のブートコードをNANDフラッシュ22から主記憶23へ転送完了するまでウエイトをかける方法と、CPU11の発行するそれぞれの命令フェッチで読み出されるべき命令データが主記憶23に転送済みかを判定し、未転送の場合のみCPU11にウエイトをかけ、逐次CPU11を動作させる方法の2通りが可能となる。
【0084】
このように本実施形態によっても、NANDフラッシュ22から主記憶23へのブートコードの転送をCPU11から隠蔽することができる。なお、NANDフラッシュ22に格納していたファームウェアの主記憶23への転送は、第1の実施形態について説明したとおりである。
【0085】
(実施形態3)
以下、図3を参照しながら本発明の装置の第3の実施形態を説明する。
【0086】
本実施形態と第2の実施形態との主要な相違点は、本実施形態において、ブートコードの転送先として主記憶23(図2)の代わりにオンチップメモリ24を使用している点にある。
【0087】
本実施形態でも、マイクロコントローラ1に内蔵されたCPU11は、バス制御ユニット12を通して外部バスおよびオンチップメモリ24と接続されており、外部バスには、NANDフラッシュ22が接続されている。オンチップメモリ24は、少なくともリセット開放直後において、リセットアドレスに配置されている。
【0088】
CPU11は、他の実施形態と同様に、リセット信号がネゲートされると、バス制御ユニット12に対してリセットアドレスの命令フェッチを発行する。バス制御ユニット12は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット13を用いてCPU11へのウエイト信号を生成してCPU11にウエイトを挿入するとともに、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22からオンチップメモリ24への所定量のブートコードの転送を開始する。言い換えると、本実施形態では、図2に示す実施形態と同様に、NANDフラッシュ22からオンチップメモリ24へのブートコードの転送を行うに際して、バス制御ユニット12がブートコードの少なくとも最初の部分の転送を制御することになる。
【0089】
本実施形態においても、バス制御ユニット12がCPU11にウエイトを挿入する生成ストラテジは、前述の2通りある。すなわち、上記所定量のブートコードをNANDフラッシュ22からオンチップメモリ24へ転送完了するまでウエイトを挿入する方法と、CPU11の発行する各々の命令フェッチで読み出されるべき命令データがオンチップメモリ24に転送済みかを判定し、未転送の場合のみCPU11にウエイトを挿入し、逐次CPU11を動作させる方法である。
【0090】
こうして、本実施形態の場合でも、NANDフラッシュ22からオンチップメモリ24へのブートコードの転送の少なくとも最初の段階をCPU11から隠蔽することができる。なお、NANDフラッシュ22に格納していたファームウェアのオンチップメモリ24への転送は、第1の実施形態について説明したとおりである。ただし、オンチップメモリ24の容量が小さい場合には、ローダーをIPLとSPLに分け、IPLだけをオンチップメモリ24に転送し、SPLおよびファームウェアの転送先は、主記憶(不図示)を選択することが好ましい。
【0091】
(実施形態4)
本実施形態では、ブートコードの転送先としてマイクロコントローラ内のキャッシュメモリを用いる。キャッシュメモリは、本発明の動作に必要なウエイト生成機能などを備えているため、比較的簡単な構成により、本発明の装置を実現することが可能になる。ただし、NANDフラッシュに格納していたファームウェアの転送先は、キャッシュメモリではなく、主記憶などが選択され得る。
【0092】
以下、図4を参照しながら本発明の装置の第4の実施形態を説明する。
【0093】
本実施形態では、マイクロコントローラ1に内蔵されたCPU11がキャッシュメモリユニット25を介してバス制御ユニット12に接続されており、さらにその先の外部バスを通してNANDフラッシュ22に接続されている。ここで、キャッシュメモリユニット25は、少なくともリセット開放直後はリセットアドレスに配置されている。
【0094】
CPU11は、リセット信号がネゲートされると、キャッシュメモリユニット25に対してリセットアドレスの命令フェッチを発行する。キャッシュメモリユニット25は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット14を用いてCPU11へのウエイト信号を生成しCPU11にウエイトをかけるとともに、NANDフラッシュ22からブートコードを読み出すべく、バス制御ユニット12に対してNANDフラッシュ22からの読出しを要求する。
【0095】
バス制御ユニット12は、NANDフラッシュ22の読出し要求を受け、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22から所定のデータの転送を開始する。つまり、図4の構成では、NANDフラッシュ22からキャッシュメモリユニット25への最低限のブートコード(例えばIPL)の転送に対する制御をキャッシュメモリユニット25が担う。なお、バス制御ユニット12のウエイト生成ユニット13は、外部バスからのデータ転送のタイミング調整に必要なウエイトを随時発生する。
【0096】
本実施形態においても、キャッシュメモリユニット25がCPU11にウエイトをかける方法は、他の実施形態と同様、所定量のブートコードをNANDフラッシュ22からキャッシュメモリユニット25へ転送するまでウエイトをかける方法と、CPU11の発行するそれぞれの命令フェッチで読み出されるべき命令データがキャッシュメモリ25に転送済みかを判定し、未転送の場合のみCPU11にウエイトをかけ、逐次CPU11を動作させる方法の2通りが可能となる。
【0097】
このようにして本実施形態によっても、NANDフラッシュ22からキャッシュメモリユニット25へのブートコードの転送をCPU11から隠蔽することができる。
【0098】
次に、図7および図8を参照して、従来のキャッシュメモリユニットの動作と本実施形態におけるキャッシュメモリユニットの動作との違いを説明する。
【0099】
まず、図7を参照しながら、従来のキャッシュメモリユニット25の動作を説明する。図7に示すキャッシュメモリユニット25では、(命令)データを格納するメモリブロック26を例えば64バイト程度の小さい領域(以下、「キャッシュライン」と称する)に区切っている。そして、キャッシュラインごとに格納されているデータが有効であるか、無効であるかを判定し、必要に応じてバス制御ユニット側へのアクセスを行う。また、外部メモリのデータを読み込み、あるいは、外部メモリにキャッシュメモリのデータを書き出して、外部メモリを更新する。
【0100】
図7に示すように、メモリブロック26が未使用、または全部のキャッシュラインが無効の状態において、CPU11から実線と破線で示す命令フェッチが順に起きた場合を考える。この場合、キャッシュメモリユニット25は、それぞれの命令フェッチに応じて、実線および破線で示す2つのキャッシュラインを外部メモリから読み込むための要求を、バス制御ユニット12に対して順次発行する。その結果、メモリブロック25では、斜線で示された2つのキャッシュラインに有効データが格納される。ウエイト生成ユニット14は、該当するキャッシュラインへの読み込みが完了するまでCPU11に対してウエイトを挿入する。
【0101】
次に、図8を参照して、本実施形態におけるキャッシュメモリユニット25の動作を説明する。
【0102】
図8のCPU11から出ている2本のアクセスは、実線で示すリセットアドレスに対する命令フェッチと、破線で示すブートコードへのジャンプ先に対する命令フェッチを表しており、図8は、これらの命令フェッチが順次発行されている様子を示している。
【0103】
キャッシュメモリユニット25は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、キャッシュメモリユニット25内のウエイト生成ユニット14により、CPU11からのリセットアドレスへの命令フェッチにウエイトを挿入するとともに、図示されていないNANDフラッシュからブートコードを読み込むために、バス制御ユニット12に対してNANDフラッシュ22(図4)からの読み込み要求を発行する。
【0104】
NANDフラッシュ22(図4)からの読み込みは、シーケンシャルに実行する必要がある。このため、読み込むべきブートコードの全体をメモリブロック26に読み込むようにバス制御ユニット12に対して、NANDフラッシュからの読み込み命令を継続して発行する。
【0105】
ウエイト生成ユニット14がCPU11にウエイトを挿入する仕方は、前述の通り、2通りある。第1の方法は、ブートコードの全体をメモリブロック26に転送し終わるまでCPU11にウエイトを挿入し続ける方法であり、第2の方法は、CPU11が要求しているキャッシュラインへの読み込みが完了しているか否かを判定し、読み込みが完了していればウエイトを生成せず、読み込みが未完了であれば該当キャッシュラインの読み込みが完了するまでウエイトを挿入する方法である。
【0106】
こうして、本実施形態の場合でも、NANDフラッシュ22からキャッシュメモリユニット25内のメモリブロック26へのブートコードの転送の少なくとも最初の段階をCPU11から隠蔽することができる。
【0107】
なお、キャッシュメモリユニット25のメモリブロック26の容量が十分に大きくない場合は、ローダーをIPLとSPLに分け、IPLだけをメモリブロック26に転送し、SPLおよびファームウェアの転送先は、主記憶(不図示)などの他のランダムアクセス・メモリを選択することが好ましい。また、メモリブロック26の容量が充分であれば、ブートコードのすべてをメモリブロック26に転送し、ファームウェアについては主記憶(不図示)に転送する構成を採用してもよい。
【0108】
【発明の効果】
このように本発明によれば、リセット開放直後におけるCPUのリセットアドレスに対する命令フェッチに先立って、NANDフラッシュなどの不揮発性シーケンシャルアクセス・メモリからランダムアクセス・メモリへブートコードを転送するため、ブートROMなどを別途必要としない起動が可能になる。
【0109】
本発明によれば、マイクロコントローラやシステムLSIにおけるSDRAMなどの主記憶、オンチップメモリ、またはキャッシュメモリなどのランダムアクセス・メモリをブートアップメモリとして活用できるため、プログラムコードをNANDフラッシュのように安価なシーケンシャルアクセス・メモリデバイスに格納し、システムのコストを低減できる。特に、公知の装置に備えられているキャッシュメモリは、本発明の動作に必要なウエイト生成機能などを備えているため、このキャッシュメモリをブートアップメモリとして活用すれば、キャッシュメモリユニット内のメモリブロックをリセットアドレスに配置し、NANDフラッシュからブートコードを転送する手段を設けるだけで、本発明の構成を実現できる。
【図面の簡単な説明】
【図1】本発明による装置の第1の実施形態の構成を示すブロック図である。
【図2】本発明による装置の第2の実施形態の構成を示すブロック図である。
【図3】本発明による装置の第3の実施形態の構成を示すブロック図である。
【図4】本発明による装置の第4の実施形態の構成を示すブロック図である。
【図5】ブートROMを備えた従来の装置の構成を示すブロック図である。
【図6】図5の装置のブートアップ(起動)動作を示すフローチャートである。
【図7】従来の装置におけるキャッシュメモリユニットの動作を示す図である。
【図8】図4の装置におけるキャッシュメモリユニットの動作を示す図である。
【図9】非特許文献1に記載されている従来の装置を示す図である。
【符号の説明】
1 マイクロコントローラ
11 CPU
12 バス制御ユニット
13 ウエイト生成ユニット
14 ウエイト生成ユニット(キャッシュメモリユニット内)
20 主記憶/NANDフラッシュ制御ユニット
21 ブートROM
22 NANDフラッシュ
23 主記憶
24 オンチップメモリ
25 キャッシュメモリユニット
26 メモリブロック
29 NANDフラッシュ制御ユニット
【発明の属する技術分野】
本発明は、CPU(中央演算処理ユニット)を内蔵したマイクロコントローラやシステムLSIなどの装置の起動(ブートアップ)に関する。特に、NAND型フラッシュメモリ(以下、「NANDフラッシュ」と称する。)のようにセクタ構成を有し、シーケンシャルアクセスを必要とするメモリデバイスにブートアップ命令コード(本明細書において「ブートコード」と称する。)を格納した装置およびその起動方法に関する。
【0002】
【従来の技術】
デジタルAV(オーディオ・ビジュアル)機器の急速な普及に伴い、機器の機能・性能の向上が著しい。このため、これらの機器を制御するためのソフトウェア・プログラム(以下、「ファームウェア」と称する。)の大規模化が急速に進んでいる。一方、システムコストを削減するために、CPU(中央演算処理ユニット)、AVコーデック機能、および周辺IO機能などを集積した大規模システムLSIが開発されつつある。
【0003】
このように機能・性能の向上した機器では、CPUによる直接的アクセスが可能な記憶装置(主記憶:メインメモリ)を備えるとともに、この主記憶とは別に、機器の制御に必要なファームウェアを格納した不揮発性メモリが必要である。
【0004】
従来、このような不揮発性メモリとしては、ランダムアクセスが可能なNOR型フラッシュメモリ(以下、「NORフラッシュ」と称する)が用いられてきた。しかし、NORフラッシュは、NANDフラッシュに比べると、ビット単価が高いという問題がある。このため、NORフラッシュに代えて、NANDフラッシュを採用することがシステムコストを低減する上で好ましい。
【0005】
しかしながら、NANDフラッシュはセクタ構成を有しており、アクセスはシーケンシャルに実行する必要がある。このため、NANDフラッシュは、CPUがファームウェアを実行するときに必要なメモリへのランダムアクセスに対応することができない。従って、NORフラッシュの代わりにNANDフラッシュを用いる場合は、NANDフラッシュに格納されていたファームウェアを、いったん、ランダムアクセスの可能な主記憶へ転送し、その後にファームウェアの実行を行う必要がある。このような主記憶には、例えば、SDRAM(シンクロナス・ダイナミック・RAM)などのRAM(ランダムアクセス・メモリ)が用いられ得る。
【0006】
以上のようなシステム構成を実現するためには、マスクROM(リード・オンリー・メモリ)やNORフラッシュなどのメモリ容量の小さな小型記憶装置(以下、「ブートROM」と称する。)を備え、NANDフラッシュに格納されていたファームウェアを主記憶に転送して実行するために必要な前処理を行うソフトウェアを、そのブートROMに格納しておく必要がある。
【0007】
一般に、ブートROMのコストは、メモリ容量が小さいほど低くなるため、ブートROMに格納するソフトウェアは必要最低限に限定される。多くの場合は、ブートROMには、外部バス制御ユニットやメモリ制御ユニットの初期設定を行う命令コード、およびNANDフラッシュに格納されているファームウェアを主記憶に転送する命令コードのみが格納される。
【0008】
本明細書では、NANDフラッシュなどのシーケンシャルアクセス・メモリに格納されたファームウェアを主記憶に転送するために必要な命令コードを「ローダー」と称する。上記の従来技術においては、装置の電源がオン状態になると、ブートROMに格納されている「ローダー」を実行することにより、NANDフラッシュに格納されているファームウェアがNANDフラッシュから主記憶に転送されることになる。
【0009】
近年、OS(オペレーティング・システム)を含む機器の動作に必要なファームウェアは非常に大規模になってきているため、NANDフラッシュ内のファームウェアは、圧縮されていたり、セキュリティを高める目的で暗号化されている場合がある。これらの状況に対応するため、ローダーの容量も増大してきている。
【0010】
ローダーの容量増加に応じてブートROMを大型化することは、コストの上昇を招くため、好ましくない。ブートROMの大型化を避ける目的で、ローダーをイニシャルプログラムローダ(IPL)と、セカンドプログラムローダ(SPL)に分け、ブートROMにはIPLだけを格納しておくことが行われている。この場合、ブートROMのIPLは、NANDフラッシュ内のSPLを主記憶に転送する役割を担い、NANDフラッシュ内のSPLは、主記憶に転送された後、NANDフラッシュ内に残るファームウェアを主記憶に転送する役割を担う。SPLによって主記憶に転送されるファームウェアは、OSを含むような大規模なものであり得るため、SPLは「メインローダー」と称される場合がある。
【0011】
このようにして、NANDフラッシュから主記憶へのファームウェアの転送を2段階にわけて行うことは、ブートROMに格納する命令コードのサイズの抑制とローダーの柔軟性を向上させるのに有利である。
【0012】
以下、図5を参照しながら、ブートROMを備えた従来のマイクロコントローラのブートアップ動作を説明する。図5に示すマイクロコントローラ1は、CPU11とバス制御ユニット12とを内蔵しており、CPU11は、このバス制御ユニット12を介して外部バスと接続されている。バス制御ユニット12の内部には、CPU11に対してウエイトを挿入するための信号(ウエイト信号)を生成する生成ユニット13が設けられている。
【0013】
外部バスには、NANDフラッシュ22、主記憶23、ブートROM21、およびNANDフラッシュ制御ユニット29が接続されている。
【0014】
ブートROM21は、リセットアドレスが割り当てられたランダムアクセス可能なROMまたはフラッシュメモリであり、装置の初期設定の一部を行うコードとIPLとを格納している。ここで、「リセットアドレス」とは、リセットベクタとしてCPUのレジスタに格納されたアドレス値である。ブートROM21にリセットアドレスが割り当てられていることにより、リセット直後のCPU11は、ブートROM21にアクセスする。
【0015】
NANDフラッシュ22は、不揮発性のシーケンシャルアクセス・メモリであり、この例では、SPLと装置の動作に必要なファームウェアとを格納している。主記憶23は、ランダムアクセス・メモリであり、主記憶装置として機能する。NANDフラッシュ制御ユニット29は、バス制御ユニット12からNANDフラッシュ22へのアクセスを補助する。NANDフラッシュ制御ユニット29は、マイクロコントローラ1に内蔵されていても良い。
【0016】
図6は、図5のシステムにおけるブートアップ動作の概略を示すフローチャートである。図6に示すように、まず、リセットが開放されると、ブートROM21に格納されたコードが実行される。そして、ステップ51において、NANDフラッシュ22や主記憶23にアクセスするために必要なハードウェア設定などの最低限の初期設定が行われる。この後、ステップ52で、NANDフラッシュ22に格納されていたSPLが主記憶23に転送される。SPLの主記憶23への展開(転送)が完了すると、主記憶23に展開されたSPLの先頭アドレスにジャンプし、装置の制御が主記憶23に移される(ステップ53)。その後、SPLによってファームウェアがNANDフラッシュ22から主記憶23へ転送される(ステップ54)。
【0017】
ステップ55では、ステップ51で実行できなかった残りの初期設定(入出力やOSの初期化など)が実行される。ステップ56では、OSに制御が移され、ブートアップが完了する。
【0018】
ステップ51からステップ53が完了するまでの間に実行される命令コードは、ブートROM21に格納されている。これに対して、ステップ54およびそれ以降のステップで実行される命令コードは、当初、NANDフラッシュ22に格納されていたものが、ステップ52およびステップ54の処理により、NANDフラッシュ22から主記憶23に転送されたものである。なお、NANDフラッシュにSPLを格納せず、ブートROMのローダーでファームウェアの全体を主記憶に転送する場合には、ステップ54の処理が省略される。
【0019】
次に、再び図5を参照しながら、リセット開放直後のハードウェアの動作をさらに詳細に説明する。
【0020】
まず、図5の装置で電源がオンすると、リセット信号が生成され、CPU11や図示されている各デバイスが、このリセット信号を受け取る。電源がオンした直後において、各デバイスは不安定な状態にあるが、前記リセット信号を受け取ると、安定した既知状態をとるに至る。各デバイスが安定した既知状態になると、リセット信号が無効化(ネゲート)される。リセット信号がネゲートされるまで、各デバイスに対するアクセスは不能な状態にあるが、ネゲート後はアクセス可能になる。
【0021】
CPU11は、リセット信号がネゲートされると、リセットアドレスの命令フェッチ(読出し命令)を発行する。本明細書では、リセット信号がネゲートされた時を「リセットが開放された時」と称することとする。また、リセット開放直後とは、リセットが開放された時からブートアップが完了するまでの間を意味するものとする。
【0022】
リセットが開放された後、バス制御ユニット12は、リセットアドレスが割り当てられているブートROM21に対して、命令読出しのためのリードプロトコルを外部バス上に発行する。リセット開放直後のバス制御ユニット12は、どのような種類のROMからでもブートコードが読み出せるように、比較的長いバスアクセスタイミングを生成する固定ウエイトのリードプロトコルを発行するのが一般的である。バス制御ユニット12は、ブートROM21からのリードデータが読み込まれるのに充分な時間を与えるため、ウエイト生成ユニット13にウエイト信号を生成させ、CPU11にウエイトを挿入する。このとき、外部ウエイト信号は使用しない。
【0023】
リセットアドレスには、ブートアップ処理を実際に行う命令コードの先頭が配置されているアドレス(以下、「ブート先頭アドレス」と称する)へのジャンプ命令が格納されている。
【0024】
このため、CPU11は、ウエイトの後、ブート先頭アドレスの命令フェッチを発行することになる。そのため、バス制御ユニット12は、リセットアドレスとは不連続となる前記ブート先頭アドレスのリードプロトコルを発行する。以降、順次ブートコードが実行されるのであるが、それに従い、バス制御ユニット12の生成するリードプロトコルは、ブートROM21に対するランダムアクセスを必要とする。このような構成を有する装置は、例えば特許文献1に記載されている。
【0025】
ブートROMを必須とする上記の装置に対して、非特許文献1には、ブートROMを必要としないデバイス(商品名「DiskOnChip」)が開示されている。図9は、このデバイス90を含む装置の構成を示している。デバイス90は、ブートコードやファームウェアを格納するNANDフラッシュ91と、NANDフラッシュ91内のブートコードが転送されて格納される小型RAM92と、転送制御ユニット93と、これらの動作を制御するコントローラ94とを内蔵している。デバイス90は、CPU100およびRAM110とバス120を介して接続される。
【0026】
図9に示す構成の装置が起動するとき、リセット開放前において、デバイス90の内部で先行的にNANDフラッシュ91から小型RAM92へブートコード(IPLなど)が転送される。そして、このブートコードの転送が完了した後、リセットが開放される。リセット解放後は、デバイス90の小型RAM92がブートアップに必要なCPU100からのランダムアクセスに対応することになる。具体的には、IPLが実行され、SPLなどのファームウェアがNANDフラッシュ91からRAM110に転送される。
【0027】
【特許文献1】
特開2002−278781号公報
【非特許文献1】
Designing The DiskOnChip as a Flash Disk & Boot Device Replacement、AP−DOC−047 M−Systems社
【0028】
【発明が解決しようとする課題】
特許文献1に記載されている従来の装置によれば、NANDフラッシュなどのシーケンシャル・メモリデバイスにファームウェアを格納したシステムのブートアップが実現できるが、ブートROMが別途必要になるため、コストが上昇する。
【0029】
また、非特許文献1に開示されている図9のデバイス90によれば、標準のNANDフラッシュに比べて、内部RAM92や転送制御ユニット93などの追加回路をデバイス90の内部に設ける必要がある。このため、デバイス90の構造が複雑になり、デバイス90のコストが単体のNANDフラッシュに比べて上昇するともに、デバイス90のセカンドソースを確保することが難しいという問題もある。
【0030】
本発明は、上記の課題を解決するためになされたものであり、本発明の目的とするところは、NANDフラッシュなどのシーケンシャル・メモリデバイスを用いながら、追加のブートROMを必要とせずにブートアップできる方法および装置を提供する。
【0031】
【課題を解決するための手段】
本発明の装置は、CPUと、少なくともリセット開放時においてリセットアドレスが割り当てられているランダムアクセス・メモリと、ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリと、リセット開放後、前記シーケンシャルアクセス・メモリに格納されたブートコードをシーケンシャルに前記ランダムアクセス・メモリに転送するブートコード転送ユニットと、前記ブートコード転送ユニットによる転送の進捗に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行うウエイト生成ユニットとを備える。
【0032】
好ましい実施形態において、前記ウエイト生成ユニットは、所定量のブートコードの転送が完了するまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0033】
好ましい実施形態において、前記ウエイト生成ユニットは、前記CPUの発行する命令フェッチのアドレスと、前記ブートコード転送ユニットが転送するアドレスを監視し、前記CPUの発行する命令フェッチのアドレスが、前記ブートコード転送ユニットによる転送が完了していないブートコードのアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う。
【0034】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUと同一のLSIパッケージに封じられているオンチップメモリである。
【0035】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成されたメモリである。
【0036】
好ましい実施形態において、前記ウエイト生成ユニットは、前記CPUと外部バスとを接続するバス制御ユニット内に設けられている。
【0037】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、前記外部バスに接続されている。
【0038】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、NAND型フラッシュメモリである。
【0039】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記外部バスとは異なるバスに接続されている。
【0040】
好ましい実施形態において、前記シーケンシャルアクセス・メモリは、前記ブートコードに加え、装置の動作を制御するファームウェアを格納している。
【0041】
好ましい実施形態において、前記ランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記ランダムアクセス・メモリに転送する。
【0042】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納されているブートコードは、前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するローダーを含んでおり、前記ウエイト生成ユニットは、前記ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0043】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納されているブートコードは、前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するメインローダーと、前記メインローダーを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送する初期ローダーとを含んでおり、前記ウエイト生成ユニットは、前記初期ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0044】
好ましい実施形態において、前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成された第1のランダムアクセス・メモリであり、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを格納する第2のランダムアクセス・メモリを更に備えている。
【0045】
好ましい実施形態において、前記第1のランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記第2のランダムアクセス・メモリを転送する。
【0046】
本発明の起動方法は、CPUと、リセットアドレスに配置されたランダムアクセス・メモリと、ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリとを備えた装置の起動方法であって、前記シーケンシャルアクセス・メモリに格納されたブートコードを前記ランダムアクセス・メモリに転送するとき、前記ブートコードの転送の進捗状況に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行う。
【0047】
好ましい実施形態において、前記シーケンシャルアクセス・メモリに格納された所定量のブートコードが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う。
【0048】
好ましい実施形態において、前記CPUの発行する命令フェッチのアドレスが、前記ブートコードのうち、転送の完了していない部分のアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う。
【0049】
好ましい実施形態において、前記ブートコードを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送した後、前記シーケンシャルアクセス・メモリに格納されているファームウェアを前記ランダムアクセス・メモリまたは他のランダムアクセス・メモリに転送する。
【0050】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明の好適な実施形態を説明する。なお、添付の図面において同一の構成要素には同一の参照符号を付し、重複する部分の詳細な説明は繰り返さない。
【0051】
(実施形態1)
まず、図1を参照しながら、本発明の第1の実施形態を説明する。
【0052】
図1に示す本実施形態の装置は、CPU11を内蔵したマイクロコントローラ1と、外部バスを介してマイクロコントローラ1に接続された主記憶/NANDフラッシュ制御ユニット20、NANDフラッシュ22、および主記憶23とを備えている。
【0053】
マイクロコントローラ1にはバス制御ユニット12も内蔵されており、CPU11は、このバス制御ユニット12を介して外部バスと接続されている。バス制御ユニット12の内部には、CPU11に対してウエイトを挿入するための信号(ウエイト信号)を生成するウエイト生成ユニット13が設けられている。
【0054】
NANDフラッシュ22は、前述のように不揮発性のシーケンシャルアクセス・メモリであり、装置の起動に必要なブートコードおよびOSを含むファームウェアを格納している。本実施形態のNANDフラッシュに格納されるブートコードは、具体的には、装置の初期化を行うコード、IPLおよびSPLを含む。なお、本明細書におけるIPLは、SPLの転送前に行う最低限の初期設定(図6のステップ51)のコードを含むものとし、SPLは、OSに制御を移す前に行う残りの初期設定(図6のステップ55)のコードを含むものとする。また、本明細書における「ブートコード」の用語は、装置の電源をオンしてから制御がOSに移るまでの期間における装置の初期動作を規定するプログラムを指すものとする。
【0055】
主記憶23は、少なくともリセット開放直後においてリセットアドレスが割り当てられているランダムアクセス・メモリであり、主記憶装置として機能する。リセットアドレスの値は、CPU11のリセットベクタに規定されており、リセット開放後、CPU11が最初にアクセスしようとするメモリ位置を示している。
【0056】
主記憶/NANDフラッシュ制御ユニット20は、バス制御ユニット12からのアクセス信号を受けて、NANDフラッシュ22および主記憶23を制御する。また、主記憶/NANDフラッシュ制御ユニット20は、必要に応じて、外部ウエイト信号を生成し、バス制御ユニット12内のウエイト生成ユニット13を介して、CPU11にウエイト信号として入力する。
【0057】
本発明では、図5に示す従来例とは異なり、シーケンシャルアクセスが必要なNANDフラッシュにブートコードやファームウェアを格納するとともに、少なくともリセット開放直後において、ランダムアクセス・メモリ(RAM)をリセットアドレスに割り当てている点に主要な特徴を有している。
【0058】
本発明では、ブートコードをNANDフラッシュからRAMに転送する処理を行う際、この処理の少なくとも初期の段階をCPU11から隠蔽することにより、CPU11によるRAMへのアクセスを停止し、その間に必要な量のブートコードを転送する。ここで、「必要な量」とは、ブートコードが転送される先のメモリの種類/容量やせクタによって規定される。転送先のメモリとして、後述する実施形態のようにキャッシュメモリを用いる場合、このキャッシュメモリの容量(例えば4kB〜16kB)よりも少ない量のブートコードが転送されることになる。また、転送先としてオンチップメモリを用いる場合、オンチップメモリの容量(例えば1kB以上)よりも少ない量のブートコードが転送されることになる。
【0059】
CPU11にウエイトを挿入しながらブートコードを転送するために必要なハードウェアの構成を考えると、最初にNANDフラッシュから読み出されて転送されるブートコードの量は、できるだけ少なく設定することが好ましい。これらのことを総合的に勘案すると、CPU11から隠蔽しつつ転送されるブートコードの量は1kB〜4kB程度の範囲内に設定され、好ましくは1kB〜2kBの範囲内に設定される。
【0060】
本発明において、少なくともリセット開放直後にリセットアドレスが割り当てられるRAMは、装置内に備えられている主記憶、オンチップRAM、キャッシュメモリなどの既存のリソースを用いて実現することができるため、コストの増加を抑えることができる。前述の非特許文献1に開示されているデバイスによれば、装置が備えるRAMとは別にデバイス内部に別の小型RAMが必須になるが、本発明によれば、特別のRAMを備える必要がなく、コスト上昇を抑えることができる。
【0061】
以下、ブートコードの転送先として外部バスに接続された主記憶23を用いる本実施形態の装置におけるリセット動作を詳細に説明する。
【0062】
図1のCPU11は、図示されていないリセット信号がネゲートされると、バス制御ユニット12に対してリセットアドレスの命令フェッチを発行する。バス制御ユニット12は、前記リセットアドレスに格納された命令データの読出しのためのリードプロトコルを外部バス上に発行する。
【0063】
上記のように、リセット信号がネゲートされると、CPU11は、リセットアドレスが割り当てられているメモリ位置にアクセスして当該メモリ位置に格納されている命令を読み出そうとするが、その時点における本実施形態の装置において、前記メモリ位置には、どのような命令もまだ格納されてはいない。
【0064】
本実施形態では、主記憶/NANDフラッシュ制御ユニット20が上記のリードプロトコルを受けとると、NANDフラッシュ22に格納されたブートコードを、リセットアドレスが割り当てられている主記憶23へ転送する動作を開始し、それによって、バス制御ユニット12から主記憶23へのランダムアクセスに対する準備を行う。
【0065】
この時、本実施形態では、バス制御ユニット12に対してウエイトを挿入するために外部ウエイト信号を使用する。この外部ウエイト信号は、データの確定のタイミングを示すデータアクノレッジ信号などのマイクロコントローラ1の外部バスにおけるハンドシェーク信号を使用することで実現できる。このことは、後述する他の実施形態でも同様に行うことができる。
【0066】
ウエイト信号の挿入により、CPU11は、リセットアドレスに対するアクセスを実行できず、待機させられ、その間にブートコードの少なくとも一部が転送されることになる。最初にウエイトが解除されるのは、リセットアドレスおよびブート先頭アドレスを含むアドレスに「所定量」のブートコードが転送されたときである。ここで「所定量」の値とは、前述したように、転送先のメモリ容量などに基づいて適宜決定される量である。
【0067】
主記憶/NANDフラッシュ制御ユニット20が生成する外部ウエイト信号の生成ストラテジには、以下の2通りの方法が考えられる。
【0068】
第1の方法は、少なくともIPLを含む「所定量」のブートコードをNANDフラッシュ22から主記憶23へ転送完了するまでバス制御ユニット12に対しウエイトを挿入しつづける方法である。この場合、CPU11は、上記所定量のブートコードが主記憶23にすべて格納されるまで待たされるため、CPU11がブートコードの実行を開始した後は、主記憶/NANDフラッシュ制御ユニット20がNANDフラッシュ22から主記憶23への命令データの転送を継続する必要はない。このため、バス制御ユニット12から主記憶23へのブートコード読出しのリードプロトコルは、固定ウエイトで実行できる。
【0069】
第2の方法は、バス制御ユニット12の発行する各々のリードプロトコルに従って読み出されるべき命令データが主記憶23にあるかどうかを逐次判定し、主記憶23にある場合には即座に主記憶23の読出しを行う方法である。この方法によれば、読み出されるべき命令データが主記憶23に無い場合(未転送の場合)のみ、NANDフラッシュ22から主記憶23へのブートコードの転送を優先的に実行し、読み出されるべき命令データが転送完了した時点で外部ウエイト信号を解除し、CPU11の動作を継続させる。
【0070】
この第2の方法によれば、主記憶/NANDフラッシュ制御ユニット20は、NANDフラッシュ22から主記憶23へのブートコードの転送を継続させながら、バス制御ユニット12が発行するリードプロトコルの要求アドレスを監視する。そして、要求アドレスが転送アドレスより小さければ(すなわち転送済み)であれば、即座に主記憶を読み出す。一方、要求アドレスが転送アドレスより大きければ(すなわち未転送)であれば、ブートコードの転送を継続し、要求アドレスに一致する命令コードが転送されるまでバス制御ユニットに対してウエイトをかけ続ける。
【0071】
第1および第2の方法のいずれにせよ、外部ウエイト信号を使用することによってCPU11を待機させることができるため、NANDフラッシュ22から主記憶23へのブートコードの転送をCPU11から隠蔽することができる。
【0072】
NANDフラッシュ22から主記憶23へのブートコードの転送が完了すると、次は、ブートコードを実行することにより、NANDフラッシュ22に格納されていたファームウェアを主記憶23に転送することになる。
【0073】
ブートコードの転送は、従来技術について説明したように、2段階で行なうことができる。具体的には、ブートコードを、SPL(NANDフラッシュ22に格納しているファームウェアを主記憶23に転送するメインローダー)と、IPL(メインローダーをNANDフラッシュ22から主記23に転送する初期ローダー)とに分け、まずはIPLを主記憶23に転送し、その後にSPLを主記憶23に転送するようにしてもよい。この場合、ウエイト生成ユニット13は、IPLが主記憶23に転送されるまでCPU11を待機させ、IPLの転送をCPU11から隠蔽する。この場合、SPLの主記憶23への転送は、主記憶23に格納されたIPLを実行することによって行うことになり、IPLの実行は、CPU11による主記憶23へのランダムアクセスによって進行する。
【0074】
なお、本実施形態によれば、メモリ容量の大きな主記憶23にブートコードを転送するため、ブートROMを用いる従来技術に比較して、ブートコードをIPLとSPLとに分ける必要性は小さい。したがって、ローダーをIPLとSPLとに分けることなく、1つのローダーとして扱い、このローダーの全体がNANDフラッシュ22から主記憶23に転送されるまでの間、CPU11のリセットアドレスへの命令フェッチに対してウエイト挿入を行うようにしてもよい。
【0075】
NANDフラッシュ22から主記憶23へのブートコードおよびファームウェアの転送は、NANDフラッシュ22に対するシーケンシャルなアクセスによって行われる。
【0076】
CPU11がウエイト信号によって待機している間、本実施形態では、主記憶/NANDフラッシュ制御ユニット20がCPU11に代わってNANDフラッシュ22からの命令データの読み出しおよび主記憶23への書き込みを制御する。読み出し/書き込みは、例えば256ワード毎にシーケンシャルに実行される。本実施形態における主記憶/NANDフラッシュ制御ユニット20は、このような制御をハードウェア的に実行するように構成されている。
【0077】
このように本実施形態によれば、標準のNANDフラッシュを用いてブートコードの格納を行うため、追加のブートROMなどが不要になり、低コストで機能・性能の向上した装置が提供可能になる。
【0078】
なお、リセットアドレスが主記憶23に割り当てられるのは、少なくともリセット開放直後の所定の期間であれば良く、リセットアドレスがどのメモリに割り当てられるかは、装置の起動後に、動的に変更され得る。
【0079】
(実施形態2)
以下、図2を参照しながら本発明の装置の第2の実施形態を説明する。
【0080】
近年のシステムLSIおよびマイクロコントローラでは、SDRAMを主記憶に採用した場合、主記憶とファームウェアを格納する各種不揮発性メモリとが別々のバスに配置されていることが多い。
【0081】
図2の装置では、マイクロコントローラ1に内蔵されたCPU11は、バス制御ユニット12を通して外部バスおよび主記憶23と接続されている。外部バスには、NANDフラッシュ22が接続されている。本実施形態でも、少なくともリセット開放直後において、リセットアドレスは主記憶23に割り当てられている。主記憶23に対するアドレスの割り当ては、装置の起動後に、動的に変更され得る。この点、後述する他の実施形態でも同様である。
【0082】
CPU11は、リセット信号がネゲートされると、バス制御ユニット12に対し、リセットアドレスの命令フェッチを発行する。バス制御ユニット12は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット13を用いてCPU11へのウエイト信号を生成し、CPU11にウエイトをかけるとともに、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22から主記憶23へ所定量のブートコードの転送を開始する。つまり、図2の構成の装置によれば、NANDフラッシュ22から主記憶23へのブートコードを転送する場合において、少なくともIPLの転送は、バス制御ユニット12によって制御される。
【0083】
本実施形態においても、バス制御ユニット12がCPU11にウエイトをかける生成ストラテジは、図1に示す第1の実施形態における構成と同様に、「所定量」のブートコードをNANDフラッシュ22から主記憶23へ転送完了するまでウエイトをかける方法と、CPU11の発行するそれぞれの命令フェッチで読み出されるべき命令データが主記憶23に転送済みかを判定し、未転送の場合のみCPU11にウエイトをかけ、逐次CPU11を動作させる方法の2通りが可能となる。
【0084】
このように本実施形態によっても、NANDフラッシュ22から主記憶23へのブートコードの転送をCPU11から隠蔽することができる。なお、NANDフラッシュ22に格納していたファームウェアの主記憶23への転送は、第1の実施形態について説明したとおりである。
【0085】
(実施形態3)
以下、図3を参照しながら本発明の装置の第3の実施形態を説明する。
【0086】
本実施形態と第2の実施形態との主要な相違点は、本実施形態において、ブートコードの転送先として主記憶23(図2)の代わりにオンチップメモリ24を使用している点にある。
【0087】
本実施形態でも、マイクロコントローラ1に内蔵されたCPU11は、バス制御ユニット12を通して外部バスおよびオンチップメモリ24と接続されており、外部バスには、NANDフラッシュ22が接続されている。オンチップメモリ24は、少なくともリセット開放直後において、リセットアドレスに配置されている。
【0088】
CPU11は、他の実施形態と同様に、リセット信号がネゲートされると、バス制御ユニット12に対してリセットアドレスの命令フェッチを発行する。バス制御ユニット12は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット13を用いてCPU11へのウエイト信号を生成してCPU11にウエイトを挿入するとともに、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22からオンチップメモリ24への所定量のブートコードの転送を開始する。言い換えると、本実施形態では、図2に示す実施形態と同様に、NANDフラッシュ22からオンチップメモリ24へのブートコードの転送を行うに際して、バス制御ユニット12がブートコードの少なくとも最初の部分の転送を制御することになる。
【0089】
本実施形態においても、バス制御ユニット12がCPU11にウエイトを挿入する生成ストラテジは、前述の2通りある。すなわち、上記所定量のブートコードをNANDフラッシュ22からオンチップメモリ24へ転送完了するまでウエイトを挿入する方法と、CPU11の発行する各々の命令フェッチで読み出されるべき命令データがオンチップメモリ24に転送済みかを判定し、未転送の場合のみCPU11にウエイトを挿入し、逐次CPU11を動作させる方法である。
【0090】
こうして、本実施形態の場合でも、NANDフラッシュ22からオンチップメモリ24へのブートコードの転送の少なくとも最初の段階をCPU11から隠蔽することができる。なお、NANDフラッシュ22に格納していたファームウェアのオンチップメモリ24への転送は、第1の実施形態について説明したとおりである。ただし、オンチップメモリ24の容量が小さい場合には、ローダーをIPLとSPLに分け、IPLだけをオンチップメモリ24に転送し、SPLおよびファームウェアの転送先は、主記憶(不図示)を選択することが好ましい。
【0091】
(実施形態4)
本実施形態では、ブートコードの転送先としてマイクロコントローラ内のキャッシュメモリを用いる。キャッシュメモリは、本発明の動作に必要なウエイト生成機能などを備えているため、比較的簡単な構成により、本発明の装置を実現することが可能になる。ただし、NANDフラッシュに格納していたファームウェアの転送先は、キャッシュメモリではなく、主記憶などが選択され得る。
【0092】
以下、図4を参照しながら本発明の装置の第4の実施形態を説明する。
【0093】
本実施形態では、マイクロコントローラ1に内蔵されたCPU11がキャッシュメモリユニット25を介してバス制御ユニット12に接続されており、さらにその先の外部バスを通してNANDフラッシュ22に接続されている。ここで、キャッシュメモリユニット25は、少なくともリセット開放直後はリセットアドレスに配置されている。
【0094】
CPU11は、リセット信号がネゲートされると、キャッシュメモリユニット25に対してリセットアドレスの命令フェッチを発行する。キャッシュメモリユニット25は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、ウエイト生成ユニット14を用いてCPU11へのウエイト信号を生成しCPU11にウエイトをかけるとともに、NANDフラッシュ22からブートコードを読み出すべく、バス制御ユニット12に対してNANDフラッシュ22からの読出しを要求する。
【0095】
バス制御ユニット12は、NANDフラッシュ22の読出し要求を受け、NANDフラッシュ制御ユニット19を起動して、NANDフラッシュ22から所定のデータの転送を開始する。つまり、図4の構成では、NANDフラッシュ22からキャッシュメモリユニット25への最低限のブートコード(例えばIPL)の転送に対する制御をキャッシュメモリユニット25が担う。なお、バス制御ユニット12のウエイト生成ユニット13は、外部バスからのデータ転送のタイミング調整に必要なウエイトを随時発生する。
【0096】
本実施形態においても、キャッシュメモリユニット25がCPU11にウエイトをかける方法は、他の実施形態と同様、所定量のブートコードをNANDフラッシュ22からキャッシュメモリユニット25へ転送するまでウエイトをかける方法と、CPU11の発行するそれぞれの命令フェッチで読み出されるべき命令データがキャッシュメモリ25に転送済みかを判定し、未転送の場合のみCPU11にウエイトをかけ、逐次CPU11を動作させる方法の2通りが可能となる。
【0097】
このようにして本実施形態によっても、NANDフラッシュ22からキャッシュメモリユニット25へのブートコードの転送をCPU11から隠蔽することができる。
【0098】
次に、図7および図8を参照して、従来のキャッシュメモリユニットの動作と本実施形態におけるキャッシュメモリユニットの動作との違いを説明する。
【0099】
まず、図7を参照しながら、従来のキャッシュメモリユニット25の動作を説明する。図7に示すキャッシュメモリユニット25では、(命令)データを格納するメモリブロック26を例えば64バイト程度の小さい領域(以下、「キャッシュライン」と称する)に区切っている。そして、キャッシュラインごとに格納されているデータが有効であるか、無効であるかを判定し、必要に応じてバス制御ユニット側へのアクセスを行う。また、外部メモリのデータを読み込み、あるいは、外部メモリにキャッシュメモリのデータを書き出して、外部メモリを更新する。
【0100】
図7に示すように、メモリブロック26が未使用、または全部のキャッシュラインが無効の状態において、CPU11から実線と破線で示す命令フェッチが順に起きた場合を考える。この場合、キャッシュメモリユニット25は、それぞれの命令フェッチに応じて、実線および破線で示す2つのキャッシュラインを外部メモリから読み込むための要求を、バス制御ユニット12に対して順次発行する。その結果、メモリブロック25では、斜線で示された2つのキャッシュラインに有効データが格納される。ウエイト生成ユニット14は、該当するキャッシュラインへの読み込みが完了するまでCPU11に対してウエイトを挿入する。
【0101】
次に、図8を参照して、本実施形態におけるキャッシュメモリユニット25の動作を説明する。
【0102】
図8のCPU11から出ている2本のアクセスは、実線で示すリセットアドレスに対する命令フェッチと、破線で示すブートコードへのジャンプ先に対する命令フェッチを表しており、図8は、これらの命令フェッチが順次発行されている様子を示している。
【0103】
キャッシュメモリユニット25は、リセット開放直後のリセットアドレスへの命令フェッチを検出すると、キャッシュメモリユニット25内のウエイト生成ユニット14により、CPU11からのリセットアドレスへの命令フェッチにウエイトを挿入するとともに、図示されていないNANDフラッシュからブートコードを読み込むために、バス制御ユニット12に対してNANDフラッシュ22(図4)からの読み込み要求を発行する。
【0104】
NANDフラッシュ22(図4)からの読み込みは、シーケンシャルに実行する必要がある。このため、読み込むべきブートコードの全体をメモリブロック26に読み込むようにバス制御ユニット12に対して、NANDフラッシュからの読み込み命令を継続して発行する。
【0105】
ウエイト生成ユニット14がCPU11にウエイトを挿入する仕方は、前述の通り、2通りある。第1の方法は、ブートコードの全体をメモリブロック26に転送し終わるまでCPU11にウエイトを挿入し続ける方法であり、第2の方法は、CPU11が要求しているキャッシュラインへの読み込みが完了しているか否かを判定し、読み込みが完了していればウエイトを生成せず、読み込みが未完了であれば該当キャッシュラインの読み込みが完了するまでウエイトを挿入する方法である。
【0106】
こうして、本実施形態の場合でも、NANDフラッシュ22からキャッシュメモリユニット25内のメモリブロック26へのブートコードの転送の少なくとも最初の段階をCPU11から隠蔽することができる。
【0107】
なお、キャッシュメモリユニット25のメモリブロック26の容量が十分に大きくない場合は、ローダーをIPLとSPLに分け、IPLだけをメモリブロック26に転送し、SPLおよびファームウェアの転送先は、主記憶(不図示)などの他のランダムアクセス・メモリを選択することが好ましい。また、メモリブロック26の容量が充分であれば、ブートコードのすべてをメモリブロック26に転送し、ファームウェアについては主記憶(不図示)に転送する構成を採用してもよい。
【0108】
【発明の効果】
このように本発明によれば、リセット開放直後におけるCPUのリセットアドレスに対する命令フェッチに先立って、NANDフラッシュなどの不揮発性シーケンシャルアクセス・メモリからランダムアクセス・メモリへブートコードを転送するため、ブートROMなどを別途必要としない起動が可能になる。
【0109】
本発明によれば、マイクロコントローラやシステムLSIにおけるSDRAMなどの主記憶、オンチップメモリ、またはキャッシュメモリなどのランダムアクセス・メモリをブートアップメモリとして活用できるため、プログラムコードをNANDフラッシュのように安価なシーケンシャルアクセス・メモリデバイスに格納し、システムのコストを低減できる。特に、公知の装置に備えられているキャッシュメモリは、本発明の動作に必要なウエイト生成機能などを備えているため、このキャッシュメモリをブートアップメモリとして活用すれば、キャッシュメモリユニット内のメモリブロックをリセットアドレスに配置し、NANDフラッシュからブートコードを転送する手段を設けるだけで、本発明の構成を実現できる。
【図面の簡単な説明】
【図1】本発明による装置の第1の実施形態の構成を示すブロック図である。
【図2】本発明による装置の第2の実施形態の構成を示すブロック図である。
【図3】本発明による装置の第3の実施形態の構成を示すブロック図である。
【図4】本発明による装置の第4の実施形態の構成を示すブロック図である。
【図5】ブートROMを備えた従来の装置の構成を示すブロック図である。
【図6】図5の装置のブートアップ(起動)動作を示すフローチャートである。
【図7】従来の装置におけるキャッシュメモリユニットの動作を示す図である。
【図8】図4の装置におけるキャッシュメモリユニットの動作を示す図である。
【図9】非特許文献1に記載されている従来の装置を示す図である。
【符号の説明】
1 マイクロコントローラ
11 CPU
12 バス制御ユニット
13 ウエイト生成ユニット
14 ウエイト生成ユニット(キャッシュメモリユニット内)
20 主記憶/NANDフラッシュ制御ユニット
21 ブートROM
22 NANDフラッシュ
23 主記憶
24 オンチップメモリ
25 キャッシュメモリユニット
26 メモリブロック
29 NANDフラッシュ制御ユニット
Claims (19)
- CPUと、
少なくともリセット開放時においてリセットアドレスが割り当てられているランダムアクセス・メモリと、
ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリと、
リセット開放後、前記シーケンシャルアクセス・メモリに格納されたブートコードをシーケンシャルに前記ランダムアクセス・メモリに転送するブートコード転送ユニットと、
前記ブートコード転送ユニットによる転送の進捗に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行うウエイト生成ユニットと、
を備える装置。 - 前記ウエイト生成ユニットは、所定量のブートコードの転送が完了するまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う、請求項1に記載の装置。
- 前記ウエイト生成ユニットは、前記CPUの発行する命令フェッチのアドレスと、前記ブートコード転送ユニットが転送するアドレスを監視し、
前記CPUの発行する命令フェッチのアドレスが、前記ブートコード転送ユニットによる転送が完了していないブートコードのアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う請求項1に記載の装置。 - 前記ランダムアクセス・メモリは、前記CPUと同一のLSIパッケージに封じられているオンチップメモリである請求項1に記載の装置。
- 前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成されたメモリである請求項1に記載の装置。
- 前記ウエイト生成ユニットは、前記CPUと外部バスとを接続するバス制御ユニット内に設けられている、請求項1から4のいずれかに記載の装置。
- 前記シーケンシャルアクセス・メモリは、前記外部バスに接続されている請求項6に記載の装置。
- 前記シーケンシャルアクセス・メモリは、NAND型フラッシュメモリである請求項7に記載の装置。
- 前記ランダムアクセス・メモリは、前記外部バスとは異なるバスに接続されている請求項7または8に記載の装置。
- 前記シーケンシャルアクセス・メモリは、前記ブートコードに加え、装置の動作を制御するファームウェアを格納している請求項1から9のいずれかに記載の装置。
- 前記ランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記ランダムアクセス・メモリに転送する、請求項10に記載の装置。
- 前記シーケンシャルアクセス・メモリに格納されているブートコードは、
前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するローダーを含んでおり、
前記ウエイト生成ユニットは、前記ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う、請求項11に記載の装置。 - 前記シーケンシャルアクセス・メモリに格納されているブートコードは、
前記ファームウェアを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送するメインローダーと、
前記メインローダーを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送する初期ローダーと、
を含んでおり、
前記ウエイト生成ユニットは、前記初期ローダーが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う、請求項11に記載の装置。 - 前記ランダムアクセス・メモリは、前記CPUのキャッシュメモリとして使用するように構成された第1のランダムアクセス・メモリであり、
前記シーケンシャルアクセス・メモリに格納されていたファームウェアを格納する第2のランダムアクセス・メモリを更に備えている、請求項7に記載の装置。 - 前記第1のランダムアクセス・メモリに転送されたブートコードを実行することにより、前記シーケンシャルアクセス・メモリに格納されていたファームウェアを前記第2のランダムアクセス・メモリを転送する、請求項14に記載の装置。
- CPUと、リセットアドレスに配置されたランダムアクセス・メモリと、ブートコードを格納した不揮発性のシーケンシャルアクセス・メモリとを備えた装置の起動方法であって、
前記シーケンシャルアクセス・メモリに格納されたブートコードを前記ランダムアクセス・メモリに転送するとき、前記ブートコードの転送の進捗状況に従い、前記CPUのリセットアドレスへの命令フェッチに対するウエイト挿入を行うとともに、必要に応じて他の命令フェッチに対してもウエイト挿入を行う起動方法。 - 前記シーケンシャルアクセス・メモリに格納された所定量のブートコードが前記ランダムアクセス・メモリに転送されるまで、前記CPUのリセットアドレスへの命令フェッチに対してウエイト挿入を行う、請求項16に記載の起動方法。
- 前記CPUの発行する命令フェッチのアドレスが、前記ブートコードのうち、転送の完了していない部分のアドレスである場合に、前記アドレスのブートコードの転送が完了するまで、前記CPUに対してウエイト挿入を行う請求項17に記載の起動方法。
- 前記ブートコードを前記シーケンシャルアクセス・メモリから前記ランダムアクセス・メモリに転送した後、前記シーケンシャルアクセス・メモリに格納されているファームウェアを前記ランダムアクセス・メモリまたは他のランダムアクセス・メモリに転送する請求項16から18のいずれかに記載の起動方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003172334A JP2005010942A (ja) | 2003-06-17 | 2003-06-17 | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003172334A JP2005010942A (ja) | 2003-06-17 | 2003-06-17 | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005010942A true JP2005010942A (ja) | 2005-01-13 |
Family
ID=34096521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003172334A Pending JP2005010942A (ja) | 2003-06-17 | 2003-06-17 | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005010942A (ja) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006277395A (ja) * | 2005-03-29 | 2006-10-12 | Matsushita Electric Ind Co Ltd | 情報処理装置及び情報処理方法 |
JP2007183961A (ja) * | 2005-12-28 | 2007-07-19 | Silicon Storage Technology Inc | ハードディスクドライブキャッシュメモリ及び再生デバイス |
JP2007183962A (ja) * | 2005-12-28 | 2007-07-19 | Silicon Storage Technology Inc | 一体型メモリ及びコントローラ |
KR20070095136A (ko) * | 2006-03-20 | 2007-09-28 | 엘지전자 주식회사 | 프로그램이 가능한 부팅 지원 장치 및 방법 |
JP2007264978A (ja) * | 2006-03-28 | 2007-10-11 | Brother Ind Ltd | 情報処理装置、及びその起動方法 |
KR100799687B1 (ko) | 2006-09-19 | 2008-02-01 | 삼성전자주식회사 | 비휘발성 메모리를 공유하는 두 개 이상의 콘트롤러를내장한 시스템 |
JP2008530683A (ja) * | 2005-02-11 | 2008-08-07 | サンディスク アイエル リミテッド | Nandフラッシュメモリ・システム・アーキテクチャ |
US7573744B2 (en) | 2006-09-29 | 2009-08-11 | Kabushiki Kaisha Toshiba | Semiconductor memory device having different capacity areas |
JP2011011073A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011074A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011075A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011076A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011024994A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011024992A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011024995A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011253288A (ja) * | 2010-06-01 | 2011-12-15 | Ricoh Co Ltd | 情報処理装置 |
US8171279B2 (en) | 2007-09-28 | 2012-05-01 | Samsung Electronics Co., Ltd. | Multi processor system having direct access boot and direct access boot method thereof |
US8345295B2 (en) | 2005-10-10 | 2013-01-01 | Samsung Electronics Co., Ltd. | Device and method for controlling initialization of image forming apparatus using NAND flash memory |
US8904088B2 (en) | 2008-09-30 | 2014-12-02 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
JP2014223510A (ja) * | 2014-07-24 | 2014-12-04 | 株式会社三洋物産 | 遊技機 |
JP2015062805A (ja) * | 2015-01-14 | 2015-04-09 | 株式会社三洋物産 | 遊技機 |
US9158475B2 (en) | 2009-05-22 | 2015-10-13 | Samsung Electronics Co., Ltd. | Memory apparatus and method therefor |
JP2015191606A (ja) * | 2014-03-28 | 2015-11-02 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
KR101573722B1 (ko) | 2009-04-20 | 2015-12-03 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템 |
WO2016171308A1 (ko) * | 2015-04-21 | 2016-10-27 | 엘지전자 주식회사 | 이동 단말기 및 그 제어 방법 |
-
2003
- 2003-06-17 JP JP2003172334A patent/JP2005010942A/ja active Pending
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008530683A (ja) * | 2005-02-11 | 2008-08-07 | サンディスク アイエル リミテッド | Nandフラッシュメモリ・システム・アーキテクチャ |
JP2006277395A (ja) * | 2005-03-29 | 2006-10-12 | Matsushita Electric Ind Co Ltd | 情報処理装置及び情報処理方法 |
US8836989B2 (en) | 2005-10-10 | 2014-09-16 | Samsung Electronics Co., Ltd. | Device and method for controlling initialization of image forming apparatus using NAND flash memory |
US8345295B2 (en) | 2005-10-10 | 2013-01-01 | Samsung Electronics Co., Ltd. | Device and method for controlling initialization of image forming apparatus using NAND flash memory |
JP2007183961A (ja) * | 2005-12-28 | 2007-07-19 | Silicon Storage Technology Inc | ハードディスクドライブキャッシュメモリ及び再生デバイス |
JP2007183962A (ja) * | 2005-12-28 | 2007-07-19 | Silicon Storage Technology Inc | 一体型メモリ及びコントローラ |
KR20070095136A (ko) * | 2006-03-20 | 2007-09-28 | 엘지전자 주식회사 | 프로그램이 가능한 부팅 지원 장치 및 방법 |
JP2007264978A (ja) * | 2006-03-28 | 2007-10-11 | Brother Ind Ltd | 情報処理装置、及びその起動方法 |
KR100799687B1 (ko) | 2006-09-19 | 2008-02-01 | 삼성전자주식회사 | 비휘발성 메모리를 공유하는 두 개 이상의 콘트롤러를내장한 시스템 |
US7913073B2 (en) | 2006-09-19 | 2011-03-22 | Samsung Electronics Co., Ltd. | System embedding plural controller sharing nonvolatile memory |
US7573744B2 (en) | 2006-09-29 | 2009-08-11 | Kabushiki Kaisha Toshiba | Semiconductor memory device having different capacity areas |
US8171279B2 (en) | 2007-09-28 | 2012-05-01 | Samsung Electronics Co., Ltd. | Multi processor system having direct access boot and direct access boot method thereof |
US9542199B2 (en) | 2008-09-30 | 2017-01-10 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
US8904088B2 (en) | 2008-09-30 | 2014-12-02 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
KR101573722B1 (ko) | 2009-04-20 | 2015-12-03 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템 |
US9158475B2 (en) | 2009-05-22 | 2015-10-13 | Samsung Electronics Co., Ltd. | Memory apparatus and method therefor |
JP2011024995A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011024992A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011024994A (ja) * | 2009-06-30 | 2011-02-10 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2014223508A (ja) * | 2009-06-30 | 2014-12-04 | 株式会社三洋物産 | 遊技機 |
JP2015062804A (ja) * | 2009-06-30 | 2015-04-09 | 株式会社三洋物産 | 遊技機 |
JP2011253288A (ja) * | 2010-06-01 | 2011-12-15 | Ricoh Co Ltd | 情報処理装置 |
JP2011011076A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011073A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011074A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2011011075A (ja) * | 2010-09-29 | 2011-01-20 | Sanyo Product Co Ltd | スロットマシン及び遊技機 |
JP2015191606A (ja) * | 2014-03-28 | 2015-11-02 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
JP2014223510A (ja) * | 2014-07-24 | 2014-12-04 | 株式会社三洋物産 | 遊技機 |
JP2015062805A (ja) * | 2015-01-14 | 2015-04-09 | 株式会社三洋物産 | 遊技機 |
WO2016171308A1 (ko) * | 2015-04-21 | 2016-10-27 | 엘지전자 주식회사 | 이동 단말기 및 그 제어 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005010942A (ja) | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 | |
US5951685A (en) | Computer system with system ROM including serial-access PROM coupled to an auto-configuring memory controller and method of shadowing BIOS code from PROM | |
JP5119686B2 (ja) | 情報処理装置および設定方法 | |
EP1343082B1 (en) | System boot using nand flash memory and method thereof | |
JP5783809B2 (ja) | 情報処理装置、起動方法およびプログラム | |
JP2007206885A (ja) | コンピュータシステム及びシステム起動方法 | |
JP2007183961A (ja) | ハードディスクドライブキャッシュメモリ及び再生デバイス | |
JP2010500682A (ja) | フラッシュメモリアクセス回路 | |
US20090006835A1 (en) | Electronic device and control method thereof | |
JP2005250975A (ja) | 情報処理装置とデバイスドライバのロード方法並びにプログラム | |
JP2005536798A (ja) | メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
WO2011068986A1 (en) | Pre-memory resource contention resolution | |
JP5035227B2 (ja) | 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム | |
JP2008269094A (ja) | 情報処理装置、情報処理装置の最適化方法、プログラム | |
JP3694005B2 (ja) | デジタル信号処理装置及びデジタル信号処理方法 | |
JP2011113257A (ja) | 情報処理装置及び情報処理装置の起動方法 | |
JP2008065725A (ja) | Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法 | |
KR101249831B1 (ko) | 컴퓨터 시스템 및 그 부팅 방법 | |
JP2007102544A (ja) | デジタルシグナルプロセッサシステムおよびそのブート方法。 | |
JP2008015725A (ja) | 情報処理装置およびプログラム起動方法 | |
WO2007049423A1 (ja) | コンピュータシステム、及びそれにおける基本プログラムの起動方法 | |
JP2009217336A (ja) | 計算機システム、ネットワークブートロードシステム、及び、そのブートロード方法 | |
JP2005258967A (ja) | データ処理装置 | |
JP2001297006A (ja) | 半導体集積回路装置および情報処理システム |