BCM/mipsでもmruby


BCM/mipsでもmrubyが動くようにしてみました。

蟹さんの時と同じでnewlibを用意します。

とりあえずlibcとlibmrubyをリンクして実行すると固まります。デバッグしたところsetjmpの問題な事がわかり修正しました。mrubyをデバッグしてsetjmpにたどり着いたのですが、結構骨で、setjmp/longjmpはアーキテクチャや環境によって問題起こしやすいので、事前にテストしておいた方が良いです。

CFE> boot -elf 10.10.10.3:main.elf
Loader:elf Filesys:tftp Dev:eth0 File:10.10.10.3:main.elf Options:(null)
Loading: 0x80010000/256952 0x8004ebb8/76 Entry at 0x80010000
Closing network.
et0: link down (interface down)
Starting program at 0x80010000
index:0
index:1
index:2
index:3
index:4
index:5
index:6
index:7
index:8
index:9
index:10

いろいろはまって一週間くらいかかりました。

蟹さんはBigEndianですがBCM/mipsはLittleEndianです。また蟹さんは正式にはMIPSではない(Lexra)のですがBCM/mipsはほんまもんのMIPSです。

BCM/mipsなターゲットはメモリが8Mや16Mのものが多いのですが、OSをのせるには窮屈ですが、mrubyにとっては十分な大きなのではないでしょうか。