首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式Linux系统中MMC卡驱动管理技术研究 05

嵌入式Linux系统中MMC卡驱动管理技术研究 05

一方面要探测MMC卡的热插拔事件,分配或释放系统资源,并驱动MMC卡;另一方面,要将此事件准确及时地通知给应用层,应用层则根据热插拔事件作相应的处理。

  在操作系统层,需要注册一个字符型设备mmc_plug文件,用于应用层探测MMC卡的热插拔事什。CPU通过GPIO12引脚与MMC卡相连,用于卡插拔的中断探测。同时驱动程序巾设置一个信号量MMC_EVENT,它取MMC_INSERT和MMC_REMOVAL两个值。当卡插入和或者拔出时,在中断处理程序中被分别设置为MMC_INSERT和MMC_REMCOVAL;并同时传给字符设备mmc_plug,供上层的应用程序使用。为了让应用层能够知晓卡的拔插事件,在字符设备mmc_plug使用异步I/O机制poll,需要接收内核拔插事件的进程通过poll在一个等待队列上睡眠,当有卡拔插事件时产生中断,中断处理程序唤醒在队列上等待的进程。上层进程在被唤醒后就读取字符设备,获取所发生的事件。

  在应用层,进程通过select机制监听MMC卡所发生的热插拔事件,在没有拔插事件的时候,进程进入阻塞状态,让出CPU资源;当发生热拔插事件时,系统唤醒通过poll加入到等待队列中的进程,然后应用层通过read函数得到MMC卡的热插拔事件,进行相应的应用层处理。当然,应用层也可以通过write方法通知系统层对卡进行处理。

  结语

   本文研究实现的MMC卡驱动程序,其实现的集群读写证明有稳定而较高的读/写速度;增加了电源管理功能,降低了电源的功耗,满足了嵌入式系统低功耗的要求;增加的即插即用功能,大大方便了用户的使用。驱动程序的体系结构是实现嵌入式系统块设备驱动的一种好方法。
返回列表