chakokuのブログ(rev4)

日々のごった煮ブログです

M52259DEMOボードにforth移植


かなり昔にv850用にforthインタプリタを作ったことがあり、M52259DEMOにポーティングしてみた。IDE(CodeWarrior)の使い方がよく分からず手こずったけど、どうにか動いた。でもメモリマップとか全然確認していないので、ちゃんと配置する必要がある。

例えば、IPSBARレジスタの値を表示する例。


R:IPSBAR @4 . CR
を補足すると、R:IPSBARで示される番地に対して、4バイト幅で値を取得して、それをPRINTして、最後に改行を付ける、、と言う意味。(設定用のWORDである、!を使えば、任意の番地に値を書き込むことも可能)
ちなみに、、@4はオリジナルのFORTH仕様にはなく、自分で勝手に拡張したWORDで、指定された番地の値を4バイト長で取得します。

普通の組み込みソフトの開発ではCとかC++でコードを書くと思いますが、そもそもレジスタをどう使ったらいいのかすら分からん時は、コンパイル→実行→デバッグを繰り返すより、ある程度高機能なモニタか、インタープリタレジスタをいろいろ叩いてみて動きを調べるほうがTATも短くて良いのでは?と思われ。。ちなみに、FORTHには条件分岐やループもあるので結構いろんな処理をさせることができます。(sh + 逆ポーランド記法といったイメージ)


今後の開発ステップ(笑)。道のりは近いのか遠いのか。。52259でSPIを使う方法を仕様書で確認したけど、高機能な反面結構ややこしそう。。ちょっとメゲタ。

いずれにせよ、52259はEtherやUSBなどが使えて、80MIPS?ぐらいの高性能な石なので、いろんな試作をするにはかなり優れたプラットフォームと思います。ただ、CodeWarriorが有償なのが気になる。。(自分が使っているCWも30日間ライセンスかなにか制限があったはず。。一方、お試し版のCWは生成できるコードサイズに制限があったような。。)

■ご参考URL
電通大、FORTH を使うための手引き
http://www-lab.ee.uec.ac.jp/text/forth/index.html


■関連記事
茶国::Forth関連情報
http://d.hatena.ne.jp/chakoku/20071007
茶国::V850にforthを載せる
http://d.hatena.ne.jp/chakoku/20080227