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