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

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
```