(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の４つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項２】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のデータサイズの２つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項３】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のビット位置と所定の論理値の３つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項４】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項５】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項６】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、
前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されており、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化装置。
【請求項７】
前記第二の領域を、ユーザが設定可能に構成されていることを特徴とする請求項１から６のいずれか１項に記載のマイクロコンピュータの初期化装置。
【請求項８】
前記第一の領域は、マイクロコンピュータのポートに外部より入力された論理入力値に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有することを特徴とする請求項１から７のいずれか１項に記載のマイクロコンピュータの初期化装置。
【請求項９】
前記第一の領域は、前記ＲＯＭに格納された第一および第二の領域とも異なる第三の領域のデータ内容に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有することを特徴とする請求項１から７のいずれか１項に記載のマイクロコンピュータの初期化装置。
【請求項１０】
請求項１から９のいずれか一項に記載の初期化装置を格納したマイクロコンピュータを備えて構成されることを特徴とする車載用制御装置。
【請求項１１】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の４つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【請求項１２】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のデータサイズの２つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【請求項１３】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定のアドレスと所定のビット位置と所定の論理値の３つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【請求項１４】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【請求項１５】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【請求項１６】
ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、前記マイクロコンピュータの初期化を行う初期化プログラムであって、
前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、
前記第二の領域が格納している前記データは、前記初期化プログラムに対する指示を前記ＣＰＵが直接実行不可能な形式で記述しており、
前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、
前記第一の領域は、前記第二の領域が格納しているデータを逐次読み出して前記ＣＰＵが直接実行できる命令に変換し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでおり、
前記表またはテーブル形式のデータは、前記初期化プログラムが初期化処理を実施する際に用いるパラメータを記述しており、
前記パラメータは、
少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される
ことを特徴とするマイクロコンピュータの初期化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み型のマイクロコンピュータの初期化装置、および、そのマイクロコンピュータを備えて構成される車載用制御装置に関する。
【背景技術】
【０００２】
組み込み型のマイクロコンピュータに関しては、その中に予め多くの周辺デバイス機能が盛り込まれて半導体メーカより供給されており、ユーザが該当機器の構成に合わせて、ソフトウェアによって、その機能構成を変更して使用することが行われている。
【０００３】
ソフトウェアによってマイクロコンピュータの機能構成の変更を実行することを、通常「マイクロコンピュータの初期化」と称している。この操作には、マイクロコンピュータ自体の動作モード（動作周波数、バス幅、ウェイト時間、割込み優先度等）を変更する操作と、当該マイクロコンピュータのＣＰＵコアとバス接続される周辺デバイスの初期特性・動作モードを変更する操作が含まれている。
【０００４】
この周辺デバイスの種類としては、内部バスに接続された汎用タイマ・ユニット、Ａ／Ｄコンバータ、Ｄ／Ａコンバータ、Ｉ／Ｏポート、ＤＭＡコントローラ、通信コントローラなどがある。
【０００５】
これらのうち、現実の組み込みハードウェア構成に合わせて、どの周辺回路デバイスを動作／非動作とするか、また動作させる周辺デバイスの機能の中で、どの動作モードを選択するかは、通常、マイクロコンピュータのＣＰＵから操作できる。これは、具体的には内部バス上にアドレスマッピングされた周辺デバイス固有のレジスタに、所定の値を書き込むことによりなされる。
【０００６】
マイクロコンピュータの初期化操作は、通常、オペレーティングシステムが起動され、ユーザのアプリケーションプログラムが走り始める前に完了されるのが普通である。
【０００７】
しかしながら、プログラムの実装形態としては、オペレーティングシステムやアプリケーションプログラムとマージされて、ＲＯＭに格納されるのが普通である。
【０００８】
車載用制御機器に組み込まれるマイクロコンピュータについては、新規開発や車載用制御機器のモデルチェンジの場合に、従来から使用されていたマイクロコンピュータを同一半導体メーカの同系列・他種（通常ＲＯＭ／ＲＡＭ容量や周辺デバイスの組合せが変更される）のマイクロコンピュータに変更することがよく行われている。さらに、極端な場合には、全く別の半導体メーカのマイクロコンピュータに変更するということも、しばしば行われる。
【０００９】
このような場合には、新たなマイクロコンピュータに対応した初期化プログラムを、新規に開発する必要に迫られる。
【００１０】
このようなマイクロコンピュータ変更におけるプログラム開発の生産性、保守性、移植性を向上させる技術の一つとして、マイクロコンピュータの初期化操作を行うコードを、通常のアプリケーションプログラムと分離し、専用の起動用ＲＯＭに配置格納する技術が知られている（例えば、特許文献１参照）。
【００１１】
また、別の公知例として、ハードウェアを制御するための変数が複数種類のマイクロコンピュータの各々について定義された共有データテーブル（変数名とアドレスの対応を解決するためのテーブルと推定される）を持ち、外部より該当マイクロコンピュータの識別情報を読み込み、前記共有データテーブルから選択した「変数−アドレスの関連付け」を用いてハードウェアを制御する技術が知られている（例えば、特許文献２参照）。
【００１２】
【特許文献１】特開２００３−３０８３０７号公報
【特許文献２】特開２００４−３６２４４８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述したように、マイクロコンピュータの機種変更に際して、マイクロコンピュータの初期化操作を担当するプログラムを、いかに信頼性・保守性ともに向上した形で作成するかが課題となっている。
【００１４】
特許文献１で示す公知技術は、専用の起動用ＲＯＭを設けてその中に初期化ルーチンを格納し、マイクロコンピュータ本体と起動用ＲＯＭを対にした形で、ユーザプログラムと分けて管理しようとするものである。
【００１５】
しかしながら、この方式を取った場合、マイクロコンピュータ内に新たな起動用ＲＯＭを構成するという機能的追加分が生じ、マイクロコンピュータ自体のコスト的な上昇は回避できない。
【００１６】
また、初期化プログラムとユーザのアプリケーションプログラムを分離することで、各々独立作成および独立検証となり、信頼性が向上する効果を期待できる。
【００１７】
しかしながら、開発効率や生産性に対する効果は期待できない。なぜならば、もともと、マージされていたソフトウェアを分離格納しただけであるので、作成に必要とする工数に変化が生じないためである。
【００１８】
加えて、ハードウェア境界に近いソフトウェア、例えば、デバイスドライバを開発する作成者が複数存在する場合、この方式は大きな問題点をはらむことになる。このように作成者が複数存在する場合、初期化ルーチンは、各々の周辺デバイスごとに個別に並行開発されることが通常である。したがって、個別開発の初期化ルーチンを後工程で統合し、起動用ＲＯＭに格納する手間は大きなものとなる。
【００１９】
また、デバイスドライバの単体検証時にも大きな問題となる。特定のドライバが完成し、単体検証を行いたい時であっても、他のドライバの初期化ルーチンが完成していないため、起動用ＲＯＭを構成することができず、単体検証を行えないという局面が発生する。
したがって、複数のドライバの作成と単体検証を同時並行的に行い、工期を短縮する作業が難しくなる。
【００２０】
特許文献２で示す公知技術は、複数種類の変数定義を格納した共有データテーブルを持つという技術であるが、しかしながら、この方式は利点も大きいが、欠点も伴う。
なぜならば、対応するマイクロコンピュータ種別を増やせば、増やすだけ、共有データテーブルの大きさが増大し、未使用データが増えることによって格納するＲＯＭのメモリ効率が低下することが挙げられる。
【００２１】
また、特定のマイクロコンピュータ種別に対して、その記述に誤りがあった場合、該当するマイクロコンピュータ種別の共有データテーブルのみを修正するのか、それとも共有データテーブルは各機種共通であるので、他のマイクロコンピュータ種別用のものも、一度に改修するのかの判断が難しく、管理上の大きな問題をはらむことになる。
【００２２】
また、当該公知例では、共有データテーブルから選択した「変数−アドレスの関連付け」をマイクロコンピュータ種別毎に変更することによって、アプリケーションプログラムが変更なしでハードウェアを制御できることになっている。
【００２３】
しかしながら、この手法を初期化プログラムに応用することは難しい。なぜならば、マイクロコンピュータの種別が変更された場合、設定レジスタのアドレスが変更されることはもちろんであるが、その内容や意味付け、ビット位置や構成、データサイズなども変更されることが通常である。したがって、アドレスの変更だけでプログラムの構成自体は変化させず、これに対応することは現実的な話ではない。
【００２４】
また、プログラムの構成自体を変化させないということは、原理的にはポインタを介した動的リンク（変数を介した間接参照方式）によってハードウェアを操作することを意味する。これは、当該マイクロコンピュータ用のコンパイラによって予めアドレスを静的に解決した命令語を実装する方法（直接参照方式）に比べ、命令の実行速度的にも、ソフトウェア信頼性の観点からも不利となる。
【００２５】
マイクロコンピュータのリセット解除後からの処理の順番は、初期化プログラム、オペレーティングシステム、アプリケーションプログラムの順であることは前述した。したがって、初期化プログラムは、リセット解除後にオペレーティングシステムを速やかに起動させるために、処理時間が短くなければならない。さもないと、車載用制御装置としての応答性に、重大な問題を引き起こす。処理速度の低下を引き起こす上記の公知技術は、この点においても初期化処理には不適格となる。
【００２６】
本発明は、前記解決しようとする課題に鑑みてなされたものであって、その目的とするところは、マイクロコンピュータの初期化プログラム作成の生産性や信頼性を向上させる要請に応えるためになされたものであって、従来に比して開発効率を向上させたマイクロコンピュータの初期化装置、および該マイクロコンピュータを組み込んだ車載用制御装置を提供することにある。
【課題を解決するための手段】
【００２７】
前記目的を達成するために、本発明によるマイクロコンピュータの初期化装置は、ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、ＣＰＵ自体の構成および動作モードの設定変更手続き、あるいは該ＣＰＵにバス接続される周辺デバイスの構成および動作モードの設定変更手続きを行う初期化プログラムを前記ＲＯＭに実装したマイクロコンピュータの初期化装置であって、前記初期化プログラムの前記ＲＯＭ上の実装形態が、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、前記第一の領域は、前記第二の領域の内容を逐次読み出し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されている。
【００２８】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域を、ユーザが設定可能に構成されている。
【００２９】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第一の領域は、マイクロコンピュータの外部より入力されたポートの論理入力値に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有する。
【００３０】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第一の領域は、前記ＲＯＭに格納された第一および第二の領域とも異なる第三の領域のデータ内容に従って、前記第二の領域に属するデータ中から、所定の組合せを選択する機能を有する。
【００３１】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域は、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されている。
【００３２】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域は、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データは、マイクロコンピュータ外部よりＣＳＶ形式あるいはＸＭＬ等のマークアップ言語の形式で記述されたデータから変換して与えられる。
【００３３】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の４つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３４】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のデータサイズの２つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３５】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定のアドレスと所定のビット位置と所定の論理値の３つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち動作を表現したものであって、これらの属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３６】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３７】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３８】
本発明によるマイクロコンピュータの初期化装置は、好ましくは、前記第二の領域が、前記ＲＯＭ中に表もしくはテーブル形式のデータにより構成されており、該データで表される動作シーケンスの一要素として、少なくとも初期化処理の終了を意味する属性を含み、第一の領域による翻訳実行の終了を表現したものであって、該属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納される。
【００３９】
また、前記目的を達成するために、本発明による車載用制御装置は、上述の発明による初期化装置を格納したマイクロコンピュータを備えて構成されている。
【００４０】
また、前記目的を達成するために、本発明によるマイクロコンピュータの初期化プログラムは、ＣＰＵと、該ＣＰＵによって実行されるプログラムを格納するＲＯＭを備えるたマイクロコンピュータにおいて、当該マイクロコンピュータのリセット信号が解除された後、かつオペレーティングシステムが起動される前に実行され、ＣＰＵ自体の構成および動作モードの設定変更手続き、あるいは該ＣＰＵにバス接続される周辺デバイスの構成および動作モードの設定変更手続きを行う初期化プログラムであって、前記ＣＰＵにより直接実行可能な命令コードを格納する第一の領域と、前記ＣＰＵが直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域とに分けて構成され、前記第一の領域は、前記第二の領域の内容を逐次読み出し、前記ＣＰＵに対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んでいる。
【発明の効果】
【００４１】
本発明によれば、作成時の開発効率、保守時の管理効率に優れたマイクロコンピュータの初期化装置を提供することができ、マイクロコンピュータの種別変更時も即座に対応した初期化シーケンスの作成を可能とすることによって、ソフトウェア開発における開発コストを低減する効果がある。
【００４２】
また、上記初期化装置を備えたマイクロコンピュータを車載用制御装置に組み込むことにより、当該車載用制御装置の動作信頼性向上に寄与する効果がある。
【発明を実施するための最良の形態】
【００４３】
以下、本発明に基づくマイクロコンピュータの初期化装置を車載用制御装置に適用した場合の実施形態について、図１〜図１４を参照して説明する。
【００４４】
図１は、マイクロコンピュータの内部構成をブロック図として示したものである。マイクロコンピュータ１０１は、ＣＰＵ１０２と、ＲＯＭ１０４と、ＲＡＭ１０５と、周辺デバイスとして、内部バス１０３によってＣＰＵ１０２に接続された汎用タイマ・ユニット１０６、Ａ／Ｄコンバータ１０７、Ｄ／Ａコンバータ１０８、Ｉ／Ｏポート１０９、ＤＭＡコントローラ１１０、通信コントローラ１１１を有する。
【００４５】
通常「マイクロコンピュータの初期化」とは、ＲＯＭ１０４に実装されているアプリケーションプログラムの動作前提となるあらゆる初期設定操作を指す。このような操作は、初期化プログラムが担い、これも同じくＲＯＭ１０４の中に実装されている。
【００４６】
両者は、起動タイミングが異なる。アプリケーションプログラムは、通常、オペレーティングシステム（これも該ＲＯＭ１０４中に実装される）によって予め決められたタイミングで周期的に起動されるが、初期化プログラムは、該オペレーティングシステムが起動される前に呼び出され、オペレーティングシステムとアプリケーションプログラムを含めたシステムの動作前提を確定させる。
【００４７】
したがって、初期化プログラムは、マイクロコンピュータのリセット解除後の次に実行され、その後、オペレーティングシステムの起動、ユーザのアプリケーションプログラムの実行という順序になる。
【００４８】
また、初期化プログラムは、リセット解除後の初回に走り切り、オペレーティングシステムやアプリケーションプログラム実行時には、もはや終了されている処理であって、そのプロセスがＲＡＭ１０５の中に常駐してオペレーティングシステムやアプリケーションプログラムとやり取りを行うものではない。
【００４９】
この初期化プログラムの担う仕事として、ＣＰＵ１０２の動作モード（動作周波数、バス幅、ウェイト時間、割込み優先度等）を確定させることと、ＣＰＵ１０２と内部バス１０３によって接続される周辺デバイス（汎用タイマ・ユニット１０６、Ａ／Ｄコンバータ１０７、Ｄ／Ａコンバータ１０８、Ｉ／Ｏポート１０９、ＤＭＡコントローラ１１０、通信コントローラ１１１など）の初期設定および動作モードを確定させることが必要となることは、前述した通りである。
【００５０】
また、これらの操作の具体的な方法として、ＣＰＵ１０２より内部バス１０３上にアドレスマッピングされた特定のレジスタ（図１では図示せず。図２では設定レジスタ２０３として図示。周辺デバイス１０６乃至１１１内に各々分散して配置していると仮定する。）に所定の値（以下、初期値と称す）を書き込むことによりなされることも、前述した通りである。
【００５１】
図２は、本発明装置のＲＯＭ１０４上の配置と、その作用の動作概略を、ブロック図および作用矢印として示したものである。
【００５２】
ＲＯＭ１０４上には、初期化プログラムが、ＣＰＵ１０２により直接実行可能な翻訳ルーチンを含んで構成される第一の領域２０１と、それにより参照されるＣＰＵ１０２が直接実行できないデータ群で構成される第二の領域２０２とに分けられて実装されている。
【００５３】
換言すると、初期化プログラムのＲＯＭ１０４上の実装形態が、ＣＰＵ１０２により直接実行可能な命令コードを格納する第一の領域２０１と、ＣＰＵ１０２が直接実行不可能なデータを格納する第二の領域２０２とで分けて構成され、第一の領域２０１は、第二の領域２０２の内容を逐次読み出し、ＣＰＵ１０２に対して初期化処理のシーケンスを実行させる翻訳ルーチンを含んで構成されている。
【００５４】
第二の領域２０２は、図２では唯一であるが、周辺デバイスの個数ごと、および該マイクロコンピュータ１０１が実装される車載用制御機器の製品バリエーションごとに複数存在してよいことは、前述した通り、ユーザが設定可能に構成されている。
【００５５】
第一の領域２０１は、第二の領域２０２が実装されるＲＯＭ１０４上の場所を認識している。これは、図３に図示するリンカ３０８によってプログラム実行前に、静的にアドレスが解決されていると考えてもよいし、第一の領域２０１が呼び出されるときに、これを呼び出す上位ルーチン（図示せず。リセット解除後に実行される第一の領域２０１の関数が属するマスター関数と考えてもよい。）により、引数の形で、第二の領域２０２の場所（アドレス）を指示されると考えてもよい。
【００５６】
第一の領域２０１に格納される翻訳ルーチンは、例えば、Ｃ言語で記述された汎用的なアルゴリズムによるものであり、ＣＰＵ１０２が直接実行可能な命令コードにより構成されている。第一の領域２０１の翻訳ルーチンは、図２中、破線矢印２０４で示したように、第二の領域２０２からデータを逐次読み出し、それが意味する初期化操作を行う。
【００５７】
例えば、周辺デバイスの一つである汎用タイマ・ユニット１０６の初期設定に際しては、それが保持する設定レジスタ２０３の場所を、第二の領域２０２で定義されている具体的なレジスタ・アドレス属性を用いて認識する。さらに、このアドレスに、同じく第二の領域２０２で定義されている具体的な初期値属性より取得したデータを書き込むことで、所定の初期化動作が実行される（図２中、破線矢印２０５）。
【００５８】
図３は、第一の領域２０１と第二の領域２０２をＲＯＭ１０４に実装するに際しての、外部ツールによる作成支援形態と、処理の流れの一例を図示したものである。
【００５９】
第二の領域２０２は、ＲＯＭ１０４中に、表もしくはテーブル形式のデータにより構成されており、該データは、マイクロコンピュータ外部より、ＣＳＶ形式（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅ  ｆｏｒｍａｔ：カンマ区切りデータ形式）等のデータフォーマット形式、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等のマークアップ言語の形式で記述されたデータから変換して与えられる。
【００６０】
第二の領域２０２の具体的なデータの設定は、ある一定の命令規約（図７あるいは図８として図示）に従い、表計算ソフト３０３上のテンプレート、もしくは別手法ではＸＭＬエディタ３０１により作成される。
【００６１】
表計算ソフト３０３の出力は＊．ｃｓｖ形式である。一方、ＸＭＬエディタで設定した場合の出力（＊．ｘｍｌ形式）は、ＸＭＬパーサ＆チェッカ３０２により簡単な項目のチェックとタグ付けルールに従ったデータの切り出しが行われ、これも＊．ｃｓｖ形式に変換される。
【００６２】
これら、二種類の異なる方法によって作成された初期化シーケンスを表すデータは、共通に後続のＣフォーマッタ３０４の入力となる。
【００６３】
Ｃフォーマッタ３０４では、これら＊．ｃｓｖ形式のデータが、Ｃ言語プログラムの形式、例えば”Ｉｎｉｔ＿ｔａｂｌｅ．ｃ”３０５に変換される。
【００６４】
この”Ｉｎｉｔ＿ｔａｂｌｅ．ｃ”３０５の内容は、具体的には、
const char Init_table[ ][10]=[(0x01,…0x32,0x20),
(0x02,…0x78,0x40),
:
(0x06,…0x25,0x80)];
というような、単なるデータ配列のＣ言語による定義であり、ＣＰＵ１０２に取って何ら意味のある命令ではない。しかしながら、第一の領域２０１の翻訳ルーチンにとっては初期化シーケンスを表す重要なデータとなる。
【００６５】
このＣ言語プログラム”Ｉｎｉｔ＿ｔａｂｌｅ．ｃ”３０５は、コンパイラ３０７によってリロケータブルオブジェクト形式（＊．ｒｅｌ形式：Ｒｅｌｏｃａｔａｂｌｅ  Ｏｂｊｅｃｔ：再配置可能オブジェクトコード形式）に変換され、翻訳ルーチンを含むプログラムオブジェクト”ｔｒａｎｓｌａｔｏｒ．ｒｅｌ”３０６と共にリンカ３０８に送られる。
【００６６】
この翻訳ルーチンを含むプログラムオブジェクト”ｔｒａｎｓｌａｔｏｒ．ｒｅｌ”３０６は、同じくリロケータブルオブジェクト形式であって、マイクロコンピュータの命令セットが変更されない限りは、内容として固定的なものを使用してよい。これにより、前述のような翻訳動作の信頼性、延いては初期化操作の信頼性の向上に寄与することができる。
【００６７】
結果として、翻訳ルーチンを含むプログラムオブジェクト”ｔｒａｎｓｌａｔｏｒ．ｒｅｌ”３０６は、リンカ３０８を通して第一の領域２０１に配置される。また、データ配列”Ｉｎｉｔ＿ｔａｂｌｅ．ｃ”３０５は、コンパイラ３０７による処理後、同じくリンカ３０８を通して第二の領域２０２に配置される。
【００６８】
図３中、リンカ３０８内に図示するリンク操作３０９は、第一の領域２０１が第二の領域２０２をＲＯＭ１０４内で正しく見つけられるよう、参照アドレスを静的に解決することを意味する。
【００６９】
図４は、第二の領域２０２に属する初期化テーブルを、各周辺デバイスごとに複数設けた一実施形態を示したものである。図４中、汎用タイマ・ユニット１０６の初期化を担当するのが第二の領域２０２に属するテーブル４０１であり、通信コントローラ１１１の初期化を担当するのが同第二の領域２０２に属するテーブル４０２である。
【００７０】
すなわち、翻訳ルーチンを含む第一の領域２０１は、テーブル４０１を翻訳処理する場合には、汎用タイマ・ユニット１０６の初期化を担う設定レジスタ２０３を該テーブル４０１の定義に従い初期化し（破線矢印２０５として図示）、テーブル４０２を翻訳処理する場合には、通信コントローラ１１１の初期化を担う設定レジスタ４０３を該テーブル４０２の定義に従い初期化する（破線矢印４０４として図示）。
【００７１】
前述したように、通常、周辺デバイスの種類ごとに、デバイスドライバの作成者が異なるのが普通であって、各々の作成者の裁量に任されるべき個別デバイスの初期化が分割して作成でき、しかも別々の場所に格納できるのは、作業の独立性の視点から大きな利点となる。
【００７２】
図５は、第二の領域２０２に属する初期化テーブルに関する他の実施形態を示したものである。図５の実施形態では、図４の実施形態と異なり、初期化すべき一つの周辺デバイス（ここでは汎用タイマ・ユニット１０６）に対して複数の初期化テーブル５０１と５０２を持つ。
【００７３】
初期化テーブル５０１と５０２は、各々第二の領域２０２に属する初期化定義のテーブルであって、第一の領域２０１が、該複数のテーブルをＩ／Ｏポート１０９を通して観測した外部スイッチ５０３の論理値（論理入力値）５０４に従って選択する（図５中にこの動作を一点鎖線矢印５０５として図示）。
【００７４】
選択後は、図２で述べた動作と同じく選択された初期化テーブル（５０１もしくは５０２）に記述された各々異なった初期化シーケンスを実施し、設定レジスタ２０３に異なった初期値を設定する（図５中にこの動作を破線矢印２０５として図示）。
【００７５】
これにより、マイクロコンピュータ外部のスイッチの状態に基づいて、汎用タイマ・ユニット１０６に設定する初期値を変化させることが可能となり、前述したように製品バリエーションに従って動作モードを変更することが可能となる。
【００７６】
図６は、第二の領域２０２に属する初期化テーブルに関するもう一つの他の実施形態を示したものである。
【００７７】
図６に示されている実施形態では、図５の実施形態と同様に、初期化すべき一つの周辺デバイス（ここでは汎用タイマ・ユニット１０６）に対して複数の初期化テーブル５０１と５０２を持つ。初期化テーブル５０１と５０２が、各々第二の領域２０２に属する初期化定義のテーブルであることも同じである。
【００７８】
本実施形態では、第一の領域２０１が、該複数のテーブルをユーザのアプリケーションプログラムであるＲＯＭ１０４上の第三の領域６０１中に属する特定のユーザ・データ６０２に従って選択する（図６中にこの動作を一点鎖線矢印６０３として図示）。
選択後は、図２で述べた動作と同じく選択された初期化テーブル（５０１若しくは５０２）に記述された各々異なった初期化シーケンスを実施し、設定レジスタ２０３に異なった初期値を設定する（図６中にこの動作を破線矢印２０５として図示）。
【００７９】
これにより、外部からスイッチによる情報を与えなくても、ＲＯＭ１０４の中の製品バリエーションを代表するユーザ・データ６０２によって、汎用タイマ・ユニットの１０６の動作モードを変更することが可能となる。
この手段は、Ｉ／Ｏポート１０９の空きが少ないなどの理由でスイッチを追加設置できない場合に有効な手段となる。
【００８０】
また、ユーザ・データ６０２は、第一の領域２０１が該製品バリエーションの種別を解釈可能な、特定の規約に基づいたデータでもよいし、ＲＯＭ１０４中に配置される初期化テーブル５０１もしくは初期化テーブル５０２のアドレスを予め選択して格納しておき、第一の領域２０１の翻訳ルーチンに対して処理すべき初期化テーブルを直接指示してもよい。
【００８１】
前者の特定の規約に基づいたデータの場合には、初期化テーブル５０１と５０２のＲＯＭ１０４中に配置されるアドレスは、第一の領域２０１が内部的に解決する。これは、後者の場合とは異なり、予め、図３で図示したリンカ３０８の処理を借りて参照アドレスを静的に解決し、該複数テーブルのアドレス情報を第一の領域２０１内に保持しておくことに相当する。これにより、ユーザ・データ６０２によるテーブルの選択が可能となる。
【００８２】
図７は、第二の領域２０２に格納されるデータの命令フォーマットを示したものである。むろん、これらの命令はＣＰＵ１０２の命令セットとは何ら関係がなく、第一の領域２０１に含まれる翻訳ルーチンにとってのみ意味がある。むしろ、該命令フォーマットは、周辺ドライバの設定レジスタ（図４で２０３および４０３として図示）に対する操作の容易さで決定されると言ってよい。
【００８３】
図７（ａ）、（ｂ）に示されている命令フォーマットでは、命令７０１〜７０６で示される命令体系Ｉと、命令７１１〜７１９で示される命令体系ＩＩとが、併せて図示されているが、これら二つの命令体系は、機能的にはどちらかに優劣があるわけではなく、命令体系のバリエーション例を示す目的で併記しているものである。したがって、実施に際しては、どちらか一つの命令体系を採用すればよい。
【００８４】
なお、後述する命令体系をＸＭＬで記述した図８および翻訳ルーチンの具体的動作をフローチャートで示した図９は、図７内で図示する命令体系Ｉ（命令７０１〜７０６）を前
提として記述されている。
【００８５】
第二の領域２０２に設定されるデータは、表もしくはテーブル形式のデータにより構成され、図７に示す各個が固定長（ここでは１０バイト）の命令データとなる。
【００８６】
さらに、図７を参照すると、各命令の種別は、その第１バイト目で示され、命令別に必要となる属性は、各命令の先頭から固定バイトのオフセットを取る規約が示されている。
【００８７】
したがって、第一の領域２０１に含まれる翻訳ルーチンにとって、各命令をシーケンシャルに逐次たどる動作や、個別の命令に含まれる属性を取り出す動作は、オフセット付きアドレス参照命令を用いて簡単に実行することができる。
【００８８】
また、第二の領域２０２は、上述した固定長命令の複数の繰り返しで記述されることとなるので、全体として、表もしくはテーブル形式のデータで記述されていると言い換えることができるのは自明である。
【００８９】
命令体系Ｉの命令”ＦＯＲＷＡＲＤ”７０１は、データ転送命令を具現化したものであ
り、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の４つの属性を、命令中に保持している。
【００９０】
これら属性のうち、所定のデータサイズは、その情報を”ＦＯＲＷＡＲＤ”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよい。それを具現化したのが命令体系ＩＩの命令”ＦＷＤ＿Ｂ”７１１と、命令”ＦＷＤ＿Ｗ”７１２である。
【００９１】
前者がバイト・サイズの設定レジスタに対する初期値転送命令となり、後者がワード・サイズの設定レジスタに対する初期値転送命令となる。
【００９２】
命令体系Ｉの命令”ＤＵＭＭＹＲＤ”７０２は、少なくとも所定のアドレスと所定のデ
ータサイズの２つの属性を、命令中に保持している。
【００９３】
これら属性のうち、所定のデータサイズは、その情報を”ＤＵＭＭＹＲＤ”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよいことは、前述の命令”ＦＯＲＷＡＲＤ”７０１と同じである。それを具現化したのが命令体系ＩＩの命令”ＤＭＹ＿Ｂ”７１３と命令”ＤＭＹ＿Ｗ”７１４である。
【００９４】
前者がバイト・サイズの設定レジスタに対するダミーリード命令となり、後者がワード・サイズの設定レジスタに対するダミーリード命令となる。
【００９５】
命令体系Ｉの命令”ＦＬＡＧＷＡＩＴ”７０３は、少なくとも所定のアドレスと所定の
ビット位置および所定の論理値の３つの属性を、命令中に保持している。
命令”ＦＬＡＧＷＡＩＴ”７０３は、データサイズの属性を命令中に保持していない。
【００９６】
これは、本発明の一実施形態たる当該マイクロコンピュータ１０１のフラグ待ち動作が、ワード・サイズに限定して事足りるためである。しかしながら、他のマイクロコンピュータの採用に際し、フラグチェックのデータサイズが可変となる場合には、その情報を属性中に含めてよい。
【００９７】
その場合には、命令”ＦＯＲＷＡＲＤ”７０１や命令”ＤＵＭＭＹＲＤ”７０２のように、命令の先頭から２バイト目にデータサイズの属性を格納してもよい（図７の７０３では、２バイト目は”ｎｏｔ  ｕｓｅｄ”として未使用領域であることが示されている）。
また、このデータサイズの属性は、その情報を”ＦＬＡＧＷＡＩＴ”のような先頭のオペコードに含めることとして、オペコードの種類を増やして対応してもよいことは、前述の命令”ＦＯＲＷＡＲＤ”７０１や命令”ＤＵＭＭＹＲＤ”７０２と同じである。それを具現化したのが命令体系ＩＩの命令”ＦＬＧＷ＿Ｂ”７１５と命令”ＦＬＧＷ＿Ｗ”７１６である。
【００９８】
前者がバイト・サイズの設定レジスタに対するフラグ変化待ち命令となり、後者がワード・サイズの設定レジスタに対するフラグ変化待ち命令となる。
【００９９】
図７の命令体系ＩＩでは、第１バイト目のオペコードの後ろに必ず”ｎｏｔ  ｕｓｅｄ”の未使用領域７２０が設定されている。
【０１００】
これは命令７１１〜７１６のレジスタ・アドレスの属性格納域が、必ずワード境界の偶数アドレスから始まることを考慮に入れたもので、ＣＰＵ１０２のメモリアライメントの規約に従ったものである。したがって、領域７２０は、単なるメモリ上の詰め物（ｐａｄｄｉｎｇ）である。
【０１０１】
命令”ＴＩＭＥＷＡＩＴ”７０４および７１７は、少なくとも所定の待ち時間の属性を、命令中に保持している。また、この命令は、命令体系Ｉと命令体系ＩＩで同じフォーマットが採用されている。
【０１０２】
命令”ＦＵＮＣＣＡＬＬ”７０５および７１８は、少なくとも所定の関数へのポインタの属性を、命令中に保持している。また、この命令は、命令体系Ｉと命令体系ＩＩで同じフォーマットが採用されていることは、上記命令”ＴＩＭＥＷＡＩＴ”７０４および７１７と同じである。
【０１０３】
命令”ＥＮＤ”７０６および７１９は、翻訳終了命令を具現化したものであり、オペコードのみで保持している属性はない。また、この命令は、命令体系Ｉと命令体系ＩＩで同じフォーマットが採用されていることは、上記命令”ＴＩＭＥＷＡＩＴ”７０４および７１７、並びに命令”ＦＵＮＣＣＡＬＬ”７０５および７１８と同じである。
【０１０４】
これらの命令の組合せによって表現される初期化シーケンスは、開発段階でプログラム設計者により、表計算ソフト（図３中で３０３として図示）上のテンプレートを用いて作成されることは前述した通りである。
【０１０５】
図８は、図７で示した命令体系ＩをＸＭＬにて表現したものの一例である。
これは、前述したように開発段階でプログラム設計者により、ＸＭＬエディタ（図３中での３０１として図示）を用いて作成される。
【０１０６】
図中、文書型定義８０１は、ＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）と呼ばれるもので、後続のＸＭＬインスタンス８０２で扱う要素とその出現する順番や回数、また各要素の属性といったＸＭＬ文書の構造を定義している。この定義情報に従って、簡単な構文チェックが、ＸＭＬパーサ＆チェッカ（図３中で３０２として図示）により実行される。
【０１０７】
したがって、前述の表計算ソフト（図３中で３０３として図示）で、図７の命令体系を直に記述する方法とは異なり、予めチェックが行えるので設定不良による手戻りが少なくなる。
【０１０８】
また、命令規約（例えば図７）の文書と、それに基づいた実際の設定データ文書の両者を対にして管理しなくても、同一文書上に意味と実データが併記できるので、管理や他のマイクロコンピュータへの移植が簡単になるという効果がある。
【０１０９】
ＸＭＬインスタンス８０２は、実際の初期化シーケンスを定義している実データの部分である。
【０１１０】
タグ付け構造８０３が、図７の命令”ＦＯＲＷＡＲＤ”７０１に相当する。以下同様に、タグ付け構造８０４が、図７の命令”ＤＵＭＭＹＲＤ”７０２に、タグ付け構造８０５が、図７の命令”ＦＬＡＧＷＡＩＴ”７０３に、タグ付け構造８０６が、図７の命令”ＴＩＭＥＷＡＩＴ”７０４に、タグ付け構造８０７がね図７の命令”ＦＵＮＣＣＡＬＬ”７０５に、タグ付け構造８０８が、図７の命令”ＥＮＤ”７０６に相当している。
【０１１１】
これらのタグ付け構造データを適宜繰り返し記述して、初期化シーケンスを作成することは、前述した通りである。
【０１１２】
図９は、第一の領域２０１に含まれる翻訳ルーチンの動作を示したフローチャートである。図９は、全体の翻訳動作の流れを示すと共に、主として命令の解釈に焦点を当てたフローチャートを開示したものである。したがって、図７に示すような個別命令の動作の詳細は、図１０〜１４の各命令タイプ別のフローチャートにて後述する。
【０１１３】
まず、全体の動作の流れを処理順に説明する。
【０１１４】
処理９０１は、第二の領域２０２のテーブル先頭アドレスをローカル変数”ｔａｂｌｅ＿ｐｏｉｎｔｅｒ”に設定する。該テーブル先頭アドレスは、予めリンカ（図３中で３０８として図示）の処理を経て静的に解決され、該第一の領域２０１中に保持しておくか、該翻訳ルーチンを呼び出す際に、上位のマスター関数から引数の形で与えられてもよいことは前述した通りである。
【０１１５】
続く、処理９０２では、上記”ｔａｂｌｅ＿ｐｏｉｎｔｅｒ”が指す命令一行分のデータを、読み出しバッファ”ｂｕｆｆｅｒ［  ］”に取り込む。この処理により、引き続き実行される判定処理（９０３、９０５、９０７、９０９、９１１、９１３）で、命令の判別と、個別処理への分岐が可能となる。
【０１１６】
判定９０３では、該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これがデータ転送命令”ＦＯＲＷＡＲＤ”と一致するかどうかが調べられる。一致するならば、転送処理９０４に分岐し、一連の転送処理終了後は、処理９１４に移行する。一方、一致しない場合は、引き続き判定９０５に移行する。
【０１１７】
判定９０５では、同じく該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これがダミーリード命令”ＤＵＭＭＹＲＤ”と一致するかどうかが調べられる。一致するならば、ダミーリード処理９０６に分岐し、一連の処理終了後は、処理９１４に移行する。一方、一致しない場合は、引き続き判定９０７に移行する。
【０１１８】
判定９０７では、同じく該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これがフラグ変化待ち命令”ＦＬＡＧＷＡＩＴ”と一致するかどうかが調べられる。一致するならば、フラグ変化待ち処理９０８に分岐し、一連の処理終了後は、処理９１４に移行する。一方、一致しない場合は、引き続き判定９０９に移行する。
【０１１９】
判定９０９では、同じく該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これが時間待ち命令”ＴＩＭＥＷＡＩＴ”と一致するかどうかが調べられる。一致するならば、時間待ち処理９１０に分岐し、一連の処理終了後は、処理９１４に移行する。一方、一致しない場合は、引き続き判定９１１に移行する。
【０１２０】
判定９１１では、同じく該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これが外部関数コール命令”ＦＵＮＣＣＡＬＬ”と一致するかどうかが調べられる。一致するならば、外部関数コール処理９１２に分岐し、一連の処理終了後は、処理９１４に移行する。一方、一致しない場合は、引き続き判定９１３に移行する。
【０１２１】
判定９１３では、同じく該読み出しバッファの先頭バイト”ｂｕｆｆｅｒ［０］”が解析され、これが翻訳処理終了命令”ＥＮＤ”と一致するかどうかが調べられる。一致するならば、処理９１５に分岐し、翻訳処理を終了し呼び出し元に復帰する。一方、一致しない場合は、処理９１４に移行する。
【０１２２】
処理９１４では、次の命令ステップを読み出す準備として、ローカル変数”ｔａｂｌｅ＿ｐｏｉｎｔｅｒ”の内容に次の行へのオフセット分（アドレス増加分）を加算する。すなわちこれは、図７の命令体系ＩもしくはＩＩの場合では、１０バイト分に相当する。
【０１２３】
その後、処理９０２に分岐し、上述する一連の処理９０２乃至９１４を再び繰り返す。つまり、翻訳処理終了命令”ＥＮＤ”が現れるまで、上記フローに従ったシーケンスを繰り返し実行することを意味する。
【０１２４】
図９中の転送処理９０４、ダミーリード処理９０６、フラグ変化待ち処理９０８、時間待ち処理９１０、外部関数コール処理９１２は、当該命令ごとの纏まった処理であり、サブルーチンによっても実装可能である。これらの処理内容は、以下図１０〜１４のフローチャートにより個別に後述する。
【０１２５】
これら後述する個別命令では、図７で示すように、データサイズ、レジスタ・アドレス、初期値データなどの属性が必要である。しかしながら、上述の処理９０２で示すように、これらの属性は既に読み出しバッファ”ｂｕｆｆｅｒ［  ］”内に格納されている。また、読み出しバッファ”ｂｕｆｆｅｒ［  ］”は、配列であって、適宜所定の配列要素から読み出せば属性値が取り出せることは自明である。したがって、この属性値の取り出し処理については、図１０〜１４のフローチャートにおいては省略し図示していない。
【０１２６】
図１０は、データ転送処理のフローチャートを示したものである。
【０１２７】
処理１００１では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”ｔｅｍｐ０”に設定する。すなわち、設定レジスタのもともとの内容が、ローカル変数”ｔｅｍｐ０”に設定される。
【０１２８】
処理１００２では、上記ローカル変数”ｔｅｍｐ０”と、マスクデータの１の補数との論理積が演算され、ローカル変数”ｔｅｍｐ１”に設定される。すなわち、ローカル変数”ｔｅｍｐ１”の内容は、これから本命令によって設定しようとするビットが”０”であり、残りのビットがもともとの設定レジスタのビットパターンで構成されたものとなる。
【０１２９】
処理１００３では、初期値データとマスクデータの論理積が演算され、ローカル変数”ｔｅｍｐ２”に設定される。すなわち、ローカル変数”ｔｅｍｐ２”の内容は、これから本命令によって設定しようとするビットが初期値データの内容そのものであり、残りのビットがすべて”０”で構成されたものとなる。
【０１３０】
処理１００４では、上記ローカル変数”ｔｅｍｐ１”とローカル変数”ｔｅｍｐ２”との論理和が演算され、該データがデータサイズを考慮して設定レジスタに書き戻される。
【０１３１】
したがって、その内容は、本命令によって設定しようとするビットが初期値データそのものであり、残りのビットがもともとの設定レジスタのビットパターンにより構成されたものとなる。引き続き、処理１００５では、本フローチャートの処理を終了し呼び出し元に復帰する。
【０１３２】
上記の操作を行うことにより、マスクデータで指定した任意のビット幅、もしくはビットパターンにおいての初期値の転送が可能となり、あらゆる種類のマイクロコンピュータのデータ設定操作に適用することが可能となる。
【０１３３】
図１１は、ダミーリード処理のフローチャートを示したものである。
処理１１０１では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”ｔｅｍｐ０”に設定する。
【０１３４】
これにより、レジスタ・アドレスの属性で示される設定レジスタのダミーリードが完了したことになる。
ローカル変数”ｔｅｍｐ０”の内容は、これ以降は使用されず廃棄され、処理１１０２により呼び出し元に復帰する。
【０１３５】
図１２は、フラグ変化待ち処理のフローチャートを示したものである。
処理１２０１では、レジスタ・アドレスの属性で示されるアドレスより、データサイズの属性を考慮してデータを読み込み、ローカル変数”ｔｅｍｐ０”に設定する。すなわち、設定レジスタの内容が、ローカル変数”ｔｅｍｐ０”に設定される。
【０１３６】
処理１２０２では、ローカル変数”ｔｅｍｐ０”の内容と、ビット位置データとの論理積が取られ、ローカル変数”ｔｅｍｐ１”に格納される。すなわち、ローカル変数”ｔｅｍｐ１”の内容は、これから本命令によってテストしようとするビットが設定レジスタ由来のビットパターンであり、残りのビットがすべて”０”で構成されたものとなる。
【０１３７】
続く判定１２０３では、上記ローカル変数”ｔｅｍｐ１”の内容と、ビット論理値データの属性とが照合される。
一致するならば、処理１２０４に抜けて本処理を終了し、呼び出し元に復帰する。一致しないならば、再び処理１２０１に戻り、判定１２０３が成立するまで、該当する設定レジスタの内容をチェックしつつ待ち動作を実行する。
【０１３８】
図１３は、時間待ち処理のフローチャートを示したものである。
処理１３０１では、ローカル変数”ｌｏｏｐ＿ｅｎｄ”に、待ち時間の属性として、実際には後述のループ回数を設定する。
【０１３９】
処理１３０２では、ローカル変数”ｔｅｍｐ０”をループカウンタとして使用する準備として、これを”０”に初期化する。
判定１３０３では、ローカル変数”ｔｅｍｐ０”とローカル変数”ｌｏｏｐ＿ｅｎｄ”の内容が比較され、”ｔｅｍｐ０”≧  ”ｌｏｏｐ＿ｅｎｄ”ならば、処理１３０５に抜けて呼び出し元に復帰し、待ち動作を終了する。
【０１４０】
”ｔｅｍｐ０”＜”ｌｏｏｐ＿ｅｎｄ”ならば、処理１３０４でループカウンタであるローカル変数”ｔｅｍｐ０”の内容を”１”増加させ、判定１３０３に戻ってループ動作を行う。
【０１４１】
これは、判定１３０３と処理１３０４のプログラム走行時間の総和を時間分解能として、ループ回数分だけの待ち時間を実現していることになる。
【０１４２】
図１４は、外部関数コール処理のフローチャートを示したものである。
処理１４０１では、与えられた関数ポインタ値の属性を、関数としてコールすることにより、外部関数を呼び出す。該関数からの復帰後は、続く処理１４０２によって処理を終了し、呼び出し元に復帰する。
【０１４３】
以下に、本実施形態の効果を要約する。以上の説明より明らかように、本実施形態のマイクロコンピュータ１０１によれば、ＣＰＵ１０２は、リセット解除後に、オペレーティングシステムを起動し、アプリケーションプログラムが走行する前に、初期化を完了することができる。初期化は、ＣＰＵ１０２が、特定のレジスタに特定の値を書き込むことによって行うことを基本としている。
【０１４４】
このような初期化のプログラムを、例えば、Ｃ言語で記述した場合、コンパイラ後の命令コードは、データ転送命令を主体とするものに変換される。これは、イミディエートデータ値をＣＰＵレジスタにロードした後に該データ値を目的とする初期設定用レジスタに送る命令列の繰り返しとしてコンパイルされる。すなわち、初期化用のデータ値は命令コードのオペランドという形で格納されるために、最終的には命令とデータが一団として混在した命令コードが生成されることになるのが普通である。
【０１４５】
本発明によるマイクロコンピュータの初期化装置（初期化プログラム）は、命令とデータを混在した形でＲＯＭに格納するのではなく、ＣＰＵ１０２により直接実行可能な命令コードを格納する第一の領域２０１と、ＣＰＵ１０２が直接実行不可能なデータを格納する少なくとも一箇所以上の第二の領域２０２とに分けて構成されることを特徴としている。
【０１４６】
第一の領域２０１は、第二の領域２０２のデータ内容により初期化シーケンスを行う翻訳実行ルーチンを含む役割が与えられ、第二の領域２０２は、第一の領域２０１から探索可能なように、何らかの規約に基づいて構成されたデータ構造となる。
【０１４７】
しかも、該規約は、ＣＰＵ２０１の命令体系とは、独立・無関係に設定することが可能なので、特定マイクロコンピュータのアーキテクチャに依存しなくなると共に、外部的なツールによる作成・管理が容易となる。
【０１４８】
また、これら前記第一の領域２０１と少なくとも一箇所以上の第二の領域２０２は、マイクロコンピュータ１０１内のＲＯＭ１０４に、ユーザアプリケーションプログラムとマージされた形で配置されるので、専用の起動ＲＯＭを設けずともよく、コストの上昇が押さえられる。
【０１４９】
さらに、第二の領域２０１は複数箇所存在してもよい。すなわち、特定の第二の領域は汎用タイマ・ユニット１０６用、別の第二の領域は通信コントローラ１１１用と、初期化の用途別に分離して作成できる。個別周辺デバイスの初期化が必要であれば、それに相当する第二の領域２０２を選択して、第一の領域２０１の翻訳ルーチンを実行すればよい。
【０１５０】
したがって、後工程で各周辺デバイスの初期化ルーチンを統合することが不要となると共に、各デバイスドライバ作成者間の初期化プログラム作成作業や単体検証作業の独立性を確保できる。また、これは裏を返せば、各デバイスドライバ作成者間の相互依存性がなくなるということで、並行作業や並行検証によって工期を短縮できることを意味する。
【０１５１】
さらに、上記の方式の別の利用法としては、一つの周辺デバイスに対して複数の第二の領域２０２（互いに異なる複数個の初期化テーブル）を持つことが可能となる。すなわち、製品バリエーションに対応して、個別の第二の領域による初期化シーケンスを選択して行うことにより、製品毎の周辺デバイスの動作モードを変更することができる。
【０１５２】
第二の領域２０２で定義される初期化シーケンスは、当該マイクロコンピュータ種別に対して固有のものであり、ＣＰＵ１０２の命令セットが変わらず、同一系列のマイクロコンピュータであって、内部デバイスの構成のみが変更された場合には、この第二の領域２０２のデータのみを変更すればよい。
【０１５３】
また、ＣＰＵ１０２の命令セットが変更されるような大幅な変更時には、第一の領域２０１に格納される翻訳ルーチンのリコンパイルが必要になる。しかしながら、第一の領域２０１に格納される翻訳ルーチンは、Ｃ言語で記述された汎用的なアルゴリズムであるので、例えば、Ｃコンパイラによるリコンパイルで簡単に機能を移植することができる。これにより、従来に比して初期化プログラムの移植や保守の取り回しに優れることになる。
【０１５４】
したがって、複数種類のマイクロコンピュータの変数定義を格納した共有データテーブルを持つ必要がなく、データテーブル自体は巨大であるがその中の限定された領域しか使用していないという状況が発生することが無いので、ＲＯＭのメモリ効率を低下させることがない。
【０１５５】
加えて、ハードウェアの変数定義（アドレス）のみ解決だと、該変数にどういう値を設定するかという設定値の変化に対しては考慮が成されていないことになるのは、前述の通りである。
【０１５６】
マイクロコンピュータの種別が変更されると、ハードウェアの変数定義（アドレス）が変更されると共にその設定値の意味付けも変更されるのは前述の通りであり、第二の領域２０２を設けることによって、ハードウェアの変数定義（アドレス）と、それに設定すべき値の両方が通常のプログラムから分離され、変更が容易になる。
【０１５７】
第二の領域２０２は、ユーザにより設定可能とするものであるから、マイクロコンピュータの種別が変更された場合に、その初期設定動作の変更が可能になる。これは、裏を返せば、第一の領域２０１を、該プログラム作成者が変更しなくてもすむことを示したものである。
【０１５８】
第二の領域２０２を翻訳して実際の初期化動作を行う第一の領域２０１を変更しないことは、翻訳動作に対する信頼性を一定に保持しながら複数の製品機種に該装置を使い回せると言うことを意味している。
【０１５９】
一般的には、前述のように、ＣＰＵ１０２の命令セットが変更されない限りは、第一の領域２０１の内容を変更することは不要であり、したがってＣＰＵ１０２の命令セット変更されない同一系列のマイクロコンピュータに対しては、第一の領域２０１を固定として動作の信頼性を確保することができる。
【０１６０】
また、マイクロコンピュータの外部より入力されたポートの論理入力値に従って、第二の領域２０２に属するデータの所定の組合せ（初期化テーブル）を選択的に変更することにより、同一のマイクロコンピュータを採用しているものの、組み込み製品の仕向け地の変化で初期化動作を変えたいと言う要求に対応できる。例えば、ある仕向け地では周辺デバイスのうち通信コントローラを使用し、別の仕向け地では通信コントローラを使わないという設定が可能である。
【０１６１】
すなわち、マイクロコンピュータ１０１に組み込まれた初期化装置が起動するタイミングで、第一の領域２０１に組み込まれた翻訳ルーチンを含む処理手順がマイクロコンピュータ１０１の外部ポートを読み込み、その論理値のパターンによって第二の領域２０１の中から読み出す組合せを選択する。
【０１６２】
これにより、初期化プログラムを変更しないまま、外部より初期化動作を変化させることが可能となり、上述の製品バリエーションの変化に対応することが可能となる。
【０１６３】
また、論理入力値によらずに、ＲＯＭ１０４内に定義された第三の領域６０１のデータ内容よって、第二の領域２０２に属するもの中から、所定の組合せを選択することも可能である。これにより、マイクロコンピュータ外部とのやり取り無しに、ＲＯＭ１０４内でクローズして行うことができ、外部ポートの空きが少ないなどの場合に有効である。
【０１６４】
すなわち、マイクロコンピュータ１０１に組み込まれている初期化装置が起動するタイミングで、第一の領域２０１に組み込まれた翻訳ルーチンを含む処理手順が、ＲＯＭ１０４に格納された第一および第二の領域とも異なる第三の領域６０１のデータ内容を読み込み、そのデータ内容にしたがって第二の領域２０２の中から読み出す組合せを選択する。
【０１６５】
第三の領域６０１としては、仕向け地ごとに変更されるような、ユーザのアプリケーションプログラムに属する特定領域を想定している。したがって、第一の領域２０１に格納される初期化のための翻訳プログラムを含む処理手順を、上述したように内容不変として固定化するためには、該領域は固定アドレスで定義されることが望ましい。
【０１６６】
これにより、初期化プログラムを変更しないまま、外部より初期化動作を変化させることが可能となり、上述の製品バリエーションの変化に対応することが可能となる。
【０１６７】
第二の領域２０２のデータ構造を表もしくはテーブル形式で実現することにより、初期化シーケンスの各ステップを表もしくはテーブルの各行に対応付けて作成することができ、初期化プログラムの作成者に対して生産性や可読性の向上が望める。また、データ構造をとることによって、該データを本質的に機械可読と成すことができる。したがって、この作成や保守に際して、外部のツールにより支援を行うことが可能で、開発効率や保守効率を向上することが可能となる。
【０１６８】
第二の領域２０２のデータ構造を表もしくはテーブル形式で作成する場合に、プログラム作成者に対して可読性に優れた、ＣＳＶ形式あるいはＸＭＬ等のマークアップ言語を採用することができ、ＣＳＶ形式もしくはマークアップ言語で記述された初期化手続きが外部ツールにより変換されて、第二の領域２０２のデータ構造（表もしくはテーブル）となる。
【０１６９】
表もしくはテーブル形式のデータ構造では、各要素が何を表しているのかの規約を別文書として定めて規約と実際の設定値の両文書を対にして管理しなければならないが、ＣＳＶ形式、マークアップ言語の場合には、各要素が何を表しているのかの規約と実際の設定値とを、一つの文書中に構造化して示すことができる。また、規約が変更された場合も、外部ツールを使って従来の文書を新規約に対応させる変更が容易となる。これにより、第二の領域２０２のデータ構造の作成や保守が簡単になるという利点がある。
【０１７０】
本実施形態では、表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のデータサイズと所定のビットマスク値と、これらで指定された特定記憶領域に関する初期値の４つの属性を含み、これらの属性で指定された記憶領域に関する所定ビット幅のデータ転送を表現している。
【０１７１】
初期化操作の本質は、特定のレジスタに対して特定の初期化用データを設定することであり、アドレスの情報と初期値の情報が必須であることは自明であり、加えて、種々のマイクロコンピュータの初期化操作に対応するために、バイト／ワードなどの８ビットの倍数値を表すデータサイズの情報、および該当領域のどのビット範囲に初期値を転送するのかを指定するマスク情報の計４つの属性があれば、あらゆるマイクロコンピュータの初期化用のデータ転送を、汎用的に表現することが可能となる。
【０１７２】
これら属性が第一の領域２０１の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要である。この規約をもとに、第一の領域２０１の翻訳ルーチンが属性の参照を正しく実行し、また外部のツールによって該データ構造の保守や管理が容易となる。
【０１７３】
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のデータサイズの２つの属性を含み、これらの属性で指定された記憶領域に関するダミーリードを表現している。
【０１７４】
マイクロコンピュータの種類によっては初期化用レジスタをダミーリードしなければ初期値が設定できないものが存在する。特に、割込みフラグを格納するステータスレジスタと称するものについては、プログラムが正しく割込みフラグ（すなわち割込み要因）を認識したということを保障するため、ダミーリード後でなければ該当フラグがクリアできないものが多い。これは、情報の受け渡しに際して、当該レジスタとＣＰＵ間の情報の欠損を防ぐハンドシェーク動作の一形態である。
【０１７５】
また、ダミーリード動作のデータサイズとしては、当該レジスタのデータサイズ、すなわちバイト／ワードなどの８ビットの倍数値に合わせてリード動作を行わないと、ダミーリードを正しく認識しないマイクロコンピュータが存在する。したがって、このデータサイズ属性も必須となる。
【０１７６】
以上のことから、初期化操作の一機能としてダミーリード機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
【０１７７】
また、これら属性が第一の領域２０１の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
【０１７８】
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定のアドレスと所定のビット位置および所定の論理値の３つの属性を含み、これらの属性で指定された該当記憶領域の該当ビットが所定の論理値となるまでの待ち合わせ動作を表現している。
【０１７９】
初期化動作の方式としては、あるイベントが発生するまで初期化プログラムの進行を止めて待ち合わせを行いたい用途が存在する。特に、周辺デバイスの汎用タイマ・ユニットに対してこの要求が発生することが多い。とりわけ、アウトプットコンペアによるパルス出力のデバイスに対して、アプリケーションプログラムが走行する前に、所定の論理出力を初期値として確定して出力したい用途が存在する。これは、すなわち、初期化プログラムの中で、直近の時間に対するコンペアマッチを発生させて出力を確定させることを意味する。
【０１８０】
この手段を採用することによって、複雑な汎用タイマ・ユニットに対する操作が可能となる。このときのシーケンスを詳しく述べると、まず、出力レジスタに初期値として出力したい論理値を与えると共に、コンペアマッチレジスタに直近のコンペアマッチが発生するような小さい値を設定する（コンペアマッチレジスタと比較されるフリーランタイマは、リセット解除後ゆえ零クリアされていると仮定する）。
【０１８１】
その後、汎用タイマ・ユニットの時間比較動作を開始させる（タイマの動作開始後、前記フリーランタイマは所定の時間分解能ごとにその値を増加させ、コンペアマッチレジスタと値が等しくなったときに、出力レジスタの設定値をポートに出力する。さらに、ステータスレジスタに該コンペアマッチが発生したことを示すコンペアマッチフラグがセットされると仮定する）。
しかるに、フラグ待ち合わせ機能を用いれば、初期化プログラムの中でステータスレジスタを監視し、該コンペアマッチフラグがセットされるまで待ち合わせを行うことが可能となる。
【０１８２】
さらに、該コンペアマッチフラグのクリアを行い、初期化後に不要な割り込みを受け付けないように、割込み要因をクリアするという手順が実現可能となる（割り込み禁止解除後は、このコンペアマッチフラグがセットされていると割り込み動作を受け付けると仮定する。また、前述のダミーリード機能は、本機能に内在していると見なされる）。
以上のことから、初期化操作の一機能として特定フラグが変化するまでの待ち合わせ機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
【０１８３】
また、これら属性が第一の領域２０１の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは、同じである。
【０１８４】
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定の待ち時間の属性を含み、該属性で指定された時間の待ち動作を表現している。
【０１８５】
周辺デバイスの種類によっては、初期化に際して所定の微細な待ち時間を要求するものが存在する。特に、内部クロックソースを、ＣＰＵとは別に独立に保持している汎用タイマ・ユニットや、通信コントローラなどについてこの要求が発生することが多い。
【０１８６】
すなわち、周辺デバイスの起動から、その内部クロックの発振が安定する期間は正常な初期化を行えず、待ち合わせが必要となる。
【０１８７】
本手段を採用することによって、初期化シーケンスを上記の待ち合わせ時間を満足するように一時停止させ、正常な初期化を実行させることができる。
【０１８８】
以上のことから、初期化操作の一機能として時間待ち動作の機能があれば、あらゆるマイクロコンピュータの初期化操作を、汎用的に表現することが可能となる。
【０１８９】
また、これら属性が第一の領域２０１の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
【０１９０】
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも所定の関数へのポインタの属性を含み、該属性で指定された関数への関数コールを表現している。
【０１９１】
周辺デバイスの種類によっては、初期化中にその外部出力の論理値が不定となるものが存在する。このようなものに対しては、その出力の禁止／許可を行うサービス関数がアプリケーションプログラム中に実装されることが通常行われる。
【０１９２】
なぜならば、リセット解除後からアプリケーションプログラムが起動されるまでの出力禁止／許可は、初期化プログラムがその責任を担うと仮定されているのに対し、制御停止から電源遮断までの出力禁止／許可の責任は、該アプリケーションプログラムが担うことになっているからである。したがって、通常、アプリケーションプログラムの中にこのようなサービス関数が実装される。
【０１９３】
したがって、初期化中には、その外部出力を上記関数によって禁止とし、初期化終了後にあらためて上記関数によって許可するという操作が必要となる。
【０１９４】
この関数の実体は、特定の外部出力ポートに対する所定の論理値の書込み指示であり、この論理値出力を受けた外部回路が上記デバイス出力値の出力禁止もしくは許可動作を行うが、この出力禁止／許可用の外部ポートの位置は、初期化プログラムによって預かり知らぬ情報である。
【０１９５】
なぜならば、初期化の手順は、使用するマイクロコンピュータの種別によって決まるものであるが、上記外部ポートの位置は、該マイクロコンピュータに外付けされる回路の都合で決まるからである。したがって、同一の初期化用プログラムを採用していても、ハードウェアの都合で上記初期化ポートの位置が異なると言う場合が起こりえる。
【０１９６】
したがって、これらの外付け回路の差異を吸収して、初期化プログラムの独立性を確保するために設けられたのが、本手段であって、上記「該属性で指定された関数への関数コール」とは、具体的には上記出力禁止／許可用のアプリケーション関数を呼び出すことを意味する。
【０１９７】
本手段を採用することによって、初期化動作に際して外部のアプリケーション関数をコールすることができ、複雑な操作を実行することができる。
【０１９８】
以上のことから、初期化操作の一機能として外部関数コールの機能があれば、あらゆるマイクロコンピュータの初期化操作を、その外付け回路の差異も含めて、汎用的に表現することが可能となる。
【０１９９】
また、これら属性が前記第一の領域の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは、同じである。
【０２００】
また、上記表もしくはテーブルの各行、すなわち命令単位として表現されるべき機能のうち、必須のものの一つを手段として、少なくとも一連の初期化処理の終了を意味する属性を含み、第一の領域に含まれる翻訳ルーチンによる翻訳実行の終了を表現している。
【０２０１】
マイクロコンピュータの初期化シーケンスは、表もしくはテーブルの各行が、命令の１ステップとして表現され順次実行されるものである。したがって、一連の処理の終了を意味する表現が必ず必要である。
【０２０２】
この表現により、第一の領域２０１に格納された初期化用の翻訳ルーチンはその制御を上位の関数に戻し、一連の処理を終了させる。さらに、処理を戻されたマスター関数は、初期化処理が完全に終了しプラットフォームが完備された前提に立って、引き続きオペレーションシステムを起動し、ユーザが定義したアプリケーションプログラムに処理を委ねることが可能となる。
【０２０３】
また、この終了属性が第一の領域２０１の翻訳ルーチンより探索可能であるような規約に基づき、所定の列、もしくは各行先頭よりの所定のオフセット・アドレスに従って格納されることが重要であることは同じである。
【０２０４】
車載用制御装置においては、初期化操作として行うべき処理は、ある程度限定されていると共に、その内容についてアプリケーション作成者が関与すべき必然性を備えているものは少ないので、本実施形態によるマイクロコンピュータが車載用制御装置に組み込まれることにより、そのシーケンスを第二の領域２０２で集中して定義できることは、プログラム作成者に対して大きな利便性を与えることに繋がる。
【０２０５】
また、車載用制御装置については、その動作に対して高い信頼性が要求されるため、その初期化操作についても設計意図通りの確実な動作が要求される。
【０２０６】
したがって、本請求項の手段を取ることによって、車載用制御装置を使用するユーザに対してある水準の動作信頼性を保障することができる。
【図面の簡単な説明】
【０２０７】
【図１】本発明による初期化装置を適用されるマイクロコンピュータの一つの実施形態の内部構成を示すブロック図。
【図２】本発明による初期化装置を適用されるマイクロコンピュータのＲＯＭ上の配置例と動作概略を示したブロック図。
【図３】本発明によるマイクロコンピュータの初期化装置に関係する外部ツールによる支援形態と初期化テーブルの作成作業を解説した図。
【図４】周辺デバイスごとに初期化テーブルを分離した実施形態を例示するブロック図。
【図５】外部ポートによる複数の初期化テーブルからの選択する実施形態のブロック図。
【図６】ユーザ・データによる複数の初期化テーブルからの選択する実施形態のブロック図。
【図７】初期化テーブルを構成する命令体系を例示する図。
【図８】命令体系をＸＭＬによって記述した一実施形態を例示する図。
【図９】本発明によるマイクロコンピュータの初期化装置における翻訳動作の全体概略を示すフローチャート。
【図１０】本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして転送処理を示すフローチャート。
【図１１】本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとしてダミーリード処理を示すフローチャート。
【図１２】本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとしてフラグ変化待ち処理を示すフローチャート。
【図１３】本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして時間待ち処理を示すフローチャート。
【図１４】本発明によるマイクロコンピュータの初期化装置における初期化命令の一つとして外部関数コール処理を示すフローチャート。
【符号の説明】
【０２０８】
１０１  マイクロコンピュータ
１０２  ＣＰＵ
１０３  内部バス
１０４  ＲＯＭ
１０５  ＲＡＭ、
１０６  汎用タイマ・ユニット
１０７  Ａ／Ｄコンバータ
１０８  Ｄ／Ａコンバータ
１０９  Ｉ／Ｏポート
１１０  ＤＭＡコントローラ
１１１  通信コントローラ
２０１  第一の領域
２０２  第二の領域
２０３、４０３  設定レジスタ
５０３  外部スイッチ
６０１  第三の領域
【図１】
0004808016.tif 000002
【図２】
0004808016.tif 000003
【図３】
0004808016.tif 000004
【図４】
0004808016.tif 000005
【図５】
0004808016.tif 000006
【図６】
0004808016.tif 000007
【図７】
0004808016.tif 000008
【図８】
0004808016.tif 000009
【図９】
0004808016.tif 000010
【図１０】
0004808016.tif 000011
【図１１】
0004808016.tif 000012
【図１２】
0004808016.tif 000013
【図１３】
0004808016.tif 000014
【図１４】
0004808016.tif 000015