一种检测安全数码卡热插拔的方法及装置的制作方法

文档序号:6363490阅读:196来源:国知局
专利名称:一种检测安全数码卡热插拔的方法及装置的制作方法
技术领域
本发明涉及计算机领域,特别是涉及一种检测安全数码卡热插拔的方法及装置。
背景技术
安全数码卡(SD, Secure Digital Memory Card) 一般是通过SD读卡器转为USB设备来操作的。当SD读卡器仍然插在系统的USB接口上,而SD卡被用户从SD读卡器中拔除时,目前的Linux系统是无法侦测到这种状况的。在实际应用中,如果SD卡已经被用户从SD读卡器中拔除了,而上层应用程序并不知道该SD卡已经被拔除,始终认为该SD卡仍然可读可写,从而在实际上的读写操作时,既无法读取数据也无法写入数据,从而导致读写失败。因此,由于侦测不到SD卡的插拔事件,往往会给一些应用程序造成混淆。

发明内容
本发明主要解决的技术问题是提供一种检测安全数码卡热插拔的方法,本发明还提供相应的检测安全数码卡热插拔的装置,能够及时检测到安全数码卡的热插拔,从而为上层的应用提供准确的数码卡状态。一种检测安全数码卡热插拔的方法,其特征在于,包括当系统有读卡器插入时,以预设的频率向所述读卡器中的安全数码卡发送询问命令;接收根据所述询问命令返回的本次命令返回消息,所述命令返回消息包括安全数码卡存在的消息或安全数码卡不存在的消息;根据保存在本地的上一次接收的命令返回消息和所述本次命令返回消息判断在所述读卡器上是否有安全数码卡被拔除或者被插入;如果上一次接收的是安全数码卡存在的消息,本次接收的是安全数码卡不存在的消息,则检测出安全数码卡被拔除;如果上一次接收的是安全数码卡不存在的消息,本次接收的是安全数码卡存在的消息,则检测出安全数码卡被插入。一种检测安全数码卡热插拔的装置,其特征在于,包括发送模块,用于当系统有读卡器插入时,以预设的频率向所述读卡器中的安全数码卡发送询问命令;接收模块,用于接收根据所述询问命令返回的命令返回消息,所述命令返回消息包括安全数码卡存在的消息或安全数码卡不存在的消息;判断模块,耦接于所述接收模块,用于根据所述命令返回消息判断所述安全数码卡是否被拔除或者被插入,当上次接收的是安全数码卡存在的消息,本次接收的是安全数码卡不存在的消息时,则检测出所述安全数码卡被拔除;当上次接收的是安全数码卡不存在的消息,本次接收的是安全数码卡存在的消息时,则检测出所述安全数码卡被插入。、
本发明实施例中通过以预设的频率向读卡器中的安全数码卡发送询问命令,接收根据该询问命令返回的命令返回消息,然后根据该命令返回消息判断该安全数码卡是否被拔除或者被插入;能够及时检测到安全数码卡的热插拔状态,从而为上层的应用提供准确的数码卡状态。


