在新的國家電網集抄終端相關標準中,規(guī)定了通過嵌入式安全控制模塊,即通常所說的ESAM芯片,來保證設備數據安全性的方法,而設備主控單元與ESAM芯片采用了廣泛應用的ISO7816通訊協(xié)議。為了適應這一新的技術需求,我們對嵌入式Linux主板EM9160的串口驅動進行了升級,使其多個串口都可支持ISO7816協(xié)議,為客戶進行智能終端整機設計時,提供了靈活的選擇。
對EM9160工控主板,可在其異步串口的基礎上,通過簡單的設置,就可把串口轉為符合ISO7816協(xié)議的接口,實現(xiàn)與各種智能卡的通訊。EM9160共有6個異步串口,在Linux環(huán)境中為“/dev/ttyS1”-“/dev/ttyS6”,其中支持ISO7816的串口如下表所示:
串口 |
管腳配置 |
備注 |
|
“/dev/ttyS2” |
TXD:半雙工數據線 | ||
RXD:復位輸出控制 | 低電平有效 | ||
GPIO14:作為SCK | 輸出頻率與波特率參數有關 | ||
“/dev/ttyS4” |
TXD:半雙工數據線 | ||
RXD:復位輸出控制 | 低電平有效 | ||
GPIO15:作為SCK | 輸出頻率與波特率參數有關 | ||
“/dev/ttyS5” |
TXD:半雙工數據線 | ||
RXD:復位輸出控制 | 低電平有效 | ||
GPIO15:作為SCK | 輸出頻率與波特率參數有關 | ||
“/dev/ttyS6” |
TXD:半雙工數據線 | ||
RXD:復位輸出控制 | 低電平有效 | ||
GPIO15:作為SCK | 輸出頻率與波特率參數有關 |
EM9160在硬件上與ESAM芯片的連接很簡單,如上表所示,只需要3條信號線,連接示意圖如下:
為了簡化EM9160對ISO7816協(xié)議的參數設置,其FI/DI比值固定為372,事實上這也是應用中最常用的比值,符合國電公司指定的ESAM芯片的要求。若所用串口的波特率為9600bps,則輸出的SCK頻率為3.5712MHz。
EM9160的“/dev/ttyS4”-“/dev/ttyS6”串口信號均為TTL電平,建議客戶首選其中之一作為與ISO7816智能芯片的通訊接口。如果這些串口已分配給設備的其他功能,也可以考慮使用“/dev/ttyS2”口,需要注意的是“/dev/ttyS2”口出廠的缺省電平是RS232電平,若客戶考慮配置“/dev/ttyS2”作為ISO7816協(xié)議端口,需在訂購時通知廠方設置成TTL電平。另外當GPIO15或GPIO14一旦作為了ISO7816的工作時鐘輸出,就不能再用作其他的用途了。
為了方便設置ISO7816工作模式,在“em9x60_drivers.h”中定義了兩個常量:
#define EM9X60_ISO7816_T0 (1 << 27)
#define EM9X60_ISO7816_RXD_RESET (1 << 23)
作為應用程序,在設置ISO7816模式的串口(以”/dev/ttyS4”為例)時,一般的流程如下:
1、按標準方法打開串口 fd = open(“/dev/ttyS4”, O_RDWR | O_NOCTTY);
2、獲取數據結構 struct termios new_opt; tcgetattr(fd, &new_opt);
3、設置包括波特率、偶校驗、8-bit數據等符合ISO7816規(guī)范的串口參數;
4、首先對ESAM芯片進行一次復位操作:
new_opt.c_cflag |= (EM9X60_ISO7816_T0 | EM9X60_ISO7816_RXD_RESET);
tcsetattr(fd, TCSANOW, &new_opt);
udelay(100); //延時100us
new_opt.c_cflag &= ~EM9X60_ISO7816_RXD_RESET;
5、再設置一次正常的ISO7816工作模式:
tcsetattr(fd, TCSANOW, &new_opt);
此時GPIO15已作為SCK輸出3.57MHz時鐘,若波特率為9600bps的話;
6. 按照ISO7816的協(xié)議規(guī)范,進行正常數據通訊;
7. 若需要把該串口恢復到正常模式,只需對參數進行設置一次即可:
new_opt.c_cflag &= ~ EM9X60_ISO7816_T0;
tcsetattr(fd, TCSANOW, &new_opt);
8. 按標準方法關閉串口close(fd)。
在實際的嵌入式應用系統(tǒng)中,一個串口一旦配置成與ESAM芯片相連,就不太可能還需要用作它用,因為復用串口會增加系統(tǒng)硬件的成本,更何況EM9160自身就有多達6個異步串口,完全可滿足大多數智能終端的需求。
-
Linux
+關注
關注
87文章
11304瀏覽量
209524 -
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35342
發(fā)布評論請先 登錄
相關推薦
評論