contents
- 武藤武士 <mutoh@610t.org> @ K*BUG or @610t
- わたしはだぁれ?
- むしょく…
- 奈良高専に縁 まくり
- わたしはだぁれ? (cont'd)
- 関西 *BSDユーザ会 (K*BUG) メンバー
- OSは*BSDが好き
- イベントブース担当が多い
- わたしはだぁれ? (cont'd)
- 教育用言語に興味があります
- はじめに
- またこのネタでスミマセン(_O_): これまで↓のまとめ編
- 付録基板は*BSDじゃ無くても使えます
- 今回使っている用語
- 用語:ハードウエア(HW)
- 今回使っている用語
- 用語:ソフトウエア(SW)
- 付録基板とは?
- 新年度はじめなどに雑誌に付録として付いてくる基板
- 使いやすさはピンからキリまで
- それ自体が目的であって、本が付録?
- 色々な付録基板
- 付録基板の使いやすさって?
- 追加部品は必要?
- 元から入っているソフトウエア (初期SW)
- 付録基板の選び方/使い方 for BSD
- 自作SW作成と書きこみは難しい場合が多い
- BIOSやブートローダによっては利用できる可能性が
- BSDのドライバで使えるか?が重要
- むとうの独断と偏見によるBSDですぐ遊べるオススメ付録基板
- 「BSDでできるだけすぐに使える」観点から選んでいます
- 価格は全て、発表時点現在のものです
- 3位: Cインタプリタ内蔵Ethernet付き Coldfire基板 (Coldfire基板): オススメ付録基板
- 外観: Coldfire基板
- 特徴: Coldfire基板
- 良い点: Coldfire基板
- いまいちの点: Coldfire基板
- 詳細: Coldfire基板
- 2位: Gainerサブセット ARM 基板 (DWM ARM基板)
- 外観: DWM ARM基板 (でーもんくんヨロコビ棒)
- 外観: DWM ARM基板
- 特徴: DWM ARM基板
- 良い点: DWM ARM基板
- USBでつなぐだけで、
- Windowsで開発すると…
- 詳細: DWM ARM基板
- Gainerってなに?
- Gainerのハードウエア
- Gainer mini 4000円程度
- SparkFun版 Gainer PSoC Development Board DEV-08480 $34.95
- Gainerのソフトウエアライブラリ
- 公式サポート: Processing, Flash, Max/MSP
- 非公式サポート
- 1位: Arduino互換マイコン Japanino (Japanino)
- 外観: Japanino
- 特徴: Japanino
- 良い点: Japanino
- 詳細: Japanino
- Arduinoってなに?
- 公式URL: : : http://arduino.cc/ : イタリー発
- オープンハードウエアによる開発; Arduinoってなに? (cont'd)
- 互換機たくさん (以下は国産)
- シールドと呼ばれる色々な拡張基板
- ソフトウエア環境: Processing+α
- Arduinoのハードウエア
- 国産
- その他
- Arduinoの開発環境
- BSDで付録基板を使うデモ
- 準備: permissionやownerの調整
- 各基板デモ
- 準備: シリアルのpermissionやownerを調整
- パーミッションやユーザ調整方法
- デフォルトシリアルpermission, owner
- dialer groupに利用するユーザを入れる
- dmesgより抜粋
- dialer groupならread, write可能
- /etc/group : dialerグループに追加
- ログインし直す
- devfsを使う
- devfs: ファイルが増えた時に、なんらかの操作をする
- 設定ファイル: /etc/devfs.conf
- devfsを再起動
- devdを使う
- devfs: デバイスが変更された時に何らかの操作をする
- 設定ファイル: /etc/devd.conf
- devdを再起動
- Japaninoデモ
- デバイス認識: Japanino
- 準備: Japanino
- Japaninoデモ内容
- Gainerデモ: DWM ARM基板デモの前提として
- Gainerデモ内容
- DWM ARM基板デモ
- 準備: Squeak USBシリアル設定
- デバイス認識: DWM ARM基板
- Squeak+Gainerを実行
- Coldfire基板デモ
- 初回のみMacアドレスの設定が必要(ここでは省略)
- httpによる接続: Coldfire基板
- telnetによる接続: Coldfire基板
- tftpによるファイルの転送: Coldfire基板
- プログラミングデモ: Coldfire基板
- serialによる接続: Coldfire基板
- これから付録基板を選ぶときには...
- 雑誌付属資料類をしっかり確認!!
- ブートローダやBIOSでできる事を確認
- 付録基板のハマりどころ
- これからの作業
- まともなデモを作りたい
- 次点ボード: touch_sensor
- FPGA使ってみたいなぁ…
付録基板で遊ぼ (BSD編)
わたしはだぁれ?
むしょく…
- 以前の職場との関係は良好
奈良高専に縁 まくり
- 情報小学科第一期生
- 教官経験あり (1995/4/1-2002/03/31)
- 家も大和郡山 (既に人生の半分以上)
わたしはだぁれ? (cont'd)
関西 *BSDユーザ会 (K*BUG) メンバー
- 公式URL: : http://www.kbug.gr.jp/
- OSの*BSD好きの集まり (家系図)
- 2ヶ月に1回のペースで勉強会やってます!! 日程はWebで!!
OSは*BSDが好き
- userland(アプリケーション)回りしかわかりません
- でも気がつくと、ドライバまで降りてたり…
イベントブース担当が多い
- オープンソースカンファレンス (OSC) @ Kansai/Kyoto 8月初め頃 (今年2013/08/02, 03)
- KOF 11月初め頃 (今年は11/08,9あたり? )
わたしはだぁれ? (cont'd)
教育用言語に興味があります
- 主にタイルスクリプティング言語
- Squeak: FreeBSD port maintainer (お世話役; 最新版http://www.redports.org/browser/mutoh/lang/squeak, send-pr)
- 主にSqueak Virtual Machine回りの作業
- C言語のpatchばかり書いてる
- Scratch: MITによるSqueakVMベースの環境
はじめに
またこのネタでスミマセン(_O_): これまで↓のまとめ編
- ぼくのなつやすみ2008: Gainerとの出会い
- Serial知りはる?知ってはる?
- N:KMでブース出したよ
- FreeBSD port lang/squeak4.4.7-2375への道
- イマドキBSD I/O 2012 (ほぼ未発表) などなど
付録基板は*BSDじゃ無くても使えます
- Windows, Mac(はBSDか?), Linux,...
- FreeBSD linuxlator
- そこは単なる意地
- 決してハマらない訳ではありません
今回使っている用語
今回使っている用語
用語:ソフトウエア(SW)
- ブートローダー, BIOS: 付録基板を動かすためのOS的SW
- 初期SW: 最初に書き込まれているSW
- 言語インタプリタ
- シリアル経由で自作SWを書き換え
- GDBスタブ などなど
- 自作SW: 自分で作成したSW
付録基板とは?
新年度はじめなどに雑誌に付録として付いてくる基板
- 初心者がその基板で学習するため
- 基板を使ってなにかをつくるコンテストがある場合も
- 雑誌記事は1年以上続いたりします
使いやすさはピンからキリまで
- 実は部品足さないと使えない
- ライタが必須
それ自体が目的であって、本が付録?
- 巷で反乱している「カバン」も「キバン」も同じ
色々な付録基板
皆様のご家庭にもこれぐらいはありますよね?
全部が付録基板な訳ではありません
付録基板の使いやすさって?
追加部品は必要?
- 必須部品をそろえるのがめんどくさい
- ライタ: ソフトウエア書き込み用装置
- 最近安いのもあるけど*BSDでは…
- 拡張ベースバンド基板: I/Oボード
- ちょっと高かったり…
元から入っているソフトウエア (初期SW)
- ブートローダーとかBIOSとかいうヤツ
- 言語インタプリタが入っている場合も
付録基板の選び方/使い方 for BSD
自作SW作成と書きこみは難しい場合が多い
- Windows用のIDEと書き込みソフトウエアしか用意されていない
- そもそもライタはあるのか?
- gccで頑張る?
BIOSやブートローダによっては利用できる可能性が
- シリアルとかUSBストレージに見せてくれたりするもの
BSDのドライバで使えるか?が重要
- USBシリアル (umodem, uplcom, uslcom, uftdi, ...)
- USBマスストレージ (umass): 最近流行
- umass(のFAT)に対して自作SWを書き込む
むとうの独断と偏見によるBSDですぐ遊べるオススメ付録基板
「BSDでできるだけすぐに使える」観点から選んでいます
- 必須部品が無い方(10点)
- 初期SW(10点)
- 内蔵センサ(10点)
- BSDでの扱いやすさ(10点)
- その他(+αとしてMax+10点)
価格は全て、発表時点現在のものです
- 変わっているかもしれません
3位: Cインタプリタ内蔵Ethernet付き Coldfire基板 (Coldfire基板): オススメ付録基板
外観: Coldfire基板
- Coldfire はM68000の後継にあたる
特徴: Coldfire基板
良い点: Coldfire基板
- 加速度センサーあり
- C言語(Silent C)でプログラム可
- TCP/IPベースのプログラミングが可能
- 最初からtelnetd, httpd, tftpdが動いている
- 記事ではSMTP, POP, NTPなどを実装
- 2枚あれば、リカバリ可能
いまいちの点: Coldfire基板
- 以下のどっちかが必須部品
- RJ45 + 3.3V ACアダプタ回り
- USBシリアル変換器
詳細: Coldfire基板
- 書籍名: Interface 2008/09
- 価格: 1980円(税込)
- CPU: Coldfire (MFC52233)
- 内蔵センサ: 3軸加速度センサ (MMA7360L)
- 初期SW
- SilentCインタプリタ
- telnet, tftp, httpサーバ起動済み
- 接続: Ethernet (外付USBシリアル)
- 必須部品: 電源コネクタ+AC(3.3V), RJ-45(パルストランス内蔵)
2位: Gainerサブセット ARM 基板 (DWM ARM基板)
外観: DWM ARM基板 (でーもんくんヨロコビ棒)
お前はちがうやろ!!
外観: DWM ARM基板
特徴: DWM ARM基板
良い点: DWM ARM基板
- 必須部品なし
USBでつなぐだけで、
- シリアル経由のGainerサブセットが使える
- 3軸加速度計内蔵
Windowsで開発すると…
- 空中マウス(uhid)として使える
- SDをumassとして見せれる
- gccでの開発ができる
- 書き込みはWindowsのみ
詳細: DWM ARM基板
- 書籍名: Design Wave Magazine 2008/05
- 価格: 2480円(税込)
- CPU: ARM Cortex-M3 (STM32F103BV)
- 内蔵センサ: 3軸加速度センサ (LIS344ALH)
- 初期SW: Gainerサブセット
- 接続: USBシリアル (umodem)
- 必須部品: なし!!
Gainerってなに?
- 公式URL: : http://gainer.cc/: 小林茂@IAMASらが開発
- アート系の学校でも使えるものを
- I/Oをシリアル経由のコマンドで行う
- コントローラとしてのPCは必須
- シリアルベースのプロトコル (cu で使える!!)
Gainer公式ページよりI/Oモジュール+PC
Gainerのハードウエア
Gainerのソフトウエアライブラリ
公式サポート: Processing, Flash, Max/MSP
- アート系の学生でも使いやすい言語
非公式サポート
- Squeak+Gainer : Squeak
- gainerm-lib: C言語 (MIT Licence版)
- 他の言語もGoo-gleば山ほど出てきます
- Ruby, Perl, ...
1位: Arduino互換マイコン Japanino (Japanino)
外観: Japanino
左がJapanino, 右がPOV
特徴: Japanino
良い点: Japanino
- 必須部品なし
- Arduino互換
- 比較的安い方
- AVRなので、*BSDも扱いやすい
- POVが最初からついている
詳細: Japanino
- 書籍名: 大人の科学マガジン Vol.27
- 価格: 3360円(税込)
- 公式URL: : http://otonanokagaku.net/japanino/
- CPU: AVR (ATmega168V)
- 付属HW: POV, 電池ボックス
- 初期SW: Arduino環境
- 接続: USBシリアル (uslcom)
- 必須部品: なし!!
Arduinoってなに?
公式URL: : http://arduino.cc/ : イタリー発
- 基本的に完結したマイコンボード
- PCをシリアル経由などでコントローラとして使うことも可能
- ネットワーク経由などの利用も可能
Gainer公式ページよりマイコンのみで実現する方法
- CPU: AVR; FreeBSDで使えるライタとかあって素敵
オープンハードウエアによる開発; Arduinoってなに? (cont'd)
互換機たくさん (以下は国産)
シールドと呼ばれる色々な拡張基板
- ネットワーク系: Ethernet, XBee, ...
- 表示系: LCD, マトリックスLED, ...
- ストレージ系: SD, ...
ソフトウエア環境: Processing+α
- USB経由で、avrdudeでライティング
Arduinoのハードウエア
Arduinoの開発環境
統合開発環境: ArduinoIDE (FreeBSD ports: devel/arduino)
BSDで付録基板を使うデモ
発表当日は、実環境でデモします
- 時間がどれぐらいかかるか謎なので、上位からいきます
- 時間によっては、適宜省きます
準備: permissionやownerの調整
- デバイスを一般ユーザで使えるように設定調整
各基板デモ
- Japaninoデモ
- DWM ARM基板デモ
- Gainerデモ (寄り道)
- Coldfire基板デモ
準備: シリアルのpermissionやownerを調整
- シリアルのpermissionやownerに注意
- PC-BSD (FreeBSD) 9.1のデフォルト
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
パーミッションやユーザ調整方法
- /etc/groupで設定
- devfsを使う
- devdを使う
デフォルトシリアルpermission, owner
- owner+read&writerだと、まず使える
- groupやotherに+rwの場合でも使える
- rootだと確実に使えますが、危ないのでやめましょう!!
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可能
- ⇒ dialer groupに自分を入れてやる
/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: ファイルが増えた時に、なんらかの操作をする
- owner, permissionの変更
設定ファイル: /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
ugen0.2: <Silicon Labs> at usbus0 uslcom0: <CP2104 USB to UART Bridge Controller> on usbus0
準備: Japanino
- devel/arduinoをインストール
% cd /usr/ports/devel/arduino % sudo make install
- Japanino用設定
- ボード種類の選択: Tools->Board->Arduino Pro or Pro Mini (3.3V,8MHz)w/ATmega168
- シリアルポートの選択: Tools->Serial Port -> /dev/ttyU0
Japaninoデモ内容
- Lチカ (Blink)
- POV
- シールドの利用
Gainerデモ: DWM ARM基板デモの前提として
- DWM ARM基板デモの基礎知識としてGainerデモをします
- 今回は、Gainer miniを使う
Gainerデモ内容
- dmesg
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
- cu
pcbsd-z61t [ ~/hobby/NNCT13 ] % cu -s 57600 -l /dev/ttyU0 can't open log file /var/log/aculog. Connected
- setting
KONFIGURATION_1*
- onboard LED on off: h*,l*
- digital-in: R*, r*
- analog-in: I*, i*
- stop cont mode: E*
- digital-out:
- analog-out: anxx* (*a000*, *a0ff)
DWM ARM基板デモ
- 今回も、Squeak+Gainerを使います
準備: Squeak USBシリアル設定
- Squeak(FreeBSD)のデフォルトシリアルは/dev/ttyS*
- バイナリエディタ(bviなど)で変更
- 変更前: /usr/local/lib/squeak/4.4.7-2383/squeakvm
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.....
- 変更後: /usr/local/lib/squeak/4.4.7-2383/squeakvm
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基板
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
Coldfire基板デモ
初回のみMacアドレスの設定が必要(ここでは省略)
- 設定用コンピュータのIPを 192.168.1.?/24に設定
- デフォルト(192.168.1.10)IPアドレスでtelnet
- 専用コマンド(util::macset)で雑誌付属のコードを入力
httpによる接続: Coldfire基板
- トップメニュー: jュー: : http://192.168.1.10/
pcbsd-z61t [ ~ ] % w3m http://192.168.1.10/ インターフェース ColdFireボード ネットワーク設定 加速度センサー ポート操作
- ネットワーク設定メニュー: 定メニュー: ー: http://192.168.1.10/netconfig.htm
ネットワーク設定 IPアドレス [192.168.1.10 ] Net Mask [255.255.255.0 ] Default Gateway [192.168.1.1 ] DNS IP [192.168.1.1 ] [ ]設定を保存する [設定]
- 加速度センサー値表示: ー値表示: 示: http://192.168.1.10/accel.htm ; reloadで値が変わる
加速度センサー X Axis 1835 Y Axis 2236 Z Axis 2856 トップへ戻る
- ポート操作: [http://192.168.1.10/port.htm
ポート操作 Port TA3 (*)ON ( )OFF [設定]
telnetによる接続: Coldfire基板
- login
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基板
- 新規ファイル作成(new_accel.htm)
- 加速度センサー値を扱いやすくしてみよう
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
- 結果確認: 認: http://192.168.1.10/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
これから付録基板を選ぶときには...
雑誌付属資料類をしっかり確認!!
- ブロック図: 内蔵センサーや必須部品、追加部品の確認
- CPUピン配置: どんなI/Oが可能か?
ブートローダやBIOSでできる事を確認
- そもそも、*BSDでドライバがあるか?
- 素敵なインタプリタがはいっているか?
付録基板のハマりどころ
- USBシリアルなのにugenになる…
- Mac OS XやOpenBSDでは大丈夫だったりする
- 特にumodemがハマりやすい気がする
- OSのバージョンによって、動いたり動かなかったり…
- FreeBSDだとメジャーリリース変更時に遭遇する
- USB4BSD (8.0R)
- NetBSDやOpenBSDだとシリアルとして動いたりするけど、実装が結構違う
これからの作業
まともなデモを作りたい
- 行き当たりばったりはやめよう
- Gainer miniでーもんむし, DWMよろこび棒, Coldfire 3Dグルグル
次点ボード: touch_sensor
- Mac OS X ならumodemで使える
- FreeBSDはugenに落ちる
FPGA使ってみたいなぁ…
- (Altera DE0 Board)
- ハードウエアとソフトウエアの夢の融合
- NetBSD/Zynq
- PC-6001Fが動く!!