数式は大体はC言語と一緒です。
------------------------------------------------------------
a = 1 + 2 * 3 / 4 #四則演算
b = (1 + 2) * 3 #( )付き演算
c++ #インクリメント、デクリメント
a = 1 << 2 #ビットシフト
b = a & 0x00000001 #ビット論理演算
c = "moji" + "retsu" #文字列連結
------------------------------------------------------------
ビットの論理演算は数値に対してのみ有効で、結果は16進に
なります。文字列の連結は便利そうなので入れておきます。
文字列と文字列意外の連結は…どうしようかなあ。文字列として
返す様にしようかな。
2014年9月29日月曜日
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すげー。
いいみたいですが、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で取れます。
■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つを取ってきます。
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
今日はここまで♪。
作ってみようかと思います。
公式サイトではYocto使う様に書かれてたり、Debianイメージが配布されていたり
するんですが、ウチの非力なPCではYoctoのコンパイルには時間がかかりすぎるし
Debianは色々入りすぎてる感じ…。ってことで 割とお手軽そうなBuildrootを選択。
■Tool Chain
Ubuntuの場合はapt-getで取れます。
# apt-get install gcc-arm-linux-gnueabihf
# git clone git://github.com/linux-sunxi/sunxi-tools.git # git clone git://github.com/linux-sunxi/sunxi-boards.git
※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までです。通信フレーム
とか扱ってると、連続値入力したいときが良くあるので、この型を
設けます。
ポインタはどうしようかなあ…。複雑になるからとりあえず止めとくか。
------------------------------------------------------------
#コメント
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言語で)実装するような
イメージ。
・最低限…とはいいつつ、自分が良くつかうのでスレッドとソケットは
扱えるようにする。
簡単に作れるけど、一番面倒なのがテスト。ドライバは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のボードで遊んだりしたいので
もうちょっと速いマシン欲しいところ。
最終的にはウチの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が繋がらなく
なるし…無線ルータのオマケ機能は宣伝ほどはしっかり実装されて
ないと言うのが結論です(^^;。
簡易NAS機能ですが…結局使用中断しました( ̄ω ̄;。
600DHP2の簡易NAS機能、最初は調子よく動いてたんですが、
時々ファイルが全く見えなくなる症状が発生。見えた!と思っても
特定のディレクトリの下のファイルがなくなってたり…再起動したり
してると復活するんだけど…
ってことで結局USBにUbuntuをインストールして、それをPCに接続。
普段はLinuxのサーバとして動作してもらって、使いたいときはHDDに
入ってるWin7を使う様にしました。
600DHP2、無線部分についてはいんだけど、オマケ機能のNAS
は全然だめ。且つ、この無線ルータに変えてからVNCが繋がらなく
なるし…無線ルータのオマケ機能は宣伝ほどはしっかり実装されて
ないと言うのが結論です(^^;。
登録:
投稿 (Atom)