转载时请注明出处和作者联系方式
文章出处:http://blog.csdn.net/Victor_1
作者联系方式:冰心明悦 <mingfucui at gmail dot com>
【摘要】
本文主要分析和讨论在智能手机中实现T-Flash卡热插拔的三种方法:单线热插拔、带检测信号线的四线热插拔和不带检测信号线的四线热插拔。其中单线热插拔,使用数据线3作为卡的检测口,数据线的传输宽度为1,此种方法简单、方便容易实现,但其速度受到限制。带检测信号线的四线热插拔方式,使用的是卡槽中的一个检测位来检测卡的存在与否,此种方法在实现热插拔的同时最大限度的提高了卡的读写速度,但其需要额外的机械装置和硬件支持。第三种方法,使用不带检测信号线的四线热插拔方法,综合考虑了第一种和第二种方法的优点,避免了其缺点,动态使用数据线3的卡检测功能和数据传输功能,使其综合性能达到最优。
一、问题的提出
现在的手机不仅仅满足其通话和短消息的功能,其娱乐性和可扩展性越来越多的受到人们的重视,例如:audio、video、gps和移动办公等等。在这种广大的需求面前同时对手机的性能提出了更高的要求,要求其处理速度要快,存储容量要大,安全性要好。对于存储容量的要求,最佳的方法就是使用外接的扩展卡,其中T-Flash卡是一种很好的选择,其成本较低,安全性好,同时可以通过读卡器和PC机交互,从而得到了很好的应用。但我们现有的智能手机,如***虽然支持T-Flash卡,但并不能满足其热插拔的要求,不方便用户使用。而其同类的产品,如moto系列、多普达系列等等都是支持T-Flash卡的热插拔功能,所以为了提高公司产品的竞争力,我们在今后的产品中必须添加T-Flash卡的热插拔功能。
二、解决思路
卡的插入和拔出是通过连接在检测位上GPIO的电平状态来通知系统的。系统根据其具体的状态来判别是插入还是拔出,然后通过设置标志位,调用系统脚本hotplug来实现卡的mount和umount操作,更新文件系统的状态,实现卡的热插拔操作。其处理流程如下图1所示:
1. 定义检测GPIO口,通过该位的状态来标识卡的插入或拔出操作。
2. 设置GPIO口开中断标志,设置上升沿和下降沿中断触发,其中上升沿触发表示插入操作,下降沿触发表示拔出操作。
3. 在系统中注册中断函数来具体响应中断过程。
4. 中断处理函数的实现,判断是否是有效中断和区别插入还是拔出,然后设置标志。其具体实现还要根据原来卡槽中的状态和当前卡槽中的状态来判定:(如下表所示)
原来 现在 |
无卡 0 |
有卡 1 |
无卡 0 |
无卡 00 |
拔出 |