初始化流程

SIM卡的初始化流程涉及到多个步骤,本文中仅列出几个主要的过程并加以说明。如果用户希望了解更多详细内容,可参考3GPP协议文档的对应部分内容,主要涉及下面几个协议:

  • 3GPP TS 11系列

  • 3GPP TS 31系列

  • 3GPP TS 51系列

上电和复位

设备给SIM卡供电,然后通过复位序列激活SIM卡,这个复位序列包括了特定的电平和时序,可以让SIM卡知道设备已经准备好与其通信。

SIM卡的复位分为冷复位(Cold Reset)和热复位(Warm Reset)。

  • 冷复位是完全断开电源然后重新上电,是一个完整的复位过程。

  • 热复位是在SIM卡电源仍然连接的情况下进行的复位,用来重新初始化卡片。

激活和冷复位

激活和冷复位的时许如下:

  • RST引脚处于低电平状态。

  • VCC开始供电。

  • CLK需要提供适当并且稳定的时钟。

  • ME的I/O应该处于接收状态,并且ME在SIM卡激活期间,应忽略I/O上的状态,这是因为在SIM卡激活期间到冷复位之前这段时间,SIM卡的I/O状态是不定的。

  • ME将RST置为高电平,等待SIM卡从I/O上返回ATR响应。

上图中的Ta 之后的时序即为冷复位时序。

热复位

当SIM卡激活之后,在SIM卡没有断电的情况下,ME对SIM卡发起的复位叫热复位,其时序图如下:

根据ISO7816-4标准的说明,如果SIM卡正在进行复位响应(ATR)的过程中,发起一个热复位,可能会损坏SIM卡,导致SIM卡出现问题。因此,通常需要等待SIM卡复位响应完全结束后,再进行下一次的复位操作。

ATR

在复位后,SIM卡会返回一个称为ATR(Answer To Reset)的响应,这个响应包含了SIM卡的一些基本信息,如支持的协议、电压等级等。

ATR最多由32字节组成(不包含起始字符TS),其结构如下图所示:

关于ATR响应帧中各字符的详细介绍说明,请参考ISO 7816-4标准文件。

PPS

PPS,全称Protocol and Parameters Selection,中文叫协议和参数选择。这是一个选择和设置通信协议和参数的过程。PPS的主要目标是根据卡和设备的能力,选择最优的协议和参数,以实现最高的通信速度和效率。

在SIM卡初始化流程中,当设备接收到SIM卡的ATR后,就可以开始PPS过程了。ATR中包含了SIM卡支持的协议和参数。设备会根据这些信息和自身的能力,来选择最优的协议和参数。

PPS的基本流程如下:

  • PPS请求:设备向SIM卡发送一个PPS请求,请求包含了设备选择的协议和参数。

  • PPS响应:SIM卡收到请求后,会返回一个PPS响应。响应中包含了SIM卡接受的协议和参数。

  • 确认:设备收到响应后,确认协议和参数的选择,并按照这些协议和参数进行后续的通信。

PPS的请求和响应结构,由一个初始字节PPSS、一个格式字节PPS0、三个可选参数字节PPS1、PPS2、PPS3和一个检查字节PCK组成。具体如下所示:

文件选择

SIM卡内部有一套文件系统,其中存储了各种关键的数据和应用信息。在初始化流程中,设备需要选择并读取特定的文件,获取必要的数据。以下是文件选择过程的步骤:

  • 选择MF:设备首先需要选择MF。MF是SIM卡文件系统的根,选择MF是访问其他文件的前提。设备通常通过发送SELECT命令并指定MF的文件ID来选择MF。

  • 选择DF:在选择了MF之后,设备可以选择一个或多个DF。DF是文件系统的下一级,类似于文件夹,包含了一组相关的EF。例如,一个DF可能包含了所有关于电话簿的EF。选择DF同样是通过发送SELECT命令完成的,只是需要指定DF的文件ID。

  • 选择EF:在选择了DF之后,设备可以选择具体的EF。EF是文件系统的最后一级,里面直接存储了数据。例如,一个EF可能存储了用户的IMSI,或者存储了一条电话记录。选择EF同样是通过发送SELECT命令完成的,只是需要指定EF的文件ID。

  • 读取文件:在选择了EF之后,设备可以发送READ BINARYREAD RECORD命令,读取EF中的数据。例如,设备可能读取IMSI,然后用于后续的网络注册和身份验证。

关于SIM卡文件系统说明,请参考下一个章节《SIM卡文件系统》。

身份验证

设备会获取到IMSI后,向网络发送一次注册请求,网络会返回一个随机数,设备会将这个随机数发送给SIM卡,SIM卡使用内部的Ki(认证密钥)和算法生成一个响应值,返回给设备,设备再将这个响应值发送给网络。如果网络验证这个响应值正确,就认为SIM卡是有效的,然后完成注册,否则将拒绝服务。

其他应用的初始化

如果SIM卡上还有其他应用,如STK(SIM Application Toolkit)应用,设备会在身份验证后,继续进行这些应用的初始化。这可能涉及到选择更多的文件,发送更多的命令,或者执行更多的交互。

热插拔功能初始化

当SIM卡初始化完成后,如果模组支持SIM卡热插拔功能,会进行SIM卡热插拔功能的初始化。

热插拔功能实现,大致需以下几点支持:

  • 需硬件上支持插拔SIM卡时会引起GPIO电平变化(硬件设计)。

  • 软件需要对硬件连接的GPIO引脚做电平变化监测(监测手段可以是中断,可以是轮询,一般推荐中断),消除抖动等处理。

  • 软件需支持注册回调函数,当监测到电平变化时,调用注册的回调函数通知上层应用。

  • 当监测到SIM卡插入或者拔出时,软件需做SIM卡掉电和上电流程处理。

Quepcython模组如支持SIM卡热插拔功能,则软件已经对2、3、4步骤做了处理,无需用户关心,仅需用户在硬件设计上进行支持即可。