LoginSignup
0
0

More than 1 year has passed since last update.

ラズベリーパイにPerl用FTDI D2XX用ラッパーをインストールする

Last updated at Posted at 2022-08-31

FTDIチップ用LinuxドライバD2xxをPerlからたたく方法として以下のものがある。
https://metacpan.org/pod/FTDI::D2XX

ちなみにWindowsからたたく場合は、以下のApplication NoteがFTDIから提供されており、上記はこのラッパーをLinux用に作成したものと思われる。
https://ftdichip.com/wp-content/uploads/2020/08/AN_133_D2XX_Access_Using_PERL-5_Programmers_Guide.pdf
Win32用ラッパー
https://github.com/gitpan/Win32-FTDI-FTD2XX

DL(ダウンロード)

FTDI D2xxドライバのダウンロード

以下のサイトよりLinux(ARM)用ドライバをDLし、セットアップする。。
(ARMv6/ARMv7 soft-floatで動作確認済
https://ftdichip.com/drivers/d2xx-drivers/
セットアップの方法は以下を参考にする。
https://qiita.com/Miki-Jin/items/11ddaf51a12abb2129db

Perl用ラッパーソースのDL

以下からソースをDLする。
https://github.com/gitpan/FTDI-D2XX
(meta::cpanサイト上のツールを使用してインストールすることも可能)

インストール

インストールしたドライバのヘッダーファイルのコピー

FTDI D2xxドライバを解凍し、セットアップした後
ドライバソースフォルダ上にあるヘッダーファイルftd2xx.hおよびWinTypes.hを/usr/local/include(もしくはusr/include)フォルダにコピーする。
同ヘッダーファイルが存在するディレクトリをカレントディレクトリとして

sudo cp ftd2xx.h /usr/local/include
sudo cp WinTypes.h /usr/local/include

githubソースのreadmeに以下の記載があるが、
先に記載の通りftd2xx.hだけでなくWinTypes.hも必要なので注意!
install the driver (ftd2xx.h has to be in /usr/include or /usr/local/include)

ラッパーソースのビルド

基本は、DLしたラッパーソースのreadmeを参照。
DLしたラッパーソースのTopディレクトリをカレントディレクトリとする。

sudo perl Makefile.PL
sudo make
sudo make test
sudo make install

エラーメッセージがでなければ終了

参考

perl Makefile.PLのメッセージ

Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for FTDI::D2XX
Writing MYMETA.yml and MYMETA.json

make のメッセージ

Skip blib/lib/FTDI/D2XX.pm (unchanged)
Skip blib/lib/FTDI.pm (unchanged)
Skip blib/lib/FTDI/SmallTest.pl (unchanged)
Running Mkbootstrap for D2XX ()
chmod 644 "D2XX.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- D2XX.bs blib/arch/auto/FTDI/D2XX/D2XX.bs 644
"/usr/bin/perl" "/usr/share/perl/5.32/ExtUtils/xsubpp"  -typemap '/usr/share/perl/5.32/ExtUtils/typemap' -typemap '/home/pi/Downloads/FTDI-D2XX/typemap'  D2XX.xs > D2XX.xsc
mv D2XX.xsc D2XX.c
arm-linux-gnueabihf-gcc -c  -I. -I/usr/include -I/usr/local/include -I.. -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.06\" -DXS_VERSION=\"0.06\" -fPIC "-I/usr/lib/arm-linux-gnueabihf/perl/5.32/CORE"   D2XX.c
rm -f blib/arch/auto/FTDI/D2XX/D2XX.so
arm-linux-gnueabihf-gcc  -shared -L/usr/local/lib -fstack-protector-strong  D2XX.o  -o blib/arch/auto/FTDI/D2XX/D2XX.so  \
   -lftd2xx   \

chmod 755 blib/arch/auto/FTDI/D2XX/D2XX.so
Manifying 2 pod documents

make test のメッセージ

"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- D2XX.bs blib/arch/auto/FTDI/D2XX/D2XX.bs 644
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/FTDI-D2XX.t .. ok
All tests successful.
Files=1, Tests=3,  0 wallclock secs ( 0.03 usr  0.02 sys +  0.14 cusr  0.03 csys =  0.22 CPU)
Result: PASS

make install のメッセージ

"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- D2XX.bs blib/arch/auto/FTDI/D2XX/D2XX.bs 644
Manifying 2 pod documents
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1/auto/FTDI/D2XX/D2XX.so
Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1/FTDI.pm
Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1/FTDI/D2XX.pm
Installing /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1/FTDI/SmallTest.pl
Installing /usr/local/man/man3/FTDI::D2XX.3pm
Installing /usr/local/man/man3/FTDI.3pm
Appending installation info to /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1/perllocal.pod
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0