RXシリーズは内部にフラッシュROMを搭載している。 主にプログラムを格納するための ROMと パラメータなどを格納するための E2データフラッシュの二種類がある。
今回E2データフラッシュに変数を格納する必要があったために、E2データフラッシュ専用の書き込み関数を開発した。
ルネサスでは 世界に先駆けてFlashROM内蔵マイコンを開発したわけだが、SHやH8のタイプともR8Cに搭載されているタイプともちがいRxに搭載されているタイプのためにFlashROMアクセスのプログラムを書かないといけない。
個人的には R8Cに入っていたのがとても良かったのに、RXでは変わってしまったのは残念。
ルネサスにいけば何かあるかなと確認したが、「フル装備」のものすごい階層構造になったサンプルプロジェクトが一つあるのみだった。
こちらとしては E2データフラッシュの書き込み、イレースができればいいのに、ROMの書き込みもサポートされているし、パラメータのチェックやエラー処理も完璧だ。ですべてのマイコンに対応できるように #ifdef のオンパレード、ソースファイルは難解であると。。で、ちょっとソースファイルをいただいて、移植するというわけにはいかず、エラー情報の泥沼に入ってしまった。
このあたりは MSP430のサンプルプログラムなんかが、私は良いと思う。
しかたがないので、自分で開発することとしました。
RX220用E2データフラッシュアクセス関数 ←こちらにのページにソースファイルのリンクがあります。
・RX220(R5F52206BDFL) 内部クロック32MHzで動作確認。
・そのほかのRXシリーズでそのまま使えるでしょう。あるいは、周波数の書き換え程度手を加えたらOKだと思います。
・E2データフラッシュ専用
・必要最小限の機能。小さくてシンプル
・パラメータチェックはしていません。
・こまかいエラー処理、エラーの通知はしません。
・E2データフラッシュ専用なので、RAM実行はしなくてもよい。→セクションとか考えなくてOK
・ソースファイルの使用については自己責任でお願いします。
・E2Flash.c は最適化なしでコンパイルしてください。コールする側は最適化の指定はありません。(2016.11.29追記)
・ご質問とかバグ報告はビーコンのホームページお問い合わせのフォームからお願いします。
このページのメッセージ欄からお願いします。
多くの開発では ROMを自身のプログラムで書き換えるという用途は少なく、E2データを読み書きできればよいという場合が大多数ではないかと思う。ROMの書き換えの場合には RAM上でプログラムを実行しないといけない。でもE2データのみであればROM上でも大丈夫です。
RXのFlashROMの特徴的なことは、ブランクの時には値が未定で、指定されたBlank確認処理をしないと、ブランク状態かどうかわからない。普通のFlashROMではプランク状態では 0xFFFF (全ビットが立っている)というのが一般的であり、これは初めてみたタイプ。
今回の開発にあたり、ルネサスエレクトロニクス アプリケーションノートおよびサンプルプロジェクト R01AN2184EU0163 を参考にさせていただきました。
JUGEMテーマ:組み込み開発