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章