Linux下經過CCID協議與USB設備進行交互經驗總結

1.目標

  在linux系統下經過ccid協議與USB設備實現通信。html

2. 實現方法

  經過參考其餘人的博客,決定採用以下方式來實現ccid通信。python

2.1 安裝libudev

  udev 是Linux2.6內核裏的一個功能,它替代了原來的devfs,成爲當前Linux 默認的設備管理工具。udev以守護進程的形式運行,經過偵聽內核發出來的uevent來管理/dev目錄下的設備文件。不像以前的設備管理工具,udev在用戶空間(userspace) 運行,而不在內核空間(kernel space) 運行。linux

2.1.1 編譯安裝

  若是是Centos能夠經過執行:sudo yum install systemd-devel 或者sudo yum install libudev-devel;若是是Ubuntu能夠經過:sudo apt-get install systemd-devel 或者 sudo apt-get install libudev-devel;若是已經有libudev-devel.rpm包,能夠執行sudo rpm -ivh libudev-devel.rpm。git

2.1.2 安裝提示錯誤

  在Ubuntu14.04下,直接執行sudo apt-get install systemd-devel 或者 sudo apt-get install libudev-devel,有的時候並不能安裝成功,會出現下面的提示:
在這裏插入圖片描述
  通常apt-get出現上面的狀況,就是沒有更新APT庫,安裝以下方式進行更新便可(須要等待一段時間~):

github

sudo apt-get update
sudo apt-get upgrade

  執行結束後,咱們再執行sudo apt-get install libudev-devel便可成功。bootstrap

2.2 編譯安裝libusb

  對於鏈接到電腦的USB設備,通常都會須要安裝對應的USB driver來支持。有一款開源的跨平臺的USB driver,就是libusb,能夠用來進行自定義的USB設備的驅動開發。
  libusb是一個C語言編寫的庫,能夠供上層的應用來調用,和鏈接在筆記本上的USB設備進行通訊。易於移植,並且有對應的libusb-API的文檔,能夠用於Linux, OS X, Windows, Android, OpenBSD等系統。並且支持USB 1.0到3.1的規範。通常在Linux系統上會自帶了libusb的。其餘的平臺通常須要安裝libusb。
vim

2.2.1 下載libusb

  在https://github.com/libusb/libusb/releases/ 地址中選擇一個版本進行下載,本文使用的是libusb-1.0.18。api

2.2.2 編譯安裝過程

(1)解壓libusb-1.0.18.tar.gz安裝包,執行tar -xvf libusb-1.0.18.tar.gz。
(2)進入到libusb-1.0.18文件下,執行三步:(a)./configure; (b) make; (c)sudo make install;
bash

2.2.3 安裝時提示的錯誤

(1)錯誤提示
  checking for inline… inline
  checking operating system… Linux
  checking for library containing clock_gettime… -lrt
  checking libudev.h usability… no
  checking libudev.h presence… no
  checking for libudev.h… no
  configure: error: 「udev support requested but libudev not installed」
(2)解決辦法
  安裝libudev-devel便可解決,安裝方法已2.1節介紹。








python2.7

2.3 編譯安裝pcsc-lite

  pcsc-lite 封裝了訪問使用 SCard API (PC/SC) 訪問智能卡設備的開發包。

2.3.1 下載pcsc-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 -xvf pcsc-lite-1.8.11.tar.bz2。
(2)進入pcsc-lite-1.8.11文件夾下,執行三步:(a)./configure;(b)make;(c)sudo make install

2.4 編譯安裝ccid

  該庫爲符合CCID協議的USB智能卡驅動程序提供了PC / SC IFD處理程序實現。須要此軟件包才能經過PC / SC Lite資源管理器(pcscd)與CCID智能卡讀取器進行通訊。

2.4.1 下載ccid

  在https://alioth-archive.debian.org/releases/pcsclite/ccid/ 地址中選擇一個版本進行下載,本文使用的是ccid-1.4.16版本。

2.4.2 編譯安裝過程

(1)解壓ccid-1.4.16.tar.bz2安裝包,執行tar -xvf ccid-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的指令,打開profile文件。
(2)增長:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH,保存退出。
(3)執行 source /etc/profile。


2.6 ccid通信協議測試

2.6.1 啓動pcsc服務

  在命令行中執行pcscd,注意若是不是root帳戶執行sudo pcscd。

2.6.2 測試結果

  在pcsc-lite-1.8.11/src/ 的路徑下找到testpcsc可執行文件,插入設備後,執行./testpcsc,結果以下則證實CCID協議通信成功。
在這裏插入圖片描述

2.7 其餘軟件包的安裝

  由於項目須要安裝一些其餘的開源庫,所以在這裏記錄一下。

2.7.1 編譯安裝boost

  Boost是爲C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,做爲標準庫的後備,是C++標準化進程的開發引擎之一,是爲C++語言標準庫提供擴展的一些C++程序庫的總稱。

2.7.1.1 下載boost

https://sourceforge.net/projects/boost/files/boost/ 地址中選擇一個版本下載,本文中使用的是boost_1_43_0。

2.7.1.2 編譯安裝過程

(1)解壓boost_1_43_0.tar.gz安裝包,執行tar -xvf boost_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: fatal error: pyconfig.h: No such file or directory,即pyconfig.h文件沒法找到。致使該問題產生的緣由是,所需文件在/usr/include/python2.7路徑下,須要將該路徑配置到系統路徑下。打開/etc/profile文件增長以下內容,再執行source /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)http://www.javashuo.com/article/p-ewfmgkap-ky.html
(6)https://baike.baidu.com/item/boost/69144?fr=aladdin
(7)https://blog.csdn.net/yujun_huoxu/article/details/7913135

相關文章
相關標籤/搜索