LinuxでのCCIDプロトコルを介したUSBデバイスとの対話の経験の要約
1.目標
Linuxシステムでは、ccidプロトコルを介してUSBデバイスと通信します。
2.実施方法
他の人のブログを参考にして、以下の方法でccidコミュニケーションを実現することにしました。
2.1libudevをインストールします
udevは、Linux 2.6カーネルの関数であり、元のdevfsを置き換え、現在のLinuxのデフォルトのデバイス管理ツールになります。udevはデーモンプロセスとして実行され、カーネルから送信されたueventをリッスンすることにより、 / devディレクトリ内のデバイスファイルを管理します。以前のデバイス管理ツールとは異なり、udevはカーネルスペースではなくユーザースペースで実行されます。
2.1.1コンパイルしてインストールする
Centosの場合は、次のように実行できます。sudoyum installsystemd-develまたはsudoyum install libudev-devel; Ubuntuの場合は、次のように渡すことができます:sudo apt-get installsystemd-develまたはsudoapt-get install libudev-devel; if libudev- devel.rpmパッケージの場合、sudo rpm -ivhlibudev-devel.rpmを実行できます。
2.1.2インストールプロンプトエラー
Ubuntu 14.04では、sudo apt-get installsystemd-develまたはsudoapt-get install libudev-develを直接実行します。インストールが失敗すると、次のプロンプトが表示されます。
通常、apt-getは上記の状況で表示されます。 APTライブラリは更新されません。次のように更新をインストールしてください(しばらく時間がかかります〜)。
sudo apt-get update
sudo apt-get upgrade
実行が終了したら、sudo apt-get installlibudev-develを実行して成功します。
2.2libusbをコンパイルしてインストールします
コンピュータに接続されているUSBデバイスの場合、通常、対応するUSBドライバをインストールしてサポートする必要があります。カスタムUSBデバイスドライバーの開発に使用できるオープンソースのクロスプラットフォームUSBドライバーlibusbがあります。
libusbは、C言語で記述されたライブラリであり、ノートブックに接続されたUSBデバイスと通信するために上位レベルのアプリケーションで使用できます。移植は簡単で、対応するlibusb-APIドキュメントがあり、Linux、OS X、Windows、Android、OpenBSDなどのシステムで使用できます。また、USB 1.0〜3.1仕様に対応しています。通常、libusbはLinuxシステムに付属しています。他のプラットフォームは通常、libusbをインストールする必要があります。
2.2.1libusbをダウンロードする
https://github.com/libusb/libusb/releases/からダウンロードするバージョンを選択 します。この記事ではlibusb-1.0.18を使用しています。
2.2.2コンパイルおよびインストールプロセス
(1)libusb-1.0.18.tar.gzインストールパッケージを解凍し、tar -xvflibusb-1.0.18.tar.gzを実行します。
(2)libusb-1.0.18ファイルを入力し、次の3つの手順を実行します。(a)./ configure;(b)make;(c)sudo make install;
2.2.3インストール中にプロンプトが表示されるエラー
(1)
インラインのエラープロンプトチェック…
オペレーティングシステムのインラインチェック…
clock_gettimeを含むライブラリのLinuxチェック…
-lrtlibudev.hの使用可能性の
チェック…libudev.hの存在の
チェックなし…libudev.hのチェックなし…
configure:エラーなし:「udevサポートが要求されましたが、libudevがインストールされていません」
(2)解決策
libudev-develをインストールして解決します。インストール方法はセクション2.1で紹介されています。
2.3pcsc-liteをコンパイルしてインストールします
pcsc-liteは、SCard API(PC / SC)を使用してスマートカードデバイスにアクセスするための開発キットをカプセル化します。
2.3.1pcsc-liteのダウンロード
ダウンロードするバージョンを選択してhttps://alioth-archive.debian.org/releases/pcsclite/pcsclite/アドレス、この記事では、PCSC-liteの-1.8.11のバージョンを選択します。
2.3.2コンパイルとインストールのプロセス
(1)pcsc-lite-1.8.11.tar.bz2インストールパッケージを解凍し、tar -xvfpcsc-lite-1.8.11.tar.bz2を実行します。
(2)pcsc-lite-1.8.11フォルダーに入り、次の3つのステップを実行します:(a)./ configure;(b)make;(c)sudo make install
2.4ccidをコンパイルしてインストールします
このライブラリは、CCIDプロトコルに準拠するUSBスマートカードドライバ用のPC / SCIFD処理プログラムの実装を提供します。このソフトウェアパッケージは、PC / SC Lite Explorer(pcscd)を介してCCIDスマートカードリーダーと通信するために必要です。
2.4.1ccidのダウンロード
https://alioth-archive.debian.org/releases/pcsclite/ccid/からダウンロードするバージョンを選択 します。この記事では、ccid-1.4.16バージョンを使用します。
2.4.2コンパイルとインストールのプロセス
(1)ccid-1.4.16.tar.bz2インストールパッケージを解凍し、tar -xvfccid-1.4.16.tar.bz2を実行します。
(2)ccid-1.4.16ファイルを入力し、readers / supported_readers.txtファイルを見つけて、次の変更を行います。(a)追加:デバイス名(カスタム);(b)追加:VID:PID:デバイス記述子;
( 3)コンパイルとインストールを実行します。(a)./ configure;(b)make;(c)sudo make install;
2.5環境変数の構成
コンパイルされた共有ライブラリのパスを環境変数に追加します。次の操作を実行します。
(1)vim / etc / profileのコマンドを使用してプロファイルファイルを開きます。
(2)追加:LD_LIBRARY_PATH = / usr / local / lib:$ LD_LIBRARY_PATHをエクスポートし、保存して終了します。
(3)ソース/ etc / profileを実行します。
2.6ccid通信プロトコルテスト
2.6.1pcscサービスを開始する
コマンドラインでpcscdを実行します。rootアカウントでない場合は、sudopcscdを実行します。
2.6.2テスト結果
pcsc-lite-1.8.11 / src /のパスでtestpcsc実行可能ファイルを見つけ、デバイスを挿入した後、。/ testpcscを実行すると、次のようになり、CCIDプロトコル通信が成功したことが証明されます。
2.7他のソフトウェアパッケージのインストール
プロジェクトは他のオープンソースライブラリをインストールする必要があるため、ここに記録します。
2.7.1ブーストをコンパイルしてインストールする
Boostは、C ++言語標準ライブラリの拡張機能を提供する一部のC ++プログラムライブラリの総称です。Boostライブラリは、ソースコードを提供するポータブルC ++ライブラリです。標準ライブラリのバックアップとして、C ++標準化プロセスの開発エンジンの1つです。これは、C ++言語標準ライブラリの拡張機能を提供する一部のC ++プログラムライブラリの総称です。
2.7.1.1ダウンロードブースト
https://sourceforge.net/projects/boost/files/boost/でダウンロードするバージョンを選択します。この記事では、boost_1_43_0を使用します。
2.7.1.2コンパイルとインストールのプロセス
(1)boost_1_43_0.tar.gzインストールパッケージを解凍し、tar -xvfboost_1_43_0.tar.gzを実行します。
(2)boost_1_43_0ファイルを入力し、次の手順を実行します。(a)./ bootstrap.sh;(b)./ bjam(長時間待つ必要があります〜);
2.7.1.3インストール中のプロンプトエラー
最初の行から、78個のターゲットが失敗したことがわかります。分析後、変更が必要ないくつかの問題があります:
(1)./ boost / python / detail / wrap_python.hpp:50:23:致命的なエラー:pyconfig.h:そのようなファイルはありませんまたはディレクトリ、つまりpyconfig.hファイルが見つかりません。この問題の理由は、必要なファイルが/usr/include/python2.7パスにあり、システムパスに構成する必要があるためです。/ etc / profileファイルを開き、次のコンテンツを追加してから、ソース/ etc / profileを実行します。
export PATH=/usr/include/python2.7:$PATH
次に./bjamを実行すると、結果は次のようになります。
(2)終了していません。。。
5.参照リンク
(1)https://blog.csdn.net/fafactx/article/details/22931141
(2)https://blog.51cto.com/seiang/1950594
(3)https://blog.csdn.net/suxiang198 / article / details / 75106296
(4)https://www.jianshu.com/p/8581d232dd6c
(5)https://blog.csdn.net/magic_ninja/article/details/87981662
(6)https:// baike .baidu.com / item / boost / 69144?fr = aladdin
(7)https://blog.csdn.net/yujun_huoxu/article/details/7913135