説明

メモリ、メモリ上のプログラム書き換え方法及びプログラム

【課題】メモリ上のプログラム書き換え方法を提供する。
【解決手段】本発明のメモリは、書き換え対象プログラムを記憶する記憶部と、CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部と、前記CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部とを備え、CPU(プログラム)からアドレス切替信号契機で読出アドレス管理部および書込アドレス管理部を更新する方法を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリに関し、特に、メモリ上のプログラムを書き換える方法に関する。
【背景技術】
【0002】
組み込みシステム用マイクロコントローラには、電源OFF時でも記憶内容を保持できるEEPROM(Electrically Erasable Programmable Read−Only Memory)や、フラッシュメモリ等の不揮発性メモリが搭載されている。
【0003】
近年、不揮発性メモリ上のデータの書き換えだけではなく、フラッシュメモリ等に記憶されているプログラム(CPUに対する命令)を、当該プログラムの実行中に書き換える機能が必要とされている。一般に、フラッシュメモリ上の書き換え対象プログラムが実行中の場合には、当該書き換え対象プログラムを書き換えることができない。この問題を解決するためには、プログラム実行中の書き換えを可能とするために、フラッシュメモリに同一のプログラムを2つ記憶し、実行中ではない他方のプログラムを書き換える方法や、プログラム書き換え時に、実行中のプログラムを、別領域にコピーして書き換える方法が考えられる。一方、近年のマイクロコントローラでは、低価格を実現するため、メモリ領域が小さくなり、ユーザがプログラム可能なフラッシュメモリ領域を圧迫しない機能構成が求められている。また、近年のマイクロコントローラでは、地球環境を考慮し、省電力動作を実現できる機能構成が求められている。
【0004】
本発明の分野における文献公知発明としては、特開2003−303132号公報(特許文献1)がある。特開2003−303132号公報には、2つのフラッシュメモリにプログラムを記憶することにより、CPUが、一方のフラッシュメモリから読み出したプログラムを実行中であっても、他方のフラッシュメモリから読み出したプログラムが、実行中のプログラムを書き換える発明が開示されている。
【0005】
特開2003−303132号公報の発明では、書き換え対象プログラムを、異なるフラッシュメモリ上に用意し、相互に書き換えることにより、書き換え対象プログラムの書き換えを実現している。そのため、書き換え対象プログラムが、当該書き換え対象プログラム自体を書き換えることができない。特開2003−303132号公報の発明では、書き換え対象プログラムを、異なるフラッシュメモリに2重に実装する必要があり、ユーザのためのプログラミング容量の圧迫、及びプログラムの相互管理するための手間が増える問題がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−303132号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
メモリ領域を圧迫せずに、書き換えプログラムを複数作成および別領域への転送をすることなく、メモリ上のプログラムを自己書き換えできるメモリが求められている。
【課題を解決するための手段】
【0008】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【0009】
本発明のメモリは、書き換え対象プログラムを記憶する記憶部(2)と、CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部(4)と、前記CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部(5)とを備える。
【0010】
本発明のメモリ上のプログラム書き換え方法は、読出アドレス管理部(4)が、書き換え対象プログラムの読み出し時の仮想アドレスと、記憶部の物理アドレスとの対応を、読出アドレス管理情報(6)に記憶するステップと、書込アドレス管理部(5)が、書き換え対象プログラムの書き換え時の仮想アドレスと、記憶部の物理アドレスとの対応を、書込アドレス管理情報(7)に記憶するステップと、書込アドレス管理部(5)が、前記書込アドレス管理情報(7)に基づいて、書き換え対象プログラムの仮想アドレスから、記憶部の物理アドレスを特定するステップと、書込アドレス管理部(5)が、前記特定するステップで特定した書き換え対象プログラム領域と、同一のサイズの領域を新規に記憶部に割り当てるステップと、書込アドレス管理部(5)が、前記新規に記憶部に割り当てるステップで割り当てた前記書き換え対象プログラムの物理アドレスで、前記書込アドレス管理情報(7)を更新するステップと、書込アドレス管理部(5)が、前記更新するステップで更新した前記書込アドレス管理情報(7)に基づき、書き換え対象プログラムを書き換えるステップと、読出アドレス管理部(4)が、アドレス切替信号を受信するステップと、読出アドレス管理部(4)が、前記アドレス切替信号契機で、前記更新するステップで更新した前記書き換え対象プログラムの前記物理アドレスで、前記読出アドレス管理情報(6)を更新するステップとを含む。
【発明の効果】
【0011】
本発明によれば、メモリ領域を圧迫せずに、書き換えプログラムを複数作成および別領域への転送することなく、メモリ上のプログラムを自己書き換えできるメモリを提供することができる。
【図面の簡単な説明】
【0012】
【図1】図1は、本発明の実施形態におけるメモリ10のブロック図である。
【図2】図2は、本発明の実施形態におけるメモリ10において、プログラム書き換え方法のフローチャートである。
【図3】図3は、本発明の実施形態におけるメモリ10において、書き換え対象プログラムの書き換え前の状態を示す図である。
【図4】図4は、本発明の実施形態におけるメモリ10において、割当信号受信時の状態を示す図である。
【図5】図5は、本発明の実施形態におけるメモリ10において、書き換え対象プログラムの書き換え時の状態を示す図である。
【図6】図6は、本発明の実施形態におけるメモリ10において、アドレス切替信号受信時の状態を示す図である。
【発明を実施するための形態】
【0013】
添付図面を参照して、本発明の実施形態によるメモリ10を以下に説明する。
【0014】
[構成の説明]
はじめに、本実施形態におけるメモリ10の構成の説明を行う。図1は、本発明の実施形態におけるメモリ10のブロック図である。本実施形態におけるメモリ10は、メモリ制御部1及び記憶部2を備える。メモリ制御部1は、アドレス切替部3を備え、アドレス切替部3は、読出アドレス管理部4及び書込アドレス管理部5を備える。
【0015】
メモリ制御部1は、記憶部2に記憶されているデータや命令の読み込み、及び書き込みを制御する。記憶部2は、フラッシュメモリ等の記憶媒体である。アドレス切替部3は、記憶部2からデータや命令を読み出す際には、読出アドレスを使用し、記憶部2にデータや命令を書き込む際には、書込アドレスを使用し、読出アドレスと書込アドレスを、排他的に切り替える。
【0016】
読出アドレス管理部4は、CPUにより実行されるプログラムが、記憶部2に記憶されたデータや命令を読み出す際に参照する読出アドレス管理情報4を管理する。読出アドレス管理情報4は、データや命令の読み出し時に、プログラムが参照する仮想アドレスと、物理アドレスとの対応を管理する情報である。
【0017】
書込アドレス管理部5は、CPUにより実行されるプログラムが、記憶部2に記憶されたデータや命令を書き込む際に参照する書込アドレス管理情報7を管理する。書込アドレス管理情報7は、データや命令の書込み時に、プログラムが参照する仮想アドレスと、物理アドレスとの対応を管理する情報である。
【0018】
図3は、本発明の実施形態におけるメモリ10において、書き換え対象プログラムの書き換え前の状態を示す図である。読出アドレス管理部4の読出アドレス管理情報6と、書込アドレス管理部5の書込アドレス管理情報7は、書き換え対象プログラムが記憶されている領域として、同一の物理メモリ領域8を参照している。なお、書き換え対象プログラムには、当該書き換え対象プログラムの実行中に、書き換えられないプログラムが含まれていてもよい。
【0019】
本実施形態のメモリ10をマイクロコントローラに搭載すれば、読出アドレス管理部4及び書込アドレス管理部5により、記憶部2に記憶された書き換え対象プログラムに対して、読出アドレスと、書込アドレスを排他的に切り替えることができる。
【0020】
[動作方法の説明]
次に、本実施形態におけるメモリにおいて、メモリ上のプログラム書き換え方法の説明を行う。図2は、本発明の実施形態におけるメモリ10において、プログラム書き換え方法のフローチャートである。
【0021】
(ステップS1)
メモリ制御部1は、CPUから、書き換え対象プログラムの割当信号を受信する。
【0022】
(ステップS2)
書込アドレス管理部5は、読出アドレス管理情報6を参照し、仮想アドレスから、書き換えプログラムが記憶されている物理アドレスとサイズを特定する。書込アドレス管理部5は、特定した物理アドレスと同一のサイズの領域を、書き換え対象プログラムの書き換え用に、記憶部2の別の物理アドレスに新規に割り当て、書込アドレス管理情報7に記憶する。また、書込アドレス管理部5は、書込アドレス管理情報7から、書き換え対象プログラムに割り当てられていた旧物理アドレス情報を削除する。
【0023】
図4は、本発明の実施形態におけるメモリ10において、割当信号受信時の状態を示す図である。読出アドレス管理部4の読出アドレス管理情報6は、物理メモリ領域8を参照している。書込アドレス管理部5の書込アドレス管理情報7が参照する物理アドレスは、ステップS2の処理により、物理メモリ領域8から物理メモリ領域9に切り替えられている。
【0024】
(ステップS3)
メモリ制御部1は、CPUから、記憶部2に新規に割り当てた物理アドレス領域に対する消去信号を受信する。
【0025】
(ステップS4)
書込アドレス管理部5は、書込アドレス管理情報7を参照し、新規に割り当てた物理アドレス領域を特定し、新規に割り当てた物理アドレス領域上のデータを消去する。
【0026】
なお、ステップS1の割当信号と、ステップS3の消去信号は、1つの信号で行われていてもよい。この場合、信号受信時に、記憶部2の割り当てと、割り当て領域のデータ消去が同時に行われる。
【0027】
(ステップS5)
メモリ制御部1は、CPUから、データ書換信号を受信する。
【0028】
(ステップS6)
書込アドレス管理部5は、書込アドレス管理情報7を参照し、新規に割り当てた物理アドレス領域を特定し、新規に割り当てた物理アドレス領域上で、書き換え対象プログラムを書き換える。
【0029】
図5は、本発明の実施形態におけるメモリ10において、書き換え対象プログラムの書き換え時の状態を示す図である。読出アドレス管理部4により、書き換え対象プログラムが読み出される場合には、物理メモリ領域8が参照されている。書込アドレス管理部5により、書き換え対象プログラムが書き換えられる場合には、物理メモリ領域9が参照されている。
【0030】
(ステップS7)
メモリ制御部1は、CPUから、書き換え対象プログラムの書き換えが終了したか(アドレス切替信号を受信したか)どうかを確認する。アドレス切替信号を受信した場合には、ステップS8の処理に進み、アドレス切替信号を受信していない場合には、ステップS5の処理に進む。
【0031】
(ステップS8)
読出アドレス管理部4は、書込アドレス管理情報7を参照し、書き換え対象プログラムの書き換えのために、新規に割り当てた物理アドレス領域を特定し、読出アドレス管理情報6の書き換え対象プログラムのアドレス領域を、新規に割り当てた物理アドレス領域で更新する。読出アドレス管理部4は、書き換え対象プログラムの旧物理アドレス領域を消去する。
【0032】
図6は、本発明の実施形態におけるメモリ10において、アドレス切替信号受信時の状態を示す図である。読出アドレス管理部4の読出アドレス管理情報6が参照する物理アドレスは、ステップS8の処理により、物理メモリ領域8から物理メモリ領域9に切り替えられている。ステップS8の処理の終了後、読出アドレス管理部4の読出アドレス管理情報6と、書込アドレス管理部5の書込アドレス管理情報7が参照する書き換え対象プログラムの物理アドレスは、同一の物理アドレス領域9になる。
【0033】
ステップS8で、読出アドレス管理情報が更新されるまでは、読出アドレス管理部4が保持している読出アドレス管理情報6は、変更されていないため、書き換え対象プログラムが実行中であっても、同一命令の実行が可能な状態が維持されている。そのため、書き換え前のプログラムコードをRAM(Random Access Memory)等の別の記憶媒体へ転送する必要がない。
【0034】
本実施形態によれば、メモリ上のプログラムが実行中であっても、メモリ領域を圧迫せずに、当該プログラムを自己書き換えできるメモリを提供することができる。
【0035】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【0036】
1 メモリ制御部
2 記憶部
3 アドレス切替部
4 読出アドレス管理部
5 書込アドレス管理部
6 読出アドレス管理情報
7 書込アドレス管理情報
8 物理メモリ領域
9 物理メモリ領域
10 メモリ

