基于嵌入式NiosⅡ的SD卡驱动设计
![](http://m.amcfsurvey.com/editerupload/201407/c69d5eddf77492558d87209334048087.jpg)
其中,dev指向当前字符模式设备的alt_dev数据结构实例;fd_flags代表传递给open()函数的操作选项参数;priv为当前 HAL系统代码并未使用该变量。llist代表设备的节点,具有previous和next两个域,分别指向之前和之后注册的设备,这样系统中的所有已注册设备就形成一个设备链,供HAL操作系统内部使用。name即system.h中定义的设备名,表示HAL文件系统的一个装载点。
其设备的数据结构定义为:
![](http://m.amcfsurvey.com/editerupload/201407/5a34388473b3b78574033e79aab4f0fc.jpg)
在NiosII中,其SD卡的驱动函数具体定义为:
![](http://m.amcfsurvey.com/editerupload/201407/47ec8ad1d4cf914e01dfdfb7ae09c2f8.jpg)
以下给出SPI写数据的关键代码:
![](http://m.amcfsurvey.com/editerupload/201407/5f08737b4e88c2d86245f5a39a99f8cf.jpg)
4 结论
基于NiosⅡ软核处理器的设备驱动设计方案具有良好的稳定性和设计灵活性,可以真正按照设计者的需要设计每个细节,使系统整体结构简洁明朗,便于移植和进行二次开发工作。这里通过分析NiosⅡ处理器的总线架构、SD卡的接口协议,给出SD卡设备在NiosⅡ处理器的设计实例,具有通用的意义。
评论