1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mruby/cでVMとMRBを分離

Last updated at Posted at 2024-08-03

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の機能でダウンロードしました。

image.png

xmodemはいい加減な実装ですがコードはこれです。

mruby/cではMRBの標準ダウンロード仕様があったのですが、独自仕様になります。

itocさんがWindowsのmrbc.exeを提供してくれているので、WindowsだけでMRBを作ってダウンロードして実行することが出来るようになりました。

MacOS XでもMRBを保存してみました。

screenでCP/M8266とのやりとりのため作ったxmodemのコマンドを使いました。

:exec !! ./xs sample_serial_echo_server.mrb

スクリーンショット 2024-08-04 14.45.47.png

El Capitanではmruby 3.3がビルドできなかったので、itocさんからビルド済みのバイナリをダウンロードして使いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?