【特許請求の範囲】
【請求項1】
書き換え対象プログラムを記憶する記憶部と、ここで、前記書き換え対象プログラムは、前記書き換え対象プログラムが、CPUにより実行される際に、前記書き換え対象プログラム自身を書き換えるプログラムであり、
前記CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部と、
前記CPUにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部と
を備えるメモリ。
【請求項2】
読出アドレス管理部が、書き換え対象プログラムの読み出し時の仮想アドレスと、記憶部の物理アドレスとの対応を、読出アドレス管理情報に記憶するステップと、
書込アドレス管理部が、書き換え対象プログラムの書き換え時の仮想アドレスと、記憶部の物理アドレスとの対応を、書込アドレス管理情報に記憶するステップと、
書込アドレス管理部が、前記書込アドレス管理情報に基づいて、書き換え対象プログラムの仮想アドレスから、記憶部の物理アドレスを特定するステップと、
書込アドレス管理部が、前記特定するステップで特定した書き換え対象プログラム領域と、同一のサイズの領域を新規に記憶部に割り当てるステップと、
書込アドレス管理部が、前記新規に記憶部に割り当てるステップで割り当てた前記書き換え対象プログラムの物理アドレスで、前記書込アドレス管理情報を更新するステップと、
書込アドレス管理部が、前記更新するステップで更新した前記書込アドレス管理情報に基づき、書き換え対象プログラムを書き換えるステップと、
読出アドレス管理部が、アドレス切替信号を受信するステップと、
読出アドレス管理部が、前記アドレス切替信号契機で、前記更新するステップで更新した前記書き換え対象プログラムの前記物理アドレスで、前記読出アドレス管理情報を更新するステップと
を含むメモリ上のプログラム書き換え方法。
【請求項3】
請求項2に記載のメモリ上のプログラム書き換え方法をメモリ制御部に実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate