JP4808016B2 - マイクロコンピュータの初期化装置および車載用制御装置 - Google Patents

マイクロコンピュータの初期化装置および車載用制御装置 Download PDF

Info

Publication number
JP4808016B2
JP4808016B2 JP2005366598A JP2005366598A JP4808016B2 JP 4808016 B2 JP4808016 B2 JP 4808016B2 JP 2005366598 A JP2005366598 A JP 2005366598A JP 2005366598 A JP2005366598 A JP 2005366598A JP 4808016 B2 JP4808016 B2 JP 4808016B2
Authority
JP
Japan
Prior art keywords
area
cpu
initialization
microcomputer
data
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.)
Active
Application number
JP2005366598A
Other languages
English (en)
Other versions
JP2007172147A (ja
Inventor
淳司 三宅
正義 平塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2005366598A priority Critical patent/JP4808016B2/ja
Priority to US11/640,962 priority patent/US20070143586A1/en
Priority to EP06026292.0A priority patent/EP1808765B1/en
Publication of JP2007172147A publication Critical patent/JP2007172147A/ja
Application granted granted Critical
Publication of JP4808016B2 publication Critical patent/JP4808016B2/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/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

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)
  • Retry When Errors Occur (AREA)

Description

本発明は、組み込み型のマイクロコンピュータの初期化装置、および、そのマイクロコンピュータを備えて構成される車載用制御装置に関する。
組み込み型のマイクロコンピュータに関しては、その中に予め多くの周辺デバイス機能が盛り込まれて半導体メーカより供給されており、ユーザが該当機器の構成に合わせて、ソフトウェアによって、その機能構成を変更して使用することが行われている。
ソフトウェアによってマイクロコンピュータの機能構成の変更を実行することを、通常「マイクロコンピュータの初期化」と称している。この操作には、マイクロコンピュータ自体の動作モード(動作周波数、バス幅、ウェイト時間、割込み優先度等)を変更する操作と、当該マイクロコンピュータのCPUコアとバス接続される周辺デバイスの初期特性・動作モードを変更する操作が含まれている。
この周辺デバイスの種類としては、内部バスに接続された汎用タイマ・ユニット、A/Dコンバータ、D/Aコンバータ、I/Oポート、DMAコントローラ、通信コントローラなどがある。
これらのうち、現実の組み込みハードウェア構成に合わせて、どの周辺回路デバイスを動作/非動作とするか、また動作させる周辺デバイスの機能の中で、どの動作モードを選択するかは、通常、マイクロコンピュータのCPUから操作できる。これは、具体的には内部バス上にアドレスマッピングされた周辺デバイス固有のレジスタに、所定の値を書き込むことによりなされる。
マイクロコンピュータの初期化操作は、通常、オペレーティングシステムが起動され、ユーザのアプリケーションプログラムが走り始める前に完了されるのが普通である。
しかしながら、プログラムの実装形態としては、オペレーティングシステムやアプリケーションプログラムとマージされて、ROMに格納されるのが普通である。
車載用制御機器に組み込まれるマイクロコンピュータについては、新規開発や車載用制御機器のモデルチェンジの場合に、従来から使用されていたマイクロコンピュータを同一半導体メーカの同系列・他種(通常ROM/RAM容量や周辺デバイスの組合せが変更される)のマイクロコンピュータに変更することがよく行われている。さらに、極端な場合には、全く別の半導体メーカのマイクロコンピュータに変更するということも、しばしば行われる。
このような場合には、新たなマイクロコンピュータに対応した初期化プログラムを、新規に開発する必要に迫られる。
このようなマイクロコンピュータ変更におけるプログラム開発の生産性、保守性、移植性を向上させる技術の一つとして、マイクロコンピュータの初期化操作を行うコードを、通常のアプリケーションプログラムと分離し、専用の起動用ROMに配置格納する技術が知られている(例えば、特許文献1参照)。
また、別の公知例として、ハードウェアを制御するための変数が複数種類のマイクロコンピュータの各々について定義された共有データテーブル(変数名とアドレスの対応を解決するためのテーブルと推定される)を持ち、外部より該当マイクロコンピュータの識別情報を読み込み、前記共有データテーブルから選択した「変数−アドレスの関連付け」を用いてハードウェアを制御する技術が知られている(例えば、特許文献2参照)。
特開2003−308307号公報 特開2004−362448号公報
上述したように、マイクロコンピュータの機種変更に際して、マイクロコンピュータの初期化操作を担当するプログラムを、いかに信頼性・保守性ともに向上した形で作成するかが課題となっている。
特許文献1で示す公知技術は、専用の起動用ROMを設けてその中に初期化ルーチンを格納し、マイクロコンピュータ本体と起動用ROMを対にした形で、ユーザプログラムと分けて管理しようとするものである。
しかしながら、この方式を取った場合、マイクロコンピュータ内に新たな起動用ROMを構成するという機能的追加分が生じ、マイクロコンピュータ自体のコスト的な上昇は回避できない。
また、初期化プログラムとユーザのアプリケーションプログラムを分離することで、各々独立作成および独立検証となり、信頼性が向上する効果を期待できる。
しかしながら、開発効率や生産性に対する効果は期待できない。なぜならば、もともと、マージされていたソフトウェアを分離格納しただけであるので、作成に必要とする工数に変化が生じないためである。
加えて、ハードウェア境界に近いソフトウェア、例えば、デバイスドライバを開発する作成者が複数存在する場合、この方式は大きな問題点をはらむことになる。このように作成者が複数存在する場合、初期化ルーチンは、各々の周辺デバイスごとに個別に並行開発されることが通常である。したがって、個別開発の初期化ルーチンを後工程で統合し、起動用ROMに格納する手間は大きなものとなる。
また、デバイスドライバの単体検証時にも大きな問題となる。特定のドライバが完成し、単体検証を行いたい時であっても、他のドライバの初期化ルーチンが完成していないため、起動用ROMを構成することができず、単体検証を行えないという局面が発生する。
したがって、複数のドライバの作成と単体検証を同時並行的に行い、工期を短縮する作業が難しくなる。
特許文献2で示す公知技術は、複数種類の変数定義を格納した共有データテーブルを持つという技術であるが、しかしながら、この方式は利点も大きいが、欠点も伴う。
なぜならば、対応するマイクロコンピュータ種別を増やせば、増やすだけ、共有データテーブルの大きさが増大し、未使用データが増えることによって格納するROMのメモリ効率が低下することが挙げられる。
また、特定のマイクロコンピュータ種別に対して、その記述に誤りがあった場合、該当するマイクロコンピュータ種別の共有データテーブルのみを修正するのか、それとも共有データテーブルは各機種共通であるので、他のマイクロコンピュータ種別用のものも、一度に改修するのかの判断が難しく、管理上の大きな問題をはらむことになる。
また、当該公知例では、共有データテーブルから選択した「変数−アドレスの関連付け」をマイクロコンピュータ種別毎に変更することによって、アプリケーションプログラムが変更なしでハードウェアを制御できることになっている。
しかしながら、この手法を初期化プログラムに応用することは難しい。なぜならば、マイクロコンピュータの種別が変更された場合、設定レジスタのアドレスが変更されることはもちろんであるが、その内容や意味付け、ビット位置や構成、データサイズなども変更されることが通常である。したがって、アドレスの変更だけでプログラムの構成自体は変化させず、これに対応することは現実的な話ではない。
また、プログラムの構成自体を変化させないということは、原理的にはポインタを介した動的リンク(変数を介した間接参照方式)によってハードウェアを操作することを意味する。これは、当該マイクロコンピュータ用のコンパイラによって予めアドレスを静的に解決した命令語を実装する方法(直接参照方式)に比べ、命令の実行速度的にも、ソフトウェア信頼性の観点からも不利となる。
マイクロコンピュータのリセット解除後からの処理の順番は、初期化プログラム、オペレーティングシステム、アプリケーションプログラムの順であることは前述した。したがって、初期化プログラムは、リセット解除後にオペレーティングシステムを速やかに起動させるために、処理時間が短くなければならない。さもないと、車載用制御装置としての応答性に、重大な問題を引き起こす。処理速度の低下を引き起こす上記の公知技術は、この点においても初期化処理には不適格となる。
本発明は、前記解決しようとする課題に鑑みてなされたものであって、その目的とするところは、マイクロコンピュータの初期化プログラム作成の生産性や信頼性を向上させる要請に応えるためになされたものであって、従来に比して開発効率を向上させたマイクロコンピュータの初期化装置、および該マイクロコンピュータを組み込んだ車載用制御装置を提供することにある。
前記目的を達成するために、本発明によるマイクロコンピュータの初期化装置は、CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、CPU自体の構成および動作モードの設定変更手続き、あるいは該CPUにバス接続される周辺デバイスの構成および動作モードの設定変更手続きを行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、前記第一の領域は、前記第二の領域の内容を逐次読み出し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されている。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域を、ユーザが設定可能に構成されている。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第一の領域は、マイクロコンピュータの外部より入力されたポートの論理入力値に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有する。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第一の領域は、前記ROMに格納された第一および第二の領域とも異なる第三の領域のデータ内容に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有する。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域は、前記ROM中に表もしくはテーブル形式のデータにより構成されている。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域は、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データは、マイクロコンピュータ外部よりCSV形式あるいはXML等のマークアップ言語の形式で記述されたデータから変換して与えられる。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の4つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のデータサイズの2つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のビット位置と所定の論理値の3つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
また、前記目的を達成するために、本発明による車載用制御装置は、上述の発明による初期化装置を格納したマイクロコンピュータを備えて構成されている。
また、前記目的を達成するために、本発明によるマイクロコンピュータの初期化プログラムは、CPUと、該CPUによって実行されるプログラムを格納するROMを備えるたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、CPU自体の構成および動作モードの設定変更手続き、あるいは該CPUにバス接続される周辺デバイスの構成および動作モードの設定変更手続きを行う初期化プログラムであって、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、前記第一の領域は、前記第二の領域の内容を逐次読み出し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでいる。
本発明によれば、作成時の開発効率、保守時の管理効率に優れたマイクロコンピュータの初期化装置を提供することができ、マイクロコンピュータの種別変更時も即座に対応した初期化シーケンスの作成を可能とすることによって、ソフトウェア開発における開発コストを低減する効果がある。
また、上記初期化装置を備えたマイクロコンピュータを車載用制御装置に組み込むことにより、当該車載用制御装置の動作信頼性向上に寄与する効果がある。
以下、本発明に基づくマイクロコンピュータの初期化装置を車載用制御装置に適用した場合の実施形態について、図1〜図14を参照して説明する。
図1は、マイクロコンピュータの内部構成をブロック図として示したものである。マイクロコンピュータ101は、CPU102と、ROM104と、RAM105と、周辺デバイスとして、内部バス103によってCPU102に接続された汎用タイマ・ユニット106、A/Dコンバータ107、D/Aコンバータ108、I/Oポート109、DMAコントローラ110、通信コントローラ111を有する。
通常「マイクロコンピュータの初期化」とは、ROM104に実装されているアプリケーションプログラムの動作前提となるあらゆる初期設定操作を指す。このような操作は、初期化プログラムが担い、これも同じくROM104の中に実装されている。
両者は、起動タイミングが異なる。アプリケーションプログラムは、通常、オペレーティングシステム(これも該ROM104中に実装される)によって予め決められたタイミングで周期的に起動されるが、初期化プログラムは、該オペレーティングシステムが起動される前に呼び出され、オペレーティングシステムとアプリケーションプログラムを含めたシステムの動作前提を確定させる。
したがって、初期化プログラムは、マイクロコンピュータのリセット解除後の次に実行され、その後、オペレーティングシステムの起動、ユーザのアプリケーションプログラムの実行という順序になる。
また、初期化プログラムは、リセット解除後の初回に走り切り、オペレーティングシステムやアプリケーションプログラム実行時には、もはや終了されている処理であって、そのプロセスがRAM105の中に常駐してオペレーティングシステムやアプリケーションプログラムとやり取りを行うものではない。
この初期化プログラムの担う仕事として、CPU102の動作モード(動作周波数、バス幅、ウェイト時間、割込み優先度等)を確定させることと、CPU102と内部バス103によって接続される周辺デバイス(汎用タイマ・ユニット106、A/Dコンバータ107、D/Aコンバータ108、I/Oポート109、DMAコントローラ110、通信コントローラ111など)の初期設定および動作モードを確定させることが必要となることは、前述した通りである。
また、これらの操作の具体的な方法として、CPU102より内部バス103上にアドレスマッピングされた特定のレジスタ(図1では図示せず。図2では設定レジスタ203として図示。周辺デバイス106乃至111内に各々分散して配置していると仮定する。)に所定の値(以下、初期値と称す)を書き込むことによりなされることも、前述した通りである。
図2は、本発明装置のROM104上の配置と、その作用の動作概略を、ブロック図および作用矢印として示したものである。
ROM104上には、初期化プログラムが、CPU102により直接実行可能な翻訳ルーチンを含んで構成される第一の領域201と、それにより参照されるCPU102が直接実行できないデータ群で構成される第二の領域202とに分けられて実装されている。
換言すると、初期化プログラムのROM104上の実装形態が、CPU102により直接実行可能な命令コードを格納する第一の領域201と、CPU102が直接実行不可能なデータを格納する第二の領域202とで分けて構成され、第一の領域201は、第二の領域202の内容を逐次読み出し、CPU102に対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されている。
第二の領域202は、図2では唯一であるが、周辺デバイスの個数ごと、および該マイクロコンピュータ101が実装される車載用制御機器の製品バリエーションごとに複数存在してよいことは、前述した通り、ユーザが設定可能に構成されている。
第一の領域201は、第二の領域202が実装されるROM104上の場所を認識している。これは、図3に図示するリンカ308によってプログラム実行前に、静的にアドレスが解決されていると考えてもよいし、第一の領域201が呼び出されるときに、これを呼び出す上位ルーチン(図示せず。リセット解除後に実行される第一の領域201の関数が属するマスター関数と考えてもよい。)により、引数の形で、第二の領域202の場所(アドレス)を指示されると考えてもよい。
第一の領域201に格納される翻訳ルーチンは、例えば、C言語で記述された汎用的なアルゴリズムによるものであり、CPU102が直接実行可能な命令コードにより構成されている。第一の領域201の翻訳ルーチンは、図2中、破線矢印204で示したように、第二の領域202からデータを逐次読み出し、それが意味する初期化操作を行う。
例えば、周辺デバイスの一つである汎用タイマ・ユニット106の初期設定に際しては、それが保持する設定レジスタ203の場所を、第二の領域202で定義されている具体的なレジスタ・アドレス属性を用いて認識する。さらに、このアドレスに、同じく第二の領域202で定義されている具体的な初期値属性より取得したデータを書き込むことで、所定の初期化動作が実行される(図2中、破線矢印205)。
図3は、第一の領域201と第二の領域202をROM104に実装するに際しての、外部ツールによる作成支援形態と、処理の流れの一例を図示したものである。
第二の領域202は、ROM104中に、表もしくはテーブル形式のデータにより構成されており、該データは、マイクロコンピュータ外部より、CSV形式(Comma Separated Value format:カンマ区切りデータ形式)等のデータフォーマット形式、XML(Extensible Markup Language)等のマークアップ言語の形式で記述されたデータから変換して与えられる。
第二の領域202の具体的なデータの設定は、ある一定の命令規約(図7あるいは図8として図示)に従い、表計算ソフト303上のテンプレート、もしくは別手法ではXMLエディタ301により作成される。
表計算ソフト303の出力は*.csv形式である。一方、XMLエディタで設定した場合の出力(*.xml形式)は、XMLパーサ&チェッカ302により簡単な項目のチェックとタグ付けルールに従ったデータの切り出しが行われ、これも*.csv形式に変換される。
これら、二種類の異なる方法によって作成された初期化シーケンスを表すデータは、共通に後続のCフォーマッタ304の入力となる。
Cフォーマッタ304では、これら*.csv形式のデータが、C言語プログラムの形式、例えば”Init_table.c”305に変換される。
この”Init_table.c”305の内容は、具体的には、
const char Init_table[ ][10]=[(0x01,…0x32,0x20),
(0x02,…0x78,0x40),
:
(0x06,…0x25,0x80)];
というような、単なるデータ配列のC言語による定義であり、CPU102に取って何ら意味のある命令ではない。しかしながら、第一の領域201の翻訳ルーチンにとっては初期化シーケンスを表す重要なデータとなる。
このC言語プログラム”Init_table.c”305は、コンパイラ307によってリロケータブルオブジェクト形式(*.rel形式:Relocatable Object:再配置可能オブジェクトコード形式)に変換され、翻訳ルーチンを含むプログラムオブジェクト”translator.rel”306と共にリンカ308に送られる。
この翻訳ルーチンを含むプログラムオブジェクト”translator.rel”306は、同じくリロケータブルオブジェクト形式であって、マイクロコンピュータの命令セットが変更されない限りは、内容として固定的なものを使用してよい。これにより、前述のような翻訳動作の信頼性、延いては初期化操作の信頼性の向上に寄与することができる。
結果として、翻訳ルーチンを含むプログラムオブジェクト”translator.rel”306は、リンカ308を通して第一の領域201に配置される。また、データ配列”Init_table.c”305は、コンパイラ307による処理後、同じくリンカ308を通して第二の領域202に配置される。
図3中、リンカ308内に図示するリンク操作309は、第一の領域201が第二の領域202をROM104内で正しく見つけられるよう、参照アドレスを静的に解決することを意味する。
図4は、第二の領域202に属する初期化テーブルを、各周辺デバイスごとに複数設けた一実施形態を示したものである。図4中、汎用タイマ・ユニット106の初期化を担当するのが第二の領域202に属するテーブル401であり、通信コントローラ111の初期化を担当するのが同第二の領域202に属するテーブル402である。
すなわち、翻訳ルーチンを含む第一の領域201は、テーブル401を翻訳処理する場合には、汎用タイマ・ユニット106の初期化を担う設定レジスタ203を該テーブル401の定義に従い初期化し(破線矢印205として図示)、テーブル402を翻訳処理する場合には、通信コントローラ111の初期化を担う設定レジスタ403を該テーブル402の定義に従い初期化する(破線矢印404として図示)。
前述したように、通常、周辺デバイスの種類ごとに、デバイスドライバの作成者が異なるのが普通であって、各々の作成者の裁量に任されるべき個別デバイスの初期化が分割して作成でき、しかも別々の場所に格納できるのは、作業の独立性の視点から大きな利点となる。
図5は、第二の領域202に属する初期化テーブルに関する他の実施形態を示したものである。図5の実施形態では、図4の実施形態と異なり、初期化すべき一つの周辺デバイス(ここでは汎用タイマ・ユニット106)に対して複数の初期化テーブル501と502を持つ。
初期化テーブル501と502は、各々第二の領域202に属する初期化定義のテーブルであって、第一の領域201が、該複数のテーブルをI/Oポート109を通して観測した外部スイッチ503の論理値(論理入力値)504に従って選択する(図5中にこの動作を一点鎖線矢印505として図示)。
選択後は、図2で述べた動作と同じく選択された初期化テーブル(501もしくは502)に記述された各々異なった初期化シーケンスを実施し、設定レジスタ203に異なった初期値を設定する(図5中にこの動作を破線矢印205として図示)。
これにより、マイクロコンピュータ外部のスイッチの状態に基づいて、汎用タイマ・ユニット106に設定する初期値を変化させることが可能となり、前述したように製品バリエーションに従って動作モードを変更することが可能となる。
図6は、第二の領域202に属する初期化テーブルに関するもう一つの他の実施形態を示したものである。
図6に示されている実施形態では、図5の実施形態と同様に、初期化すべき一つの周辺デバイス(ここでは汎用タイマ・ユニット106)に対して複数の初期化テーブル501と502を持つ。初期化テーブル501と502が、各々第二の領域202に属する初期化定義のテーブルであることも同じである。
本実施形態では、第一の領域201が、該複数のテーブルをユーザのアプリケーションプログラムであるROM104上の第三の領域601中に属する特定のユーザ・データ602に従って選択する(図6中にこの動作を一点鎖線矢印603として図示)。
選択後は、図2で述べた動作と同じく選択された初期化テーブル(501若しくは502)に記述された各々異なった初期化シーケンスを実施し、設定レジスタ203に異なった初期値を設定する(図6中にこの動作を破線矢印205として図示)。
これにより、外部からスイッチによる情報を与えなくても、ROM104の中の製品バリエーションを代表するユーザ・データ602によって、汎用タイマ・ユニットの106の動作モードを変更することが可能となる。
この手段は、I/Oポート109の空きが少ないなどの理由でスイッチを追加設置できない場合に有効な手段となる。
また、ユーザ・データ602は、第一の領域201が該製品バリエーションの種別を解釈可能な、特定の規約に基づいたデータでもよいし、ROM104中に配置される初期化テーブル501もしくは初期化テーブル502のアドレスを予め選択して格納しておき、第一の領域201の翻訳ルーチンに対して処理すべき初期化テーブルを直接指示してもよい。
前者の特定の規約に基づいたデータの場合には、初期化テーブル501と502のROM104中に配置されるアドレスは、第一の領域201が内部的に解決する。これは、後者の場合とは異なり、予め、図3で図示したリンカ308の処理を借りて参照アドレスを静的に解決し、該複数テーブルのアドレス情報を第一の領域201内に保持しておくことに相当する。これにより、ユーザ・データ602によるテーブルの選択が可能となる。
図7は、第二の領域202に格納されるデータの命令フォーマットを示したものである。むろん、これらの命令はCPU102の命令セットとは何ら関係がなく、第一の領域201に含まれる翻訳ルーチンにとってのみ意味がある。むしろ、該命令フォーマットは、周辺ドライバの設定レジスタ(図4で203および403として図示)に対する操作の容易さで決定されると言ってよい。
図7(a)、(b)に示されている命令フォーマットでは、命令701〜706で示される命令体系Iと、命令711〜719で示される命令体系IIとが、併せて図示されているが、これら二つの命令体系は、機能的にはどちらかに優劣があるわけではなく、命令体系のバリエーション例を示す目的で併記しているものである。したがって、実施に際しては、どちらか一つの命令体系を採用すればよい。
なお、後述する命令体系をXMLで記述した図8および翻訳ルーチンの具体的動作をフローチャートで示した図9は、図7内で図示する命令体系I(命令701〜706)を前
提として記述されている。
第二の領域202に設定されるデータは、表もしくはテーブル形式のデータにより構成され、図7に示す各個が固定長(ここでは10バイト)の命令データとなる。
さらに、図7を参照すると、各命令の種別は、その第1バイト目で示され、命令別に必要となる属性は、各命令の先頭から固定バイトのオフセットを取る規約が示されている。
したがって、第一の領域201に含まれる翻訳ルーチンにとって、各命令をシーケンシャルに逐次たどる動作や、個別の命令に含まれる属性を取り出す動作は、オフセット付きアドレス参照命令を用いて簡単に実行することができる。
また、第二の領域202は、上述した固定長命令の複数の繰り返しで記述されることとなるので、全体として、表もしくはテーブル形式のデータで記述されていると言い換えることができるのは自明である。
命令体系Iの命令”FORWARD”701は、データ転送命令を具現化したものであ
り、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の4つの属性を、命令中に保持している。
これら属性のうち、所定のデータサイズは、その情報を”FORWARD”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよい。それを具現化したのが命令体系IIの命令”FWD_B”711と、命令”FWD_W”712である。
前者がバイト・サイズの設定レジスタに対する初期値転送命令となり、後者がワード・サイズの設定レジスタに対する初期値転送命令となる。
命令体系Iの命令”DUMMYRD”702は、少なくとも所定のアドレスと所定のデ
ータサイズの2つの属性を、命令中に保持している。
これら属性のうち、所定のデータサイズは、その情報を”DUMMYRD”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよいことは、前述の命令”FORWARD”701と同じである。それを具現化したのが命令体系IIの命令”DMY_B”713と命令”DMY_W”714である。
前者がバイト・サイズの設定レジスタに対するダミーリード命令となり、後者がワード・サイズの設定レジスタに対するダミーリード命令となる。
命令体系Iの命令”FLAGWAIT”703は、少なくとも所定のアドレスと所定の
ビット位置および所定の論理値の3つの属性を、命令中に保持している。
命令”FLAGWAIT”703は、データサイズの属性を命令中に保持していない。
これは、本発明の一実施形態たる当該マイクロコンピュータ101のフラグ待ち動作が、ワード・サイズに限定して事足りるためである。しかしながら、他のマイクロコンピュータの採用に際し、フラグチェックのデータサイズが可変となる場合には、その情報を属性中に含めてよい。
その場合には、命令”FORWARD”701や命令”DUMMYRD”702のように、命令の先頭から2バイト目にデータサイズの属性を格納してもよい(図7の703では、2バイト目は”not used”として未使用領域であることが示されている)。
また、このデータサイズの属性は、その情報を”FLAGWAIT”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよいことは、前述の命令”FORWARD”701や命令”DUMMYRD”702と同じである。それを具現化したのが命令体系IIの命令”FLGW_B”715と命令”FLGW_W”716である。
前者がバイト・サイズの設定レジスタに対するフラグ変化待ち命令となり、後者がワード・サイズの設定レジスタに対するフラグ変化待ち命令となる。
図7の命令体系IIでは、第1バイト目のオペコードの後ろに必ず”not used”の未使用領域720が設定されている。
これは命令711〜716のレジスタ・アドレスの属性格納域が、必ずワード境界の偶数アドレスから始まることを考慮に入れたもので、CPU102のメモリアライメントの規約に従ったものである。したがって、領域720は、単なるメモリ上の詰め物(padding)である。
命令”TIMEWAIT”704および717は、少なくとも所定の待ち時間の属性を、命令中に保持している。また、この命令は、命令体系Iと命令体系IIで同じフォーマットが採用されている。
命令”FUNCCALL”705および718は、少なくとも所定の関数へのポインタの属性を、命令中に保持している。また、この命令は、命令体系Iと命令体系IIで同じフォーマットが採用されていることは、上記命令”TIMEWAIT”704および717と同じである。
命令”END”706および719は、翻訳終了命令を具現化したものであり、オペコードのみで保持している属性はない。また、この命令は、命令体系Iと命令体系IIで同じフォーマットが採用されていることは、上記命令”TIMEWAIT”704および717、並びに命令”FUNCCALL”705および718と同じである。
これらの命令の組合せによって表現される初期化シーケンスは、開発段階でプログラム設計者により、表計算ソフト(図3中で303として図示)上のテンプレートを用いて作成されることは前述した通りである。
図8は、図7で示した命令体系IをXMLにて表現したものの一例である。
これは、前述したように開発段階でプログラム設計者により、XMLエディタ(図3中での301として図示)を用いて作成される。
図中、文書型定義801は、DTD(Document Type Definition)と呼ばれるもので、後続のXMLインスタンス802で扱う要素とその出現する順番や回数、また各要素の属性といったXML文書の構造を定義している。この定義情報に従って、簡単な構文チェックが、XMLパーサ&チェッカ(図3中で302として図示)により実行される。
したがって、前述の表計算ソフト(図3中で303として図示)で、図7の命令体系を直に記述する方法とは異なり、予めチェックが行えるので設定不良による手戻りが少なくなる。
また、命令規約(例えば図7)の文書と、それに基づいた実際の設定データ文書の両者を対にして管理しなくても、同一文書上に意味と実データが併記できるので、管理や他のマイクロコンピュータへの移植が簡単になるという効果がある。
XMLインスタンス802は、実際の初期化シーケンスを定義している実データの部分である。
タグ付け構造803が、図7の命令”FORWARD”701に相当する。以下同様に、タグ付け構造804が、図7の命令”DUMMYRD”702に、タグ付け構造805が、図7の命令”FLAGWAIT”703に、タグ付け構造806が、図7の命令”TIMEWAIT”704に、タグ付け構造807がね図7の命令”FUNCCALL”705に、タグ付け構造808が、図7の命令”END”706に相当している。
これらのタグ付け構造データを適宜繰り返し記述して、初期化シーケンスを作成することは、前述した通りである。
図9は、第一の領域201に含まれる翻訳ルーチンの動作を示したフローチャートである。図9は、全体の翻訳動作の流れを示すと共に、主として命令の解釈に焦点を当てたフローチャートを開示したものである。したがって、図7に示すような個別命令の動作の詳細は、図10〜14の各命令タイプ別のフローチャートにて後述する。
まず、全体の動作の流れを処理順に説明する。
処理901は、第二の領域202のテーブル先頭アドレスをローカル変数”table_pointer”に設定する。該テーブル先頭アドレスは、予めリンカ(図3中で308として図示)の処理を経て静的に解決され、該第一の領域201中に保持しておくか、該翻訳ルーチンを呼び出す際に、上位のマスター関数から引数の形で与えられてもよいことは前述した通りである。
続く、処理902では、上記”table_pointer”が指す命令一行分のデータを、読み出しバッファ”buffer[ ]”に取り込む。この処理により、引き続き実行される判定処理(903、905、907、909、911、913)で、命令の判別と、個別処理への分岐が可能となる。
判定903では、該読み出しバッファの先頭バイト”buffer[0]”が解析され、これがデータ転送命令”FORWARD”と一致するかどうかが調べられる。一致するならば、転送処理904に分岐し、一連の転送処理終了後は、処理914に移行する。一方、一致しない場合は、引き続き判定905に移行する。
判定905では、同じく該読み出しバッファの先頭バイト”buffer[0]”が解析され、これがダミーリード命令”DUMMYRD”と一致するかどうかが調べられる。一致するならば、ダミーリード処理906に分岐し、一連の処理終了後は、処理914に移行する。一方、一致しない場合は、引き続き判定907に移行する。
判定907では、同じく該読み出しバッファの先頭バイト”buffer[0]”が解析され、これがフラグ変化待ち命令”FLAGWAIT”と一致するかどうかが調べられる。一致するならば、フラグ変化待ち処理908に分岐し、一連の処理終了後は、処理914に移行する。一方、一致しない場合は、引き続き判定909に移行する。
判定909では、同じく該読み出しバッファの先頭バイト”buffer[0]”が解析され、これが時間待ち命令”TIMEWAIT”と一致するかどうかが調べられる。一致するならば、時間待ち処理910に分岐し、一連の処理終了後は、処理914に移行する。一方、一致しない場合は、引き続き判定911に移行する。
判定911では、同じく該読み出しバッファの先頭バイト”buffer[0]”が解析され、これが外部関数コール命令”FUNCCALL”と一致するかどうかが調べられる。一致するならば、外部関数コール処理912に分岐し、一連の処理終了後は、処理914に移行する。一方、一致しない場合は、引き続き判定913に移行する。
判定913では、同じく該読み出しバッファの先頭バイト”buffer[0]”が解析され、これが翻訳処理終了命令”END”と一致するかどうかが調べられる。一致するならば、処理915に分岐し、翻訳処理を終了し呼び出し元に復帰する。一方、一致しない場合は、処理914に移行する。
処理914では、次の命令ステップを読み出す準備として、ローカル変数”table_pointer”の内容に次の行へのオフセット分(アドレス増加分)を加算する。すなわちこれは、図7の命令体系IもしくはIIの場合では、10バイト分に相当する。
その後、処理902に分岐し、上述する一連の処理902乃至914を再び繰り返す。つまり、翻訳処理終了命令”END”が現れるまで、上記フローに従ったシーケンスを繰り返し実行することを意味する。
図9中の転送処理904、ダミーリード処理906、フラグ変化待ち処理908、時間待ち処理910、外部関数コール処理912は、当該命令ごとの纏まった処理であり、サブルーチンによっても実装可能である。これらの処理内容は、以下図10〜14のフローチャートにより個別に後述する。
これら後述する個別命令では、図7で示すように、データサイズ、レジスタ・アドレス、初期値データなどの属性が必要である。しかしながら、上述の処理902で示すように、これらの属性は既に読み出しバッファ”buffer[ ]”内に格納されている。また、読み出しバッファ”buffer[ ]”は、配列であって、適宜所定の配列要素から読み出せば属性値が取り出せることは自明である。したがって、この属性値の取り出し処理については、図10〜14のフローチャートにおいては省略し図示していない。
図10は、データ転送処理のフローチャートを示したものである。
処理1001では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”temp0”に設定する。すなわち、設定レジスタのもともとの内容が、ローカル変数”temp0”に設定される。
処理1002では、上記ローカル変数”temp0”と、マスクデータの1の補数との論理積が演算され、ローカル変数”temp1”に設定される。すなわち、ローカル変数”temp1”の内容は、これから本命令によって設定しようとするビットが”0”であり、残りのビットがもともとの設定レジスタのビットパターンで構成されたものとなる。
処理1003では、初期値データとマスクデータの論理積が演算され、ローカル変数”temp2”に設定される。すなわち、ローカル変数”temp2”の内容は、これから本命令によって設定しようとするビットが初期値データの内容そのものであり、残りのビットがすべて”0”で構成されたものとなる。
処理1004では、上記ローカル変数”temp1”とローカル変数”temp2”との論理和が演算され、該データがデータサイズを考慮して設定レジスタに書き戻される。
したがって、その内容は、本命令によって設定しようとするビットが初期値データそのものであり、残りのビットがもともとの設定レジスタのビットパターンにより構成されたものとなる。引き続き、処理1005では、本フローチャートの処理を終了し呼び出し元に復帰する。
上記の操作を行うことにより、マスクデータで指定した任意のビット幅、もしくはビットパターンにおいての初期値の転送が可能となり、あらゆる種類のマイクロコンピュータのデータ設定操作に適用することが可能となる。
図11は、ダミーリード処理のフローチャートを示したものである。
処理1101では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”temp0”に設定する。
これにより、レジスタ・アドレスの属性で示される設定レジスタのダミーリードが完了したことになる。
ローカル変数”temp0”の内容は、これ以降は使用されず廃棄され、処理1102により呼び出し元に復帰する。
図12は、フラグ変化待ち処理のフローチャートを示したものである。
処理1201では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”temp0”に設定する。すなわち、設定レジスタの内容が、ローカル変数”temp0”に設定される。
処理1202では、ローカル変数”temp0”の内容と、ビット位置データとの論理積が取られ、ローカル変数”temp1”に格納される。すなわち、ローカル変数”temp1”の内容は、これから本命令によってテストしようとするビットが設定レジスタ由来のビットパターンであり、残りのビットがすべて”0”で構成されたものとなる。
続く判定1203では、上記ローカル変数”temp1”の内容と、ビット論理値データの属性とが照合される。
一致するならば、処理1204に抜けて本処理を終了し、呼び出し元に復帰する。一致しないならば、再び処理1201に戻り、判定1203が成立するまで、該当する設定レジスタの内容をチェックしつつ待ち動作を実行する。
図13は、時間待ち処理のフローチャートを示したものである。
処理1301では、ローカル変数”loop_end”に、待ち時間の属性として、実際には後述のループ回数を設定する。
処理1302では、ローカル変数”temp0”をループカウンタとして使用する準備として、これを”0”に初期化する。
判定1303では、ローカル変数”temp0”とローカル変数”loop_end”の内容が比較され、”temp0”≧ ”loop_end”ならば、処理1305に抜けて呼び出し元に復帰し、待ち動作を終了する。
”temp0”<”loop_end”ならば、処理1304でループカウンタであるローカル変数”temp0”の内容を”1”増加させ、判定1303に戻ってループ動作を行う。
これは、判定1303と処理1304のプログラム走行時間の総和を時間分解能として、ループ回数分だけの待ち時間を実現していることになる。
図14は、外部関数コール処理のフローチャートを示したものである。
処理1401では、与えられた関数ポインタ値の属性を、関数としてコールすることにより、外部関数を呼び出す。該関数からの復帰後は、続く処理1402によって処理を終了し、呼び出し元に復帰する。
以下に、本実施形態の効果を要約する。以上の説明より明らかように、本実施形態のマイクロコンピュータ101によれば、CPU102は、リセット解除後に、オペレーティングシステムを起動し、アプリケーションプログラムが走行する前に、初期化を完了することができる。初期化は、CPU102が、特定のレジスタに特定の値を書き込むことによって行うことを基本としている。
このような初期化のプログラムを、例えば、C言語で記述した場合、コンパイラ後の命令コードは、データ転送命令を主体とするものに変換される。これは、イミディエートデータ値をCPUレジスタにロードした後に該データ値を目的とする初期設定用レジスタに送る命令列の繰り返しとしてコンパイルされる。すなわち、初期化用のデータ値は命令コードのオペランドという形で格納されるために、最終的には命令とデータが一団として混在した命令コードが生成されることになるのが普通である。
本発明によるマイクロコンピュータの初期化装置(初期化プログラム)は、命令とデータを混在した形でROMに格納するのではなく、CPU102により直接実行可能な命令コードを格納する第一の領域201と、CPU102が直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域202とに分けて構成されることを特徴としている。
第一の領域201は、第二の領域202のデータ内容により初期化シーケンスを行う翻訳実行ルーチンを含む役割が与えられ、第二の領域202は、第一の領域201から探索可能なように、何らかの規約に基づいて構成されたデータ構造となる。
しかも、該規約は、CPU201の命令体系とは、独立・無関係に設定することが可能なので、特定マイクロコンピュータのアーキテクチャに依存しなくなると共に、外部的なツールによる作成・管理が容易となる。
また、これら前記第一の領域201と少なくとも一箇所以上の第二の領域202は、マイクロコンピュータ101内のROM104に、ユーザアプリケーションプログラムとマージされた形で配置されるので、専用の起動ROMを設けずともよく、コストの上昇が押さえられる。
さらに、第二の領域201は複数箇所存在してもよい。すなわち、特定の第二の領域は汎用タイマ・ユニット106用、別の第二の領域は通信コントローラ111用と、初期化の用途別に分離して作成できる。個別周辺デバイスの初期化が必要であれば、それに相当する第二の領域202を選択して、第一の領域201の翻訳ルーチンを実行すればよい。
したがって、後工程で各周辺デバイスの初期化ルーチンを統合することが不要となると共に、各デバイスドライバ作成者間の初期化プログラム作成作業や単体検証作業の独立性を確保できる。また、これは裏を返せば、各デバイスドライバ作成者間の相互依存性がなくなるということで、並行作業や並行検証によって工期を短縮できることを意味する。
さらに、上記の方式の別の利用法としては、一つの周辺デバイスに対して複数の第二の領域202(互いに異なる複数個の初期化テーブル)を持つことが可能となる。すなわち、製品バリエーションに対応して、個別の第二の領域による初期化シーケンスを選択して行うことにより、製品毎の周辺デバイスの動作モードを変更することができる。
第二の領域202で定義される初期化シーケンスは、当該マイクロコンピュータ種別に対して固有のものであり、CPU102の命令セットが変わらず、同一系列のマイクロコンピュータであって、内部デバイスの構成のみが変更された場合には、この第二の領域202のデータのみを変更すればよい。
また、CPU102の命令セットが変更されるような大幅な変更時には、第一の領域201に格納される翻訳ルーチンのリコンパイルが必要になる。しかしながら、第一の領域201に格納される翻訳ルーチンは、C言語で記述された汎用的なアルゴリズムであるので、例えば、Cコンパイラによるリコンパイルで簡単に機能を移植することができる。これにより、従来に比して初期化プログラムの移植や保守の取り回しに優れることになる。
したがって、複数種類のマイクロコンピュータの変数定義を格納した共有データテーブルを持つ必要がなく、データテーブル自体は巨大であるがその中の限定された領域しか使用していないという状況が発生することが無いので、ROMのメモリ効率を低下させることがない。
加えて、ハードウェアの変数定義(アドレス)のみ解決だと、該変数にどういう値を設定するかという設定値の変化に対しては考慮が成されていないことになるのは、前述の通りである。
マイクロコンピュータの種別が変更されると、ハードウェアの変数定義(アドレス)が変更されると共にその設定値の意味付けも変更されるのは前述の通りであり、第二の領域202を設けることによって、ハードウェアの変数定義(アドレス)と、それに設定すべき値の両方が通常のプログラムから分離され、変更が容易になる。
第二の領域202は、ユーザにより設定可能とするものであるから、マイクロコンピュータの種別が変更された場合に、その初期設定動作の変更が可能になる。これは、裏を返せば、第一の領域201を、該プログラム作成者が変更しなくてもすむことを示したものである。
第二の領域202を翻訳して実際の初期化動作を行う第一の領域201を変更しないことは、翻訳動作に対する信頼性を一定に保持しながら複数の製品機種に該装置を使い回せると言うことを意味している。
一般的には、前述のように、CPU102の命令セットが変更されない限りは、第一の領域201の内容を変更することは不要であり、したがってCPU102の命令セット変更されない同一系列のマイクロコンピュータに対しては、第一の領域201を固定として動作の信頼性を確保することができる。
また、マイクロコンピュータの外部より入力されたポートの論理入力値に従って、第二の領域202に属するデータの所定の組合せ(初期化テーブル)を選択的に変更することにより、同一のマイクロコンピュータを採用しているものの、組み込み製品の仕向け地の変化で初期化動作を変えたいと言う要求に対応できる。例えば、ある仕向け地では周辺デバイスのうち通信コントローラを使用し、別の仕向け地では通信コントローラを使わないという設定が可能である。
すなわち、マイクロコンピュータ101に組み込まれた初期化装置が起動するタイミングで、第一の領域201に組み込まれた翻訳ルーチンを含む処理手順がマイクロコンピュータ101の外部ポートを読み込み、その論理値のパターンによって第二の領域201の中から読み出す組合せを選択する。
これにより、初期化プログラムを変更しないまま、外部より初期化動作を変化させることが可能となり、上述の製品バリエーションの変化に対応することが可能となる。
また、論理入力値によらずに、ROM104内に定義された第三の領域601のデータ内容よって、第二の領域202に属するもの中から、所定の組合せを選択することも可能である。これにより、マイクロコンピュータ外部とのやり取り無しに、ROM104内でクローズして行うことができ、外部ポートの空きが少ないなどの場合に有効である。
すなわち、マイクロコンピュータ101に組み込まれている初期化装置が起動するタイミングで、第一の領域201に組み込まれた翻訳ルーチンを含む処理手順が、ROM104に格納された第一および第二の領域とも異なる第三の領域601のデータ内容を読み込み、そのデータ内容にしたがって第二の領域202の中から読み出す組合せを選択する。
第三の領域601としては、仕向け地ごとに変更されるような、ユーザのアプリケーションプログラムに属する特定領域を想定している。したがって、第一の領域201に格納される初期化のための翻訳プログラムを含む処理手順を、上述したように内容不変として固定化するためには、該領域は固定アドレスで定義されることが望ましい。
これにより、初期化プログラムを変更しないまま、外部より初期化動作を変化させることが可能となり、上述の製品バリエーションの変化に対応することが可能となる。
第二の領域202のデータ構造を表もしくはテーブル形式で実現することにより、初期化シーケンスの各ステップを表もしくはテーブルの各行に対応付けて作成することができ、初期化プログラムの作成者に対して生産性や可読性の向上が望める。また、データ構造をとることによって、該データを本質的に機械可読と成すことができる。したがって、この作成や保守に際して、外部のツールにより支援を行うことが可能で、開発効率や保守効率を向上することが可能となる。
第二の領域202のデータ構造を表もしくはテーブル形式で作成する場合に、プログラム作成者に対して可読性に優れた、CSV形式あるいはXML等のマークアップ言語を採用することができ、CSV形式もしくはマークアップ言語で記述された初期化手続きが外部ツールにより変換されて、第二の領域202のデータ構造(表もしくはテーブル)となる。
表もしくはテーブル形式のデータ構造では、各要素が何を表しているのかの規約を別文書として定めて規約と実際の設定値の両文書を対にして管理しなければならないが、CSV形式、マークアップ言語の場合には、各要素が何を表しているのかの規約と実際の設定値とを、一つの文書中に構造化して示すことができる。また、規約が変更された場合も、外部ツールを使って従来の文書を新規約に対応させる変更が容易となる。これにより、第二の領域202のデータ構造の作成や保守が簡単になるという利点がある。
本実施形態では、表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の4つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現している。
初期化操作の本質は、特定のレジスタに対して特定の初期化用データを設定することであり、アドレスの情報と初期値の情報が必須であることは自明であり、加えて、種々のマイクロコンピュータの初期化操作に対応するために、バイト/ワードなどの8ビットの倍数値を表すデータサイズの情報、および該当領域のどのビット範囲に初期値を転送するのかを指定するマスク情報の計4つの属性があれば、あらゆるマイクロコンピュータの初期化用のデータ転送を、汎用的に表現することが可能となる。
これら属性が第一の領域201の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要である。この規約をもとに、第一の領域201の翻訳ルーチンが属性の参照を正しく実行し、また外部のツールによって該データ構造の保守や管理が容易となる。
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のデータサイズの2つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現している。
マイクロコンピュータの種類によっては初期化用レジスタをダミーリードしなければ初期値が設定できないものが存在する。特に、割込みフラグを格納するステータスレジスタと称するものについては、プログラムが正しく割込みフラグ(すなわち割込み要因)を認識したということを保障するため、ダミーリード後でなければ該当フラグがクリアできないものが多い。これは、情報の受け渡しに際して、当該レジスタとCPU間の情報の欠損を防ぐハンドシェーク動作の一形態である。
また、ダミーリード動作のデータサイズとしては、当該レジスタのデータサイズ、すなわちバイト/ワードなどの8ビットの倍数値に合わせてリード動作を行わないと、ダミーリードを正しく認識しないマイクロコンピュータが存在する。したがって、このデータサイズ属性も必須となる。
以上のことから、初期化操作の一機能としてダミーリード機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
また、これら属性が第一の領域201の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のビット位置および所定の論理値の3つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち合わせ動作を表現している。
初期化動作の方式としては、あるイベントが発生するまで初期化プログラムの進行を止めて待ち合わせを行いたい用途が存在する。特に、周辺デバイスの汎用タイマ・ユニットに対してこの要求が発生することが多い。とりわけ、アウトプットコンペアによるパルス出力のデバイスに対して、アプリケーションプログラムが走行する前に、所定の論理出力を初期値として確定して出力したい用途が存在する。これは、すなわち、初期化プログラムの中で、直近の時間に対するコンペアマッチを発生させて出力を確定させることを意味する。
この手段を採用することによって、複雑な汎用タイマ・ユニットに対する操作が可能となる。このときのシーケンスを詳しく述べると、まず、出力レジスタに初期値として出力したい論理値を与えると共に、コンペアマッチレジスタに直近のコンペアマッチが発生するような小さい値を設定する(コンペアマッチレジスタと比較されるフリーランタイマは、リセット解除後ゆえ零クリアされていると仮定する)。
その後、汎用タイマ・ユニットの時間比較動作を開始させる(タイマの動作開始後、前記フリーランタイマは所定の時間分解能ごとにその値を増加させ、コンペアマッチレジスタと値が等しくなったときに、出力レジスタの設定値をポートに出力する。さらに、ステータスレジスタに該コンペアマッチが発生したことを示すコンペアマッチフラグがセットされると仮定する)。
しかるに、フラグ待ち合わせ機能を用いれば、初期化プログラムの中でステータスレジスタを監視し、該コンペアマッチフラグがセットされるまで待ち合わせを行うことが可能となる。
さらに、該コンペアマッチフラグのクリアを行い、初期化後に不要な割り込みを受け付けないように、割込み要因をクリアするという手順が実現可能となる(割り込み禁止解除後は、このコンペアマッチフラグがセットされていると割り込み動作を受け付けると仮定する。また、前述のダミーリード機能は、本機能に内在していると見なされる)。
以上のことから、初期化操作の一機能として特定フラグが変化するまでの待ち合わせ機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
また、これら属性が第一の領域201の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは、同じである。
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現している。
周辺デバイスの種類によっては、初期化に際して所定の微細な待ち時間を要求するものが存在する。特に、内部クロックソースを、CPUとは別に独立に保持している汎用タイマ・ユニットや、通信コントローラなどについてこの要求が発生することが多い。
すなわち、周辺デバイスの起動から、その内部クロックの発振が安定する期間は正常な初期化を行えず、待ち合わせが必要となる。
本手段を採用することによって、初期化シーケンスを上記の待ち合わせ時間を満足するように一時停止させ、正常な初期化を実行させることができる。
以上のことから、初期化操作の一機能として時間待ち動作の機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
また、これら属性が第一の領域201の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現している。
周辺デバイスの種類によっては、初期化中にその外部出力の論理値が不定となるものが存在する。このようなものに対しては、その出力の禁止/許可を行うサービス関数がアプリケーションプログラム中に実装されることが通常行われる。
なぜならば、リセット解除後からアプリケーションプログラムが起動されるまでの出力禁止/許可は、初期化プログラムがその責任を担うと仮定されているのに対し、制御停止から電源遮断までの出力禁止/許可の責任は、該アプリケーションプログラムが担うことになっているからである。したがって、通常、アプリケーションプログラムの中にこのようなサービス関数が実装される。
したがって、初期化中には、その外部出力を上記関数によって禁止とし、初期化終了後にあらためて上記関数によって許可するという操作が必要となる。
この関数の実体は、特定の外部出力ポートに対する所定の論理値の書込み指示であり、この論理値出力を受けた外部回路が上記デバイス出力値の出力禁止もしくは許可動作を行うが、この出力禁止/許可用の外部ポートの位置は、初期化プログラムによって預かり知らぬ情報である。
なぜならば、初期化の手順は、使用するマイクロコンピュータの種別によって決まるものであるが、上記外部ポートの位置は、該マイクロコンピュータに外付けされる回路の都合で決まるからである。したがって、同一の初期化用プログラムを採用していても、ハードウェアの都合で上記初期化ポートの位置が異なると言う場合が起こりえる。
したがって、これらの外付け回路の差異を吸収して、初期化プログラムの独立性を確保するために設けられたのが、本手段であって、上記「該属性で指定された関数への関数コール」とは、具体的には上記出力禁止/許可用のアプリケーション関数を呼び出すことを意味する。
本手段を採用することによって、初期化動作に際して外部のアプリケーション関数をコールすることができ、複雑な操作を実行することができる。
以上のことから、初期化操作の一機能として外部関数コールの機能があれば、あらゆるマイクロコンピュータの初期化操作を、その外付け回路の差異も含めて、汎用的に表現することが可能となる。
また、これら属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは、同じである。
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも一連の初期化処理の終了を意味する属性を含み、第一の領域に含まれる翻訳ルーチンによる翻訳実行の終了を表現している。
マイクロコンピュータの初期化シーケンスは、表もしくはテーブルの各行が、命令の1ステップとして表現され順次実行されるものである。したがって、一連の処理の終了を意味する表現が必ず必要である。
この表現により、第一の領域201に格納された初期化用の翻訳ルーチンはその制御を上位の関数に戻し、一連の処理を終了させる。さらに、処理を戻されたマスター関数は、初期化処理が完全に終了しプラットフォームが完備された前提に立って、引き続きオペレーションシステムを起動し、ユーザが定義したアプリケーションプログラムに処理を委ねることが可能となる。
また、この終了属性が第一の領域201の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
車載用制御装置においては、初期化操作として行うべき処理は、ある程度限定されていると共に、その内容についてアプリケーション作成者が関与すべき必然性を備えているものは少ないので、本実施形態によるマイクロコンピュータが車載用制御装置に組み込まれることにより、そのシーケンスを第二の領域202で集中して定義できることは、プログラム作成者に対して大きな利便性を与えることに繋がる。
また、車載用制御装置については、その動作に対して高い信頼性が要求されるため、その初期化操作についても設計意図通りの確実な動作が要求される。
したがって、本請求項の手段を取ることによって、車載用制御装置を使用するユーザに対してある水準の動作信頼性を保障することができる。
本発明による初期化装置を適用されるマイクロコンピュータの一つの実施形態の内部構成を示すブロック図。 本発明による初期化装置を適用されるマイクロコンピュータのROM上の配置例と動作概略を示したブロック図。 本発明によるマイクロコンピュータの初期化装置に関係する外部ツールによる支援形態と初期化テーブルの作成作業を解説した図。 周辺デバイスごとに初期化テーブルを分離した実施形態を例示するブロック図。 外部ポートによる複数の初期化テーブルからの選択する実施形態のブロック図。 ユーザ・データによる複数の初期化テーブルからの選択する実施形態のブロック図。 初期化テーブルを構成する命令体系を例示する図。 命令体系をXMLによって記述した一実施形態を例示する図。 本発明によるマイクロコンピュータの初期化装置における翻訳動作の全体概略を示すフローチャート。 本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして転送処理を示すフローチャート。 本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとしてダミーリード処理を示すフローチャート。 本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとしてフラグ変化待ち処理を示すフローチャート。 本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして時間待ち処理を示すフローチャート。 本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして外部関数コール処理を示すフローチャート。
符号の説明
101 マイクロコンピュータ
102 CPU
103 内部バス
104 ROM
105 RAM、
106 汎用タイマ・ユニット
107 A/Dコンバータ
108 D/Aコンバータ
109 I/Oポート
110 DMAコントローラ
111 通信コントローラ
201 第一の領域
202 第二の領域
203、403 設定レジスタ
503 外部スイッチ
601 第三の領域

