IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ラピステクノロジー株式会社の特許一覧

特開2023-148969マイクロコントローラ及びマイクロコントローラの更新方法
<>
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図1
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図2
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図3
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図4
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図5
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図6
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図7
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図8
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図9
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図10
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図11
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図12
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図13
  • 特開-マイクロコントローラ及びマイクロコントローラの更新方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023148969
(43)【公開日】2023-10-13
(54)【発明の名称】マイクロコントローラ及びマイクロコントローラの更新方法
(51)【国際特許分類】
   G06F 8/654 20180101AFI20231005BHJP
【FI】
G06F8/654
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022057276
(22)【出願日】2022-03-30
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】森岡 健一
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA88
5B376FA11
(57)【要約】
【課題】メモリに記憶されているプログラムを更新するための更新プログラムをメモリに記憶せずに、メモリに記憶されているプログラムを更新する。
【解決手段】MCU100は、FlashROM101からプログラムを読み出して処理を実行するCPU104と、CPU104によるFlashROM101の読出し先を記憶するリマップレジスタ103と、CPU104がリセットされた際にFlashROM101に格納されているプログラムの書き換えを行うか否かを判定するフラグを記憶する書き換えフラグレジスタ108と、CPU104及びリマップレジスタ103のリセットを行う値が書き込まれるとCPU104及びリマップレジスタ103をリセットするが、書き換えフラグレジスタ108はリセットしないリセット専用リマップレジスタ106と、を備える。
【選択図】図11
【特許請求の範囲】
【請求項1】
メモリ部と、
前記メモリ部からプログラムを読み出して処理を実行するプロセッサと、
前記プロセッサによってリマップされる領域を指定するアドレスを記憶するリマップ情報記憶領域と、
前記メモリ部に格納されているプログラムの書き換えを行うか否かを判定するフラグを記憶する書き換えフラグ記憶領域と、
前記プロセッサ及び前記リマップ情報記憶領域のリセットを行う情報が書き込まれると前記プロセッサ及び前記リマップ情報記憶領域をリセットするリセット情報記憶領域と、
を備える、マイクロコントローラ。
【請求項2】
前記リセット情報記憶領域に前記プロセッサ及び前記リマップ情報記憶領域のリセットを行う情報が書き込まれて、前記プロセッサ及び前記リマップ情報記憶領域がリセットされる際に前記書き換えフラグ記憶領域はリセットされない、請求項1に記載のマイクロコントローラ。
【請求項3】
前記リセット情報記憶領域は、1ビットのフリップフロップである、請求項1又は請求項2に記載のマイクロコントローラ。
【請求項4】
前記メモリ部に格納されているプログラムの書き換えを行うプログラムが前記メモリ部以外の場所に記憶されている、請求項1~請求項3のいずれか1項に記載のマイクロコントローラ。
【請求項5】
メモリ部からプログラムを読み出して処理を実行するプロセッサ及び前記プロセッサによってリマップされる領域を指定するアドレスを記憶するリマップ情報記憶領域のリセットを行う情報をリセット情報記憶領域に書き込むリセット情報書き込みステップと、
前記リセットを行う情報が書き込まれると、前記リセット情報記憶領域から前記プロセッサ及び前記リマップ情報記憶領域をリセットするリマップ専用リセットステップと、
を含む、マイクロコントローラの更新方法。
【請求項6】
前記リマップ専用リセットステップにおいて、前記プロセッサがリセットされた際に前記メモリ部に格納されているプログラムの書き換えを行うか否かを判定するフラグを記憶する書き換えフラグ記憶領域はリセットされない、
請求項5に記載のマイクロコントローラの更新方法。
【請求項7】
外部からプログラムの書き換え指示が送られると、前記書き換えフラグ記憶領域にプログラムの書き換えを行うフラグを書き込む書き換えフラグ書き込みステップと、
前記リマップ専用リセットステップの後に、前記メモリ部のプログラムを書き換えるプログラム書き換えステップと、
を含む、請求項5又は請求項6に記載のマイクロコントローラの更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロコントローラ及びマイクロコントローラの更新方法に関する。
【背景技術】
【0002】
マイクロコントローラユニット(以降、MCUとも呼ぶ)は、プログラムを実行する際にメモリ空間の0番地から命令実行を開始する。従来、メモリ空間の0番地が存在する領域(ここではbank0と呼ぶ)をリマップ領域として、実行するプログラムを随時bank0にリマップしながらプログラムを実行するMCUが存在する。
【0003】
特許文献1には、プロセッサ自体に変更を加えることなく、また、割り込みベクタアドレスが書き換え不可能な領域に記憶されている場合であっても、複数の割り込み要求で1つの割り込みベクタを共有するプロセッサにおける割り込み処理の即時性を確保することができる割り込み制御装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2012-141667号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
メモリに記憶されているプログラムを更新するために、プログラムを更新するための更新プログラムを同じメモリに記憶しておくのは、メモリの使用可能容量の減少に繋がる。
【0006】
本発明は、上記の点に鑑みてなされたものであり、メモリの使用可能容量の減少を抑制すると共に、メモリに記憶されているプログラムを更新することが可能なマイクロコントローラ及びマイクロコントローラの更新方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明のある観点によれば、メモリ部と、前記メモリ部からプログラムを読み出して処理を実行するプロセッサと、前記プロセッサによる前記メモリ部のアドレスを記憶するリマップ情報記憶領域と、前記メモリ部に格納されているプログラムの書き換えを行うか否かを判定するフラグを記憶する書き換えフラグ記憶領域と、前記プロセッサ及び前記リマップ情報記憶領域のリセットを行う情報が書き込まれると前記プロセッサ及び前記リマップ情報記憶領域をリセットするリセット情報記憶領域と、を備える、マイクロコントローラが提供される。
【0008】
本発明の別の観点によれば、メモリ部からプログラムを読み出して処理を実行するプロセッサ及び前記プロセッサによる前記メモリ部のアドレスを記憶するリマップ情報記憶領域のリセットを行う情報をリセット情報記憶領域に書き込むリセット情報書き込みステップと、前記リセットを行う情報が書き込まれると、前記リセット情報記憶領域から前記プロセッサ及び前記リマップ情報記憶領域をリセットするリマップ専用リセットステップと、を含むマイクロコントローラの更新方法が提供される。
【発明の効果】
【0009】
本発明によれば、メモリの使用可能容量の減少を抑制すると共に、メモリに記憶されているプログラムを更新することが可能なマイクロコントローラ及びマイクロコントローラの更新方法を提供することができる。
【図面の簡単な説明】
【0010】
図1】MCUにおけるFlashROMのリマップの一例を説明する図である。
図2】MCUにおけるFlashROMのリマップの一例を説明する図である。
図3】MCUにおけるFlashROMのリマップの一例を説明する図である。
図4】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図5】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図6】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図7】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図8】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図9】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図10】MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図11】本発明の実施形態に係るMCUの構成例を示す図である。
図12】実施形態に係るMCUによるリセット処理の流れの一例を示すフローチャートである。
図13】実施形態に係るMCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
図14】実施形態に係るMCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一または等価な構成要素および部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0012】
(比較例)
本発明の実施形態の一例を詳細に説明する前に、本発明の実施形態の比較例を説明する。
【0013】
図1図3は、MCUにおけるFlashROMのリマップの一例を説明する図である。図1図3では、メモリ空間を区分けした区分を表すbankに対応したアドレス及びメモリ空間が示されている。bank0はメモリ空間のリマップ領域(Remappable space)であり、リマップレジスタで指定されたアドレスから始まる領域がリマップされる。bank1及びbank3は後に書き込みが行われるメモリ空間の予約領域である。bank2はメモリ空間のプログラムが格納される領域であり、具体的にはFlashROMのプログラムが格納されている領域である。bank4はメモリ空間のプログラムが格納されている領域であり、具体的にはSRAMのプログラムが格納されているSRAMの領域である。図1以降に示した例では、bank2はFlashROMのブートプログラムが格納されるFlashROMブートプログラム領域、FlashROMのユーザプログラム1が格納されるFlashROMユーザプログラム領域1、FlashROMのユーザプログラム2が格納されるFlashROMユーザプログラム領域2からなる。ここで、CPUはbank0、bank1、bank2、…の順でメモリ空間のプログラムを実行する。
【0014】
電源起動時には、図2に示したように、bank0にはbank2のFlashROMブートプログラム領域がリマップされ、ユーザプログラムを起動するまでの処理を行う。CPUがユーザプログラム1を実行する際には、図3に示したように、bank0にはbank2のFlashROMユーザプログラム領域1がリマップされ、ユーザプログラム1が実行される。リマップは、リマップレジスタにリマップ対象領域の先頭アドレスを書き込むことで処理される。例えば、bank2のユーザプログラム1をbank0にリマップするときは、リマップレジスタに、ユーザプログラム1が配置されているアドレス0x100X_XXXXが書き込まれる。リマップ処理は、リマップレジスタに書き込んだ時点で有効になる。リマップレジスタにアドレス0x100X_XXXXが書き込まれると、図3に示したように、bank0にはCPUが実行するFlashROMユーザプログラム領域1がリマップされ、ユーザプログラム1が実行される。
【0015】
MCUにおいて、機能を更新するなどの目的で、FlashROMに記憶されているユーザプログラムを書き換えたい場合がある。FlashROMに記憶されているユーザプログラムを書き換える場合の例を示す。
【0016】
図4図10は、MCUにおけるFlashROMに記憶されているユーザプログラムの書き換えの流れの一例を説明する図である。図4図10では、図1と同様にメモリ空間を区分けした区分を表すbankに対応したアドレス及びメモリ空間を示している。FlashROMに記憶されているユーザプログラムを書き換えるために、bank4のSRAMの領域には、書き換えモード用のリマッププログラムが記憶されている。
【0017】
図4にはbank2のユーザプログラム1がbank0にリマップされて動作している様子が示されている。ユーザプログラム1を実行しているとき、bank4のSRAMの領域は通常プログラムの作業用メモリとして使用されるが、以降で説明するプログラムの更新用に一部が書き換えモード用のリマッププログラムの配置のために使用されている。つまり、bank4のSRAMの領域は、ユーザプログラム1の作業用としてのユーザプログラム1用WorkRAMの領域と、プログラムの更新用としての書き換えモード用リマッププログラムの領域からなる。
【0018】
図4の状態で、MCUの外部からプログラムの更新要求があると、図5に示したように書き換えフラグレジスタのフラグが1に設定される。
【0019】
書き換えフラグレジスタのフラグが1に設定されると、図6に示したように、CPUの参照先は、bank4のSRAMの領域の書き換えモード用リマッププログラムにジャンプする。bank0とは違うbankでプログラムを実行するのは、次の工程でbank0をリマップする際に、CPUがbank0でプログラムを実行していると、実行中のプログラムが書き換わってしまい、CPUが暴走してしまうことを回避するためである。
【0020】
続いてCPUは、図7に示したように、bank4のSRAM領域の書き換えモード用リマッププログラムを実行して、bank0にFlashROMブートプログラム領域をリマップすると共にCPUのリセットを行う。なお、書き換えフラグレジスタのフラグが1の時は、ブートプログラムは、ユーザプログラムを書き換える書き換えプログラムが実行されるようにプログラムされている。ここで、CPUのリセットとは、CPUがbank0からメモリ空間のプログラムを実行させるようにすることをいう。
【0021】
bank0にFlashROMブートプログラム領域をリマップすると共にCPUがリセットを行うと、図8に示したように、CPUはbank0からプログラムを実行する。上述したように、ここでCPUが実行するプログラムはユーザプログラムを書き換える書き換えプログラムである。ここでは、アドレス0x100Y_YYYYから始まるユーザプログラム2が書き換えの対象になっているとする。
【0022】
CPUが書き換えプログラムを実行すると、図9に示したように、アドレス0x100Y_YYYYから始まる領域のプログラムが、ユーザプログラム2からユーザプログラム3に書き換えられる。
【0023】
書き換えが完了すると、図10に示したように、書き換えフラグレジスタのフラグが0になり、MCUは通常のブートプログラム動作を実行することで、書き換えたユーザプログラム3が実行可能な状態となる。
【0024】
しかし、この構成では、ユーザプログラムを更新するために、SRAMを含むRAMの領域の一部に書き換えモード用のリマッププログラムを常に配置しておく必要がある。そのため、RAMの領域でユーザプログラムが作業用メモリとして使える領域が少なくなってしまうという問題がある。
【0025】
そこで本実施形態に係るMCUは、RAMの領域の一部に書き換えモード用のリマッププログラムを配置することなく、FlashROMの書き換えを行うことを可能とした。
【0026】
図11は、本発明の実施形態に係るMCU100の構成例を示す図である。図11に示したように、MCU100は、FlashROM101、SRAM102、リマップレジスタ103、CPU104、書き換え処理部105、リマップ専用リセットレジスタ106、通信インタフェース(I/F)107、及び書き換えフラグレジスタ108を含む。FlashROM101、SRAM102、CPU104は命令バス109に接続されている。リマップレジスタ103、CPU104、書き換え処理部105、リマップ専用リセットレジスタ106、通信I/F107、及び書き換えフラグレジスタ108はデータバス110に接続されている。
【0027】
FlashROM101は、CPU104によって読み出されて実行されるプログラムが格納される、書き換え可能な不揮発性メモリである。SRAM102は、CPU104がプログラムを実行する際にプログラムの作業用として使用する揮発性メモリである。FlashROM101及びSRAM102は、本発明のメモリ部の一例である。
【0028】
リマップレジスタ103は、本発明のリマップ情報記憶領域の一例であり、bank0にリマップする領域を指定するアドレスが書き込まれるレジスタである。リマップレジスタ103のアドレスは、データバス110を介してCPU104によって書き込まれる。CPU104は、本発明のプロセッサの一例であり、FlashROM101に記憶されているプログラム及びSRAM102に記憶されているプログラムを命令バス109を介して読み出して実行する。CPU104は、FlashROM101に記憶されているプログラムを読み出す際には、例えば、リマップレジスタ103に記憶されているアドレスに基づいてbank0にリマップしたプログラムを読み出す。
【0029】
書き換え処理部105は、書き換えフラグレジスタ108にFlashROM101の書き換えを行うフラグが設定された場合に、FlashROM101のプログラムを書き換える処理を行うプロセッサである。書き換え処理部105のプログラムを書き換える処理は、データバス110を介してCPU104がプログラムの書き換えを指示することによって行われる。書き換え処理部105は、FlashROM101のプログラムを書き換える処理を行う際に、まず書き換え対象のプログラムをFlashROM101から消去し、続いて新しいプログラムをFlashROM101に書き込む処理を実行する。
【0030】
リマップ専用リセットレジスタ106は、本発明のリセット情報記憶領域の一例であり、リマップ専用のリセットを行う情報が書き込まれるレジスタである。リマップ専用リセットレジスタ106のリマップ専用のリセットを行う情報は、データバス110を介してCPU104によって書き込まれる。例えば、リマップ専用リセットレジスタ106に1のフラグが書き込まれることでリマップ専用のリセットが行われる。リマップ専用のリセットとは、リマップレジスタ103及びCPU104のリセットを行い、書き換えフラグレジスタ108のリセットは行わないリセットのことをいう。リマップ専用リセットレジスタ106は、例えば1ビットのフリップフロップで構成されてもよい。ここで、リマップレジスタ103のリセットとは、リマップレジスタに記憶されているアドレスを書き換えることをいい、CPU104のリセットとは、CPUがbank0からメモリ空間のプログラムを実行するようにさせることをいう。また、書き換えフラグレジスタのリセットとは、書き換えフラグレジスタのフラグを書き換えることをいう。
【0031】
通信I/F107は、MCU100の外部との通信を行う。例えば、通信I/F107は、MCU100の外部から、FlashROM101へ記憶される書き換えプログラム、FlashROM101へのプログラムの書き換え命令などを受信する。通信I/F107が受信したプログラムや命令などをCPU104がデータバス110を介して読み出すことで、CPU104は外部からプログラムの書き換え指示が送られてきたことを認識する。
【0032】
書き換えフラグレジスタ108は、本発明の書き換えフラグ記憶領域の一例であり、FlashROM101へのプログラムの書き換えを行うか否かを判定するフラグが記憶されるレジスタである。書き換えフラグレジスタ108のフラグは、データバス110を介してCPU104によって記憶される。例えば、書き換えを行う場合には1のフラグが、書き換えない場合には0のフラグが、書き換えフラグレジスタ108に記憶される。
【0033】
本発明の実施形態に係るMCU100は、係る構成を有することで、SRAMの領域にリマップレジスタ103及びCPU104のリセットを行うプログラムを設けずに、FlashROM101に記憶されているプログラムを更新することができる。
【0034】
次に、MCU100の作用について説明する。
【0035】
図12は、外部からプログラムの書き換え指示が送られてきた場合におけるMCU100によるリセット処理の流れの一例を示すフローチャートである。CPU104がFlashROM101からプログラムを読み出して、SRAM102に展開して実行することにより、MCU100によるリセット処理が行なわれる。
【0036】
ステップS101において、外部からプログラムの書き換え指示及び書き換えるプログラムの実体が送られてくると、CPU104は、続いてステップS102において、書き換えフラグレジスタ108に書き換えのためのフラグを書き込む。ここでは、書き換えのためのフラグとして1が、書き換えフラグレジスタ108に書き込まれる。
【0037】
図13は、本実施形態に係るMCU100におけるFlashROM101に記憶されているユーザプログラムの書き換えの流れの一例を説明する図であり、リマップレジスタ103にアドレス0x100X_XXXXが書き込まれた状態で、CPU104によって書き換えフラグレジスタ108に1のフラグが書き込まれた状態を説明する図である。図13には、図1と同様にメモリ空間を区分けした区分を表すbankに対応したアドレス及びメモリ空間が示されている。
【0038】
CPU104は、続いてステップS103において、リマップ専用リセットレジスタ106にリマップ専用のリセットを行う情報を書き込む。ここでは、リマップ専用のリセットを行うフラグとして1が、リマップ専用リセットレジスタ106に書き込まれる。
【0039】
リマップ専用リセットレジスタ106にフラグとして1が書き込まれると、MCU100は、続いてステップS104において、CPU104及びリマップレジスタ103のリセットを行う。書き換えフラグレジスタ108にフラグとして1が書き込まれているので、MCU100は、続いてステップS105において、FlashROM101に書き込まれているプログラムの書き換えを実行する。
【0040】
図14は、本実施形態に係るMCU100におけるFlashROM101に記憶されているユーザプログラムの書き換えの流れの一例を説明する図であり、MCU100がCPU104及びリマップレジスタ103のリセットを行った状態を説明する図である。図14には、図1と同様にメモリ空間を区分けした区分を表すbankに対応したアドレス及びメモリ空間が示されている。リマップレジスタ103がリセットされたので、リマップレジスタ103にはアドレス0x1000_0000が書き込まれ、CPU104はアドレス0x1000_0000から始まる領域をbank0にリマップする。そしてCPU104がリセットされたので、CPU104はbank0からプログラムを実行する。また書き換えフラグレジスタ108はリセットされていないので、フラグとして1が書き込まれている状態のままである。従ってCPU104は、書き換えフラグレジスタ108のフラグが1になっているため、CPU104は、書き換え処理部105に対してプログラムの書き換えを指示し、書き換え処理部105は、FlashROM101に書き込まれているプログラムの書き換えを実行する。
【0041】
本発明の実施形態に係るMCU100は、係る処理を実行することで、比較例で説明したような、SRAMの領域にリマップレジスタ103及びCPU104をリセットさせるプログラムを設けずに、FlashROM101に記憶されているプログラムを更新することができる。したがって、メモリの使用可能容量の減少を抑制しつつ、メモリに記憶されているプログラムを更新することが可能となる。
【0042】
また、本発明の実施形態に係るMCU100は、係る処理を実行することで、比較例で説明したような、bank0とは違うbankにジャンプし、書き換えモード用リマッププログラムを実行せずに、FlashROM101に記憶されているプログラムを更新することができる。したがって、プログラムの更新にかかる時間を短縮することが可能となる。
【0043】
上記各実施形態では、リセット処理のプログラムがFlashROMに予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0044】
以上、添付図面を参照しながら本発明の実施形態について詳細に説明したが、本発明の技術的範囲はかかる例に限定されない。本発明の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これら各種の変更例または修正例についても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0045】
100 MCU
101 FlashROM
102 SRAM
103 リマップレジスタ
104 CPU
105 書き換え処理部
106 リマップ専用リセットレジスタ
107 通信インタフェース(I/F)
108 書き換えフラグレジスタ
109 命令バス
110 データバス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14