RX210はCode FlashとData Flashという書き込みできる領域があります。R5F52108ADFPの場合Code Flashが512KバイトでData Flashが8Kバイトです。
Code FlashはROMと呼ばれていて、Data FlashはE2 Flashとも呼ばれます。
書き込み保証回数はCode Flashが1000回でData Flashが100000回です。
mruby/cのようなプログラムの場合、VM部分よりRubyスクリプトから生成したMRB部分の方が変更の頻度が多いと思われます。
このためCode Flashに焼かれるVMのソースでMRBの配列を読み込まず、MRBをData Flashに置いてそこからよむようにしました。
当初Renesas Flash ProgrammerでData Flashのみ書き換えようとしたのですが、Data Flashを書き換えると、Code Flashに残っているはずの、VMが起動しなくなります。
あきらめて、VMにxmodemを入れて、受信したデータをData Flashに書き込む機能を実装してみました。
メニューは作ってありませんが'x'でxmodemでMRBを受け取ってData Flashにかき、'r'でData FlashのMRBを実行するようにしてみました。
コードはルネサスの正式なサンプルコードのr_flash_api_rxをE2アクセスのみにして割り込みを使わない実装に修正されたコードがあったので、それを使いました。
RLoginのxmodemの機能でダウンロードしました。
xmodemはいい加減な実装ですがコードはこれです。
mruby/cではMRBの標準ダウンロード仕様があったのですが、独自仕様になります。
itocさんがWindowsのmrbc.exeを提供してくれているので、WindowsだけでMRBを作ってダウンロードして実行することが出来るようになりました。
MacOS XでもMRBを保存してみました。
screenでCP/M8266とのやりとりのため作ったxmodemのコマンドを使いました。
:exec !! ./xs sample_serial_echo_server.mrb
El Capitanではmruby 3.3がビルドできなかったので、itocさんからビルド済みのバイナリをダウンロードして使いました。