Claims (16)

  1. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の4つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  2. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のデータサイズの2つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  3. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のビット位置と所定の論理値の3つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  4. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  5. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  6. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ROMに実装したマイクロコンピュータの初期化装置であって、
    前記初期化プログラムの前記ROM上の実装形態が、前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化装置。
  7. 前記第二の領域を、ユーザが設定可能に構成されていることを特徴とする請求項1から6のいずれか1項に記載のマイクロコンピュータの初期化装置。
  8. 前記第一の領域は、マイクロコンピュータのポートに外部より入力された論理入力値に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有することを特徴とする請求項1から7のいずれか1項に記載のマイクロコンピュータの初期化装置。
  9. 前記第一の領域は、前記ROMに格納された第一および第二の領域とも異なる第三の領域のデータ内容に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有することを特徴とする請求項1から7のいずれか1項に記載のマイクロコンピュータの初期化装置。
  10. 請求項1からのいずれか一項に記載の初期化装置を格納したマイクロコンピュータを備えて構成されることを特徴とする車載用制御装置。
  11. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の4つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
  12. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のデータサイズの2つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
  13. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定のアドレスと所定のビット位置と所定の論理値の3つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
  14. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
  15. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
  16. CPUと、該CPUによって実行されるプログラムを格納するROMを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
    前記CPUにより直接実行可能な命令コードを格納する第一の領域と、前記CPUが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
    前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記CPUが直接実行不可能な形式で記述しており、
    前記第二の領域が、前記ROM中に表もしくはテーブル形式のデータにより構成されており、
    前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記CPUが直接実行できる命令に変換し、前記CPUに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
    前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
    前記パラメータは、
    少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
    ことを特徴とするマイクロコンピュータの初期化プログラム。
