嵌入式Linux下IC卡接口設計與驅(qū)動開發(fā)
發(fā)布時間:2008/5/26 0:00:00 訪問次數(shù):2190
    
    
    引 言
    隨著現(xiàn)代工業(yè)社會逐步向信息社會的過渡,信息將扮演愈來愈重要的角色,成為現(xiàn)代經(jīng)濟生活中的成功要素。ic卡作為卡基應用系統(tǒng)中的一種卡型,是利用安裝在卡中的集成電路(ic)來記錄和傳遞信息的;具有存儲量大、數(shù)據(jù)保密性好、抗干擾能力強、存儲可靠、讀寫設備簡單、操作速度快、脫機工作能力強等優(yōu)點,其應用范圍極為廣泛。
    我們基于公用電話ic卡的應用,開發(fā)了多媒體信息終端產(chǎn)品,在傳統(tǒng)公用ic卡電話功能的基礎上增加了上網(wǎng)、郵件、電子支付、信息瀏覽等各種多媒體功能,統(tǒng)一采用公用電話ic卡進行收費。目前設計的ic卡讀寫器和驅(qū)動軟件已經(jīng)應用于我們的多媒體終端產(chǎn)品中。
    1 嵌入式linux下設備驅(qū)動模塊簡介
    linux系統(tǒng)將設備分成三種類型:字符設備、塊設備和網(wǎng)絡接口。三種類型設備定義如下:
    字符設備:字符設備是指能夠像字節(jié)流(比如文件)一樣被訪問的設備,如字符終端(/dev/con s01e)和串口(/dev/ttys0)以及類似設備。字符設備對應文件系統(tǒng)中的節(jié)點,用戶則通過此文件節(jié)點訪問和控制設備。
    塊設備:塊設備和字符設備一樣可以通過文件系統(tǒng)節(jié)點來進行訪問,linux允許應用程序像字符設備那樣讀寫塊設備。
    網(wǎng)絡接口:任何網(wǎng)絡設備都要經(jīng)過一個網(wǎng)絡接口,即一個能夠和其它主機交換數(shù)據(jù)的設備。通常接口是個硬件設備,但也可能是個純軟件設備,比如回環(huán)(100pback)接口。linux訪問網(wǎng)絡接口的方法是分配一個唯一的名字。
    module是linux內(nèi)核的一大創(chuàng)新,其正規(guī)的叫法應該是loadable kernel module, 即可安裝模塊?砂惭b模塊實現(xiàn)了linux操作系統(tǒng)的可擴展性。模塊運行在內(nèi)核空間環(huán)境中,它的程序運行函數(shù)庫都是在內(nèi)核空間定義,而不是在用戶函數(shù)庫空間。linux模塊的最方便之處為可加載和卸載。linux操作系統(tǒng)提供了系統(tǒng)調(diào)用in smod和rmmod可隨時將自己開發(fā)的模塊進行加載和卸載。
    根據(jù)linux設備分類,設備驅(qū)動模塊也可大致分為字符模塊(char module)、塊模塊(block module)和網(wǎng)絡模塊(network module)三種。
    2 ic卡設備觸點硬件電路介紹
    ic卡硬件觸點接口及信號如圖1所示。
    
    
    c1:vcc電源電壓。
    c2:rst復位信號。
    c3:clk時鐘信號。
    c4:未用。
    c5:gnd。
    c6:vpp編程電壓。
    c7:i/o數(shù)據(jù)輸入/輸出口線。
    c8:未用。
    以上觸點中,vpp編程電壓觸點是廠家生產(chǎn)卡時編程所用,用戶卡讀寫時沒有應用。所以準確地說,只有五個觸點分別連接來自外部主控制器的五個控制信號。 設備復位后的后續(xù)操作可包括卡的地址設定操作、讀寫操作、擦除操作。針對以上卡的各種操作皆有嚴格的信號控制時序,詳情可參照各種應用卡的datasheet。 ic卡作為卡基應用系統(tǒng)中的一種卡型,是利用安裝在卡中的集成電路(ic)來記錄和傳遞信息的,所以ic卡皆有特定的存儲位圖。具體存儲位圖針對應用領域的不同和標準的不同具有不同的位圖定義,詳細情況請參見自己開發(fā)應用卡的datasheet資料。在驅(qū)動的開發(fā)過程中,也只有完全清楚這些位圖定義后才能將所讀取的數(shù)據(jù)按照位圖定義協(xié)議進行譯碼而得到自己最終需要的各種數(shù)據(jù)。
    3 ic卡讀卡電路簡介
    ic卡讀卡接口電路框圖如圖2所示。
    
    我們采用mpc823e作為主處理器。因為ic觸點工作電壓為5v,而主控制器的工作電壓為3.3v,所以在讀卡器中設計了中間電平轉(zhuǎn)化驅(qū)動電路,同時增加了控制信號的驅(qū)動能力。為了實時檢測插卡操作,在插卡器電路中設置一開關電路,接主控制器的控制口線,用于檢測是否插卡。
    4 ic卡設備驅(qū)動模塊的實現(xiàn)詳解
    下面以我們采用的公用電話機通用的ic卡為例,通過已實現(xiàn)代碼來說明整個ic卡設備驅(qū)動模塊。
    (1)數(shù)據(jù)結(jié)構的確定
    編輯頭文件icdata.h,確定在驅(qū)動模塊程序中應用的公用數(shù)據(jù)結(jié)構。驅(qū)動
    
    
    引 言
    隨著現(xiàn)代工業(yè)社會逐步向信息社會的過渡,信息將扮演愈來愈重要的角色,成為現(xiàn)代經(jīng)濟生活中的成功要素。ic卡作為卡基應用系統(tǒng)中的一種卡型,是利用安裝在卡中的集成電路(ic)來記錄和傳遞信息的;具有存儲量大、數(shù)據(jù)保密性好、抗干擾能力強、存儲可靠、讀寫設備簡單、操作速度快、脫機工作能力強等優(yōu)點,其應用范圍極為廣泛。
    我們基于公用電話ic卡的應用,開發(fā)了多媒體信息終端產(chǎn)品,在傳統(tǒng)公用ic卡電話功能的基礎上增加了上網(wǎng)、郵件、電子支付、信息瀏覽等各種多媒體功能,統(tǒng)一采用公用電話ic卡進行收費。目前設計的ic卡讀寫器和驅(qū)動軟件已經(jīng)應用于我們的多媒體終端產(chǎn)品中。
    1 嵌入式linux下設備驅(qū)動模塊簡介
    linux系統(tǒng)將設備分成三種類型:字符設備、塊設備和網(wǎng)絡接口。三種類型設備定義如下:
    字符設備:字符設備是指能夠像字節(jié)流(比如文件)一樣被訪問的設備,如字符終端(/dev/con s01e)和串口(/dev/ttys0)以及類似設備。字符設備對應文件系統(tǒng)中的節(jié)點,用戶則通過此文件節(jié)點訪問和控制設備。
    塊設備:塊設備和字符設備一樣可以通過文件系統(tǒng)節(jié)點來進行訪問,linux允許應用程序像字符設備那樣讀寫塊設備。
    網(wǎng)絡接口:任何網(wǎng)絡設備都要經(jīng)過一個網(wǎng)絡接口,即一個能夠和其它主機交換數(shù)據(jù)的設備。通常接口是個硬件設備,但也可能是個純軟件設備,比如回環(huán)(100pback)接口。linux訪問網(wǎng)絡接口的方法是分配一個唯一的名字。
    module是linux內(nèi)核的一大創(chuàng)新,其正規(guī)的叫法應該是loadable kernel module, 即可安裝模塊?砂惭b模塊實現(xiàn)了linux操作系統(tǒng)的可擴展性。模塊運行在內(nèi)核空間環(huán)境中,它的程序運行函數(shù)庫都是在內(nèi)核空間定義,而不是在用戶函數(shù)庫空間。linux模塊的最方便之處為可加載和卸載。linux操作系統(tǒng)提供了系統(tǒng)調(diào)用in smod和rmmod可隨時將自己開發(fā)的模塊進行加載和卸載。
    根據(jù)linux設備分類,設備驅(qū)動模塊也可大致分為字符模塊(char module)、塊模塊(block module)和網(wǎng)絡模塊(network module)三種。
    2 ic卡設備觸點硬件電路介紹
    ic卡硬件觸點接口及信號如圖1所示。
    
    
    c1:vcc電源電壓。
    c2:rst復位信號。
    c3:clk時鐘信號。
    c4:未用。
    c5:gnd。
    c6:vpp編程電壓。
    c7:i/o數(shù)據(jù)輸入/輸出口線。
    c8:未用。
    以上觸點中,vpp編程電壓觸點是廠家生產(chǎn)卡時編程所用,用戶卡讀寫時沒有應用。所以準確地說,只有五個觸點分別連接來自外部主控制器的五個控制信號。 設備復位后的后續(xù)操作可包括卡的地址設定操作、讀寫操作、擦除操作。針對以上卡的各種操作皆有嚴格的信號控制時序,詳情可參照各種應用卡的datasheet。 ic卡作為卡基應用系統(tǒng)中的一種卡型,是利用安裝在卡中的集成電路(ic)來記錄和傳遞信息的,所以ic卡皆有特定的存儲位圖。具體存儲位圖針對應用領域的不同和標準的不同具有不同的位圖定義,詳細情況請參見自己開發(fā)應用卡的datasheet資料。在驅(qū)動的開發(fā)過程中,也只有完全清楚這些位圖定義后才能將所讀取的數(shù)據(jù)按照位圖定義協(xié)議進行譯碼而得到自己最終需要的各種數(shù)據(jù)。
    3 ic卡讀卡電路簡介
    ic卡讀卡接口電路框圖如圖2所示。
    
    我們采用mpc823e作為主處理器。因為ic觸點工作電壓為5v,而主控制器的工作電壓為3.3v,所以在讀卡器中設計了中間電平轉(zhuǎn)化驅(qū)動電路,同時增加了控制信號的驅(qū)動能力。為了實時檢測插卡操作,在插卡器電路中設置一開關電路,接主控制器的控制口線,用于檢測是否插卡。
    4 ic卡設備驅(qū)動模塊的實現(xiàn)詳解
    下面以我們采用的公用電話機通用的ic卡為例,通過已實現(xiàn)代碼來說明整個ic卡設備驅(qū)動模塊。
    (1)數(shù)據(jù)結(jié)構的確定
    編輯頭文件icdata.h,確定在驅(qū)動模塊程序中應用的公用數(shù)據(jù)結(jié)構。驅(qū)動