付録基板で遊ぼ (BSD編)

武藤武士 <mutoh@610t.org> @ K*BUG or @610t

kbug-sacra-nnct-40.png

わたしはだぁれ?

むしょく

奈良高専に縁 まくり

わたしはだぁれ? (cont'd)

関西 *BSDユーザ会 (K*BUG) メンバー

OSは*BSDが好き

イベントブース担当が多い

わたしはだぁれ? (cont'd)

教育用言語に興味があります

はじめに

またこのネタでスミマセン(_O_): これまで↓のまとめ編

付録基板は*BSDじゃ無くても使えます

今回使っている用語

用語:ハードウエア(HW)

今回使っている用語

用語:ソフトウエア(SW)

付録基板とは?

新年度はじめなどに雑誌に付録として付いてくる基板

使いやすさはピンからキリまで

それ自体が目的であって、本が付録?

色々な付録基板

皆様のご家庭にもこれぐらいはありますよね?

boards.jpeg

全部が付録基板な訳ではありません

付録基板の使いやすさって?

追加部品は必要?

元から入っているソフトウエア (初期SW)

付録基板の選び方/使い方 for BSD

自作SW作成と書きこみは難しい場合が多い

BIOSやブートローダによっては利用できる可能性が

BSDのドライバで使えるか?が重要

むとうの独断と偏見によるBSDですぐ遊べるオススメ付録基板

「BSDでできるだけすぐに使える」観点から選んでいます

価格は全て、発表時点現在のものです

3位: Cインタプリタ内蔵Ethernet付き Coldfire基板 (Coldfire基板): オススメ付録基板

外観: Coldfire基板

coldfire.png

特徴: Coldfire基板

良い点: Coldfire基板

いまいちの点: Coldfire基板

詳細: Coldfire基板

2位: Gainerサブセット ARM 基板 (DWM ARM基板)

外観: DWM ARM基板 (でーもんくんヨロコビ棒)

お前はちがうやろ!!

daemon.png

外観: DWM ARM基板

DTM200805.png

特徴: DWM ARM基板

良い点: DWM ARM基板

USBでつなぐだけで、

Windowsで開発すると…

詳細: DWM ARM基板

Gainerってなに?

http://gainer.cc/pmwiki/uploads/Tutorial/physical-computing_how-to_io-and-pc.s.png

Gainer公式ページよりI/Oモジュール+PC

Gainerのハードウエア

Gainer mini 4000円程度

http://gainer-mini.jp/img/about/gainer_mini_photo.gif

SparkFun版 Gainer PSoC Development Board DEV-08480 $34.95

https://dlnmh9ip6v2uc.cloudfront.net/images/products/8/4/8/0/08480-03-L_i_ma.jpg

Gainerのソフトウエアライブラリ

公式サポート: Processing, Flash, Max/MSP

非公式サポート

1位: Arduino互換マイコン Japanino (Japanino)

外観: Japanino

japanino.png

左がJapanino, 右がPOV

特徴: Japanino

良い点: Japanino

詳細: Japanino

Arduinoってなに?

公式URL: : http://arduino.cc/ : イタリー発

http://gainer.cc/pmwiki/uploads/Tutorial/physical-computing_how-to_mc-only.s.png

Gainer公式ページよりマイコンのみで実現する方法

オープンハードウエアによる開発; Arduinoってなに? (cont'd)

互換機たくさん (以下は国産)

シールドと呼ばれる色々な拡張基板

ソフトウエア環境: Processing+α

Arduinoのハードウエア

国産

その他

Arduinoの開発環境

arduino_blink.png

統合開発環境: ArduinoIDE (FreeBSD ports: devel/arduino)

BSDで付録基板を使うデモ

発表当日は、実環境でデモします

準備: permissionやownerの調整

各基板デモ

準備: シリアルのpermissionやownerを調整

pcbsd-1361 [ ~ ] % ls -l /dev/cuaU0* /dev/ttyU0*
crw-rw----  1 uucp  dialer    0, 181 Mar 25 13:48 /dev/cuaU0
crw-rw----  1 uucp  dialer    0, 182 Mar 25 13:48 /dev/cuaU0.init
crw-rw----  1 uucp  dialer    0, 183 Mar 25 13:48 /dev/cuaU0.lock
crw-------  1 root  wheel     0, 178 Mar 25 13:48 /dev/ttyU0
crw-------  1 root  wheel     0, 179 Mar 25 13:48 /dev/ttyU0.init
crw-------  1 root  wheel     0, 180 Mar 25 13:48 /dev/ttyU0.lock

パーミッションやユーザ調整方法

デフォルトシリアルpermission, owner

dialer groupに利用するユーザを入れる

dmesgより抜粋

crw-rw----  1 uucp  dialer    0, 181 Mar 25 13:48 /dev/cuaU0
crw-rw----  1 uucp  dialer    0, 182 Mar 25 13:48 /dev/cuaU0.init
crw-rw----  1 uucp  dialer    0, 183 Mar 25 13:48 /dev/cuaU0.lock

dialer groupならread, write可能

/etc/group : dialerグループに追加

pcbsd-z61t [ ~ ] % egrep dialer /etc/group
dialer:*:68:mutoh

ログインし直す

pcbsd-z61t [ ~/hobby/NNCT13 ] % id
uid=1001(mutoh) gid=1001(mutoh) groups=1001(mutoh)
 ,0(wheel),5(operator),68(dialer)

devfsを使う

devfs: ファイルが増えた時に、なんらかの操作をする

設定ファイル: /etc/devfs.conf

 # Serial related
own     /dev/ttyU*      mutoh
perm    /dev/ttyU*      0660
own     /dev/cuaU*      mutoh
perm    /dev/cuaU*      0660

devfsを再起動

pcbsd-z61t [ ~ ] % sudo /etc/rc.d/devfs restart

devdを使う

devfs: デバイスが変更された時に何らかの操作をする

設定ファイル: /etc/devd.conf

attach 10 {
       device-name             "uslcom[0-9]+";
       action                  "chown mutoh /dev/ttyU*";
       action                  "chown mutoh /dev/cuaU*";
};

devdを再起動

pcbsd-z61t [ ~ ] % sudo /etc/rc.d/devd restart
Stopping devd.
Starting devd.

Japaninoデモ

デバイス認識: Japanino

#pcbsd-1361 [ ~ ] % dmesg
ugen0.2: <Silicon Labs> at usbus0
uslcom0: <CP2104 USB to UART Bridge Controller> on usbus0

準備: Japanino

% cd /usr/ports/devel/arduino
% sudo make install

Japaninoデモ内容

Gainerデモ: DWM ARM基板デモの前提として

Gainerデモ内容

ugen0.2: <RTcorporation> at usbus0
umodem0: <RTcorporation GAINERmini v1.1, class 2/0, rev 2.00/0.00, addr 2> on usbus0
umodem0: data interface 1, has no CM over data, has no break
pcbsd-z61t [ ~/hobby/NNCT13 ] % cu -s 57600 -l /dev/ttyU0
can't open log file /var/log/aculog.
Connected
KONFIGURATION_1*

DWM ARM基板デモ

準備: Squeak USBシリアル設定

00084200  48 89 5C 24 F0 48 89 6C 24 F8 48 B8 2F 64 65 76 H.\$.H.l$.H./dev
00084210  2F 74 74 79 48 83 EC 18 83 FE 09 48 89 FB 89 F5 /ttyH......H....
00084220  48 89 07 66 C7 47 08 53 30 C6 47 0A 00 7F 0C E8 H..f.G.S0.G.....
00084200  48 89 5C 24 F0 48 89 6C 24 F8 48 B8 2F 64 65 76 H.\$.H.l$.H./dev
00084210  2F 74 74 79 48 83 EC 18 83 FE 09 48 89 FB 89 F5 /ttyH......H....
00084220  48 89 07 66 C7 47 08 55 30 C6 47 0A 00 7F 0C E8 H..f.G.U0.G.....

デバイス認識: DWM ARM基板

#pcbsd-1361 [ ~ ] % dmesg
ugen0.2: <STMicroelectronics> at usbus0
umodem0: <STMicroelectronics STM32 Virtual COM Port, class 2/0, rev 2.00/1.00, addr 2> on usbus0
umodem0: data interface 1, has no CM over data, has no break

Squeak+Gainerを実行

pcbsd-1361 [ ~ ] % squeak SqueakGainer.20.image
squeak_gainer.png

Coldfire基板デモ

初回のみMacアドレスの設定が必要(ここでは省略)

httpによる接続: Coldfire基板

pcbsd-z61t [ ~ ] % w3m http://192.168.1.10/
                              インターフェース ColdFireボード

                                      ネットワーク設定
                                       加速度センサー
                                         ポート操作                                                                            
                                      ネットワーク設定

                          IPアドレス      [192.168.1.10        ]
                          Net Mask        [255.255.255.0       ]
                          Default Gateway [192.168.1.1         ]
                          DNS IP          [192.168.1.1         ]

                                     [ ]設定を保存する

                                           [設定]                                                                                           
                                       加速度センサー

                                        X Axis  1835
                                        Y Axis  2236
                                        Z Axis  2856

                                        トップへ戻る                                                                                     
                                         ポート操作

                                   Port TA3 (*)ON ( )OFF

                                           [設定]                                                                                      

telnetによる接続: Coldfire基板

pcbsd-z61t [ ~ ] % telnet 192.168.1.10 
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
SilentC (May 13 2008)
OK
dir
SilentC_Registry     79
SystemRegistry       139
send.htm             367
SetEnd.htm           273
netconfig.htm        841
port.htm             492
accel.htm            513
index.htm            409
file                 967
ad                   328
util                 2361
Main                 37
39339 left 610 fragment
OK
type Main
main(){PrStr("Hello World!!\r\n");}
OK
run
Hello World!!
OK

tftpによるファイルの転送: Coldfire基板

pcbsd-z61t [ ~ ] % tftp 192.168.1.10                        
tftp> get Main
Received 36 bytes during 0.0 seconds in 0 blocks
tftp> get SilentC_Registry
Received 73 bytes during 0.0 seconds in 0 blocks
tftp> get SystemRegistry                                                        
Received 128 bytes during 0.0 seconds in 0 blocks
tftp> get send.htm
Received 354 bytes during 0.0 seconds in 0 blocks
tftp> get SetEnd.htm
Received 262 bytes during 0.0 seconds in 0 blocks
tftp> get netconfig.htm
Received 813 bytes during 0.0 seconds in 1 blocks
tftp> get port.htm
Received 474 bytes during 0.0 seconds in 0 blocks
tftp> get accel.htm
Received 487 bytes during 0.0 seconds in 1 blocks
tftp> get index.htm
Received 399 bytes during 0.0 seconds in 0 blocks
tftp> get file
Received 948 bytes during 0.0 seconds in 1 blocks
tftp> get ad
Received 323 bytes during 0.0 seconds in 0 blocks
tftp> get util
Received 2305 bytes during 0.0 seconds in 4 blocks
tftp> get Main
Received 36 bytes during 0.0 seconds in 0 blocks

プログラミングデモ: Coldfire基板

pcbsd-z61t [ ~ ] % cat new_accel.htm 
$EXEC'ad::disp(4)',$EXEC'ad::disp(5)',$EXEC'ad::disp(6)'
pcbsd-z61t [ ~] % tftp 192.168.1.10
tftp> put new_accel.htm
pcbsd-z61t [ ~ ] % cat new_accel.htm
1873              ,2272              ,2892     

serialによる接続: Coldfire基板

dmesg
pcbsd-z61t [ ~/hobby/NNCT13 ] % cu -l /dev/cuaU0 -s 57600
can't open log file /var/log/aculog.
Connected
dir
SilentC_Registry     79
SystemRegistry       139
send.htm             367
SetEnd.htm           273
netconfig.htm        841
port.htm             492
accel.htm            513
index.htm            409
file                 967
ad                   328
util                 2361
Main                 37
new_accel.htm        58
39257 left 610 fragment
OK

これから付録基板を選ぶときには...

雑誌付属資料類をしっかり確認!!

ブートローダやBIOSでできる事を確認

付録基板のハマりどころ

これからの作業

まともなデモを作りたい

次点ボード: touch_sensorcreate

FPGA使ってみたいなぁ…