(58)【調査した分野】(Int.Cl.,DB名)
プログラムを実行するための命令が記憶されたプログラム領域、プログラムの実行に伴うデータが記憶されるデータ領域、及びメモリ空間の分割方法を指定する書き換え設定データが記憶された設定データ領域を含むメモリ、及び、前記プログラムに従って前記メモリに記憶された命令を逐次特定してプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御装置であって、
前記書き換え設定データの値を保持する書き換え設定レジスタと、
前記設定データ領域を読み出し、読み出した書き換え設定データの値を前記書き換え設定レジスタに保持させると共に、前記書き換え設定レジスタに保持された前記書き換え設定データの値に基づいて前記メモリ空間の領域分割を設定する設定部と、を備え、
前記書き換え設定データは、前記領域分割によって新たに追加されるプログラム領域である書き換えプログラム領域を設定するか否かを示す書き換えアクセプタデータ、書き換えプログラム領域の開始アドレスを示す書き換えプログラム領域開始アドレスデータ、及び書き換えプログラム領域の分割数を示す書き換え領域分割設定データを含み、
前記設定部は、
前記書き換えアクセプタデータで書き換えプログラム領域を設定しないとされている場合には、前記メモリのプログラム領域の全領域を書き込み及び消去が不能な固定プログラム領域とし、
前記書き換えアクセプタデータで書き換えプログラム領域を設定するとされている場合で、かつ前記書き換え領域分割設定データで分割数が1と設定されている場合には、前記固定プログラム領域に加えて1つの書き込み及び消去が可能な書き換えプログラム領域を分割して設定し、
前記書き換えアクセプタデータで書き換えプログラム領域を設定するとされている場合で、かつ前記書き換え領域分割設定データで分割数が2と設定されている場合には、前記固定プログラム領域に加えて1つの書き込み及び消去が可能な書き換えプログラム領域と1つの書き込み及び消去が不能な書き換えプログラム領域との2つの書き換えプログラム領域を分割して設定する
メモリ制御装置。
前記書き換え設定データは、前記書き換え領域分割設定データで分割数が2と設定されている場合において、前記2つの書き換えプログラム領域の一方を書き込み及び消去が可能な領域とし、他方を書き込み及び消去が不能な領域とするアクセス領域指定データをさらに含み、
前記設定部は、前記アクセス領域指定データを切り換えることによって、前記2つの書き換えプログラム領域の書き込み及び消去の可能及び不能を切り換える
請求項1に記載のメモリ制御装置。
プログラムを実行するための命令が記憶されたプログラム領域、プログラムの実行に伴うデータが記憶されるデータ領域、及びメモリ空間の分割方法を指定する書き換え設定データが記憶された設定データ領域を含むメモリ、及び、前記プログラムに従って前記メモリに記憶された命令を逐次特定してプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御方法であって、
設定部により、前記設定データ領域を読み出し、読み出した書き換え設定データの値を書き換え設定レジスタに保持させると共に、前記書き換え設定レジスタに保持された前記書き換え設定データの値に基づいて前記メモリ空間の領域分割を設定し、
前記書き換え設定データは、前記領域分割によって新たに追加されるプログラム領域である書き換えプログラム領域を設定するか否かを示す書き換えアクセプタデータ、書き換えプログラム領域の開始アドレスを示す書き換えプログラム領域開始アドレスデータ、及び書き換えプログラム領域の分割数を示す書き換え領域分割設定データを含み、
前記設定部による設定は、
前記書き換えアクセプタデータで書き換えプログラム領域を設定しないとされている場合には、前記メモリのプログラム領域の全領域を書き込み及び消去が不能な固定プログラム領域とし、
前記書き換えアクセプタデータで書き換えプログラム領域を設定するとされている場合で、かつ前記書き換え領域分割設定データで分割数が1と設定されている場合には、前記固定プログラム領域に加えて1つの書き込み及び消去が可能な書き換えプログラム領域を分割して設定し、
前記書き換えアクセプタデータで書き換えプログラム領域を設定するとされている場合で、かつ前記書き換え領域分割設定データで分割数が2と設定されている場合には、前記固定プログラム領域に加えて1つの書き込み及び消去が可能な書き換えプログラム領域と1つの書き込み及び消去が不能な書き換えプログラム領域との2つの書き換えプログラム領域を分割して設定することを含む
メモリ制御方法。
【発明を実施するための形態】
【0016】
以下、図面を参照して、本発明を実施するための形態について詳細に説明する。
【0017】
[第1の実施の形態]
図1ないし
図4を参照して、本実施の形態に係るメモリ制御装置について説明する。本実施の形態に係るメモリ制御装置は、予め設けた設定回路でCPUのプログラムカウンタ(PC)を指定することにより、指定されたPCの命令が、メモリに格納された本来実行すべき命令ではなく、ハードウエアで疑似的に設定された命令に変換され、CPUによって当該変換された命令が実行される機能(命令変換機能)を有する。以下では、変換後に実行される命令が、ジャンプ命令(擬似ジャンプ命令)である場合を例示して説明する。
【0018】
図1は、実施の形態に係るマイクロコンピュータシステム1を示す機能ブロック図である。
図1に示すように、マイクロコンピュータシステム1は、メモリ制御装置10、メモリ12、及びCPU14を含んで構成されている。メモリ制御装置10は、本実施の形態に係るメモリ制御装置である。メモリ12の種類は特に限定されないが、本実施の形態では、フラッシュメモリのような不揮発性メモリを想定している。CPU14は、一般的なCPUであり、内部にプログラムカウンタ140を備えている。
【0019】
図2(a)に本実施の形態に係るメモリ制御装置10の機能ブロック図を示す。
図2(a)に示すように、メモリ制御装置10は、命令変換部100、変換後命令設定回路112、及び命令変換レジスタセット120を含んで構成されている。
【0020】
図2(b)に、本実施の形態に係る命令変換レジスタセット120に含まれるレジスタの内容を示す。
図2(b)に示すように、命令変換レジスタセット120は、以下の3つのレジスタが含まれている。
【0021】
すなわち、「PCON」レジスタは、メモリ制御装置10の命令変換機能を使用するか否かについての指定を格納するレジスタであり、本実施の形態では、論理値=1で使用する、論理値=0で使用しないとしている。むろんこの対応関係は逆の論理値であってもよい。「CSR」レジスタは、命令変換の対象となるPC(以下、「指定PC」という)の、メモリ12におけるセグメントデータを格納するレジスタである。「PC指定」レジスタは、指定PCのアドレスデータを格納するレジスタである。
【0022】
変換後命令設定回路112は、変換後の命令を設定する回路であり、当該命令を4桁の16進数で指定するハードウエア回路である。
【0023】
図3(a)に本実施の形態に係る命令変換部100の構成の一例を示す。
図3(a)に示すように、命令変換部100は、AND回路102、OR回路104、及びセレクタ106、108、110を含んで構成されている。各セレクタに付与された(1)及び(0)は入力端子を表す符合であり、各々セレクト信号の論理値が「1」の場合に、及び「0」の場合に選択される入力端子であることを示している。命令変換部100の一部である、AND回路102、OR回路104、及びセレクタ106、108を含む回路を、便宜上「選択回路114」といい、選択回路114におけるAND回路102の出力端子を符号「a」で表記し、セレクタ106の出力端子を符号「b」で表記する。
【0024】
図3(a)に示すように、変換後命令設定回路112の出力「INST1」及び「INST2」は、セレクタ106の(1)入力端子、及びセレクタ108の(1)端子入力に各々接続されている。なお、変換後の命令を示す変換後命令設定回路112の出力が2つあるのは、本実施の形態で想定しているジャンプ命令が2ワードで構成されるためであり、各々4桁の16進数で表されている。変換後命令INST1が上位1ワード分の命令を、変換後命令INST2が下位1ワード分の命令を各々示している。むろん、変換後命令が1ワード命令の場合は、変換後命令設定回路112の出力は、1つの変換後命令INSTである。
【0025】
次に、命令変換部100の動作について説明する。まず、指定PCのセグメントデータをCSRレジスタに、指定PCのアドレスデータをPC指定レジスタに設定し、本来実行されるべき命令を疑似ジャンプ命令に変換したいPCを設定する。次に、PCONレジスタを論理値「1」に設定して、本命令変換機能を使用することを指定する。
【0026】
PCONレジスタが有効の場合、CPUが保有するPCのセグメントデータ(CPU_CSR)とCSRレジスタのセグメントデータとの比較処理、及びCPUが保有するPCのアドレスデータ(CPU_PC)とPC指定レジスタのアドレスデータとの比較処理が実行される。比較結果が一致しない場合は何も処理を行わないが、一致した場合は、CPUに出力されるデータCPU_DINが、メモリに記憶されているデータ(メモリデータ)から、変換後命令設定回路112が出力する変換後命令INST1及びINST2、すなわち、本実施の形態では、疑似ジャンプ命令1及び擬似ジャンプ命令2のデータに変換される。
【0027】
以上の動作を実現する回路の一例について、
図3(a)に示す命令変換部100のブロック図に基づいて説明する。なお、
図3(a)において、記号X==Yは、XとYが一致した場合には論理値「1」とし、一致しない場合には論理値「0」とすることを表記する記号である。すなわち、PCONレジスタと1が比較され一致した場合(つまり、PCONレジスタの値が「1」の場合)に論理値「1」とされ、CSRレジスタとCPU_CSRとの比較結果が一致した場合に論理値「1」とされ、PC指定レジスタとCPU_PCとの比較結果が一致した場合には論理値「1」とされる。
【0028】
AND回路102は3入力AND回路であり、PCONレジスタの論理値と、CSRレジスタとCPU_CSRとの比較結果と、PC指定レジスタとCPU_PCとの比較結果が入力さる。AND回路102の出力は、3つの入力の論理値がすべて「1」の場合に「1」を出力し、その他の場合に論理値「0」を出力する。
【0029】
AND回路102の出力によってセレクタ110が切り換えられ、AND回路102の出力が「0」の場合にはメモリ12に記憶されたデータであるメモリデータが、AND回路102の出力が「1」の場合には擬似ジャンプ命令が選択され、CPU_DINデータとしてバス16に出力される。出力されたCPU_DINデータはCPU14に取り込まれ、実行される。
【0030】
OR回路104は2入力OR回路であり、PC指定レジスタとCPU_PCとの比較結果と、PC指定レジスタ+1とCPU_PCとの比較結果と、が入力され、いずれか一方が一致した場合に論理値「1」を出力する。PC指定レジスタ+1はPC指定レジスタの次のレジスタを意味している。つまり、本実施の形態では、2ワードの命令を前提としている。
【0031】
PC指定レジスタとCPU_PCとの比較結果が一致した場合には、OR回路104の一方の入力に論理値「1」が入力されると共に、セレクタ106において、(1)入力端子の変換後命令INST1が選択され、セレクタ110で(1)入力端子が選択されている場合には、INST1がCPU_DINとして出力される。
【0032】
また、PC指定レジスタ+1とCPU_PCとの比較結果が一致した場合には、OR回路104の他方の入力に論理値「1」が入力されると共に、セレクタ108において、(1)入力端子の変換後命令INST2が選択される。この際、セレクタ106のセレクト信号は論理値「0」となっているので、セレクタ106ではセレクタ108の出力に接続された(0)入力端子が選択され、セレクタ110で(1)入力端子が選択されている場合には、INST2がCPU_DINとして出力される。
【0033】
命令変換部100は以上のように動作し、PCで指定された本来CPUが実行すべき命令を他の命令に変換し、つまり、本実施の形態では擬似ジャンプ命令に変換し、当該擬似ジャンプ命令を実行する。
【0034】
次に、
図4を参照して、命令変換部100の動作とメモリ12の記憶領域との関係について説明するが、まず上述した命令変換部100の動作を以下にまとめて記す。
[1]CSRレジスタ及びPC指定レジスタにデータを格納する。本例では、このデータを0:0330H(セグメント=0、アドレス=0330H、以下これらのデータを「設定データ」という)とする。
[2]PCONを論理値「1」に設定し、本機能を有効にする。
[3]CSRレジスタの値とCPU_CSRとの比較処理、PC指定レジスタとCPU_PCとの比較処理を実行する。
[4]上記の比較結果がいずれも一致した場合に、変換後命令設定回路112で、ハードウエア的に設定したメモリのアドレスにジャンプする命令を実行する。
[5]ジャンプ先で指定された処理を実行し、予め定められた条件でジャンプ元に戻る。
【0035】
図4は、CPU14のPCで指定されたアドレスに従って、メモリ12に格納されたプログラムが逐次実行されていく状態を示している。そして、[3]における比較処理の結果、PCに対応するセグメント及びアドレスが[1]で設定した設定データと一致した場合には、本来実行すべき変換前命令20が、変換後の命令である変換後命令22に変換される。より具体的には、PC=0:0330Hで指定された命令MOV R0,#01H、PC=0:0332Hで指定された命令MOV R1,#01Hの組で表された変換前命令20が、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)で表された変換後命令22に変換されている。このことにより、
図4中の[4]で示されたように、メモリ12のセグメント・アドレス=2:C000Hにジャンプし、当該アドレスに格納されたプログラムを実行する。その後、予め定められた条件で次のPCの値に戻る([5])。
【0036】
以上のようにして、本実施の形態に係るメモリ制御装置10では、CPU14のプログラムカウンタ140で指定される命令を変換し、実行すべき命令が格納されたメモリ12内の領域が変更される。従って、本実施の形態に係るメモリ制御装置10によれば、簡易な方法でかつ柔軟にメモリの領域設定を行うことが可能となる。
【0037】
<第1の実施の形態の変形例>
図3(b)を参照して、本実施の形態に係るメモリ制御装置10aについて説明する。
本実施の形態は、指定PCを複数にし、各々の指定PCで変換される命令を異ならせる場合の形態である。そのため、メモリ制御装置10aの命令変換部100は、複合命令変換部100aに変更されている。
【0038】
図3(b)は、指定PCが3つの場合の複合命令変換部100aの構成の一例を示す機能ブロック図である。複合命令変換部100aは、各々の指定PCに対応する3つの選択回路114−1、114−2、114−3(図示省略)、OR回路130、132、及びセレクタ110aを含んで構成されている。3つの選択回路114−1、114−2、114−3の各々のa端子から出力信号a−1、a−2、及びa−3が出力され、b端子から出力信号b−1、b−2、及びb−3が出力される。出力信号a−1、a−2、a−3は、OR回路130に入力され、出力信号b−1、b−2、b−3は、OR回路132に入力される。
【0039】
選択回路114−1、114−2、114−3の各々は
図3(a)に示す選択回路114と同様の構成となっている、すなわち、各々の選択回路114の入力は、PCONレジスタ==1の演算結果、CSRレジスタ==CPU_CSRの演算結果、PC指定レジスタ==CPU_PCの演算結果、PC指定レジスタ+1==CPU_PCの演算結果、変換後命令INST1、INST2、メモリデータ、及び0000Hである。選択回路114−1、114−2、114−3の各々は、それぞれの入力に対応する出力信号a−1、a−2、a−3、及び出力信号b−1、b−2、b−3を出力する。
【0040】
いずれかの選択回路114の入力が上記の条件を満たすことにより、出力信号aの値がa=1となった場合には、OR回路130の出力信号が1となり、セレクタ110aによってOR回路132の出力信号が選択される。このとき、OR回路132の出力信号は、出力信号b−1、b−2、b−3のいずれかにより、a=1となった選択回路114における変換後命令INST1又はINST2となっているので、当該選択回路114の変換後命令INST1又はINST2がセレクタ110aから出力され、バス16を介してCPU14に取り込まれ、実行される。一方、いずれの選択回路114の入力も上記の条件を満たさない場合には、OR回路130の出力信号が0となるので、セレクタ110aでメモリデータが選択され、バス16を介してCPU14に取り込まれ、実行される。
【0041】
なお、本実施の形態では、複合命令変換部100aの指定PCが3つの場合を例示して説明したが、これに限られず、指定PCはいくつであってもよい。また、本実施の形態における指定PCのアドレスは異なっていても同じであってもよいし、指定PCに対応する変換後命令INSTが異なっていても同じであってもよい。
【0042】
以上詳述したように、本実施の形態に係るメモリ制御装置では、予め指定PCを設定回路にセットしておき、CPUがそのPCの命令を実行しようとした際に、ハードウエアで疑似的に命令を変換することによって、つまり本実施の形態ではジャンプ命令分のみの命令の変換を行うことによって、メモリ内部に格納された本来指定されているアドレスの命令に代えて、意図した領域の命令、すなわちプログラムを実行することができる。従って、リマップのように、CPUに対して、メモリの一定領域のアドレスを化かして見せる必要はなく、また、複数の指定PCを設定したい場合にも、回路(命令変換部100)を追加することによって、容易に設定できるという効果がある。
【0043】
[第2の実施の形態]
図5及び
図6を参照して、本実施の形態に係るメモリ制御装置10bについて説明する。メモリ制御装置10が、変換後命令設定回路112によってハードウエア的に変換後命令INSTを設定したのに対し、本実施の形態は、専用のレジスタによってハードウエア的に変換後命令INSTを設定する形態である。
【0044】
図5(a)に本実施の形態に係るメモリ制御装置10bのブロック図を示す。
図5(a)に示すように、メモリ制御装置10bは、命令変換部100、及び命令変換レジスタセット120aを含んで構成されている。つまり、
図2(a)に示すメモリ制御装置10の変換後命令設定回路112を備えていない。
図5(a)に示す命令変換部100は、
図2(a)に示す命令変換部100と同じものである。
【0045】
図5(b)に本実施の形態に係る命令変換レジスタセット120aの内容の一例を示す。
図5(bに示すように、命令変換レジスタセット120aは、PCONレジスタ、CSRレジスタ、PC指定レジスタ、及び変換後命令レジスタRINSTを含んで構成されている。PCONレジスタ、CSRレジスタ、及びPC指定レジスタの機能は
図2(b)と同様なので、詳細な説明は省略する。変換後命令レジスタRINSTは、変換後命令INSTを格納するレジスタであり、その出力は、命令変換部100のセレクタ106の(1)入力端子及びセレクタ108の(1)入力端子に接続されている(
図3(a)参照)。
【0046】
本実施の形態に係るメモリ制御装置10bは、以下のように動作する。
[1]CSRレジスタ及びPC指定レジスタにデータを格納する。本例では、このデータを0:0330H(セグメント=0、アドレス=0330H、以下これらのデータを「設定データ」という)とする。
[2]変換後の命令を、変換後命令レジスタRINSTに格納する。本例では、この命令を、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)とする。
[3]PCONを論理値「1」に設定し、本機能を有効にする。
[4]CSRレジスタの値とCPU_CSRとの比較処理、PC指定レジスタとCPU_PCとの比較処理を実行する。
[5]上記の比較結果がいずれも一致した場合に、変換後命令レジスタRINSTでハードウエア的に設定したメモリのアドレスにジャンプする命令を実行する。
[6]ジャンプ先で指定された処理を実行し、予め定められた条件でジャンプ元に戻る。
【0047】
図6は、CPU14のPCで指定されたアドレスに従って、メモリ12に格納されたプログラムが逐次実行されていく状態を示している。そして、[4]における比較処理の結果、PCに対応するセグメント及びアドレスが[1]で設定した設定データと一致した場合には、本来実行すべき変換前命令20が、変換後の命令である変換後命令22に変換される。より具体的には、PC=0:0330Hで指定された命令MOV R0,#01H、PC=0:0332Hで指定された命令MOV R1,#01Hの組で表された変換前命令20が、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)で表された変換後命令22に変換されている。このことにより、
図6中の[5]で示されたように、メモリ12のセグメント・アドレス=2:C000Hにジャンプし、当該アドレスに格納されたプログラムを実行する。その後、予め定められた条件で次のPCの値に戻る([6])。
【0048】
[第3の実施の形態]
図7を参照して、本実施の形態に係るメモリ制御装置10cについて説明する。本実施の形態は、変換後命令レジスタRINSTを用いて、複数の指定PCに対応する形態である。
図7は、指定PCのアドレスと、ジャンプ命令でジャンプする飛び先アドレス(ジャンプ先アドレス)の対応を示した図である。
図7は、例えば、指定PCのアドレスがPC0の場合には、変換後命令が、ジャンプ命令B 2:C000Hであることを示している。
【0049】
図7に示すように、設定できるPC、すなわち指定PCが複数ある場合には、指定PCに番号を割り振ることによって、飛び先のアドレスを変更する。処理の流れは指定PCがひとつの場合と同様であるが、飛び先アドレスに関しては、パラメータで先頭のアドレスを設定しておき、そのアドレスを指定PCであるPC0の飛び先に設定し、それ以降はアドレスをずらすことによって飛び先を変更する。この際、アドレスの間隔は、ジャンプ命令が一つ入る程度でよい。また、飛び先によってどのPCからジャンプしてきたか判断できるので、ジャンプ先から戻る場合に便利である。
【0050】
[第4の実施の形態]
図8ないし
図12を参照して、本実施の形態に係るメモリ制御装置10dについて説明する。上記実施の形態では、メモリ制御装置の命令変換機能によって、指定PCを設定することにより本来実行すべき命令を変換し、一例として、メモリの本来指定されたアドレスとは異なるアドレスにジャンプさせ、本来実行すべき処理とは異なる処理を実行させた。これに対し、本実施の形態は、上記実施の形態でジャンプしたジャンプ先のメモリの領域が、処理内容に応じて適切な属性の領域となるように、メモリの領域を分割する形態である。より詳細には、メモリのコードオプションを使用し、ブロックイネーフブルと類似の処理を行いながらも、様々なソフトウエア・アプリケーションに対応させるために、さらに機能を拡張させた形態である。ここで、コードオプションとは、領域分割の対象となるメモリを制御するためのパラメータをさし、本実施の形態では、特に書き換え設定レジスタセットに格納すべきパラメータをいう。
【0051】
図8(a)は、本実施の形態に係るメモリ制御装置10dの機能ブロック図を示している。
図8(a)に示すように、メモリ制御装置10dは、メモリローダ(設定部)200、及び書き換え設定レジスタセット202を含んで構成されている。なお、
図8(a)に示したメモリ制御装置10dは、本実施の形態に関わる構成のみを抽出して記載しているが、むろん、
図2(a)、
図5(a)に示す、命令変換部100、命令変換レジスタセット120(120a)、変換後命令設定回路112を含んでいてもよい。
【0052】
メモリ12の種類に特に制限はないが、本実施の形態では、フラッシュメモリ等の不揮発性メモリを想定しており、メモリ空間の領域は、一般的なメモリと同様に、プログラム領域210とデータ領域214とに分割されている。本実施の形態に係るメモリ12では、さらに、テスト(設定データ)領域212を備えている。テスト領域212とは、メモリ12の周辺回路を動作させるためのパラメータが格納される領域であるが、本実施の形態では、コードオプション、すなわち書き換え設定のためのデータ(以下、「書き換え設定データ」という)が格納されている。
【0053】
メモリローダ200は、メモリ12のテスト領域212から書き換え設定データを読み込み、書き換え設定データの各パラメータを書き換え設定レジスタセット202の各レジスタに格納させる。
【0054】
書き換え設定レジスタセット202は、メモリ12のメモリ空間の領域分割を行うための各パラメータを格納するレジスタの組である。
図8(b)に、書き換え設定レジスタセット202の内容を示す。
図8(b)に示すように、本実施の形態に係る書き換え設定レジスタセット202には、書き換えアクセプタレジスタ、書き換えプログラム領域開始アドレスレジスタ、及び書き換え領域分割設定レジスタの3つのレジスタが含まれており、これらの3つのレジスタの内容に応じて、メモリ12のメモリ空間が分割される。
【0055】
書き換えアクセプタレジスタには、書き換えアクセプタを設定するデータ(アクセプタ設定データ)が格納される。アクセプタ設定とは、領域分割のパターンに合わせて、プログラムによるメモリの書き換えや消去、プログラムの実行を可能にするか否かの設定を行うことであり、アクセプタ設定データはこの切り替えを行うためのデータである。このデータの値が所定の値の場合、書き換え処理などが有効状態となる。書き換え処理などを有効状態にした後、書き換えプログラム領域開始アドレスデータと、領域分割設定データをもとに、メモリ12の領域を、固定領域と書き換え領域に区分する。ここで、固定領域とはソフトウエアからイレース(消去)/ライト(書き込み)を行うことができない領域であり、書き換え領域とは、プログラムからイレース/ライトを行うことができる領域である。
【0056】
書き換えプログラム領域開始アドレスレジスタには、書き換えプログラム領域を開始するアドレスを指定するデータ(プログラム領域開始アドレスデータ)が格納される。上記のアクセプタ設定によって、書き換え処理が有効状態とされている場合に、指定されたアドレス以降が書き換えプログラム領域となる。
【0057】
書き換え領域分割設定レジスタには、書き換え領域の領域数を指定するデータ(領域分割データ)が格納される。上記のアクセプタ設定によって、書き換え処理が有効状態とされている場合において、例えば、領域分割データの値が「0x0」の場合には書き換え領域を1領域確保し、領域分割データが「0x1」の場合には書き換え領域を2領域確保する。ただし、本実施の形態では、2領域を確保した場合のCPU14の実行領域は、予め定められたレジスタ(CPU14がアクセス可能な領域を指定するレジスタ、以下、「アクセス領域指定レジスタ」という)の値に応じて、片方の領域のみとなる。
【0058】
本実施の形態に係るメモリ制御装置10dでは、以上の3つのデータ、すなわち、
図8(b)に示すアクセプタ設定データ、プログラム領域開始アドレスデータ、及び領域分割データの3つのデータを設定することによって、メモリ制御装置10dによるメモリの分割制御方法が変わる。
【0059】
次に、
図9を参照して、メモリ12の分割制御方法、すなわち、テスト領域212(コードオプション)のデータが各レジスタに格納され、メモリ12のメモリ空間が分割されるまでの流れを説明する。
図9の[1]ないし[3]は、本実施の形態に係るメモリ12の分割制御の手順を示しており、その内容は以下のとおりとなっている。
[1]CPU14の起動前に実行されるメモリ制御装置10dのリセット時に、メモリローダ200がテスト領域212に格納されたコードオプションをロードする(読み込む)。
[2]書き換え設定レジスタセットの各レジスタに、メモリローダ200がロードした各データ(アクセプタ設定データ、プログラム領域開始アドレスデータ、及び領域分割データ)が格納される。
[3]コードオプションのデータに基づいてメモリ12の領域分割の設定方法が決定され、領域分割が実行される。
以上の分割制御が実行されることにより、メモリ12に対するCPU14のアクセス方法(以下、「CPUアクセス」という)が設定される。以下、各CPUアクセスについて説明する。なお、
図9に示すように、以下の説明では、プログラム領域開始アドレスデータを「0xYYYY」として説明する。
【0060】
図10(a)は、書き換え無効の場合、すなわち、書き換えアクセプタレジスタにおいて、アクセプタ設定データが無効に設定されている場合のCPUアクセスを、
図10(b)は、その際の各レジスタの値を、各々示している。本実施の形態では、アクセプタ設定の値が「0」で書き換え無効、「1」で書き換え有効としている。むろん、この対応関係は逆の論理値であってもよい。
図10(a)に示すように、アクセプタ設定データが無効状態においては、プログラムメモリ空間の全領域が固定プログラム領域となるので、ROM参照(データの読み出し)は可能であるが、Erase/Write(消去及び書き込み)は行うことができない。ここで、本実施の形態における「固定プログラム領域」とは「固定プログラム」が格納された領域であり、「固定プログラム」とは、本実施の形態に係るマイクロコンピュータシステム1を動作させるためのプログラムである。
【0061】
図11(a)は、書き換え有効の場合、すなわち、書き換えアクセプタレジスタにおいて、アクセプタ設定データが有効に設定されている場合で、書き換え領域分割設定が、1領域に設定された場合のCPUアクセスを、
図11(b)は、その際の各レジスタの値を各々示している。アクセプタ設定が有効の状態においては、プログラムメモリ空間が、固定プログラム領域と、書き換えプログラム領域とに分割される。書き換えプログラム領域は、書き換えプログラム領域開始アドレスYYYYを開始アドレスとするメモリ空間上の一定の領域を占める。
【0062】
ここで、本実施の形態における「書き換えプログラム領域」とは「書き換えプログラム」が格納された領域をいう。また、「書き換えプログラム」とは「固定プログラム」と組み合わされるプログラムであり、本実施の形態では、「固定プログラム」+「書き換えプログラム」でひとつのプログラムを構成している。すなわち、例えば固定プログラム中に記述されたジャンプ命令で書き換えプログラムに移行することにより、両者は一体のプログラムとして機能する。固定プログラム領域においては、ROM参照は可能であるが、Erase/Writeは行うことができない。書き換えプログラム領域は書き換え可能領域となるので、ROM参照に加え、Erase/Writeを行うことが可能になる。なお、本実施の形態では、固定プログラム領域の直下を書き換えプログラム領域開始アドレスYYYYとする形態を例示して説明するが、これに限られず、例えば固定プログラム領域との間に一定の記憶領域を空けたアドレスをアドレスYYYYとして指定してもよい。
【0063】
図12(a)は、書き換え有効の場合で、書き換え領域分割設定が2領域に設定された場合のCPUアクセスを、
図12(b)は、その際の各レジスタの値を各々示している。
この場合には、プログラムメモリ空間が、固定プログラム領域と、書き換えプログラム領域0及び書き換えプログラム領域1とに分割される。
【0064】
本実施の形態において、「書き換えプログラム領域0」とは「書き換えプログラム0」が格納された領域をいい、「書き換えプログラム領域1」とは「書き換えプログラム1」が格納された領域をいう。固定プログラム領域においては、ROM参照は可能であるが、Erase/Writeは行うことができない。一方、本実施の形態では、書き換えプログラム領域0、及び書き換えプログラム領域1の各々を、プログラム実行が可能な領域とするか、Erase/Writeが可能な領域とするかを切り換えることができるように構成されている。
【0065】
本実施の形態に係るメモリ制御装置10dの領域分割方法について、より詳細に説明する。本実施の形態に係る領域分割方法では、書き換えプログラム領域開始アドレスYYYYが指定されると、当該アドレスYYYY以降(本実施の形態では、固定プログラム領域の直下)に、書き換えプログラムを格納させる領域として、同じ容量の2領域が確保される。以下、
図12(a)に示すように、当該2領域を、固定プログラム領域に近い方から順に、「領域A」、「領域B」という。本実施の形態では、当該2領域の容量が同じである形態を例示して説明するが、むろん、これらの容量は異なってもよい。
【0066】
そして、本実施の形態では、領域Aがプログラム実行の可能な領域とされ、領域BがErase/Writeの可能な領域とされる。そして、本実施の形態では、固定プログラム中に記述されたジャンプ命令によって、固定プログラムの実行後、領域Aに格納されたプログラムに移行するように構成されている。本実施の形態では、この領域A及び領域Bの属性の制御をメモリ制御装置10dが行っている。つまり、書き換えプログラム0/1のうち、領域Aに格納された方がプログラム実行の可能な書き換えプログラムとされ、領域Bに格納された方がErase/Writeの可能な書き換えプログラムとされる。このことにより、仮に、領域Aに書き換えプログラム0が格納され、領域Bに書き換えプログラム1が格納された状態を考えると、一方では、固定プログラム+書き換えプログラム0なるプログラムを実行し、他方では書き換えプログラム1について、更新等の操作を行うという動作が可能となる。
【0067】
上記に加え、本実施の形態では、領域A及び領域Bに格納する書き換えプログラム0/1が切り換え可能に構成されている。すなわち、書き換えプログラム領域については、先述したように、アクセス領域指定レジスタの設定によって、プログラムとして使用する領域を決定することができる。より具体的には、アクセス領域指定レジスタの値が「0x00」の場合は、
図12(a)に示すように、書き換えプログラム領域0が領域Aに格納されることにより、プログラム実行領域(プログラムメモリ空間)として選択されるため、固定プログラム領域と同じ扱いになる。そのため、書き換えプログラム領域0は、ROM参照は可能であるが、Erase/Writeは行うことができない領域となる。このとき、書き換えプログラム領域1は領域Bに格納されるため、書き換え可能領域となるので、ROM参照及びErase/Writeが可能な(更新が可能な)領域となる。
【0068】
一方、アクセス領域指定レジスタの値が「0x01」の場合は、
図12(a)に示すように、書き換えプログラム領域1が領域Aに格納されることにより、プログラム実行領域として選択されるため、固定プログラム領域と同じ扱いになる。そのため、ROM参照は可能であるが、Erase/Writeは行うことができない領域となる。このとき、書き換えプログラム領域0は領域Bに格納されるため、書き換え可能領域となるので、ROM参照及びErase/Writeが可能な(更新が可能な)領域となる。
【0069】
上記のような構成を有する、本実施の形態に係るメモリ制御装置10dの領域分割方法の作用について、より詳細に説明する。初期状態として、領域Aに書き換えプログラム0が格納され、領域Bに書き換えプログラム1が格納されている状態、すなわち、アクセス領域指定レジスタの値が「0x00」とされている状態を考える。この場合、マイクロコンピュータシステム1のプログラムは、固定プログラム+書き換えプログラム0からなるプログラム(初期プログラム)で作成されている。
【0070】
その後、この初期プログラムに更新の必要が生じた場合には、例えば、図示しない外部との通信手段を介して領域Bに書き換えプログラム1を書き込んだ後、アクセス領域指定レジスタの値を「0x01」とする。このことにより、書き換えプログラム1が書き換えプログラム0の代わりに領域Aに格納されるので、書き換えプログラム1がCPU14によって実行されるプログラムとなる。一方、初期プログラムにおける書き換えプログラム0は、Erase/Writeの可能なプログラムとされ、次の更新に備えることができる。
【0071】
以上詳述したように、本実施の形態に係るメモリ制御装置10dの領域分割方法では、アクセス領域指定レジスタによって領域Aに格納する書き換えプログラムと領域Bに格納する書き換えプログラムとを切り換え可能なように構成されているので、固定プログラム領域のプログラムを変更することなく、書き換えプログラムを更新することができるという効果を奏する。
【0072】
以上のように、本実施の形態に係るメモリ制御装置では、コードオプションによって設定されたデータを、メモリをコントロールするデータとして使用することによって、メモリの使用目的に応じメモリ空間を詳細に分割することができる。また、セキュリティに関しても、書き換えが不可能な領域を設定することにより、プログラムが暴走した場合などでもその領域のデータについては消去や書き込み等を行うことができなくなるため、メモリに記憶させたデータの信頼性も確保できるという効果がある。従って、例えば、上記命令変換機能によってジャンプしたジャンプ先のメモリの領域を、処理内容に応じて適切な属性の領域とすることも可能となる。