SIM卡需要单独管理这两个协议栈。SWP方案加入SIM卡系统后,不能影响ISO7816接口。举个例子,SIM卡有8个引脚,RST引脚用于复位SIM卡的ISO7816接口,SWP方案加入SIM卡后,RST引脚的Reset信号对SWP接口没有作用,SWP接口通过SWP引脚复位。
3 SWP连接方案在SIM卡中的设计
3.1 系统结构
大容量SIM卡是一种支持大容量存储、高速传输、具有新型应用的智能卡。我们研发的大容量SIM卡项目基于ARM Secure Core SC100内核,采用 AHB(高性能总线)+APB(高级外设总线)总线结构。AHB总线提供高速的数据传输,它连接SIM卡内部存储器和高速外部接口(USB接口)。APB总线通过桥接器与AHB总线相连,SIM卡的低速接口(SWP接口、ISO7816接口)挂靠在外设总线上。
3.2 硬件设计
SWP硬件设计基于SWP标准,即ETSI(欧洲电信标准协会)制订的的TS 102 613。SWP控制器和SWP接口共同组成了SWP方案的硬件设备。SWP控制器负责处理物理层和数据链路层逻辑。图4为硬件实现数据链路层逻辑时SIM卡内部SWP控制器的结构图。
图4 SWP控制器结构图
3.2.1 接收数据设计
在SIM卡和NFC芯片通信期间,SWP控制器在激活、挂起、去激活三种状态间切换。交换数据时,处于激活状态。Rx 解码器不停地检测Si信号,并将来自NFC芯片的单位数据解析为字节输出。Frame resolve分析接收到的每一字节的数据,若为7E(帧头),则继续接收数据,直到接收到7F(帧尾),表明SWPC接收到一帧完整的数据。Frame resolve进一步解析接收到的数据帧,首先根据MAC协议剥离帧头和帧尾,然后根据接收方的生成多项式对数据帧进行校验。如果数据正确,则识别出SHDLC数据帧的类型并作相应处理;如果数据错误,则发送拒收帧,要求对方重新发送。对于正确的信息帧,SWP控制器提取信息帧的信息数据(包)写入RX FIFO,并根据接收到的数据帧的字节个数设置控制器的状态寄存器。SWP控制器每接收一帧数据就发起一个硬件中断。
3.2.2 发送数据设计
SWP控制器发送数据和接收数据是相反的过程。如果上层应用有数据要发送时,会把数据写入TX FIFO。TX FIFO一旦检测到FIFO有数据,就启动发送模块把数据从TX FIFO中取出,经Frame assemble按照SWP协议的SHDLC协议组装信息帧,添加帧头、帧尾、校验码。把生成的MAC帧数据交给Tx编码器,完成输出数据的物理层组装,将数据转换成单个位电平输出。
3.3 软件驱动设计
SWP软件设计基于SWP标准和HCP(主机控制协议)标准。HCP标准是SWP协议之上的标准协议,定义了数据链路层之上的协议层——HCP路由层、HCP消息层以及应用层[5]。底层SWP协议和上层HCP协议组成的协议栈共同完成NFC芯片与UICC通信的完整协议。
在大容量SIM卡中采用SWP方案,要实现ISO7816协议栈和SWP协议栈。SIM卡的操作系统使用μC/OS。μC/OS是一种结构小巧、抢占式的实时操作系统。其内核提供任务调度和管理、时间管理、任务同步和通信、内存管理和中断服务等功能。在软件系统中,SWP软件模块是μC/OS的任务之一。