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

おすすめ

転載: blog.csdn.net/qq_39661206/article/details/109239137