驱动是连接底层硬件跟上层系统的桥梁。这一层是至关重要的,如果不能保证驱动的正确性和完整性,系统就无法跟底层硬件通信,更无法完成上层的开发。
经过好几天的奋斗终于把SD-Card的驱动成功的移植到了系统中,可以调用系统函数来操作SD卡了。
首先看看RT-Thread的文件系统的三层结构图:
1. 最顶层的是一套面向嵌入式系统专门优化过的虚拟文件系统(接口)。这层为我们提供了访问文件的各种API:open、close、read、write等等
2. 中间是各种文件系统的实现。具体的配置在rtconfig.h中进行选择配置。
3. 最底层是各类存储驱动,如SD卡,IDE硬盘驱动等。(我就用了SD卡,别的没有用到呢)
这个驱动主要分两部分,一部分是SDIO接口对SD的操作,另一部分是将底层接口函数跟上层函数相对应。
SDIO
1. SDIO简介
SDIO是一个I/O接口规范,是为带有SD卡槽的设备进行外设功能扩展。
2. SD协议
1- SDIO的时钟。SDIO_CK时钟是通过PC12引脚连接到SD卡的,是SDIO接口与SD卡用于同步的时钟。
2- SDIO的命令、数据传输方式。SDIO的所有命令及命令响应,都是通过SDIO-CMD引脚来传输的。
命令只能由host即STM32的SDIO控制器发出。SDIO协议把命令分成了11种,包括基本命令,读写命令还有ACMD系列命令等。
3- 卡的种类。STM32的SDIO支持SD存储卡,SDI/O卡,MMC卡。
3. 剩下的就是具体的代码了,找个例程的驱动好好研究去吧。具体可以看看野火的教程。
上面的就是单纯的SDIO对SD卡的操作,跟操作系统是没有半点关系的。这是走向系统的第一步,一定要操作成功。接下来就是RT-Thread DFS文件系统针对下层媒介 使用的是RT-Thread的设备系统,其中主要包括设备读写等操作。
下面就列出接口函数,如下:
1
2
3
4
5
6
7
8void rt_hw_sdcard_init(void) { NVIC_InitTypeDef NVIC_InitStructure; if (SD_Init() == SD_OK) { SD_Error status; rt_uint8_t *sector;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37<span style="white-space:pre"> </span>NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); <span style="white-space:pre"> </span>{ /* there is no partition table */ part.offset = 0; part.size = 0; } // /* release sector buffer */ // rt_free(sector); /* register sdcard device */ sdcard_device.type = RT_Device_Class_Block; sdcard_device.init = rt_sdcard_init; sdcard_device.open = rt_sdcard_open; sdcard_device.close = rt_sdcard_close; sdcard_device.read = rt_sdcard_read; sdcard_device.write = rt_sdcard_write; sdcard_device.control = rt_sdcard_control; /* no private */ sdcard_device.user_data = &SDCardInfo; rt_device_register(&sdcard_device, "sd0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE); return; } __return: rt_kprintf("sdcard init failedn"); }
到了这里我们就把SD的驱动跟RT-Thread的文件系统相对应上了。接下来就是应用了,应用层面上我用的不是太好,就没有资格说些什么了,但是把jiezhi的教程上传到这里,感兴趣的可以参考他的教程。http://download.csdn.net/detail/liaoxu02/7545209
最后
以上就是自由帅哥最近收集整理的关于【RT-Thread】——驱动篇之文件系统的全部内容,更多相关【RT-Thread】——驱动篇之文件系统内容请搜索靠谱客的其他文章。
发表评论 取消回复