1.まずはドライバダウンロード
ドライバのページをみたらRPi用に用意されていた。
2.インストール
ドライバインストール手順はReadMeに記載してあるので注意点を追加しておく。
Installing the D2XX shared library and static library.
------------------------------------------------------
1. tar xfvz libftd2xx1.1.12.tar.gz
ここで気をつけないと行けないのは所有権です。
もし共有フォルダ経由でコピペしてきた場合はchownコマンドで変更します。
This unpacks the archive, creating the following directory structure:
build
arm926
i386
x86_64
examples
libusb
ftd2xx.h
WinTypes.h
2. cd build/arm926
3. sudo -s or, if sudo is not available on your system:
su
Promotes you to super-user, with installation privileges. If you're
already root, then step 3 (and step 7) is not necessary.
4. cp lib* /usr/local/lib
Copies the libraries to a central location.
5. chmod 0755 /usr/local/lib/libftd2xx.so.1.1.12
Allows non-root access to the shared object.
6. ln -sf /usr/local/lib/libftd2xx.so.1.1.12 /usr/local/lib/libftd2xx.so
Creates a symbolic link to the 1.1.12 version of the shared object.
7. exit
Ends your super-user session.
インストール完了。
次は正しくビルドできるかexampleでテスト。
Building the shared-object examples.
------------------------------------
1. cd examples
2. make -B
Multithread項目において、ビルドエラーがでるので、一部修正します。
$ vim MultiThread/Makefile
---
TOPDIR := $(shell cd ..; pwd)
include $(TOPDIR)/Rules.make
APP = multi
all: $(APP)
$(APP): main.c
$(CC) main.c -lpthread -o $(APP) $(CFLAGS)
clean:
rm -f *.o ; rm $(APP)
---
-lpthread を追加する
This builds all the shared-object examples in subdirectories.
With an FTDI device connected to a USB port, try one of the
examples, e.g. reading EEPROM.
3. cd EEPROM/read
4. sudo ./read
If the message "FT_Open failed" appears:
Perhaps the kernel automatically loaded another driver for the
FTDI USB device.
sudo lsmod
If "ftdi_sio" is listed:
Unload it (and its helper module, usbserial), as follows.
sudo rmmod ftdi_sio
sudo rmmod usbserial
Otherwise, it's possible that libftd2xx does not recognise your
device's Vendor and Product Identifiers. Call FT_SetVIDPID before
calling FT_Open/FT_OpenEx/FT_ListDevices.
ここでDeviceOpenが出来ないなんていう自体が発生する
そういう時は
$ ldd read
コマンドを売ってみると
libftd2xx -> not found
というメッセージが出ていると思う。
じゃあ
$sudo vim /etc/ld.so.conf.d/libc.conf
/usr/local/lib
を追加してから、
$ sudo ldconfig
を実行して共有ライブラリのDBを更新する。
$ ldconfig -p
libftd2xx.so => /usr/local/lib/libftd2xx.s
こんな行があれば共有ライブラリは見つかるようになっている。
再度、
$ldd read
をやってみてまだnot found が出てる場合、
libftd2xx.so (libc6,hard-float) => /usr/local/lib/libftd2xx.so
他のライブラリはhard-float ってついてるのにコピーしてきたlibftd2xx.soはついてない!
という場合はhard-floatでコンパイルされたlibftd2xx.soを使用する必要がある。
このファイルはネット上の
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
ここにあったので利用させてもらってます。
もし不安なら自前でビルドするしか無いでしょう。
入れ替えてから
$ sudo ldconfig
$ ldconfig -p
やってみて hard-float になった事を確認して
$ ldd read
でリンクが通ったか見てみると
ibftd2xx.so => /usr/local/lib/libftd2xx.so (0x76f14000)
ようやく共有ライブラリのリンクが見つかったのがわかる。
これは気づかないと分からないので、
ARMの世界には 32bit 64bit みたいに hard-float と soft-floatの2種類が混在しているということを覚えておくと迷わなくなる。
参考URL
http://www.ftdichip.com/Drivers/D2XX.htm
http://stackoverflow.com/questions/24096807/dso-missing-from-command-line
http://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_132_Adding_FTDI_Devices_VCP_Driver_Support_to_Android.pdf
0 件のコメント:
コメントを投稿