(57)【要約】【課題】メモリ上のプログラム書き換え方法を提供する。【解決手段】本発明のメモリは、書き換え対象プログラムを記憶する記憶部と、ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部と、前記ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部とを備え、ＣＰＵ（プログラム）からアドレス切替信号契機で読出アドレス管理部および書込アドレス管理部を更新する方法を有する。【選択図】図１
2013033383.tif 000002
【特許請求の範囲】
【請求項１】
書き換え対象プログラムを記憶する記憶部と、ここで、前記書き換え対象プログラムは、前記書き換え対象プログラムが、ＣＰＵにより実行される際に、前記書き換え対象プログラム自身を書き換えるプログラムであり、
前記ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部と、
前記ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部と
を備えるメモリ。
【請求項２】
読出アドレス管理部が、書き換え対象プログラムの読み出し時の仮想アドレスと、記憶部の物理アドレスとの対応を、読出アドレス管理情報に記憶するステップと、
書込アドレス管理部が、書き換え対象プログラムの書き換え時の仮想アドレスと、記憶部の物理アドレスとの対応を、書込アドレス管理情報に記憶するステップと、
書込アドレス管理部が、前記書込アドレス管理情報に基づいて、書き換え対象プログラムの仮想アドレスから、記憶部の物理アドレスを特定するステップと、
書込アドレス管理部が、前記特定するステップで特定した書き換え対象プログラム領域と、同一のサイズの領域を新規に記憶部に割り当てるステップと、
書込アドレス管理部が、前記新規に記憶部に割り当てるステップで割り当てた前記書き換え対象プログラムの物理アドレスで、前記書込アドレス管理情報を更新するステップと、
書込アドレス管理部が、前記更新するステップで更新した前記書込アドレス管理情報に基づき、書き換え対象プログラムを書き換えるステップと、
読出アドレス管理部が、アドレス切替信号を受信するステップと、
読出アドレス管理部が、前記アドレス切替信号契機で、前記更新するステップで更新した前記書き換え対象プログラムの前記物理アドレスで、前記読出アドレス管理情報を更新するステップと
を含むメモリ上のプログラム書き換え方法。
【請求項３】
請求項２に記載のメモリ上のプログラム書き換え方法をメモリ制御部に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに関し、特に、メモリ上のプログラムを書き換える方法に関する。
【背景技術】
【０００２】
組み込みシステム用マイクロコントローラには、電源ＯＦＦ時でも記憶内容を保持できるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）や、フラッシュメモリ等の不揮発性メモリが搭載されている。
【０００３】
近年、不揮発性メモリ上のデータの書き換えだけではなく、フラッシュメモリ等に記憶されているプログラム（ＣＰＵに対する命令）を、当該プログラムの実行中に書き換える機能が必要とされている。一般に、フラッシュメモリ上の書き換え対象プログラムが実行中の場合には、当該書き換え対象プログラムを書き換えることができない。この問題を解決するためには、プログラム実行中の書き換えを可能とするために、フラッシュメモリに同一のプログラムを２つ記憶し、実行中ではない他方のプログラムを書き換える方法や、プログラム書き換え時に、実行中のプログラムを、別領域にコピーして書き換える方法が考えられる。一方、近年のマイクロコントローラでは、低価格を実現するため、メモリ領域が小さくなり、ユーザがプログラム可能なフラッシュメモリ領域を圧迫しない機能構成が求められている。また、近年のマイクロコントローラでは、地球環境を考慮し、省電力動作を実現できる機能構成が求められている。
【０００４】
本発明の分野における文献公知発明としては、特開２００３−３０３１３２号公報（特許文献１）がある。特開２００３−３０３１３２号公報には、２つのフラッシュメモリにプログラムを記憶することにより、ＣＰＵが、一方のフラッシュメモリから読み出したプログラムを実行中であっても、他方のフラッシュメモリから読み出したプログラムが、実行中のプログラムを書き換える発明が開示されている。
【０００５】
特開２００３−３０３１３２号公報の発明では、書き換え対象プログラムを、異なるフラッシュメモリ上に用意し、相互に書き換えることにより、書き換え対象プログラムの書き換えを実現している。そのため、書き換え対象プログラムが、当該書き換え対象プログラム自体を書き換えることができない。特開２００３−３０３１３２号公報の発明では、書き換え対象プログラムを、異なるフラッシュメモリに２重に実装する必要があり、ユーザのためのプログラミング容量の圧迫、及びプログラムの相互管理するための手間が増える問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−３０３１３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
メモリ領域を圧迫せずに、書き換えプログラムを複数作成および別領域への転送をすることなく、メモリ上のプログラムを自己書き換えできるメモリが求められている。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【０００９】
本発明のメモリは、書き換え対象プログラムを記憶する記憶部（２）と、ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを読み出す際に参照する仮想アドレスと、物理アドレスとの対応を管理する読出アドレス管理部（４）と、前記ＣＰＵにより実行される前記書き換え対象プログラムが、前記書き換え対象プログラムを書き換える際に参照する仮想アドレスと、物理アドレスとの対応を管理する書込アドレス管理部（５）とを備える。
【００１０】
本発明のメモリ上のプログラム書き換え方法は、読出アドレス管理部（４）が、書き換え対象プログラムの読み出し時の仮想アドレスと、記憶部の物理アドレスとの対応を、読出アドレス管理情報（６）に記憶するステップと、書込アドレス管理部（５）が、書き換え対象プログラムの書き換え時の仮想アドレスと、記憶部の物理アドレスとの対応を、書込アドレス管理情報（７）に記憶するステップと、書込アドレス管理部（５）が、前記書込アドレス管理情報（７）に基づいて、書き換え対象プログラムの仮想アドレスから、記憶部の物理アドレスを特定するステップと、書込アドレス管理部（５）が、前記特定するステップで特定した書き換え対象プログラム領域と、同一のサイズの領域を新規に記憶部に割り当てるステップと、書込アドレス管理部（５）が、前記新規に記憶部に割り当てるステップで割り当てた前記書き換え対象プログラムの物理アドレスで、前記書込アドレス管理情報（７）を更新するステップと、書込アドレス管理部（５）が、前記更新するステップで更新した前記書込アドレス管理情報（７）に基づき、書き換え対象プログラムを書き換えるステップと、読出アドレス管理部（４）が、アドレス切替信号を受信するステップと、読出アドレス管理部（４）が、前記アドレス切替信号契機で、前記更新するステップで更新した前記書き換え対象プログラムの前記物理アドレスで、前記読出アドレス管理情報（６）を更新するステップとを含む。
【発明の効果】
【００１１】
本発明によれば、メモリ領域を圧迫せずに、書き換えプログラムを複数作成および別領域への転送することなく、メモリ上のプログラムを自己書き換えできるメモリを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態におけるメモリ１０のブロック図である。
【図２】図２は、本発明の実施形態におけるメモリ１０において、プログラム書き換え方法のフローチャートである。
【図３】図３は、本発明の実施形態におけるメモリ１０において、書き換え対象プログラムの書き換え前の状態を示す図である。
【図４】図４は、本発明の実施形態におけるメモリ１０において、割当信号受信時の状態を示す図である。
【図５】図５は、本発明の実施形態におけるメモリ１０において、書き換え対象プログラムの書き換え時の状態を示す図である。
【図６】図６は、本発明の実施形態におけるメモリ１０において、アドレス切替信号受信時の状態を示す図である。
【発明を実施するための形態】
【００１３】
添付図面を参照して、本発明の実施形態によるメモリ１０を以下に説明する。
【００１４】
［構成の説明］
はじめに、本実施形態におけるメモリ１０の構成の説明を行う。図１は、本発明の実施形態におけるメモリ１０のブロック図である。本実施形態におけるメモリ１０は、メモリ制御部１及び記憶部２を備える。メモリ制御部１は、アドレス切替部３を備え、アドレス切替部３は、読出アドレス管理部４及び書込アドレス管理部５を備える。
【００１５】
メモリ制御部１は、記憶部２に記憶されているデータや命令の読み込み、及び書き込みを制御する。記憶部２は、フラッシュメモリ等の記憶媒体である。アドレス切替部３は、記憶部２からデータや命令を読み出す際には、読出アドレスを使用し、記憶部２にデータや命令を書き込む際には、書込アドレスを使用し、読出アドレスと書込アドレスを、排他的に切り替える。
【００１６】
読出アドレス管理部４は、ＣＰＵにより実行されるプログラムが、記憶部２に記憶されたデータや命令を読み出す際に参照する読出アドレス管理情報４を管理する。読出アドレス管理情報４は、データや命令の読み出し時に、プログラムが参照する仮想アドレスと、物理アドレスとの対応を管理する情報である。
【００１７】
書込アドレス管理部５は、ＣＰＵにより実行されるプログラムが、記憶部２に記憶されたデータや命令を書き込む際に参照する書込アドレス管理情報７を管理する。書込アドレス管理情報７は、データや命令の書込み時に、プログラムが参照する仮想アドレスと、物理アドレスとの対応を管理する情報である。
【００１８】
図３は、本発明の実施形態におけるメモリ１０において、書き換え対象プログラムの書き換え前の状態を示す図である。読出アドレス管理部４の読出アドレス管理情報６と、書込アドレス管理部５の書込アドレス管理情報７は、書き換え対象プログラムが記憶されている領域として、同一の物理メモリ領域８を参照している。なお、書き換え対象プログラムには、当該書き換え対象プログラムの実行中に、書き換えられないプログラムが含まれていてもよい。
【００１９】
本実施形態のメモリ１０をマイクロコントローラに搭載すれば、読出アドレス管理部４及び書込アドレス管理部５により、記憶部２に記憶された書き換え対象プログラムに対して、読出アドレスと、書込アドレスを排他的に切り替えることができる。
【００２０】
［動作方法の説明］
次に、本実施形態におけるメモリにおいて、メモリ上のプログラム書き換え方法の説明を行う。図２は、本発明の実施形態におけるメモリ１０において、プログラム書き換え方法のフローチャートである。
【００２１】
（ステップＳ１）
メモリ制御部１は、ＣＰＵから、書き換え対象プログラムの割当信号を受信する。
【００２２】
（ステップＳ２）
書込アドレス管理部５は、読出アドレス管理情報６を参照し、仮想アドレスから、書き換えプログラムが記憶されている物理アドレスとサイズを特定する。書込アドレス管理部５は、特定した物理アドレスと同一のサイズの領域を、書き換え対象プログラムの書き換え用に、記憶部２の別の物理アドレスに新規に割り当て、書込アドレス管理情報７に記憶する。また、書込アドレス管理部５は、書込アドレス管理情報７から、書き換え対象プログラムに割り当てられていた旧物理アドレス情報を削除する。
【００２３】
図４は、本発明の実施形態におけるメモリ１０において、割当信号受信時の状態を示す図である。読出アドレス管理部４の読出アドレス管理情報６は、物理メモリ領域８を参照している。書込アドレス管理部５の書込アドレス管理情報７が参照する物理アドレスは、ステップＳ２の処理により、物理メモリ領域８から物理メモリ領域９に切り替えられている。
【００２４】
（ステップＳ３）
メモリ制御部１は、ＣＰＵから、記憶部２に新規に割り当てた物理アドレス領域に対する消去信号を受信する。
【００２５】
（ステップＳ４）
書込アドレス管理部５は、書込アドレス管理情報７を参照し、新規に割り当てた物理アドレス領域を特定し、新規に割り当てた物理アドレス領域上のデータを消去する。
【００２６】
なお、ステップＳ１の割当信号と、ステップＳ３の消去信号は、１つの信号で行われていてもよい。この場合、信号受信時に、記憶部２の割り当てと、割り当て領域のデータ消去が同時に行われる。
【００２７】
（ステップＳ５）
メモリ制御部１は、ＣＰＵから、データ書換信号を受信する。
【００２８】
（ステップＳ６）
書込アドレス管理部５は、書込アドレス管理情報７を参照し、新規に割り当てた物理アドレス領域を特定し、新規に割り当てた物理アドレス領域上で、書き換え対象プログラムを書き換える。
【００２９】
図５は、本発明の実施形態におけるメモリ１０において、書き換え対象プログラムの書き換え時の状態を示す図である。読出アドレス管理部４により、書き換え対象プログラムが読み出される場合には、物理メモリ領域８が参照されている。書込アドレス管理部５により、書き換え対象プログラムが書き換えられる場合には、物理メモリ領域９が参照されている。
【００３０】
（ステップＳ７）
メモリ制御部１は、ＣＰＵから、書き換え対象プログラムの書き換えが終了したか（アドレス切替信号を受信したか）どうかを確認する。アドレス切替信号を受信した場合には、ステップＳ８の処理に進み、アドレス切替信号を受信していない場合には、ステップＳ５の処理に進む。
【００３１】
（ステップＳ８）
読出アドレス管理部４は、書込アドレス管理情報７を参照し、書き換え対象プログラムの書き換えのために、新規に割り当てた物理アドレス領域を特定し、読出アドレス管理情報６の書き換え対象プログラムのアドレス領域を、新規に割り当てた物理アドレス領域で更新する。読出アドレス管理部４は、書き換え対象プログラムの旧物理アドレス領域を消去する。
【００３２】
図６は、本発明の実施形態におけるメモリ１０において、アドレス切替信号受信時の状態を示す図である。読出アドレス管理部４の読出アドレス管理情報６が参照する物理アドレスは、ステップＳ８の処理により、物理メモリ領域８から物理メモリ領域９に切り替えられている。ステップＳ８の処理の終了後、読出アドレス管理部４の読出アドレス管理情報６と、書込アドレス管理部５の書込アドレス管理情報７が参照する書き換え対象プログラムの物理アドレスは、同一の物理アドレス領域９になる。
【００３３】
ステップＳ８で、読出アドレス管理情報が更新されるまでは、読出アドレス管理部４が保持している読出アドレス管理情報６は、変更されていないため、書き換え対象プログラムが実行中であっても、同一命令の実行が可能な状態が維持されている。そのため、書き換え前のプログラムコードをＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の別の記憶媒体へ転送する必要がない。
【００３４】
本実施形態によれば、メモリ上のプログラムが実行中であっても、メモリ領域を圧迫せずに、当該プログラムを自己書き換えできるメモリを提供することができる。
【００３５】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００３６】
１  メモリ制御部
２  記憶部
３  アドレス切替部
４  読出アドレス管理部
５  書込アドレス管理部
６  読出アドレス管理情報
７  書込アドレス管理情報
８  物理メモリ領域
９  物理メモリ領域
１０  メモリ
【図１】
2013033383.tif 000003
【図２】
2013033383.tif 000004
【図３】
2013033383.tif 000005
【図４】
2013033383.tif 000006
【図５】
2013033383.tif 000007
【図６】
2013033383.tif 000008