gombeのブログ

マイコンの電子工作系PIC32/KiCad/C/C++/3D/

Native-C 開発状況と今後について

Native Cとは

以前少し紹介したCのオンボード開発環境です。KM-BASICのCバージョンですね。最近も開発はしています。時間の確保が難しいのですが、がんばります。

システム関数群の実装

ファイルアクセス等も割り込みを用いたシステムコールを用いることが多いのですが、今回はシステムサイズや応答の問題で、関数呼び出しによる実現をしています。次期のチップはもう少し大きいのでBSDライクにできればいいのですが、、その時はまたいろいろ考えましょう。

強制終了の実装

開発中にアプリケーションが無限ループで止めたい場合が多々あります。Native系だとこれらの場合に止める手段として、割り込みを用いることが一般的です。psがないので常にフォアグラウンドの処理を止めればいいのですが、この処理を止めるにしてもシステム関数内で処理が止められると例えばFILEの入出力中だとファイルが破壊されてしまう可能性があります。これを防ぐためにRAM実行中のみシステム割り込みによる終了ができるようにしました。EPCが割り込み前のPCですが、これがRAMの物理アドレス内かどうか判定します。強制終了はEPCを強制的に終了アドレスにセットすることによって実現します。この中ならファイルが開いているときは全てのファイルをシステムで閉じればいいので安全に利用ができます。

Graphics modeについて

以前からシステムにはあったのですが、関数テーブルに追加して利用可能になりました。このビデオシステムではMachiKania同様にTextとGraphicモードがあります。これらのモードはそれぞれ長所短所があって、Graphicモードは当然ながら多彩なグラフィック表現が可能で、その分グラフィックテーブルとして28KB、RAMが使用されます。TextモードではPCGを利用することで図の表示が可能ですが、8x8(8x6にも設定可能)のマスごとにしか色が設定できず、更にPCGは256種類までしか設定できません。RAMはPCG利用時は2KB消費します。(ユーザーフォント領域)

サンプルとして動画プレイヤーを作りました。

これからやらないとならないこととか、

まだまだタスクが多いですねぇ。 libcの実装、exitの実装、その他ゲームの移植テストなど。さらにasの再実装(Osなどで発生するバグ修正)もしたいです。

Hackaday.ioでSDのファイル郡を配布しています。

hackaday.io

超余談+オンボード環境の今後について(小声

このシステムはFlashストレージもあるから、380円のチップ+少しの部品+PS2キーボードのみで開発できます。きっかけとしては、Cプログラミングが基本だって思ってたのですが、開発環境用意するためにRPi買うとかすると、(Zeroは入手難)かなり金吹っ飛ぶし、だからといって違う言語で言うとBASICは参考書少ないしって思って開発始めました。 ちなみにBasicボードっていろいろあるけど、RaspberryPiに実装する必要ってあるのか?全部込みだけど、1.5万もする。元祖IchigoJamの10倍か。どのTVにもビデオコンポジット付いているし、キーボードも新たに買っても1.5万はしないしあまりメリットない気がするんだけど、、

Basicで言うと、やっぱりMachiKaniaとかIchigoJamで十分な気がする。MachiKaniaとこのシステムはネイティブ系でIchigoJamインタプリタです。MachiKaniaは始めるとすぐに例外で死ぬから、デバック考えるとIchigoJamのほうが圧倒的に有利ですね。でも速度とか、勉強する上で実現できることが多い点(グラフィックモードは強い)で言うと、MachiKaniaのほうが圧倒的に有利かと。値段的には自作するならどっちもあまり変わらない。MachiKaniaはSD必要だけどIchigoJamもどうせ外付けでEEPROM挟むからどっちも変わらない。IchigoJamの良い点だとIOが開いている点ですが、MachiKaniaの次作だと修正されるっぽいですね。その分高価になりそうだけど。

結論 子供向けって言うからには低価格って重要です。