2014年9月29日月曜日

【Quartz】数式

数式は大体はC言語と一緒です。

------------------------------------------------------------
a = 1 + 2 * 3 / 4        #四則演算
b = (1 + 2) * 3           #( )付き演算
c++                         #インクリメント、デクリメント
a = 1 << 2                #ビットシフト
b = a & 0x00000001   #ビット論理演算
c = "moji" + "retsu"  #文字列連結
------------------------------------------------------------

ビットの論理演算は数値に対してのみ有効で、結果は16進に
なります。文字列の連結は便利そうなので入れておきます。
文字列と文字列意外の連結は…どうしようかなあ。文字列として
返す様にしようかな。

2014年9月26日金曜日

【Cubieboard2】コンパイル備忘録 その2

Buildrootのmakeができたら、これをSDカードにます。4GBぐらいあれば
いいみたいですが、8GBのものを使いました(実際、イメージはそんなに
大きくないので、2GBとかでもいけるかもしれません)。

■書き込み用のスクリプトを起動

# sudo ./board/cubietech/cubieboard/mkcubiecard.sh output/images/ /dev/sdd

Buildrootのフォルダ直下で、上記を実行。最後の/dev/sddの部分は環境に
ことなります。mountされてるとエラーになる可能性があるので、あらかじめ
umountしておきます。

mount時、/dev/sdd1とかなってますが、引数師弟の場合は/dev/sddとします。
これを実行すると、SDカードにすべて書き込んでくれます♪。

■起動!

microSDカードをCubieboard2に挿入して起動!。シリアルポートで動作確認
できますよ~。ちなみにシリアルポート接続はFTDIのUSB接続タイプのを使って
ますが、Cubieboad2のシリアルポート(USB1/2ポートのすぐ後ろくらいにある
4pinヘッダのコネクタ)には

GND...黒
VCC...×
RX...緑
TX....白

の様に接続。VCCに赤のラインをつなぐと動きませんので、ここはNCです。

■シリアルコンソール

Ubuntuの場合、「Serial port terminal(シリアルポート端末)」と言うソフトがあるので、
ソフトウェアセンターでインストールできます。ただし、これを普通に動作させると
「許可がありません」とか言われるので、コンソール(端末)から

# sudo gtkterm &

でOK。シリアルポートはボーレートが115200、8bit、stop:1bit、パリティーなし、で
動作してます。

やってみたら意外と簡単でした♪。Buildrootすげー。



2014年9月21日日曜日

【Cubieboard2】コンパイル備忘録 その1

Cubieboard2を買ってほったらかしになっていたので、それ様のBootイメージを
作ってみようかと思います。

公式サイトではYocto使う様に書かれてたり、Debianイメージが配布されていたり
するんですが、ウチの非力なPCではYoctoのコンパイルには時間がかかりすぎるし
Debianは色々入りすぎてる感じ…。ってことで 割とお手軽そうなBuildrootを選択。

■Tool Chain

Ubuntuの場合はapt-getで取れます。


# apt-get install gcc-arm-linux-gnueabihf

 
■U-Boot

gitで取ってきます。

# git clone https://github.com/linux-sunxi/u-boot-sunxi.git

取ってきたらu-boot-sunxi/に入って、まずはConfigを作ります。

# make CROSS_COMPILE=arm-linux-gnueabihf- Cubieboard2_config 

U-Boot本体を作ります。

# make CROSS_COMPILE=arm-linux-gnueabihf-

■ツール類

gitで以下の2つを取ってきます。

# git clone git://github.com/linux-sunxi/sunxi-tools.git
# git clone git://github.com/linux-sunxi/sunxi-boards.git

sunxi-tools/に入って、ツールをまず作ります。

# make fex2bin

sunxi-boards/sys_config/a20に入ります。ここに目的のcubieboard2.fexファイルが
あります。これはボードのハード設定諸々を記述したもので、これをコンパイルしてbin
ファイルにした後、U-bootからKernelに引き渡す様です。

# ../../../sunxi-tools/fex2bin cubieboard2.fex script.bin

生成されたscript.binが目的のファイルです。

※Buildrootを取ってくると、上記も一緒に入っててAutoでコンパイルしてくれてました。
 なので、Buildroot使う場合は必要ないです。

■Buildroot

gitでも取れますが、今回は

  http://buildroot.uclibc.org/download.html

からtar.gzファイルを取ってきて展開。

# tar  zxvf  buildroot-2014.08.tar.gz

buildroot-2014.08/に入ってコンパイル。まずはconfig作ってから本体のmake。

# make cubieboard2_defconfig 
# make

今日はここまで♪。



2014年9月1日月曜日

【Quartz】変数について

コメントには"#"を使います

------------------------------------------------------------

#コメント

a = 123 #コメントは文の後ろでも可

#複数行コメント書きたいときは
#各行の先頭に"#"が必要です

------------------------------------------------------------
変数はCっぽい感じにしますが、型宣言による初期化は必要としない
ことにします。

------------------------------------------------------------
a = 123             #整数
b = "mojiretsu"  #文字列
c = 0.123          #浮動小数点
d = 0x123         #Hex値
e = [00112233]  #データ列
------------------------------------------------------------

変数の型は代入する値で決まります。言い換えれば、代入する
毎に型が決定されます。演算による型の変更は…まだ考えて
ません(^^;。

Hex値は内部でunsigned longで扱われます。データ列はHex値の
"0x"を省いた16進値を連続で書き込むと、そのデータがバッファに
記述されるようにします。MAX値は16byteまでです。通信フレーム
とか扱ってると、連続値入力したいときが良くあるので、この型を
設けます。

ポインタはどうしようかなあ…。複雑になるからとりあえず止めとくか。

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のボードで遊んだりしたいので
もうちょっと速いマシン欲しいところ。

2014年3月28日金曜日

【Buffalo】無線ルータと簡易NASの話 その2

以前使用を開始したBuffaloの無線ルータWZR-600DHP2と、その
簡易NAS機能ですが…結局使用中断しました( ̄ω ̄;。

600DHP2の簡易NAS機能、最初は調子よく動いてたんですが、
時々ファイルが全く見えなくなる症状が発生。見えた!と思っても
特定のディレクトリの下のファイルがなくなってたり…再起動したり
してると復活するんだけど…

ってことで結局USBにUbuntuをインストールして、それをPCに接続。
普段はLinuxのサーバとして動作してもらって、使いたいときはHDDに
入ってるWin7を使う様にしました。

600DHP2、無線部分についてはいんだけど、オマケ機能のNAS
は全然だめ。且つ、この無線ルータに変えてからVNCが繋がらなく
なるし…無線ルータのオマケ機能は宣伝ほどはしっかり実装されて
ないと言うのが結論です(^^;。