首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
嵌入式系统的SD控制器设计实现
来源:本站整理  作者:佚名  2011-09-08 06:53:39



本文实现中SDHost的驱动程序采用流式接口驱动模型。

  驱动程序要实现相应的XXX_Open(),XXX_Close(),XXX_Init(),XXX_Deinit(),XXX_IOControl(),XXX_Read(),XXX_Write(),XXX_Seek(),XXX_PowerUp(),XXX_PowerDown()等接口函数,其中XXX为设备驱动的前缀,应用程序可以通过文件操作来控制设备。

  为了减少了SDHost驱动程序设计的复杂性,使其具有较好的可移植性,采用SDHostDDK,它在BSQUARESD协议栈的基础上,提供了平台独立的总线和客户端驱动和一组标准化的API供使用。BSQUARESD卡的协议栈结构如图1所示。

  

SD卡协议栈体系结构

  图1 SD卡协议栈体系结构

  该结构的设计很大程度上减少了SDHost驱动程序设计的复杂性,使SDHost控制器驱动程序设计可以专着于硬件相关的部分。总线驱动是SD卡客户端驱动程序和SDHost驱动程序之间的一个抽象层,它为SD卡客户端驱动提供平台独立的服务接口。SDHost驱动程序需要完成处理器和硬件平台相关的处理,向上层驱动提供统一的服务接口。

  2.2 中断控制

  中断控制是设备驱动程序里的关键部分,它关系到操作系统的实时相应速度和系统的整体性能。WindowsCE是通用的嵌入式系统,它在中断处理方面也有一定实时能力。

  WindowsCE处理中断的过程分为两部分实现:核心的ISR和用户线程IST。ISR实现一般要求短小精悍、效率很高,它只实现简单的功能:响应设备中断并返回一个中断标识码。IST是用户态线程,负责处理具体的中断事务。

  当有硬件设备产生中断时,系统进入核心ISR执行,响应设备中断并返回一个中断标识码,核心根据返回的中断标识码设置相应的事件,该事件将引起IST的执行,处理具体的中断事务。处理过程如图2所示。

  

WindowsCE中断处理过程

  图2 WindowsCE中断处理过程

  本实现中用到了下列中断:SD卡检测中断,SDIO中断和DMA0中断(DMA0专用于SDHost的DMA数据传输)。SD卡检测中断IST负责检测SD卡的插入和拔出,通知上层应用SD插槽的状态;SDIO中断IST只是简单的通知总线驱动有SDIO中断产生,具体处理交给SDIO卡的驱动程序;DMA0中断IST负责处理SD的DMA数据传送。

  在WindowsCE中,由于驱动程序DLL运行在用户态,因此驱动程序要访问硬件寄存器,必须在驱动程序的进程空间分配一段虚拟空间,然后将这段虚拟空间映射到硬件寄存器所映射到内核的虚拟地址才能够完成相应的访问。SDHost驱动程序在初始化的时候,必须进行资源分配和地址映射,配置好各个GPIO引脚的功能;然后需要创建事件和相应的中断标识码的关联,创建中断服务线程IST,准备进行中断响应服务。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:143,484.40000 毫秒