JP2005366598A 2005-12-20 2005-12-20 マイクロコンピュータの初期化装置および車載用制御装置 Active JP4808016B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005366598A JP4808016B2 (ja) 2005-12-20 2005-12-20 マイクロコンピュータの初期化装置および車載用制御装置
US11/640,962 US20070143586A1 (en) 2005-12-20 2006-12-19 Initializing apparatus of microcomputer and control apparatus for a vehicle
EP06026292.0A EP1808765B1 (en) 2005-12-20 2006-12-19 Initializing apparatus of microcomputer and control apparatus for a vehicle

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005366598A JP4808016B2 (ja) 2005-12-20 2005-12-20 マイクロコンピュータの初期化装置および車載用制御装置

Publications (2)

Publication Number Publication Date
JP2007172147A JP2007172147A (ja) 2007-07-05
JP4808016B2 true JP4808016B2 (ja) 2011-11-02

Family

ID=37914289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005366598A Active JP4808016B2 (ja) 2005-12-20 2005-12-20 マイクロコンピュータの初期化装置および車載用制御装置

Country Status (3)

Country Link
US (1) US20070143586A1 (ja)
EP (1) EP1808765B1 (ja)
JP (1) JP4808016B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011100785A1 (en) * 2010-02-19 2011-08-25 National Ict Australia Limited Co-design of a testbench and driver of a device

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3449722A (en) * 1966-05-02 1969-06-10 Honeywell Inc Electronic multiprocessing apparatus including common queueing technique
GB1441816A (en) * 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
JPH01183729A (ja) * 1988-01-18 1989-07-21 Citizen Watch Co Ltd メモリの自動初期化機能を備えたプリンタ
US4947477A (en) * 1988-03-04 1990-08-07 Dallas Semiconductor Corporation Partitionable embedded program and data memory for a central processing unit
JPH02242355A (ja) * 1989-03-16 1990-09-26 Fujitsu Ltd 拡張アドレス空間を持つマイクロプロセシングシステム
US5442764A (en) * 1990-08-20 1995-08-15 Texas Instruments Incorporated Digital signal processing having improved execution efficiency
US5574926A (en) * 1993-03-11 1996-11-12 Olympus Optical Co., Ltd. One-chip microcomputer system having function for substantially correcting contents of program
JP3767085B2 (ja) * 1996-09-04 2006-04-19 セイコーエプソン株式会社 情報処理回路及びマイクロコンピュータ
JPH11110294A (ja) * 1997-10-01 1999-04-23 Toshiba Corp マイクロコンピュータ及び情報処理装置
JP2000311080A (ja) * 1999-04-28 2000-11-07 Toshiba Corp コンピュータシステムおよびその動作環境切り替え方法
CN100442393C (zh) * 1999-10-21 2008-12-10 松下电器产业株式会社 半导体存储卡的访问装置、初始化方法和半导体存储卡
JP3681590B2 (ja) * 1999-10-28 2005-08-10 株式会社ルネサステクノロジ データ処理装置及びデータ処理システム
JP3696014B2 (ja) * 1999-12-02 2005-09-14 三洋電機株式会社 デジタルテレビ放送受信機
JP3988636B2 (ja) * 2002-02-15 2007-10-10 株式会社デンソー マイクロコンピュータ及び車両用ecu
JP2004062373A (ja) * 2002-07-26 2004-02-26 Canon Inc マイクロコンピュータを使用する機器
DE10236571A1 (de) * 2002-08-08 2004-02-26 Astrium Gmbh Verfahren zum Betrieb einer Datenverarbeitungseinrichtung unter Verwendung komprimierter Daten
US7107441B2 (en) 2003-05-21 2006-09-12 Intel Corporation Pre-boot interpreted namespace parsing for flexible heterogeneous configuration and code consolidation
US7822105B2 (en) * 2003-09-02 2010-10-26 Sirf Technology, Inc. Cross-correlation removal of carrier wave jamming signals
US20050068558A1 (en) * 2003-09-30 2005-03-31 Jianxin Wang Method and system to automatically update in real-time a printer driver configuration
US7185190B2 (en) * 2003-12-29 2007-02-27 Intel Corporation Pushing capabilities into firmware by an operating system
US20050198233A1 (en) * 2004-01-07 2005-09-08 Microsoft Corporation Configuring network settings of thin client devices using portable storage media
JP2006004280A (ja) * 2004-06-18 2006-01-05 Toshiba Kyaria Kk マイクロコンピュータおよび電気機器
KR20060020284A (ko) * 2004-08-31 2006-03-06 삼성전자주식회사 중앙 처리장치의 초기화 장치 및 방법
JP4066381B2 (ja) * 2005-03-01 2008-03-26 三菱電機株式会社 車載電子制御装置
US7844971B2 (en) * 2005-09-28 2010-11-30 Intel Corporation Method and apparatus for detecting cross-thread stack access in multithreaded programs
US7533290B2 (en) * 2006-02-21 2009-05-12 Realtek Semiconductor Corp. Microcode updating error handling apparatus and method thereof

