2010年3月アーカイブ

KURO-SHEEVA(玄柴)でSETI@homeに参加していますが、ようやく1つのワークユニットがおわりました。


  • 開始日:2010-02-05

  • 終了日:2010-03-12

  • Credit:104


やはり時間がかかりますね。
現在、2つめのワークユニットを黙々と処理中です。

KURO-SHEEVA(玄柴)にGainer互換のPepperを接続してみました。
参考にしたのはエレキジャックのサポートページです。
「Gainer互換Pepperでフィジカル・コンピューティング」フォローアップ記事(6)
すでにKernelは2.6.32.3に更新済で、cdc_acmドライバは組み込まれているので、PepperをKURO-SHEEVAのUSBに接続すれば認識できるはずです。

まずは、シリアル通信での動作確認を行うためにuucpパッケージをインストールします。

$ sudo apt-get install uucp
続いてuucpが使用するグループに登録します。
$ sudo usermod -G dialout ユーザ名
$ sudo usermod -G uucp ユーザ名
$ groups ユーザ名
ochanet uucp dialout
$

ここで、PepperをKURO-SHEEVAに接続してみます。syslogを確認します。

$ sudo tail /var/log/messages
Mar 20 08:13:40 debian kernel: usb 1-1: new low speed USB device using orion-ehci and address 2
Mar 20 08:13:40 debian kernel: usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x1 is Bulk; changing to Interrupt
Mar 20 08:13:40 debian kernel: usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x81 is Bulk; changing to Interrupt
Mar 20 08:13:40 debian kernel: usb 1-1: configuration #1 chosen from 1 choice
Mar 20 08:13:40 debian kernel: cdc_acm 1-1:1.0: ttyACM0: USB ACM device
Mar 20 08:13:40 debian kernel: usbcore: registered new interface driver cdc_acm
Mar 20 08:13:40 debian kernel: cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

認識されているようです。
デバイス名はttyACM0とのことなので、パーミッションを確認します。

$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Mar 20 08:13 /dev/ttyACM0
$

dialoutグループに登録しているので、アクセスできるはずです。

$ cu -l /dev/ttyACM0
Connected.

接続しました。ここで ?* と入力すると、

$ cu -l /dev/ttyACM0
Connected.
?1.0.0.0,pepper,20090621*

こんな感じでバージョン情報が表示されます。cuから抜ける場合は ~. です。
これで接続確認までは完了しました。
次にPepperを制御するためにRubyをセットアップします。

$ sudo apt-get install ruby
$ sudo apt-get install rubygems1.8

gainerのパッケージがあるのでしょうか?

$ gem search gainer --remote

*** REMOTE GEMS ***

$

無いみたいです。
エレキジャックのページにおいてあるパッケージを持ってきます。

$ wget http://www.eleki-jack.com/FC/2009/12/30/gainer-0.0.2.gem
$ ls -l
total 7
-rw-r--r-- 1 ocha ochanet 7168 Dec 30 09:21 gainer-0.0.2.gem
$ sudo gem install gainer-0.0.2.gem
Successfully installed gainer-0.0.2
1 gem installed

シリアルポートを制御するパッケージも持ってきます。

$ sudo gem install ruby-serialport
Building native extensions. This could take a while...
ERROR: Error installing ruby-serialport:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install ruby-serialport
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:1


Gem files will remain installed in /var/lib/gems/1.8/gems/ruby-serialport-0.7.0 for inspection.
Results logged to /var/lib/gems/1.8/gems/ruby-serialport-0.7.0/ext/gem_make.out

mkmfが無いとおこられてしまいました。
makeをインストールします。

$ sudo apt-get install make
$

もういちどシリアルポートをインストール

$ sudo gem install ruby-serialport
sudo: unable to resolve host debian
Building native extensions. This could take a while...
Successfully installed ruby-serialport-0.7.0
1 gem installed
Installing ri documentation for ruby-serialport-0.7.0...
Installing RDoc documentation for ruby-serialport-0.7.0...
$

今度は大丈夫です。確認してみます。

$ gem list

*** LOCAL GEMS ***

gainer (0.0.2)
ruby-serialport (0.7.0)
$

早速テストプログラムを流してみます。

$ cat blink.rb
require 'rubygems'
require 'gainer'

gainer = Gainer::Serial.new("/dev/ttyACM0")

flag = true
while true
 gainer.analog_output[0] = (flag == true ? 0xff : 0);
 flag = ! flag
 sleep(0.2)
end
$ ruby blink.rb

Pepperに接続しているLEDが点滅を始めました!
これで開発環境が整いました。

kuro-sheeva-pepper.jpg

なかなか時間がとれなくてできなかったのですが、KURO-SHEEVA(玄柴)のカーネルを日経Linux 3月号の記事をもとに行ってみました。
mini rootが入ったUSBメモリの書き込みは、MacBook ProのParallels DesktopにインストールしているUbuntu 8.04上で行いました。こちらは特に問題なくUSBメモリにmini rootを書き込むことができました。
続いてそのmini rootの入ったUSBメモリを使って、玄柴を起動です。

kuro-sheeva-kernelupdate.jpg

日経Linuxの記事は良く書けていて、すんなりカーネルの更新ができました。
ただ、記事中の「カーネルモジュールを展開」ではUSBメモリは/dev/sdb1と書かれていますが、私の場合は/dev/sda1でした。

カーネルをアップデートすると2.6.22.18から2.6.32.3になります。
起動メッセージはこんな感じになります。

Starting kernel ...

Uncompressing Linux...................................................................................................................................................................................... done, booting the kernel.
Linux version 2.6.32.3 (yoneda@debian) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #1 PREEMPT Sun Jan 10 15:45:24 JST 2010
CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Marvell SheevaPlug Reference Board
 :
 :

記事にあるSheevaPlugのユーザが配布しているカーネルですが、もっと新しいものがあるようですので、そのうち最新カーネルにもチャレンジしたいと思います。

PENのファームウェア 1.3のアップデータが公開されていましたので、早速更新しました。
まだ違いはあまりよくわかりませんが、きっと良くなっているのでしょう。

pen_farmware_update.jpg

ウェブページ

Powered by Movable Type 5.12
    Follow kanpapa on Twitter

このアーカイブについて

このページには、2010年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年2月です。

次のアーカイブは2010年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。