图I是本发明检测安全数码卡热插拔的方法实施例的数据流程图;图2是本发明检测安全数码卡热插拔的装置实施例的逻辑结构示意图;图3是本发明检测安全数码卡热插拔的装置实施例的另一逻辑结构示意图。
具体实施例方式参阅图1,本发明检测安全数码卡热插拔的方法的实施例包括 101、当系统有读卡器插入时,开启一个用于以预设的频率向读卡器中的安全数码卡发送询问命令的轮询线程;当系统有读卡器插入时,开启一个用于以预设的频率向该读卡器中的安全数码卡发送询问命令的轮询线程,该轮询线程与该读卡器对应,即一个读卡器对应一个轮询线程,例如以Iinux系统为例,在sd_probe函数中创建一个线程kernel thread。102、以预设的频率向读卡器中的安全数码卡发送询问命令;在101步骤中建立的轮询线程以预设的频率向读卡器中的安全数码卡发送询问命令,例如kernel thread线程以一定的频率向安全数码卡发送TEST UNIT READY命令;103、接收第n+1次命令返回消息;命令返回消息是根据步骤102中的询问命令和安全数码卡的插拔状态发出的,其中,命令返回消息包括安全数码卡存在的消息和安全数码卡不存在的消息两种,每次只包含这两种消息中的一种;例如,安全数码卡存在的消息用返回值I来表示,安全数码卡不存在的消息用返回值O来表示;104、判断保存在本地的第η次接收的命令返回消息和第n+1次命令返回消息是否相同;在本地保存了第η次接收的命令返回消息,接收到第n+1次命令返回消息后,获取保存在本地的第η次接收的命令返回消息,然后判断第η次接收的命令返回消息和第n+1次命令返回消息是否相同,根据判断结果对安全数码卡当前的状态做出判断;如果保存在本地的第η次接收的命令返回消息和第n+1次命令返回消息不相同,执行步骤105 ;如果保存在本地的第η次接收的命令返回消息和第n+1次命令返回消息相同,执行步骤107 ;105、如果第η次接收的是安全数码卡存在的消息,第n+1次接收的是安全数码卡不存在的消息,则检测出读卡器中的安全数码卡被拔除;如果第η次接收的是安全数码卡不存在的消息,第n+1次接收的是安全数码卡存在的消息,则检测出读卡器中有安全数码卡被插入;如果检测出安全数码卡被拔除,则清除本系统中与该安全数码卡有关的信息,并向上层应用发送该安全数码卡已被拔除的消息,具体的以Iinux系统为例,在系统文件procfs和sysfs文件中清除与该安全数码卡相关的信息,再通过uevent文件发送K0BJ_REMOVE事件表示安全数码卡已被拔除,上层应用程序截获K0BJ_REM0VE事件后进行后续处理;如果检测出读卡器中有安全数码卡被插入,则在本系统中记录与该安全数码卡有关的信息,并向上层应用发送该安全数码卡已被插入的消息,具体的以Iinux系统为例,在系统文件procfs和sysfs文件中记录该安全数码卡的相关信息,再通过K0BJ_ADD事件表示安全数码卡被插入,上层应用程序截获K0BJ_ADD事件后进行后续处理;106、用第n+1次命令返回消息替代第η次接收的命令返回消息;用第n+1次命令返回消息替代第η次接收的命令返回消息,以备下一次判断保存在本地的第η次接收的命令返回消息和第n+1次命令返回消息是否相同时调用;107、如果第η次接收的是安全数码卡存在的消息,第n+1次接收的还是安全数码卡存在的消息,则检测出读卡器中的安全数码卡未被拔除;如果第η次接收的是安全数码·卡不存在的消息,第n+1次接收的还是安全数码卡不存在的消息,则检测出读卡器中有安全数码卡未被插入。108、检测读卡器是否被拔除;在对第n+1次命令返回消息处理完之后,判断读卡器是否被拔除;如果读卡器还没有被拔除,则返回步骤102 ;如果该读卡器已经被拔除,则执行步骤109 ;109、销毁该读卡器对应的轮询线程;如果步骤108中检测出读卡器已经被拔除,则销毁该读卡器对应的轮询线程;需要指出的是,本实施例只是对一个读卡器中的安全数码卡的热插拔情况进行描述,系统中完全可以插入多个读卡器,每个读卡器对应有一个轮询线程,对每个读卡器中的安全数码卡的热插拔的检测都是相同的,此处只以某一个读卡器为例进行说明,不能作为本发明的限制;在本实施例中,通过在系统底层,即核心态下利用轮询线程,以预设的频率向读卡器中的安全数码卡发送询问命令,接收根据该询问命令返回的命令返回消息,然后根据该命令返回消息判断该安全数码卡是否被拔除或者被插入;能够及时检测到安全数码卡的热插拔状态,上层应用只需要调用即可,并且,核心态下的线程开销比较小,生命周期也与读卡器插拔周期相同,大大减小了系统的线程开销。参阅图2和图3,本发明检测安全数码卡热插拔的装置的实施例包括发送模块201,用于当系统有读卡器插入时,以预设的频率向读卡器中的安全数码卡发送询问命令;例如以Iinux 系统为例,在 sd_probe 函数中创建一个 kernel thread,该 kernelthread负责以一定的频率向目标安全数码卡发送TEST UNITREADY命令来检测该目标安全数码卡当前的状态;接收模块202,用于接收根据发送模块201发送的询问命令返回的命令返回消息,其中,命令返回消息包括安全数码卡存在的消息或安全数码卡不存在的消息,例如,安全数码卡存在的消息用返回值I来表示,安全数码卡不存在的消息用返回值O来表示;控制模块200,耦接于发送模块201和接收模块202,用于控制所述发送模块201以预设的频率向读卡器中的安全数码卡发送询问命令和控制接收模块202接收根据发送模块201发送的询问命令返回的命令返回消息。另外,控制模块200包含判断模块203,耦接于接收模块202,用于根据接收模块202接收的第n+1次命令返回消息判断读卡器中的安全数码卡是否被拔除或者被插入,当上次接收的是安全数码卡存在的消息,第n+1次接收的是安全数码卡不存在的消息时,则检测出该安全数码卡被拔除;当上次接收的是安全数码卡不存在的消息,第n+1次接收的是安全数码卡存在的消息时,则检测出该安全数码卡被插入;信息处理模块204,耦接于所述判断模块,用于当检测出安全数码卡被拔除时,清除本系统中与所述安全数码卡有关的信息,以及用于当检测出安全数码卡被插入时,在本系统中记录与所述安全数码卡有关的信息。请参阅图3,进一步的,本实施例中的装置还包括检测模块205,用于检测系统中是否有读卡器插入; 轮询线程开启模块206,耦接于所述检测模块,用于当检测到有读卡器插入时,开启一个用于以预设的频率向安全数码卡发送询问命令的轮询线程,所述轮询线程与所述读卡器对应;进一步的,检测模块205还用于检测所述安全数码卡是否拔除;请参阅图3,进一步的,本实施例中的装置还包括轮询线程销毁模块207,耦接于所述检测模块,用于当检测模块检测到读卡器被拔除时,销毁该读卡器对应的轮询线程;进一步的,判断模块203还用于当第η次接收的是安全数码卡存在的消息,第n+1次接收的还是安全数码卡存在的消息时,则检测出该安全数码卡未被拔除;当第η次接收的是安全数码卡不存在的消息,第n+1次接收的还是安全数码卡不存在的消息时,则检测出该安全数码卡未被插入;请参阅图3,进一步的,本实施例中的装置还包括保存模块208,用接收模块202接收的第n+1次命令返回消息替代第η次接收的命令返回消息,以备下一次判断时调用;在本实施例中,通过在系统底层,即核心态下利用轮询线程,以预设的频率向安全数码卡发送询问命令,接收根据该询问命令返回的命令返回消息,然后根据该命令返回消息判断该安全数码卡是否被拔除或者被插入;能够及时检测到安全数码卡的热插拔状态,上层应用只需要调用即可,并且,核心态下的线程开销比较小,生命周期也与安全数码卡插拔周期相同,大大减小了系统的线程开销。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种检测安全数码卡热插拔的方法,其特征在于,包括 当系统有读卡器插入时,以预设的频率向所述读卡器中的安全数码卡发送询问命令;接收根据所述询问命令返回的本次命令返回消息,所述命令返回消息包括安全数码卡存在的消息或安全数码卡不存在消息; 根据保存在本地的上一次接收的命令返回消息和所述本次命令返回消息判断在所述读卡器上是否有安全数码卡被拔除或者被插入; 如果上一次接收的是安全数码卡存在的消息,本次接收的是安全数码卡不存在的消息,则检测出安全数码卡被拔除;以及 如果上一次接收的是安全数码卡不存在的消息,本次接收的是安全数码卡存在的消息,则检测出安全数码卡被插入。
2.根据权利要求I所述的方法,其特征在于,所述以预设的频率向所述读卡器中的安全数码卡发送询问命令的步骤之前还包括 检测系统是否有所述读卡器插入;以及 当检测到系统有所述读卡器插入时,开启一个用于以预设的频率向所述读卡器中的安全数码卡发送询问命令的轮询线程,所述轮询线程与所述读卡器对应。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括 检测所述读卡器是否被拔除;以及 当检测到所述读卡器被拔除时,销毁所述读卡器对应的轮询线程。
4.根据权利要求I所述的方法,其特征在于,所述根据保存在本地的上一次接收的命令返回消息和所述本次命令返回消息判断在所述读卡器上是否有安全数码卡被拔除或者被插入的步骤还包括 如果上一次接收的是安全数码卡存在的消息,本次接收的还是安全数码卡存在的消息,则检测出所述读卡器中的安全数码卡未被拔除;以及 如果上一次接收的是安全数码卡不存在的消息,本次接收的还是安全数码卡不存在的消息,则检测出所述读卡器中的没有安全数码卡被插入。
5.根据权利要求I所述的方法,其特征在于,所述根据保存在本地的上一次接收的命令返回消息和所述本次命令返回消息判断在所述读卡器上是否有安全数码卡被拔除或者被插入的步骤之后还包括 如果检测出安全数码卡被拔除,则清除本系统中与所述安全数码卡有关的信息;以及 如果检测出安全数码卡被插入,则在本系统中记录与所述安全数码卡有关的信息。
6.一种检测安全数码卡热插拔的装置,其特征在于,包括 发送模块,用于当系统有读卡器插入时,以预设的频率向所述读卡器中的安全数码卡发送询问命令; 接收模块,用于接收根据所述询问命令返回的命令返回消息;以及判断模块,耦接于所述接收模块,用于根据所述命令返回消息判断所述安全数码卡是否被拔除或者被插入,当上次接收的是安全数码卡存在的消息,本次接收的是安全数码卡不存在的消息时,则检测出所述安全数码卡被拔除;当上次接收的是安全数码卡不存在的消息,本次接收的是安全数码卡存在的消息时,则检测出所述安全数码卡被插入。
7.根据权利要求6所述的装置,其中所述命令返回消息指示安全数码卡是否存在。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括 检测模块,用于检测系统中是否有读卡器插入;以及 轮询线程开启模块,耦接于所述检测模块,用于当检测到有读卡器插入时,开启一个用于以预设的频率向所述读卡器中的安全数码卡发送询问命令的轮询线程,所述轮询线程与所述读卡器对应。
9.根据权利要求8所述的装置,其特征在于,所述检测模块还用于检测所述读卡器是否被拔除。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括 轮询线程销毁模块,耦接于所述检测模块,用于当检测模块检测到所述读卡器拔除时,销毁所述读卡器对应的轮询线程。
11.根据权利要求6所述的装置,其特征在于,所述判断模块还用于当上一次接收的是安全数码卡存在的消息,本次接收的还是安全数码卡存在的消息时,则检测出所述安全数码卡未被拔除;当上一次接收的是安全数码卡不存在的消息,本次接收的还是安全数码卡不存在的消息时,则检测出所述安全数码卡未被插入。
12.根据权利要求6所述的装置,其特征在于,所述装置还包括 信息处理模块,耦接于所述判断模块,用于当检测出安全数码卡被拔除时,清除本系统中与所述安全数码卡有关的信息,以及用于当检测出安全数码卡被插入时,在本系统中记录与所述安全数码卡有关的信息。
13.根据权利要求6所述的装置,其特征在于,所述装置还包括 保存模块,用所述本次命令返回消息替代上一次接收的命令返回消息,以备下一次判断时调用。
全文摘要
本发明实施例公开了一种检测安全数码卡热插拔的方法,还提供了相应的装置。本发明中通过以预设的频率向读卡器中的安全数码卡发送询问命令,接收根据该询问命令返回的命令返回消息,然后根据该命令返回消息判断该安全数码卡是否被拔除或者被插入;能够及时检测到安全数码卡的热插拔状态,从而为上层的应用提供准确的数码卡状态。
文档编号G06F11/267GK102722430SQ20121001628
公开日2012年10月10日 申请日期2012年1月18日 优先权日2012年1月18日
发明者余德军 申请人:晨星半导体股份有限公司, 晨星软件研发(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1