mrubyのターゲットには以下のようなものがあります。
- 32bit 1チップマイコン
- 2005年前後のルーターなどのSOC(A)
- 2010年前後のルーターなどのSOC(B)
- 携帯ゲーム機
- ガジェット
- ラズパイ
- Android
- PC UNIX(ユーザプロセス)
- PC UNIX(カーネル内)
1チップマイコンのRAMは128Kくらいから大きくても1Mくらいです。STM32やESP32などにmrubyをポートされている方がいます。SOC(A)はRAMは8M程度のターゲットです。当初は8MでもLinuxなどが動いていたようですが、いろいろ大きくなって、このクラスでLinuxを使うのは難しくなっています。SOC(B)は32M程度のRAMを想定しています。これくらいあるとLinuxやFreeBSDがどうにかのりmrubyもその上で動かせます。
build_configディレクトリの下にはゲームボーイなどの携帯ゲーム機でのビルド設定もあります。本体が高額なので、あまり現実的ではない気もします。ディスコンのガジェットの設定もあります。
ラズパイ以降はRAMが512M以上あったりストレージも大きく、rubyも動くので割愛します。
1チップマイコンはarmが主流ですがESP32は独自アーキテクチャですし、いろいろです。
SOC(A)はarmやmipsがありましたが、SOC(B)はもっぱらmipsです。
mruby/cというより小規模なリソースのCPUをターゲットにした実装もあります。
mruby本体では100K-300Kくらいをミニマムターゲットとしているようですが、拡張を入れるとものにもよりますが500Kくらいは必要になると思われます。
私はSOC(A)はmruby on YABMでSOC(B)はZRouter.orgでビルドしたFreeBSDでmrubyを使っています。SOC(A)の蟹さんは当初は8M RAMがターゲットだったのですが、32Mのものとかもあります。
SOC(B)のターゲットはLinuxベースのOpenWRTでもサポートがあります。
1チップマイコンのRAMはチップの中に内蔵されていますが、SOC(A)のRAMは外付けになります。
STM32はSDRAMを外付けできるようですが、複雑になりあまり一般的ではありません。
1チップマイコンはいろいろ新製品が出てますが、RAMが大きくなる方向には進んでいないので、当面SOC(A)との間は埋まらないような気がします。
あと、EthernetやWifi、Bluetoothなどの通信デバイスもほしいところです。
- ブートローダー無しのBearMetal
- ブートローダー有りのBearMetal
- OS有り
1チップマイコンは一番上になり、SOC(A)は2番目で、SOC(B)は3番目になります。
BearMetalの書き込み方法は以下のような方法があります。
- ISP
- JTAG
- U-BOOTなどのブートローダーのオペレーション
SOC(A)やSOC(B)のターゲットはHardOffのジャンクによくあり、数百円で入手できます。ただ本来の使い方ではないので、製品として1000円くらいで入手できるターゲットがあると良いのですが。
ただSOC(A)やSOC(B)はかなり大量に造られていて、当面入手に困る事はないと思われる。