基于NiosⅡ软核处理器下SD卡驱动设计

[09-12 18:35:08]   来源:http://www.88dzw.com  EDA/PLD   阅读:8974

文章摘要:从端口的读写时序是通过SD卡控制器完成的,而SD卡的控制器是以NiosⅡ软核处理器外设的形式与处理器相连接的。其关系如图3所示。2 SD卡的接口协议分析SD卡即可靠数字存储卡(Seeure Digital Memory Card),是为满足消费电子类产品对安全、容量、性能等有特殊要求的环境而设计的。 SD卡定义了SD和SPI这2种可选择的总线协议。这里研究的是SPI协议下的SD卡设备开发。SPI是面向字节的传输,SPI的命令和数据块都是以8个比特为单位进行分组的。SPI的信息分为控制帧、反馈帧和数据帧,所有的SPI信息都是建立在命令、应答和数据端口标记上的。所有主机和卡之间的通信都由主机控制

基于NiosⅡ软核处理器下SD卡驱动设计,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  从端口的读写时序是通过SD卡控制器完成的,而SD卡的控制器是以NiosⅡ软核处理器外设的形式与处理器相连接的。其关系如图3所示。


2 SD卡的接口协议分析

  SD卡即可靠数字存储卡(Seeure Digital Memory Card),是为满足消费电子类产品对安全、容量、性能等有特殊要求的环境而设计的。  SD卡定义了SD和SPI这2种可选择的总线协议。这里研究的是SPI协议下的SD卡设备开发。SPI是面向字节的传输,SPI的命令和数据块都是以8个比特为单位进行分组的。SPI的信息分为控制帧、反馈帧和数据帧,所有的SPI信息都是建立在命令、应答和数据端口标记上的。所有主机和卡之间的通信都由主机控制,主机通过拉低CS信号开始一个总线事务。

  SPI模式下,SD卡可支持单个块和多个块的读/写操作,在接收到一个合法的读取命令后,这个SD卡可将用一个应答标志来应答响应,随后的就是一个数据块。在接收到一个合法的写指令时,SD卡将响应一个应答标记,并等待主控制器发送这个数据块。图4为单个块数据的读取操作,图5为单个块数据的写入操作。


3 SD卡驱动设计

  NiosⅡ软件架构是建立在硬件抽象层HAL(Hardware Abstraction Layer)之上的,HAL为Nios软件开发者提供了编程接口、底层的设备驱动、HAL API以及C标准库等资源。

  HAL系统库为Nios软件设计人员提供了应用程序与底层硬件交互的设备驱动接口,大大简化了应用程序的开发。同时,HAL系统库还为应用程序与底层硬件驱动划分了一条很清晰的分界线,从而大大提高了应用程序的复用性,使得应用程序不受底层硬件变化的影响。基于HAL的系统层次结构如图6所示。


  SD卡设备属于字符模型设备,其数据结构负责收集一系列用于响应HAL文件系统访问操作的函数指针,函数实体由设备驱动定义。SD卡设备的数据结构如下:


  其中,dev指向当前字符模式设备的alt_dev数据结构实例;fd_flags代表传递给open()函数的操作选项参数;priv为当前HAL系统代码并未使用该变量。llist代表设备的节点,具有previous和next两个域,分别指向之前和之后注册的设备,这样系统中的所有已注册设备就形成一个设备链,供HAL操作系统内部使用。name即system.h中定义的设备名,表示HAL文件系统的一个装载点。

  其设备的数据结构定义为:


  在NiosII中,其SD卡的驱动函数具体定义为:


  以下给出SPI写数据的关键代码:


4 结论

  基于NiosⅡ软核处理器的设备驱动设计方案具有良好的稳定性和设计灵活性,可以真正按照设计者的需要设计每个细节,使系统整体结构简洁明朗,便于移植和进行二次开发工作。这里通过分析NiosⅡ处理器的总线架构、SD卡的接口协议,给出SD卡设备在NiosⅡ处理器的设计实例,具有通用的意义。


上一页  [1] [2] 


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行