2014年8月18日月曜日

【Quartz】プログラミング言語を作…りたい話

組み込み環境のLinuxでドライバを作る場合、ドライバ自体は割りと
簡単に作れるけど、一番面倒なのがテスト。ドライバはGPIO使って
LEDとかスイッチとか制御するだけでも、そのテスト用のアプリは
意外と面倒なんですよね~。

あと、特定機能のライブラリとか作る場合も一緒。ライブラリをコール
するためのサンプルアプリとかって、網羅的に機能を試そうとすると
結構複雑な構成になるわけです。

今まではしょぼ目のコマンドセットを使っていて、まあこれでも大体
目的は果たせてたんだけど、色々欲張るうちにIF文やループの機能が
増えていって、字句解析、構文解析を端折ったような構成だったから
内部がどんどん複雑に…。テスト用なのでしっかり作る必要性も
ないっちゃないんだけど、ここらでちゃんとしたものを作っておいても
いいかなあ…と言うのが動機です。

Luaを使っても良かったんだけど、簡素に出来てるLuaであっても
目的にはちょっとオーバースペック。オブジェクト指向っぽいもの
とか全然必要ないし( ̄ー ̄)。BASICのサブセットでもいいぐらい。

■名前:Quartz
 ・まだ実装もしてないけど名前だけは決まってると言う…(^^;。
  プログラム言語の名前は飲料系(コーヒーかな)とか宝石系とか
  動物系が多いんだけど、「組み込んで使えるちょっとしたもの」
  が良かったので石英(Quartz)としてみました。

■機能・特徴
 ・C言語のライブラリとして提供される。
 ・アプリケーションに組み込んで使う
 ・機能的には最低限の言語機能だけ提供し、その他の必要な機能は
  ユーザーがQuartz上で使える関数を(C言語で)実装するような
  イメージ。
 ・最低限…とはいいつつ、自分が良くつかうのでスレッドとソケットは
  扱えるようにする。

【NAS】最終的に

HDDがぶっ飛んだり、BuffaloのNASが使い物にならなかったり…ってことで
最終的にはウチのNAS環境は以下の様な感じに落ち着きました(^^;。

■無線ルータ:Buffalo WZR-600DHP2
 ・USB-HDDを接続して簡易NASを実現する場合、ファイルシステムがXFSに
  なり、しかも古いBuffaloのルータがフォーマットしたXFSと互換性が微妙
  なので、USB-HDDの接続は却下

 ・でも、ちょっとだけファイル共有がしたいので、余っていたSDHC 32GBを
  つないでおく(^^;。これだけでも割と便利♪

■サーバ:Acer Revo3610
 ・メモリは4GBに増設。でも3GBまでしか認識しないんだけどね(T∇T)。
 ・HDDはSSHDにしてあるけど、Windows7が入っているので、東芝の64GBの
  USBメモリ買ってこれにUbuntu12を入れる。ファイルサーバとして動作
  させる場合にはUbuntu起動にしておく。USB-HDDをext3でフォーマット
  して接続。この領域はSAMBAで公開

■RAID
 ・上のUbuntu + USB-HDDのHDDフォーマットをNTFSにして、UbuntuとWindowsの
  両方からマウントして共有!とかやってたら、HDDがぶっ飛んだ!Σ( ̄口 ̄;;。
  多分、MBRとかPBRとかその辺りが破壊された様子。WindowsのHDD復旧ソフト
  買って、1TBぐらいあった写真やらを1週間かけて復元(24時間連続運転で7日
  間…( ̄ω ̄; )。それでも壊れてる写真、結構あったなあ。

  復旧したはいいけど、1個のフォルダに全部復旧したファイル入れてくれるもん
  だから、軽いスクリプトをなでしこで書いてファイル振り分け。これも数日かかる。

 ・これはいかん!!ってことでラトックのRS-EC32-U3Rと言うRAID組めるHDD
  ケースを買って、2TB x 2でRAID1構成。これでまあ、バックアップは暫くは
  安心か…。RAIDの方はネットワーク共有はしないことに(^^;。

Revo3610はCPUがATOM330(1.6GHz)なので、ちょっと遅いなあ。Windowsは
そこそこ快適に動作するんだけど、UbuntuはUSBメモリからの起動なので
ちょっと遅く感じる。クロス環境でARMなCPUのボードで遊んだりしたいので
もうちょっと速いマシン欲しいところ。