Also Published As

Publication number Publication date
EP1808765A2 (en) 2007-07-18
JP2007172147A (ja) 2007-07-05
EP1808765A3 (en) 2009-01-14
EP1808765B1 (en) 2017-02-08
US20070143586A1 (en) 2007-06-21

Similar Documents

Publication Publication Date Title
JP4050764B2 (ja) コンパイルシステム
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP2003323463A5 (ja)
US20130290693A1 (en) Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
CN112947998A (zh) 寄存器提供操作码指令
US6745320B1 (en) Data processing apparatus
EP4231138A1 (en) Method and apparatus for fixing weak memory ordering problem
CN111666210A (zh) 一种芯片验证方法及装置
US7676774B2 (en) System LSI verification system and system LSI verification method
JP3990332B2 (ja) データ処理システム
CA2820058A1 (en) Multi-modal compiling apparatus and method for generating a hybrid codefile
US9329872B2 (en) Method and apparatus for the definition and generation of configurable, high performance low-power embedded microprocessor cores
US20040010781A1 (en) Parameter parsing system
CN111930359B (zh) 一种异构嵌入式***上进行算法开发的***及方法
KR101826828B1 (ko) 로그 데이터 관리 시스템 및 방법
JP4808016B2 (ja) マイクロコンピュータの初期化装置および車載用制御装置
US10795704B2 (en) Serialization of objects to java bytecode
US11886839B2 (en) Non-transitory computer-readable recording medium, function generation method, and information processing device
US8694975B2 (en) Programming system in multi-core environment, and method and program of the same
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
Haug et al. Reconfigurable hardware as shared resource in multipurpose computers
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
KR20230059128A (ko) 코드 실행에 기반한 매니코어 병렬 프로세서의 프로그램 디버깅 방법 및 이를 위한 장치
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080116

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110711

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: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110816

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4808016

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350