mcommit's message

大阪でソフトウェア開発の仕事をしている simotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

Ruby On BeagleBone

以前にBeagleBoneが届いたという記事を書いてから
特に何も書いていなかったのでBeagleBoneで遊んだ内容について少しかいておきたいと思います。

まずBeagleBoneの起動ですが、
付属のmicroSDカードを挿した状態で、PCとBeagleBoneをUSBケーブルでつなぎます。
※BeagleBone側はMiniB型です。

こんな感じ、
BeagleBone

写真のBeagleBoneにはあわせて買ったDVICapeを挿した状態です。
といっても家にはDVI対応のモニタがないので意味がないのですが。。。
※ちなみにDVICapeはDVI-Dのみ対応しているみたいなので購入される際はそのへんもチェックしたほうがいいと思います。

microSDにはLinuxが載っており、
DHCPIPアドレスが設定されます。なのでLANケーブルを繋げばSSHでのログインが可能です。

ただし私の部屋には無線LANしか無いので、コンソールログインを試みます。
※BeagleBoneで無線LANが使えるようにしたいですね。


コンソールログインの方法ですが、
Macでは、ターミナルソフトとしてscreenというソフトが使えるらしいです。

使い方
screen [デバイス名] [ボーレート]


[Mac]
$ls /dev/tty.*
/dev/tty.Bluetooth-Modem /dev/tty.usbserial-TIVJ89SPA
/dev/tty.Bluetooth-PDA-Sync /dev/tty.usbserial-TIVJ89SPB

私の環境では、


/dev/tty.usbserial-TIVJ89SPB
がコンソールになります。

ということで、


[Mac]
$screen /dev/tty.usbserial-TIVJ89SPB 115200

を実行するとこんな感じで、BeagleBoneのコンソールが表示されます。
※ボーレートは115200みたいです。

BeagleBoneコンソール
Window環境からも同様にログインできます。(Poderosaでログインできました)
ただし、改行コードか何かのせいでPoderosaだと vi がうまく動かなかったです。

初期のユーザアカウントですが、
rootユーザ(パスワードなし)でログインできます。

さてさて、BeagleBoneのイメージにはGCCが載っています。


[BeagleBone]

$gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-angstrom-linux-gnueabi/4.5.4/lto-wrapper
Target: arm-angstrom-linux-gnueabi
Configured with: /OE/angstrom-v2012-05/build/tmp-angstrom_v2012_05-eglibc/work-shared/gcc-4.5-r49+svnr184907/gcc-4_5-branch/configure --build=x86_64-linux --host=arm-angstrom-linux-gnueabi --target=arm-angstrom-linux-gnueabi --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/OE/angstrom-v2012-05/build/tmp-angstrom_v2012_05-eglibc/sysroots/beaglebone --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --disable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-angstrom-linux-gnueabi- --enable-target-optspace --enable-lto --enable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap --with-linker-hash-style=gnu --with-ppl=no --with-cloog=no --enable-cheaders=c_global --with-local-prefix=/OE/angstrom-v2012-05/build/tmp-angstrom_v2012_05-eglibc/sysroots/beaglebone/usr --with-gxx-include-dir=/usr/include/c++/ --enable-nls --enable-__cxa_atexit
Thread model: posix
gcc version 4.5.4 20120305 (prerelease) (GCC)

という事は、クロスコンパイル不要!
僕のかわいいBoneちゃんの上でしこしことソースを書いて、その場でコンパイルして遊べる!

ということで最近ハマっているRuby(1.8.7)をコンパイルして見ました。

以下、手順。

http://www.ruby-lang.org/ja/downloads/ 
からソースを入手。
wgetコマンドは使えるけどなんかURLが正しくないみたいなことを言われた→USBメモリでコピー

解凍→./configure→make→make installを駆け足で。


[BeagleBone]

$tar xzfv ruby-1.8.7-p358.tar.gz
※解凍には少し時間がかかる(2〜3分)
$cd ruby-1.8.7-p358
$./configure --prefix=/usr
※これまたすこじ時間がかかる(2〜3分)
$make
※これは軽くネットサーフィンできるくらい時間がかかる(5〜10分?)
#make install
※root権限が必要。

$which ruby
/usr/bin/ruby

これで無事コンパイルとインストールはできました。
動作確認


[BeagleBone]

$ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [armv7l-linux]

$ruby -e 'puts "Hello World"'
Hello World

問題なさそうです。(パチパチパチ〜)

コンパイルしている間にBeagleBoneのチュートリアルのビデオをみたんですが、
Pythonを使って、Lチカが簡単にできるよ〜みたいな例が紹介されていました。
ArduinoとおんなじノリでLチカできることが強調されている。

Python!?わかりません。。。

日本人なら黙って、Rubyでしょ。


というわけで、
セルフコンパイラのお陰様で便利に開発できそうで
(同時に組込み感が薄い気もしますが)BeagleBoneは楽しそう。

実は9月末に待望のraspberry piも届いたので、そっちも遊んでみようと思います。