Linux USB-HOST
STM32 STLink  openocd
UDEV
libusb

USB TergetBoard
 最近の開発BOARDはUSB接続、linuxではどの様に認識されるのか手元に有る物を繋いで見た。
 結構NGな物もある

Xilinx jtag cable  USB2
 コントローラ FDTI2232

  sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev fxload --fix-missing
libusb-dev (2:0.1.12-16) を設定しています ...
OK

ZedBoardのUSB
 3個のUSBI/Fが使われているそれぞれ違うところが面白い

 TUSB1210BRHB
  USB OTG コントローラ

 CY7C64225-28PVXC
  USB-UART RS232代替
 Linux では
  ttyACM0  になる

 FT232HQ-TRAY
  USB JTAG JTAGモードで使っているようだがPCに接続すると
  Linux では
  ttyUSB0  になる

 msp-fet430uif
  Ti msp430 debuger
  Linux では
  ttyACM0  になる

 TUSB3410
  freeBSDのドライバしか無い

 東芝(KEL) MCBTMPM369
  Linux では
   USB HID Device  usb-0000:00:03.0-3/input0   になる

 TMS320C5416 DSK
dmesg
usb 2-3: Product: TMS320C5416 DSK
usb 2-3: Manufacturer: Spectrum Digital, Inc.
usb 2-3: SerialNumber: S05416DSK00DA250

 picデバッガ
  Linux では
  USB HID v1.11 Device usb-0000:00:03.0-3/input0  になる
  最近はPICサイトよりLinux用EDAがダウンロードできる。

 vertex5fxt30
dmesg
 usb 2-3: cp210x converter now attached to ttyUSB0




 STM32 STLink
  openocdを使う
apt-get install libsgutils2-dev
apt-get install libusb-1.0-0-dev  apt-get install libusb-devはNGだが??
apt-get install libgmp3-dev
ok
apt-get install libncurses5-dev
 最新
apt-get install libmpc-dev
 ok
apt-get install build-essential
 最新
libftdi-dev
 NG
apt-get install zlib1g-dev
 最新
apt-get install python-yaml
 ok

git clone https://github.com/mblythe86/stm32f3-discovery-basic-template.git
 ok
 git clone git://github.com/esden/summon-arm-toolchain.git
Cloning into 'summon-arm-toolchain'..
 ok
git clone git://github.com/esden/summon-arm-toolchain.git
cd summon-arm-toolchain
./summon-arm-toolchain
error
なぜか??
やり方をこっちに切り替え
http://mohammedari.blogspot.jp/2013/11/ubuntustm32f3-discovery.html
makeしてみる
./configure --help
--enable-stlink         Enable building support for the ST-Link JTAG
./configure --enable-stlink
ok
make
make install
knoppix@Microknoppix:~$ ls /usr/local/lib|grep ocd
libopenocd.a
libopenocd.la
okのようだ
 成功したら、STLINK用のudevファイルをコピーします。
cp /usr/local/share/openocd/contrib/openocd.udev /etc/udev/rules.d/70-openocd.rules
udevadm control --reload-rules
 openocd -f /usr/local/share/openocd/scripts/board/stm32f3discovery.cfg
Open On-Chip Debugger 0.5.0 (2011-08-11-06:56)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.berlios.de/doc/doxygen/bugs.html
Runtime Error: embedded:startup.tcl:58: Can't find interface/stlink-v2.cfg
in procedure 'script'
at file "embedded:startup.tcl", line 58

find ./ -name stlink-v2.cfg -print
./tcl/interface/stlink-v2.cfg

$ openocd -f /usr/local/share/openocd/scripts/board/stm32f3discovery.cfg
Open On-Chip Debugger 0.6.1 (2014-10-06-02:00)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
adapter speed: 1000 kHz
srst_only separate srst_nogate srst_open_drain
Info : clock speed 1000 kHz
Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoints

ok?パスがrootとでは違う気が
$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> cpu
invalid command name "cpu"
> reset


in procedure 'reset'
とりあえず問題ないようだ。
venderID
./share/misc/usb.ids
vender DeviceTypeが書かれている、全てのメーカを網羅している?かなりある

udev
http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html
udevルールの書き方

/etc/udev/rules.d/10-local.rulesファイル(デフォルトでは存在しないので、作成してください)の中にユーザ指定のルールを保持しておくことを推奨します。
10は50より前なので、ユーザ指定のルールが最初に評価されることがおわかりでしょう。
"10-"の順番に処理される
最近はホットプラグはつかわない方向
http://typex2.wordpress.com/2008/07/29/debian-40-etch%E3%81%A7hotplug%E3%81%A8udev%E3%82%92%E5%90%8C%E6%99%82%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93/
udev環境だと、/proc/sys/kernel/hotplugの内容は空になっています。
では、、/proc/sys/kernel/hotplugの内容が空なのに、例えばどうしてUSB機器の抜き差しに対応できるのかというと、
カーネルからNETLINKを使って、ユーザスペース上にあるudevdと通信しているからのようです。
NETLINKというのは、カーネルとユーザー空間の通信 (PF_NETLINK)を提供する機構なんですね。

 knoppixには
/etc/udev/rules.dに"z99_knoppix-post.rules"があるz99なので最後に処理される
# Add or remove /etc/fstab entries in KNOPPIX -KK
ACTION=="add|change",SUBSYSTEM=="block",KERNEL=="[shm][drm]*" RUN+="/bin/sh -c '/usr/sbin/rebuildfstab -u knoppix -g knoppix -i'"
ACTION=="remove",SUBSYSTEM=="block", RUN+="/bin/sh -c '/usr/sbin/rebuildfstab -r -u knoppix -g knoppix -i'"
"block"デバイスが追加されたらfstabに追加し、取り去られたら削除している。
udevinfoはなし、udevadmで情報がえられる

libusb
バージョン0.1と1.0がある
libusb-compat-0.1.4
libusb-compat-0.1.4.tar.bz2 readme
A compatibility layer allowing applications written for libusb-0.1 to work
with libusb-1.0. libusb-compat-0.1 attempts to look, feel, smell and walk
like libusb-0.1.

libusb-0.1のように使えるlibusb-1.0らしい、既にlibusb-0.1.12.tar.gzはNteに無い
参考資料
Interface 2011/8 第4章
Interface 2007/1第7章