(57)【要約】  内蔵ＲＯＭの初期ブートプログラムの不具合発生時にマスク修正をすることなく、初期ブートプログラムの修正を可能にするバスコントローラであって、外部端子（６）からの起動モード情報から初期ブートプログラム（３１）の一部の差し替えの要否を判定する起動モード確認回路（３２）と、必要と判定された場合に、外部メモリからのパッチコード（４２）の転送を制御するパッチコード転送シーケンサ（３３）と、転送された前記パッチコードを格納するパッチコードバッファ（３４）と、前記パッチコードに含まれる情報から差し替えが必要な前記初期ブートプログラムのＲＯＭにおけるアドレスを検出し、プロセッサ（２）が前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスを前記パッチコードバッファに発行することで、初期ブートプログラムの差し替えを行うバッファ・内蔵ＲＯＭアクセス制御回路（３５）とを備える。
2010073444.tif 000002
【特許請求の範囲】
【請求項１】
システムＬＳＩに内蔵されているプロセッサが前記システムＬＳＩに内蔵されているＲｅａｄ  Ｏｎｌｙ  ＭｅｍｏｒｙであるＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有する前記システムＬＳＩに搭載されるバスコントローラであって、
前記システムＬＳＩの外部端子の状態により設定される起動モード情報から、前記初期ブートプログラムの一部の差し替えの要否を判定する起動モード確認回路と、
前記起動モード確認回路において前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスからの、差し替え用プログラムを含むパッチコードの転送を制御するパッチコード転送シーケンサと、
前記パッチコード転送シーケンサにより転送された前記パッチコードを格納するパッチコードバッファと、
前記パッチコードに含まれる情報から差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスの差し替えアクセスとして、前記パッチコードバッファへのアクセスを発行することで、前記初期ブートプログラムの差し替えを行うアクセス制御回路と
を備えるバスコントローラ。
【請求項２】
前記パッチコードには、当該パッチコードの転送サイズを示す転送サイズ情報が含まれ、
前記パッチコード転送シーケンサは、前記パッチコードの転送サイズ情報を参照することで前記パッチコードの転送サイズを判定する機能を備えており、前記パッチコードに格納された転送サイズ情報によって前記初期ブートプログラムの差し替え量に応じた転送を行う
請求項１記載のバスコントローラ。
【請求項３】
前記パッチコードには、当該パッチコードの転送タイミングを示す転送タイミング情報が含まれ、
前記パッチコード転送シーケンサは、前記パッチコードの転送タイミング情報を参照することで前記パッチコードの転送タイミングを判定する機能を備えており、前記パッチコードバッファに格納するパッチコードを動的に更新する
請求項１または２記載のバスコントローラ。
【請求項４】
前記初期ブートプログラムには、前記パッチコード転送シーケンサを起動する命令が含まれ、
前記パッチコード転送シーケンサは、前記プロセッサからの起動指示を受け付けるインタフェース部を搭載しており、当該インタフェース部を介して前記プロセッサから起動指示を受けると、前記パッチコードの転送を開始する
請求項１〜３のいずれか１項に記載のバスコントローラ。
【請求項５】
前記アクセス制御回路は、転送された前記パッチコードの有効及び無効を判定する機能を備えており、転送された前記パッチコードのデータが有効を示す場合にのみ前記初期ブートプログラムの差し替えを行う
請求項１〜４のいずれか１項に記載のバスコントローラ。
【請求項６】
前記アクセス制御回路は、前記パッチコード転送シーケンサによる前記パッチコードの転送処理期間に起こる前記プロセッサからのアクセスに対して、転送処理期間中に前記プロセッサに対してループ命令の送信を行うことで、前記プロセッサに対してウェイト制御を発行する
請求項１〜５のいずれか１項に記載のバスコントローラ。
【請求項７】
システムＬＳＩに内蔵されているプロセッサが、前記システムＬＳＩに内蔵されているＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、前記初期ブートプログラムを差し替えを行うパッチ方法であって、
前記初期ブートプログラムの一部の差し替えの要否を判定し、
前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスから、差し替え用プログラムを含むパッチコードを読み出してパッチコードバッファに転送し、
前記パッチコードに含まれる情報から、差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスの差し替えアクセスとして、前記パッチコードバッファへのアクセスを発行することで、前記初期ブートプログラムの差し替えを行う
初期ブートプログラムのパッチ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩに搭載されるバスコントローラに関し、特に、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、初期ブートプログラムに対してパッチを適用する方法及び装置に関する。
【背景技術】
【０００２】
従来、システムを制御するメインプログラムやメインプログラムにより参照されるＲＯＭに実装されたプログラムで制御されているシステムがある。それらのプログラムに不具合が発生した場合の対応方法として、そのようなプログラムの差し替えを実施する場合は、差し替えが必要なプログラム領域へのアクセスを行わないようにプロセッサのアクセスアドレスをジャンプし、ジャンプ先に新規プログラムを実装するというパッチ適用プログラムをメインプログラムに対して追加実装することで、プロセッサが実行するプログラムの差し替えを実施している（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−６３３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、近年、外部メモリをメインプログラム用のフラッシュだけにすることによるコスト競争力強化を目的に、システムの初期ブートプログラムをシステムＬＳＩに内蔵されたＲＯＭに搭載し、システム初期ブート時においてはプロセッサが内蔵ＲＯＭに搭載された初期ブートプログラムからブートする内蔵ＲＯＭブートモードを備えたシステムＬＳＩ開発が求められている。しかしながら、この初期ブートプログラムはメインプログラム実行前に処理されることと、ＲＯＭに焼きこまれたプログラムである為に、不具合が発覚した場合にその後のパッチ適用による回避が不可能であり、不具合発生時にはマスク修正が必須となり、修正コストをはじめとする事業インパクトが非常に大きい。【０００５】
本発明は、このような事情に鑑みてなされたものであり、内蔵ＲＯＭブートモードを有するシステムＬＳＩに搭載されるバスコントローラであって、システムＬＳＩに内蔵された初期ブートプログラムの修正を可能にするバスコントローラ等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係るバスコントローラは、システムＬＳＩに内蔵されているプロセッサが前記システムＬＳＩに内蔵されているＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有する前記システムＬＳＩに搭載されるバスコントローラであって、前記システムＬＳＩの外部端子の状態により設定される起動モード情報から、前記初期ブートプログラムの一部の差し替えの要否を判定する起動モード確認回路と、前記起動モード確認回路において前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスからのパッチコードの転送を制御するパッチコード転送シーケンサと、前記パッチコード転送シーケンサにより転送された前記パッチコードを格納するパッチコードバッファと、前記パッチコードに含まれる情報から差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスを前記パッチコードバッファに発行することで、前記初期ブートプログラムの差し替えを行うアクセス制御回路を備えることを特徴とする。これにより、初期ブートプログラムにおける不具合箇所は、外部メモリからバスコントローラに取り込まれたパッチプログラムに置き換えられて実行されるので、内蔵ＲＯＭブートモードを有するシステムＬＳＩであっても、その内蔵ＲＯＭのマスク修正を行うことなく、初期ブートプログラムに対してパッチを適用することが可能になる。【０００７】
また、前記パッチコードには、当該パッチコードの転送サイズを示す転送サイズ情報が含まれ、前記パッチコード転送シーケンサは、前記パッチコードの転送サイズ情報を参照することで前記パッチコードの転送サイズを判定する機能を備えており、前記パッチコードに格納された転送サイズ情報によって前記初期ブートプログラムの差し替え量に応じた転送を行う構成であってもよい。これにより、転送サイズ情報によって前記内蔵ＲＯＭプログラムの差し替え量に応じた転送が行われ、不要な転送時間が削減される。【０００８】
また、前記パッチコードには、当該パッチコードの転送タイミングを示す転送タイミング情報が含まれ、前記パッチコード転送シーケンサは、前記パッチコードの転送タイミング情報を参照することで前記パッチコードの転送タイミングを判定する機能を備えており、前記パッチコードバッファに格納するパッチコードを動的に更新する構成であってもよい。これにより、前記パッチコードバッファに格納するデータが動的に更新され、前記パッチコードバッファの小容量化、不要な転送時間が削減される。【０００９】
また、前記初期ブートプログラムには、前記パッチコード転送シーケンサを起動する命令が含まれ、前記パッチコード転送シーケンサは、前記プロセッサによる制御でも起動可能なインタフェース（Ｉ／Ｆ）を搭載しており、当該Ｉ／Ｆを介して前記プロセッサから起動指示を受けると、前記パッチコードの転送を開始する構成であってもよい。これにより、起動モードの確認無しで内蔵ＲＯＭデータの差し替えが実現される。【００１０】
また、前記アクセス制御回路は、転送された前記パッチコードの有効及び無効を判定する機能を備えており、転送された前記パッチコードのデータが有効を示す場合にのみ前記初期ブートプログラムの差し替えを行う構成であってもよい。これにより、外部端子によるパッチコード有無の判定が不要となる。【００１１】
また、前記アクセス制御回路は、前記パッチコード転送シーケンサによる前記パッチコードの転送処理期間に起こる前記プロセッサからのアクセスに対して、転送処理期間中に前記プロセッサに対してループ命令の送信を行うことで、前記プロセッサに対してウェイト制御を発行する構成であってもよい。これにより、パッチコード転送処理期間において、プロセッサに対して安全にウェイト制御を発行することでタイムアウトの発生が回避される。【００１２】
なお、本発明は、バスコントローラとして実現できるだけでなく、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおける初期ブートプログラムのパッチ方法として実現することもできる。
【発明の効果】
【００１３】
本発明に係るバスコントローラを搭載することで、従来のパッチ処理のメイン手法であるメインプログラムでの不具合回避が不可能だったシステムＬＳＩに内蔵されたＲＯＭに搭載されているシステムの初期ブートプログラムをマスク修正無しという低コストで修正できる。つまり、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、マスク修正をすることなく、初期ブートプログラムに対してパッチを適用することができる。さらに初期ブートプログラムに機能追加をする目的にも適用できる技術である為、同一のシステムＬＳＩの製品としての長寿命化にもつながる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態におけるバスコントローラの構成の一例を示すブロック図である。
【図２】図２は、本発明の実施の形態におけるバスコントローラの動作の一例を示すタイミングチャートである。
【図３】図３は、パッチコードのデータ構造例を示す図である。
【図４】図４は、本発明のバスコントローラの拡張機能である転送サイズ解析の動作の一例を示すタイミングチャートである。
【図５】図５は、パッチコードの別のデータ構造例を示す図である。
【図６】図６は、本発明のバスコントローラの拡張機能である転送タイミング解析の動作の一例を示すタイミングチャートである。
【図７】図７（ａ）は、パッチコードの別のデータ構造例を示す図であり、図７（ｂ）は、そのパッチコードを用いた本発明に係るバスコントローラの動作例を示すフローチャートである。
【図８】図８は、初期ブートプログラムに含まれる命令列の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について説明する。
【００１６】
図１は、本発明の実施の形態におけるバスコントローラ３を搭載するシステムＬＳＩ１を用いたシステム構成の一例を示すブロック図である。図１を用いて本発明に係るバスコントローラ３の概略構成及び動作について説明する。
【００１７】
本発明に係るバスコントローラ３を搭載したシステムＬＳＩ１を用いたシステム構成例と起動シーケンスの概要について説明する。この例に示されるシステムＬＳＩ１は、システムＬＳＩ１全体を制御するプロセッサ２と本発明に係るバスコントローラ３を搭載している。バスコントローラ３は、システムＬＳＩ１に内蔵されているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に実装されている初期ブートプログラム３１から起動するモードである内蔵ＲＯＭブートモードを有するシステムＬＳＩ１に搭載されるバスコントローラであり、内蔵ＲＯＭに格納された初期ブートプログラム３１を含む従来のバスコントローラに加えて、起動モード確認回路３２とパッチコード転送シーケンサ３３とパッチコードバッファ３４とバッファ・内蔵ＲＯＭアクセス制御回路３５が追加された構成を備える。本発明の実施の形態におけるバスコントローラ３を搭載するシステムＬＳＩ１を用いたシステムとして、メインプログラム４１を格納した外部ＦＬＡＳＨメモリ４とメインメモリ５を接続したシステムがある。システムの起動の流れとしては、リセットが解除されると、まずプロセッサ２は内蔵ＲＯＭに搭載された初期ブートプログラム３１を実行し、メインプログラム４１をメインメモリ５に転送する。その後プロセッサ２はメインメモリ５に転送されたメインプログラムを実行することでシステム全体を制御するというものである。
【００１８】
本発明に係るバスコントローラ３が備える構成要素について説明する。
【００１９】
起動モード確認回路３２は、システムＬＳＩ１の外部端子６の状態により設定される起動モード情報から、初期ブートプログラム３１の一部の差し替えの要否を判定する。起動モード確認回路３２が、初期ブートプログラム３１の一部差し替えが必要と判定した場合には、起動モード確認回路３２は外部ＦＬＡＳＨメモリ４の特定領域にある、差し替え用プログラムを含むパッチコード４２をパッチコードバッファ３４に転送する為の起動信号を、パッチコード転送シーケンサ３３に送信する。
【００２０】
パッチコード転送シーケンサ３３は起動モード確認回路３２からの起動信号（つまり、パッチコード転送要求）を受け、プロセッサ２の起動前に外部ＦＬＡＳＨメモリ４の特定領域にあるパッチコード４２を取得し、パッチコード４２のヘッダを解析し、プログラムをパッチコードバッファ３４に転送する。パッチコード４２の転送期間中は、このパッチコード転送シーケンサ３３は、プロセッサ２に対してループ命令の送信を行うことでプロセッサ２に対してウェイト制御を発行する。具体的には、パッチコード４２の転送期間中は、このパッチコード転送シーケンサ３３は、プロセッサ２に対してはウェイト、ループ命令の送信により、プロセッサがハング（あるいは、タイムアウト）することが無いような挙動をとるようにバッファ・内蔵ＲＯＭアクセス制御回路３５にアクセスウェイト要求を通知し、転送が完了するとプロセッサ２による初期ブートプログラム３１へのアクセスを許可する。パッチコード４２が格納されているアドレスはパッチコード転送シーケンサ３３の実装時の取り決めにより規定される。初期ブートプログラム３１からパッチコード４２への差し替えが適用される初期ブートプログラムのアドレスは、パッチコード４２のヘッダ部として付与されているアドレス情報により規定される。パッチコード転送シーケンサ３３は、アドレス情報を含むヘッダ部を含むパッチコード４２をプログラム部とヘッダ部に分離する。プログラム部はパッチコードバッファ３４に格納される。ヘッダ部については、パッチコード転送シーケンサ３３が制御情報として保持し、ヘッダ部にあるアドレス情報を、バッファ・内蔵ＲＯＭアクセス制御回路３５に、パッチコードバッファ３４への差し替えアクセスの為のアドレス情報として送る。
【００２１】
パッチコードバッファ３４はパッチコード４２のプログラム部が格納されるバッファである。パッチコード転送シーケンサ３３によりパッチコード４２のプログラム部が格納される。格納されたパッチコード４２のプログラム部はバッファ・内蔵ＲＯＭアクセス制御回路３５のアクセス判定に基づき、プロセッサ２によりアクセスされる。
【００２２】
バッファ・内蔵ＲＯＭアクセス制御回路３５はパッチコード転送シーケンサ３３からの差し替えアクセスの為のアドレス情報を元にプロセッサ２からのアクセスを解析し、プロセッサ２からのアクセスがパッチ適用アドレスにヒットする場合は差し替えアクセスとしてパッチコードバッファ３４へのアクセスを発行し、パッチ適用アドレスにヒットしない場合は初期ブートプログラム３１へのアクセスを発行する。また、パッチコード転送シーケンサ３３によるパッチコード４２の転送期間中に送信されるアクセスウェイト要求を検出し、アクセスウェイト要求がある期間はプロセッサ２に対してウェイト・ループ命令を送信する。
【００２３】
以上の一連の動作を、図２を用いて説明する。Ｔ０からＴ１までの期間はシステムＬＳＩ１にリセットがかかっている状態である。その期間にパッチコード有を意味する情報が外部端子６に設定される。リセット解除タイミングであるＴ１の直後にパッチコード有を示す情報が起動モード確認回路３２に伝達され、その後Ｔ２のタイミングでパッチコード転送シーケンサ３３が起動される。起動されたパッチコード転送シーケンサ３３は外部ＦＬＡＳＨメモリ４に格納されたパッチコード４２を随時取得し、パッチアドレスを含むヘッダ解析とプログラムのパッチコードバッファ３４への格納をＴ３までの期間行う。その間、リセット解除されたプロセッサ２は初期ブートプログラム３１のフェッチの為にアドレスＡ０に対するアクセスを発行するが、バッファ・内蔵ＲＯＭアクセス制御回路３５がプロセッサに対してウェイト・ループ処理を意味する命令を発行することによりプロセッサ２はアドレスＡ０へのアクセスを繰り返す。パッチコード転送シーケンサ３３はＴ３のタイミングでパッチコード４２からのパッチアドレスの取得とプログラムのパッチコードバッファ３４への格納を終え、バッファ・内蔵ＲＯＭアクセス制御回路３５にパッチアドレスと転送完了を通知する。パッチコード４２の転送完了を通知されたバッファ・内蔵ＲＯＭアクセス制御回路３５は、プロセッサ２に対するウェイト・ループ処理を終了し、プロセッサ２からのアクセスアドレスと、パッチコード転送シーケンサ３３から提示されるパッチアドレスの比較を元に、プロセッサ２のアクセスを初期ブートプログラム３１またはパッチコードバッファ３４のいずれかに切り替える。以上のようなシーケンスにより、初期ブートプログラム３１に対するパッチ適用（差し替え）が実現される。
【００２４】
次に、本実施の形態におけるバスコントローラ３が備える付加的な機能について説明する。
【００２５】
パッチコード転送シーケンサ３３は転送するパッチコードサイズを判定する機能を備えていてもよい。この場合には、図３に示されるように、ヘッダ部４２ａとプログラム部４２ｂとからなるパッチコード４２のヘッダ部４２ａとして、パッチアドレス（上述のアドレス情報（パッチ適用アドレス））だけでなく、パッチコードサイズを規定する情報（転送サイズ情報；図中の「パッチコードサイズ」）を予め付与しておく。パッチコード転送シーケンサ３３がそのパッチコードサイズ情報を検出し、必要最小限のパッチコードをパッチコードバッファ３４に転送するという動作モードを備えている。この動作モードを備えることにより、パッチコードとして必要なデータ転送のみを行うことが可能となり、パッチ適用に不要である余分なデータ転送をさせる必要が無くなるため、システムの起動時間の短縮につながる。図２におけるＴ２からＴ３の期間がパッチコード転送時間であるが、図４に示す通り、パッチコード取得時にパッチコードのサイズ情報を取得し、必要なサイズのデータ転送を行うことで、固定サイズ転送時はＴ３のタイミングであったパッチコード転送完了時間をＴ３'に短縮することが可能である。
【００２６】
また、パッチコード転送シーケンサ３３はパッチコード４２の転送タイミングを判定し、自発的にパッチコード４２の転送を開始する機能を備えていてもよい。ここでパッチコード４２には初期ブートプログラム３１の複数個所に対するプログラムの置き換え、または複数の機能追加のプログラムが複数格納されていることを想定している。この場合には、図５に示されるように、パッチコード４２のヘッダ部４２ａには、パッチコード４２の転送タイミングを示す転送タイミング情報として、パッチコード４２に含まれるそれら複数の機能のプログラムＡ、Ｂ、Ｃ（図中の「パッチコードＡ、パッチコードＢ、パッチコードＣ」）のパッチアドレスＰＡ−Ａ、ＰＡ−Ｂ、ＰＡ−Ｃと、パッチコードサイズＰＳ−Ａ、ＰＳ−Ｂ、ＰＳ−Ｃと、パッチコード転送開始アドレスＰＴ−Ａ、ＰＴ−Ｂ、ＰＴ−Ｃ、パッチコードＦＬＡＳＨ内部アドレスＰＦ−Ａ、ＰＦ−Ｂ、ＰＦ−Ｃが含まれている。まずパッチコード転送シーケンサ３３はヘッダ情報を解析し、パッチアドレス、パッチコードサイズ、パッチコード転送開始アドレスを取得し、パッチアドレスに加えてパッチコード転送開始アドレス情報をバッファ・内蔵ＲＯＭアクセス制御回路３５に通知する。パッチコード転送開始アドレスは、プロセッサ２からのアクセスが、パッチコード転送開始アドレスが示すアドレスに達した場合にパッチコードの転送を開始する為に用いる。パッチコード転送開始アドレスを通知されたバッファ・内蔵ＲＯＭアクセス制御回路３５は、プロセッサ２からのアクセスアドレスがパッチコード転送開始アドレスにヒットした場合に、ウェイト・ループ処理に入る。その上でパッチコード転送シーケンサ３３にヒットしたアドレス情報と共にパッチコード転送起動要求を送る。アドレス情報とパッチコード転送起動要求を受けたパッチコード転送シーケンサ３３は該当するパッチコードとしてパッチコードＦＬＡＳＨ内部アドレスからパッチコードサイズ分のパッチコードを転送する。
【００２７】
図６が上記のような転送タイミング解析の動作の一例を示すタイミングチャートである。Ｔ２のタイミングで起動されたパッチコード転送シーケンサ３３はパッチコード４２のヘッダ部４２ａの転送のみを行い、パッチコード４２のヘッダ部４２ａに含まれる転送タイミング情報を取得する。その後Ｔ４のタイミングでプロセッサ２のアクセスアドレスとパッチコード転送開始アドレスが一致し、バッファ・内蔵ＲＯＭアクセス制御回路３５はプロセッサ２に対してウェイト・ループ処理に入り、パッチコード転送シーケンサ３３を起動する。パッチコード転送シーケンサ３３はプロセッサ２のアクセスアドレスとパッチコード転送開始アドレスと起動要求に基づくパッチコードＡのパッチコードバッファ３４への転送をＴ５のタイミングで完了することでバッファ・内蔵ＲＯＭアクセス制御回路３５にパッチアドレスを提示し、パッチコードの適用を行う。その後Ｔ６のタイミングで第２のパッチコード転送開始アドレスに到達すると再びバッファ・内蔵ＲＯＭアクセス制御回路３５はウェイト・ループ処理に移り、パッチコード転送シーケンサ３３がパッチコードＢの転送を行い、以下同様にパッチコードの適用を行う。このモードを備えることで小容量のパッチコードバッファでの複数のパッチ適用が可能となる。また、システムＬＳＩ１のある一部のモード使用時にしか必要の無いパッチコードがある場合等、必要な場合にのみパッチコードの転送を行うという動作になる為、パッチコードの転送を一括で行う場合に比べてデータ転送時間の短縮が可能である。
【００２８】
また、パッチコード転送シーケンサ３３はそれぞれのパッチコードの有効及び無効を判定する機能を備えていてもよい。この場合には、図７（ａ）のパッチコード４２のデータ構造図に示されるように、パッチコード４２のヘッダ部４２ａにはそれぞれのパッチコードの有効／無効を示すフラグを含ませておく。パッチコード転送シーケンサ３３がパッチコードの無効を示すフラグを検出した場合は、パッチコード転送シーケンサ３３は、バッファ・内蔵ＲＯＭアクセス制御回路３５に対して、該当するパッチアドレスを提示しない。つまり、図７（ｂ）に示されるフローチャートのように、転送された前記パッチコードのデータが有効を示す場合にのみ（Ｓ１）、前記初期ブートプログラムの差し替えを行う（Ｓ２）モードを備えることで外部端子６によるパッチコード有無の判定が不要となるので、外部端子６の割り当てや判定回路の削減が可能である。但し、パッチコード無の場合にもパッチコード転送が必ず発生する。
【００２９】
また、パッチコード転送シーケンサ３３はプロセッサ２からの起動が可能なインタフェース（Ｉ／Ｆ）部を備えていてもよい。つまり、パッチコード転送シーケンサ３３は、プロセッサ２からの起動指示を受け付けるＩ／Ｆ部を搭載しており、当該Ｉ／Ｆ部を介してプロセッサ２から起動指示を受けると、パッチコードの転送を開始してもよい。このモード（Ｉ／Ｆ部）を備えて、かつ、図８に示されるように、初期ブートプログラム３１にパッチコード転送シーケンサ３３の起動命令３１ａを搭載することで、外部端子６によるパッチコード有無の判定が不要となるので、外部端子６の割り当てや判定回路の削減が可能である。但し、パッチコード無の場合にもパッチコード転送が必ず発生する。
【００３０】
以上、本発明に係るバスコントローラについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。たとえば、上述したバスコントローラパッチが備える付加的な機能、つまり、コードの転送サイズの判定、パッチコードの転送タイミングの判定、プロセッサからの起動が可能なＩ／Ｆ、パッチコードの有効及び無効の判定等は、全てが実装されてもよいし、任意の組み合わせで実装されてもよい。
【００３１】
また、本実施の形態では、バスコントローラ３は、初期ブートプログラム３１を格納した内蔵ＲＯＭを備えていたが、そのような内蔵ＲＯＭは、システムＬＳＩ１に内蔵されていればよく、必ずしも、バスコントローラ３に内蔵されている必要はない。
【産業上の利用可能性】
【００３２】
本発明にかかるバスコントローラは、システムＬＳＩに搭載されるバスコントローラとして、特に、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、メインプログラムでのパッチ適用が不可能である初期ブートプログラムに対するパッチ適用が可能となる為、内蔵ＲＯＭブートモードを有するシステムＬＳＩ等に搭載されるバスコントローラとして、有用である。
【符号の説明】
【００３３】
１    システムＬＳＩ
２    プロセッサ
３    バスコントローラ
４    外部ＦＬＡＳＨメモリ
５    メインメモリ
６    外部端子
３１  初期ブートプログラム
３１ａ  パッチコード転送シーケンサ起動命令
３２  起動モード確認回路
３３  パッチコード転送シーケンサ
３４  パッチコードバッファ
３５  バッファ・内蔵ＲＯＭアクセス制御回路
４１  メインプログラム
４２  パッチコード
４２ａ  ヘッダ部
４２ｂ  プログラム部
【図１】
2010073444.tif 000003
【図２】
2010073444.tif 000004
【図３】
2010073444.tif 000005
【図４】
2010073444.tif 000006
【図５】
2010073444.tif 000007
【図６】
2010073444.tif 000008
【図７】
2010073444.tif 000009
【図８】
2010073444.tif 000010
【手続補正書】
【提出日】平成23年6月23日(2011.6.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩに搭載されるバスコントローラに関し、特に、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、初期ブートプログラムに対してパッチを適用する方法及び装置に関する。
【背景技術】
【０００２】
従来、システムを制御するメインプログラムやメインプログラムにより参照されるＲＯＭに実装されたプログラムで制御されているシステムがある。それらのプログラムに不具合が発生した場合の対応方法として、そのようなプログラムの差し替えを実施する場合は、差し替えが必要なプログラム領域へのアクセスを行わないようにプロセッサのアクセスアドレスをジャンプし、ジャンプ先に新規プログラムを実装するというパッチ適用プログラムをメインプログラムに対して追加実装することで、プロセッサが実行するプログラムの差し替えを実施している（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−６３３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、近年、外部メモリをメインプログラム用のフラッシュだけにすることによるコスト競争力強化を目的に、システムの初期ブートプログラムをシステムＬＳＩに内蔵されたＲＯＭに搭載し、システム初期ブート時においてはプロセッサが内蔵ＲＯＭに搭載された初期ブートプログラムからブートする内蔵ＲＯＭブートモードを備えたシステムＬＳＩ開発が求められている。しかしながら、この初期ブートプログラムはメインプログラム実行前に処理されることと、ＲＯＭに焼きこまれたプログラムである為に、不具合が発覚した場合にその後のパッチ適用による回避が不可能であり、不具合発生時にはマスク修正が必須となり、修正コストをはじめとする事業インパクトが非常に大きい。
【０００５】
本発明は、このような事情に鑑みてなされたものであり、内蔵ＲＯＭブートモードを有するシステムＬＳＩに搭載されるバスコントローラであって、システムＬＳＩに内蔵された初期ブートプログラムの修正を可能にするバスコントローラ等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係るバスコントローラは、システムＬＳＩに内蔵されているプロセッサが前記システムＬＳＩに内蔵されているＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有する前記システムＬＳＩに搭載されるバスコントローラであって、前記システムＬＳＩの外部端子の状態により設定される起動モード情報から、前記初期ブートプログラムの一部の差し替えの要否を判定する起動モード確認回路と、前記起動モード確認回路において前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスからのパッチコードの転送を制御するパッチコード転送シーケンサと、前記パッチコード転送シーケンサにより転送された前記パッチコードを格納するパッチコードバッファと、前記パッチコードに含まれる情報から差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスを前記パッチコードバッファに発行することで、前記初期ブートプログラムの差し替えを行うアクセス制御回路を備えることを特徴とする。これにより、初期ブートプログラムにおける不具合箇所は、外部メモリからバスコントローラに取り込まれたパッチプログラムに置き換えられて実行されるので、内蔵ＲＯＭブートモードを有するシステムＬＳＩであっても、その内蔵ＲＯＭのマスク修正を行うことなく、初期ブートプログラムに対してパッチを適用することが可能になる。
【０００７】
また、前記パッチコードには、当該パッチコードの転送サイズを示す転送サイズ情報が含まれ、前記パッチコード転送シーケンサは、前記パッチコードの転送サイズ情報を参照することで前記パッチコードの転送サイズを判定する機能を備えており、前記パッチコードに格納された転送サイズ情報によって前記初期ブートプログラムの差し替え量に応じた転送を行う構成であってもよい。これにより、転送サイズ情報によって前記内蔵ＲＯＭプログラムの差し替え量に応じた転送が行われ、不要な転送時間が削減される。
【０００８】
また、前記パッチコードには、当該パッチコードの転送タイミングを示す転送タイミング情報が含まれ、前記パッチコード転送シーケンサは、前記パッチコードの転送タイミング情報を参照することで前記パッチコードの転送タイミングを判定する機能を備えており、前記パッチコードバッファに格納するパッチコードを動的に更新する構成であってもよい。これにより、前記パッチコードバッファに格納するデータが動的に更新され、前記パッチコードバッファの小容量化、不要な転送時間が削減される。
【０００９】
また、前記初期ブートプログラムには、前記パッチコード転送シーケンサを起動する命令が含まれ、前記パッチコード転送シーケンサは、前記プロセッサによる制御でも起動可能なインタフェース（Ｉ／Ｆ）を搭載しており、当該Ｉ／Ｆを介して前記プロセッサから起動指示を受けると、前記パッチコードの転送を開始する構成であってもよい。これにより、起動モードの確認無しで内蔵ＲＯＭデータの差し替えが実現される。
【００１０】
また、前記アクセス制御回路は、転送された前記パッチコードの有効及び無効を判定する機能を備えており、転送された前記パッチコードのデータが有効を示す場合にのみ前記初期ブートプログラムの差し替えを行う構成であってもよい。これにより、外部端子によるパッチコード有無の判定が不要となる。
【００１１】
また、前記アクセス制御回路は、前記パッチコード転送シーケンサによる前記パッチコードの転送処理期間に起こる前記プロセッサからのアクセスに対して、転送処理期間中に前記プロセッサに対してループ命令の送信を行うことで、前記プロセッサに対してウェイト制御を発行する構成であってもよい。これにより、パッチコード転送処理期間において、プロセッサに対して安全にウェイト制御を発行することでタイムアウトの発生が回避される。
【００１２】
なお、本発明は、バスコントローラとして実現できるだけでなく、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおける初期ブートプログラムのパッチ方法として実現することもできる。
【発明の効果】
【００１３】
本発明に係るバスコントローラを搭載することで、従来のパッチ処理のメイン手法であるメインプログラムでの不具合回避が不可能だったシステムＬＳＩに内蔵されたＲＯＭに搭載されているシステムの初期ブートプログラムをマスク修正無しという低コストで修正できる。つまり、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、マスク修正をすることなく、初期ブートプログラムに対してパッチを適用することができる。さらに初期ブートプログラムに機能追加をする目的にも適用できる技術である為、同一のシステムＬＳＩの製品としての長寿命化にもつながる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態におけるバスコントローラの構成の一例を示すブロック図である。
【図２】図２は、本発明の実施の形態におけるバスコントローラの動作の一例を示すタイミングチャートである。
【図３】図３は、パッチコードのデータ構造例を示す図である。
【図４】図４は、本発明のバスコントローラの拡張機能である転送サイズ解析の動作の一例を示すタイミングチャートである。
【図５】図５は、パッチコードの別のデータ構造例を示す図である。
【図６】図６は、本発明のバスコントローラの拡張機能である転送タイミング解析の動作の一例を示すタイミングチャートである。
【図７】図７（ａ）は、パッチコードの別のデータ構造例を示す図であり、図７（ｂ）は、そのパッチコードを用いた本発明に係るバスコントローラの動作例を示すフローチャートである。
【図８】図８は、初期ブートプログラムに含まれる命令列の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について説明する。
【００１６】
図１は、本発明の実施の形態におけるバスコントローラ３を搭載するシステムＬＳＩ１を用いたシステム構成の一例を示すブロック図である。図１を用いて本発明に係るバスコントローラ３の概略構成及び動作について説明する。
【００１７】
本発明に係るバスコントローラ３を搭載したシステムＬＳＩ１を用いたシステム構成例と起動シーケンスの概要について説明する。この例に示されるシステムＬＳＩ１は、システムＬＳＩ１全体を制御するプロセッサ２と本発明に係るバスコントローラ３を搭載している。バスコントローラ３は、システムＬＳＩ１に内蔵されているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に実装されている初期ブートプログラム３１から起動するモードである内蔵ＲＯＭブートモードを有するシステムＬＳＩ１に搭載されるバスコントローラであり、内蔵ＲＯＭに格納された初期ブートプログラム３１を含む従来のバスコントローラに加えて、起動モード確認回路３２とパッチコード転送シーケンサ３３とパッチコードバッファ３４とバッファ・内蔵ＲＯＭアクセス制御回路３５が追加された構成を備える。本発明の実施の形態におけるバスコントローラ３を搭載するシステムＬＳＩ１を用いたシステムとして、メインプログラム４１を格納した外部ＦＬＡＳＨメモリ４とメインメモリ５を接続したシステムがある。システムの起動の流れとしては、リセットが解除されると、まずプロセッサ２は内蔵ＲＯＭに搭載された初期ブートプログラム３１を実行し、メインプログラム４１をメインメモリ５に転送する。その後プロセッサ２はメインメモリ５に転送されたメインプログラムを実行することでシステム全体を制御するというものである。
【００１８】
本発明に係るバスコントローラ３が備える構成要素について説明する。
【００１９】
起動モード確認回路３２は、システムＬＳＩ１の外部端子６の状態により設定される起動モード情報から、初期ブートプログラム３１の一部の差し替えの要否を判定する。起動モード確認回路３２が、初期ブートプログラム３１の一部差し替えが必要と判定した場合には、起動モード確認回路３２は外部ＦＬＡＳＨメモリ４の特定領域にある、差し替え用プログラムを含むパッチコード４２をパッチコードバッファ３４に転送する為の起動信号を、パッチコード転送シーケンサ３３に送信する。
【００２０】
パッチコード転送シーケンサ３３は起動モード確認回路３２からの起動信号（つまり、パッチコード転送要求）を受け、プロセッサ２の起動前に外部ＦＬＡＳＨメモリ４の特定領域にあるパッチコード４２を取得し、パッチコード４２のヘッダを解析し、プログラムをパッチコードバッファ３４に転送する。パッチコード４２の転送期間中は、このパッチコード転送シーケンサ３３は、プロセッサ２に対してループ命令の送信を行うことでプロセッサ２に対してウェイト制御を発行する。具体的には、パッチコード４２の転送期間中は、このパッチコード転送シーケンサ３３は、プロセッサ２に対してはウェイト、ループ命令の送信により、プロセッサがハング（あるいは、タイムアウト）することが無いような挙動をとるようにバッファ・内蔵ＲＯＭアクセス制御回路３５にアクセスウェイト要求を通知し、転送が完了するとプロセッサ２による初期ブートプログラム３１へのアクセスを許可する。パッチコード４２が格納されているアドレスはパッチコード転送シーケンサ３３の実装時の取り決めにより規定される。初期ブートプログラム３１からパッチコード４２への差し替えが適用される初期ブートプログラムのアドレスは、パッチコード４２のヘッダ部として付与されているアドレス情報により規定される。パッチコード転送シーケンサ３３は、アドレス情報を含むヘッダ部を含むパッチコード４２をプログラム部とヘッダ部に分離する。プログラム部はパッチコードバッファ３４に格納される。ヘッダ部については、パッチコード転送シーケンサ３３が制御情報として保持し、ヘッダ部にあるアドレス情報を、バッファ・内蔵ＲＯＭアクセス制御回路３５に、パッチコードバッファ３４への差し替えアクセスの為のアドレス情報として送る。
【００２１】
パッチコードバッファ３４はパッチコード４２のプログラム部が格納されるバッファである。パッチコード転送シーケンサ３３によりパッチコード４２のプログラム部が格納される。格納されたパッチコード４２のプログラム部はバッファ・内蔵ＲＯＭアクセス制御回路３５のアクセス判定に基づき、プロセッサ２によりアクセスされる。
【００２２】
バッファ・内蔵ＲＯＭアクセス制御回路３５はパッチコード転送シーケンサ３３からの差し替えアクセスの為のアドレス情報を元にプロセッサ２からのアクセスを解析し、プロセッサ２からのアクセスがパッチ適用アドレスにヒットする場合は差し替えアクセスとしてパッチコードバッファ３４へのアクセスを発行し、パッチ適用アドレスにヒットしない場合は初期ブートプログラム３１へのアクセスを発行する。また、パッチコード転送シーケンサ３３によるパッチコード４２の転送期間中に送信されるアクセスウェイト要求を検出し、アクセスウェイト要求がある期間はプロセッサ２に対してウェイト・ループ命令を送信する。
【００２３】
以上の一連の動作を、図２を用いて説明する。Ｔ０からＴ１までの期間はシステムＬＳＩ１にリセットがかかっている状態である。その期間にパッチコード有を意味する情報が外部端子６に設定される。リセット解除タイミングであるＴ１の直後にパッチコード有を示す情報が起動モード確認回路３２に伝達され、その後Ｔ２のタイミングでパッチコード転送シーケンサ３３が起動される。起動されたパッチコード転送シーケンサ３３は外部ＦＬＡＳＨメモリ４に格納されたパッチコード４２を随時取得し、パッチアドレスを含むヘッダ解析とプログラムのパッチコードバッファ３４への格納をＴ３までの期間行う。その間、リセット解除されたプロセッサ２は初期ブートプログラム３１のフェッチの為にアドレスＡ０に対するアクセスを発行するが、バッファ・内蔵ＲＯＭアクセス制御回路３５がプロセッサに対してウェイト・ループ処理を意味する命令を発行することによりプロセッサ２はアドレスＡ０へのアクセスを繰り返す。パッチコード転送シーケンサ３３はＴ３のタイミングでパッチコード４２からのパッチアドレスの取得とプログラムのパッチコードバッファ３４への格納を終え、バッファ・内蔵ＲＯＭアクセス制御回路３５にパッチアドレスと転送完了を通知する。パッチコード４２の転送完了を通知されたバッファ・内蔵ＲＯＭアクセス制御回路３５は、プロセッサ２に対するウェイト・ループ処理を終了し、プロセッサ２からのアクセスアドレスと、パッチコード転送シーケンサ３３から提示されるパッチアドレスの比較を元に、プロセッサ２のアクセスを初期ブートプログラム３１またはパッチコードバッファ３４のいずれかに切り替える。以上のようなシーケンスにより、初期ブートプログラム３１に対するパッチ適用（差し替え）が実現される。
【００２４】
次に、本実施の形態におけるバスコントローラ３が備える付加的な機能について説明する。
【００２５】
パッチコード転送シーケンサ３３は転送するパッチコードサイズを判定する機能を備えていてもよい。この場合には、図３に示されるように、ヘッダ部４２ａとプログラム部４２ｂとからなるパッチコード４２のヘッダ部４２ａとして、パッチアドレス（上述のアドレス情報（パッチ適用アドレス））だけでなく、パッチコードサイズを規定する情報（転送サイズ情報；図中の「パッチコードサイズ」）を予め付与しておく。パッチコード転送シーケンサ３３がそのパッチコードサイズ情報を検出し、必要最小限のパッチコードをパッチコードバッファ３４に転送するという動作モードを備えている。この動作モードを備えることにより、パッチコードとして必要なデータ転送のみを行うことが可能となり、パッチ適用に不要である余分なデータ転送をさせる必要が無くなるため、システムの起動時間の短縮につながる。図２におけるＴ２からＴ３の期間がパッチコード転送時間であるが、図４に示す通り、パッチコード取得時にパッチコードのサイズ情報を取得し、必要なサイズのデータ転送を行うことで、固定サイズ転送時はＴ３のタイミングであったパッチコード転送完了時間をＴ３'に短縮することが可能である。
【００２６】
また、パッチコード転送シーケンサ３３はパッチコード４２の転送タイミングを判定し、自発的にパッチコード４２の転送を開始する機能を備えていてもよい。ここでパッチコード４２には初期ブートプログラム３１の複数個所に対するプログラムの置き換え、または複数の機能追加のプログラムが複数格納されていることを想定している。この場合には、図５に示されるように、パッチコード４２のヘッダ部４２ａには、パッチコード４２の転送タイミングを示す転送タイミング情報として、パッチコード４２に含まれるそれら複数の機能のプログラムＡ、Ｂ、Ｃ（図中の「パッチコードＡ、パッチコードＢ、パッチコードＣ」）のパッチアドレスＰＡ−Ａ、ＰＡ−Ｂ、ＰＡ−Ｃと、パッチコードサイズＰＳ−Ａ、ＰＳ−Ｂ、ＰＳ−Ｃと、パッチコード転送開始アドレスＰＴ−Ａ、ＰＴ−Ｂ、ＰＴ−Ｃ、パッチコードＦＬＡＳＨ内部アドレスＰＦ−Ａ、ＰＦ−Ｂ、ＰＦ−Ｃが含まれている。まずパッチコード転送シーケンサ３３はヘッダ情報を解析し、パッチアドレス、パッチコードサイズ、パッチコード転送開始アドレスを取得し、パッチアドレスに加えてパッチコード転送開始アドレス情報をバッファ・内蔵ＲＯＭアクセス制御回路３５に通知する。パッチコード転送開始アドレスは、プロセッサ２からのアクセスが、パッチコード転送開始アドレスが示すアドレスに達した場合にパッチコードの転送を開始する為に用いる。パッチコード転送開始アドレスを通知されたバッファ・内蔵ＲＯＭアクセス制御回路３５は、プロセッサ２からのアクセスアドレスがパッチコード転送開始アドレスにヒットした場合に、ウェイト・ループ処理に入る。その上でパッチコード転送シーケンサ３３にヒットしたアドレス情報と共にパッチコード転送起動要求を送る。アドレス情報とパッチコード転送起動要求を受けたパッチコード転送シーケンサ３３は該当するパッチコードとしてパッチコードＦＬＡＳＨ内部アドレスからパッチコードサイズ分のパッチコードを転送する。
【００２７】
図６が上記のような転送タイミング解析の動作の一例を示すタイミングチャートである。Ｔ２のタイミングで起動されたパッチコード転送シーケンサ３３はパッチコード４２のヘッダ部４２ａの転送のみを行い、パッチコード４２のヘッダ部４２ａに含まれる転送タイミング情報を取得する。その後Ｔ４のタイミングでプロセッサ２のアクセスアドレスとパッチコード転送開始アドレスが一致し、バッファ・内蔵ＲＯＭアクセス制御回路３５はプロセッサ２に対してウェイト・ループ処理に入り、パッチコード転送シーケンサ３３を起動する。パッチコード転送シーケンサ３３はプロセッサ２のアクセスアドレスとパッチコード転送開始アドレスと起動要求に基づくパッチコードＡのパッチコードバッファ３４への転送をＴ５のタイミングで完了することでバッファ・内蔵ＲＯＭアクセス制御回路３５にパッチアドレスを提示し、パッチコードの適用を行う。その後Ｔ６のタイミングで第２のパッチコード転送開始アドレスに到達すると再びバッファ・内蔵ＲＯＭアクセス制御回路３５はウェイト・ループ処理に移り、パッチコード転送シーケンサ３３がパッチコードＢの転送を行い、以下同様にパッチコードの適用を行う。このモードを備えることで小容量のパッチコードバッファでの複数のパッチ適用が可能となる。また、システムＬＳＩ１のある一部のモード使用時にしか必要の無いパッチコードがある場合等、必要な場合にのみパッチコードの転送を行うという動作になる為、パッチコードの転送を一括で行う場合に比べてデータ転送時間の短縮が可能である。
【００２８】
また、パッチコード転送シーケンサ３３はそれぞれのパッチコードの有効及び無効を判定する機能を備えていてもよい。この場合には、図７（ａ）のパッチコード４２のデータ構造図に示されるように、パッチコード４２のヘッダ部４２ａにはそれぞれのパッチコードの有効／無効を示すフラグを含ませておく。パッチコード転送シーケンサ３３がパッチコードの無効を示すフラグを検出した場合は、パッチコード転送シーケンサ３３は、バッファ・内蔵ＲＯＭアクセス制御回路３５に対して、該当するパッチアドレスを提示しない。つまり、図７（ｂ）に示されるフローチャートのように、転送された前記パッチコードのデータが有効を示す場合にのみ（Ｓ１）、前記初期ブートプログラムの差し替えを行う（Ｓ２）モードを備えることで外部端子６によるパッチコード有無の判定が不要となるので、外部端子６の割り当てや判定回路の削減が可能である。但し、パッチコード無の場合にもパッチコード転送が必ず発生する。
【００２９】
また、パッチコード転送シーケンサ３３はプロセッサ２からの起動が可能なインタフェース（Ｉ／Ｆ）部を備えていてもよい。つまり、パッチコード転送シーケンサ３３は、プロセッサ２からの起動指示を受け付けるＩ／Ｆ部を搭載しており、当該Ｉ／Ｆ部を介してプロセッサ２から起動指示を受けると、パッチコードの転送を開始してもよい。このモード（Ｉ／Ｆ部）を備えて、かつ、図８に示されるように、初期ブートプログラム３１にパッチコード転送シーケンサ３３の起動命令３１ａを搭載することで、外部端子６によるパッチコード有無の判定が不要となるので、外部端子６の割り当てや判定回路の削減が可能である。但し、パッチコード無の場合にもパッチコード転送が必ず発生する。
【００３０】
以上、本発明に係るバスコントローラについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。たとえば、上述したバスコントローラパッチが備える付加的な機能、つまり、コードの転送サイズの判定、パッチコードの転送タイミングの判定、プロセッサからの起動が可能なＩ／Ｆ、パッチコードの有効及び無効の判定等は、全てが実装されてもよいし、任意の組み合わせで実装されてもよい。
【００３１】
また、本実施の形態では、バスコントローラ３は、初期ブートプログラム３１を格納した内蔵ＲＯＭを備えていたが、そのような内蔵ＲＯＭは、システムＬＳＩ１に内蔵されていればよく、必ずしも、バスコントローラ３に内蔵されている必要はない。
【産業上の利用可能性】
【００３２】
本発明にかかるバスコントローラは、システムＬＳＩに搭載されるバスコントローラとして、特に、内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、メインプログラムでのパッチ適用が不可能である初期ブートプログラムに対するパッチ適用が可能となる為、内蔵ＲＯＭブートモードを有するシステムＬＳＩ等に搭載されるバスコントローラとして、有用である。
【符号の説明】
【００３３】
１    システムＬＳＩ
２    プロセッサ
３    バスコントローラ
４    外部ＦＬＡＳＨメモリ
５    メインメモリ
６    外部端子
３１  初期ブートプログラム
３１ａ  パッチコード転送シーケンサ起動命令
３２  起動モード確認回路
３３  パッチコード転送シーケンサ
３４  パッチコードバッファ
３５  バッファ・内蔵ＲＯＭアクセス制御回路
４１  メインプログラム
４２  パッチコード
４２ａ  ヘッダ部
４２ｂ  プログラム部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムＬＳＩに内蔵されているプロセッサが前記システムＬＳＩに内蔵されているＲｅａｄ  Ｏｎｌｙ  ＭｅｍｏｒｙであるＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有する前記システムＬＳＩに搭載されるバスコントローラであって、
前記システムＬＳＩの外部端子の状態により設定される起動モード情報から、前記初期ブートプログラムの一部の差し替えの要否を判定する起動モード確認回路と、
前記起動モード確認回路において前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスからの、差し替え用プログラムを含むパッチコードの転送を制御するパッチコード転送シーケンサと、
前記パッチコード転送シーケンサにより転送された前記パッチコードを格納するパッチコードバッファと、
前記パッチコードに含まれる情報から差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスの差し替えアクセスとして、前記パッチコードバッファへのアクセスを発行することで、前記初期ブートプログラムの差し替えを行うアクセス制御回路と
を備えるバスコントローラ。
【請求項２】
前記パッチコードには、当該パッチコードの転送サイズを示す転送サイズ情報が含まれ、
前記パッチコード転送シーケンサは、前記パッチコードの転送サイズ情報を参照することで前記パッチコードの転送サイズを判定する機能を備えており、前記パッチコードに格納された転送サイズ情報によって前記初期ブートプログラムの差し替え量に応じた転送を行う
請求項１記載のバスコントローラ。
【請求項３】
前記パッチコードには、当該パッチコードの転送タイミングを示す転送タイミング情報が含まれ、
前記パッチコード転送シーケンサは、前記パッチコードの転送タイミング情報を参照することで前記パッチコードの転送タイミングを判定する機能を備えており、前記パッチコードバッファに格納するパッチコードを動的に更新する
請求項１または２記載のバスコントローラ。
【請求項４】
前記初期ブートプログラムには、前記パッチコード転送シーケンサを起動する命令が含まれ、
前記パッチコード転送シーケンサは、前記プロセッサからの起動指示を受け付けるインタフェース部を搭載しており、当該インタフェース部を介して前記プロセッサから起動指示を受けると、前記パッチコードの転送を開始する
請求項１〜３のいずれか１項に記載のバスコントローラ。
【請求項５】
前記アクセス制御回路は、転送された前記パッチコードの有効及び無効を判定する機能を備えており、転送された前記パッチコードのデータが有効を示す場合にのみ前記初期ブートプログラムの差し替えを行う
請求項１〜４のいずれか１項に記載のバスコントローラ。
【請求項６】
前記アクセス制御回路は、前記パッチコード転送シーケンサによる前記パッチコードの転送処理期間に起こる前記プロセッサからのアクセスに対して、転送処理期間中に前記プロセッサに対してループ命令の送信を行うことで、前記プロセッサに対してウェイト制御を発行する
請求項１〜５のいずれか１項に記載のバスコントローラ。
【請求項７】
システムＬＳＩに内蔵されているプロセッサが、前記システムＬＳＩに内蔵されているＲＯＭに実装されている初期ブートプログラムから起動するモードである内蔵ＲＯＭブートモードを有するシステムＬＳＩにおいて、前記初期ブートプログラムを差し替えを行うパッチ方法であって、
前記初期ブートプログラムの一部の差し替えの要否を判定し、
前記初期ブートプログラムの差し替えが必要と判定された場合に、外部メモリの所定アドレスから、差し替え用プログラムを含むパッチコードを読み出してパッチコードバッファに転送し、
前記パッチコードに含まれる情報から、差し替えが必要な前記初期ブートプログラムの前記ＲＯＭにおけるアドレスを検出し、前記プロセッサが前記初期ブートプログラムの該当アドレスへのアクセスを発行した場合に、当該アクセスの差し替えアクセスとして、前記パッチコードバッファへのアクセスを発行することで、前記初期ブートプログラムの差し替えを行う
初期ブートプログラムのパッチ方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010073444.tif 000011
【図２】
2010073444.tif 000012
【図３】
2010073444.tif 000013
【図４】
2010073444.tif 000014
【図５】
2010073444.tif 000015
【図６】
2010073444.tif 000016
【図７】
2010073444.tif 000017
【図８】
2010073444.tif 000018
【国際調査報告】
2010073444.tif 000019
2010073444.tif 000020
2010073444.tif 000021
2010073444.tif 000022