Linux下通過CCID協議與USB設備進行互動經驗總結
- 1.目標
- 2. 實作方法
- 2.1 安裝libudev
- 2.1.1 編譯安裝
- 2.1.2 安裝提示錯誤
- 2.2 編譯安裝libusb
- 2.2.1 下載libusb
- 2.2.2 編譯安裝程序
- 2.2.3 安裝時提示的錯誤
- 2.3 編譯安裝pcsc-lite
- 2.3.1 下載pcsc-lite
- 2.3.2 編譯安裝程序
- 2.4 編譯安裝ccid
- 2.4.1 下載ccid
- 2.4.2 編譯安裝程序
- 2.5 配置環境變數
- 2.6 ccid通訊協議測驗
- 2.6.1 啟動pcsc服務
- 2.6.2 測驗結果
- 2.7 其他軟體包的安裝
- 2.7.1 編譯安裝boost
- 2.7.1.1 下載boost
- 2.7.1.2 編譯安裝程序
- 2.7.1.3 安裝時提示錯誤
- 5. 參考鏈接
1.目標
??在linux系統下通過ccid協議與USB設備實作通訊,
2. 實作方法
??通過參考其他人的博客,決定采用如下方式來實作ccid通訊,
2.1 安裝libudev
??udev 是Linux2.6內核里的一個功能,它替代了原來的devfs,成為當前Linux 默認的設備管理工具,udev以守護行程的形式運行,通過偵聽內核發出來的uevent來管理/dev目錄下的設備檔案,不像之前的設備管理工具,udev在用戶空間(userspace) 運行,而不在內核空間(kernel space) 運行,
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,
2.1.2 安裝提示錯誤
??在Ubuntu14.04下,直接執行sudo apt-get install systemd-devel 或者 sudo apt-get install libudev-devel,有的時候并不能安裝成功,會出現下面的提示:

??一般apt-get出現上面的情況,就是沒有更新APT庫,安裝如下方式進行更新即可(需要等待一段時間~):
sudo apt-get update
sudo apt-get upgrade
??執行結束后,我們再執行sudo apt-get install libudev-devel即可成功,
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,
2.2.1 下載libusb
??在https://github.com/libusb/libusb/releases/ 地址中選擇一個版本進行下載,本文使用的是libusb-1.0.18,
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;
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節介紹,
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)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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/189546.html
標籤:其他
