2013-03-26 16 views
7

我們開發了一個帶有微控制器的原型板,該微控制器可以與智能卡通信(它可以讀取ATR,發出並讀取對APDU命令的響應等)。現在,我想要使用此硬件Android手機或平板電腦。我們的主板具有USB連接,通過它我們可以通過Android讀取和寫入MCU。在Android中開發智能卡閱讀器

最終目標是在支持PKCS#11的Android平臺上運行智能卡讀卡器,併爲智能卡讀卡器的最終用戶提供一個庫,以便他們可以與他們的卡進行通信。

我已經閱讀了關於這個主題的幾個討論,其中一些表示我將不得不建立一個自定義的Android來做到這一點。我對Android架構不太瞭解,不知道爲什麼當我可以通過USB與外設(讀卡器)進行通信時,我必須重新構建Android。在我看來,如果我提供一個實現類似CCID接口的庫,那麼用戶就可以通過將我的庫集成到他們的目標.apk文件來使用Android USB堆棧與我的閱讀器進行通信。

上述計劃有沒有問題,我們不知道?我擔心我們錯過了一些關於Android或智能卡讀卡器的基本知識(例如:安全性),這會在我們開始實施上述庫時對我們造成問題。

+0

[此信息關於Android上的USB連接](http://developer.android.com/guide/topics/connectivity/usb/index.html)有助於回答您的問題嗎? – Joe 2013-03-27 19:18:07

+0

安全性主要由智能卡本身提供。主要的漏洞是,手機中的祕密數據(例如PIN)被另一個惡意軟件應用程序佔用;因此PIN密碼閱讀器在PIN不會離開閱讀器的情況下具有優勢。一些建議:使用安全消息保護傳輸路徑,不要在未加密的電話上存儲任何內容,也不要緩存PIN。 – guidot 2013-04-01 11:08:02

+0

如果您鏈接到您閱讀的關於需要定製Android ROM的原始討論,這將會很有幫助。那部分對我來說也沒有意義。他們的項目中可能有一個隱藏的要求,你可能沒有接受,或者只是沒有看到(而最可能與你的項目無關)。也許他們的討論還比較陳舊,並且是在Android 3.0及以上版本推出的Android usb主機之前發佈的。 – 2013-04-14 21:34:46

回答

1

我爲我的定製平臺在定製的薑餅發行版中集成了USB外圍設備。您定製Android平臺的唯一原因是添加或修改一些驅動程序,以便您訪問USB設備。如果您的USB設備已經使用標準Android設備支持的協議,只需享受您的運氣!你幾乎所有的設置。但在慶祝勝利之前,我會嘗試使用各種設備。在Android和Kernel級別,Google提供了一個非常準系統的發行版,其中包含許多驅動程序源代碼。這取決於手機/平板電腦製造商根據其設備所使用的硬件來決定哪些低級驅動程序和協議。由於手機/平板電腦的內存容量有限,因此一般的規則是隻包含需要的內容。在PC-Linux體系結構中,您不會遇到問題,因爲硬盤空間非常大以至於包含所有存在的驅動程序,您可以讓系統根據所發現的內容挑選需要的內容。

希望這個簡單的答案將是有益的。