目錄
硬件介紹
搭建開發(fā)環(huán)境
配置 SDIO 驅(qū)動
掛載文件系統(tǒng)
文件讀寫測試
演示視頻
源碼工程
總結
本文主要講述RT-Thread環(huán)境下的SDIO開發(fā)指南,基于MCXN947開發(fā)板。
1 硬件介紹
本次測評的是SDIO模塊。
SDIO接口是在SD內(nèi)存卡接口的基礎上發(fā)展起來的接口,SDIO接口兼容以前的SD內(nèi)存卡,并且可以連接SDIO接口的設備。
比如SDIO可以訪問micro SD卡、SD卡等存儲類設備,或藍牙、WIFI、GPS等無線設備。
這次測試的是使用SDIO接口訪問micro SD卡,即所謂的TF卡,TF卡的引腳定義和SD卡會有所不同:

FRDM-MCXN947提供對應的驅(qū)動文件是bsp_sdhc.c
SDHC是大容量SD卡,也就是SD High Capacity,支持最大32GB大小容量。
SDHC,Secure Digital High Capacity,大容量SD,也就是說,超過2G的SD都叫SDHC,因為早期的SD使用的是FAT16文件系統(tǒng),并不支持大容量,而SDHC升級為FAT32,才支持2G以上的大容量。
2 搭建開發(fā)環(huán)境
Keil :v5.32,官方推薦5.36及以上
RT-Thread env-windows-1.5.0
構建工程:
獲取 RT-Thread 當前最新的工程 https://github.com/RT-Thread/rt-thread/
通過 env 工具進入 BSP目錄:
rt-thread-master\bsp\nxp\mcx\mcxn\frdm-mcxn947
拷貝 rt-thread-master\bsp\nxp\mcx\tools\sdk_dist.py到剛才的BSP目錄
執(zhí)行
scons--dist --target=mdk5

生成的工程在dist目錄,進入到dist下的project目錄,需要做以下兩個修改:
刪除 sdk_dist.py,上傳服務器或本地備份的時候不需要此文件
修改工程目錄的Kconfig,否則menuconfig會找不到Libraries文件夾下的其它Kconfig

最后在生成的工程下執(zhí)行
pkgs--update

到這里,就可以在KEIL愉快的玩耍了。
3 配置 SDIO 驅(qū)動
芯片的 SDIO 外設驅(qū)動

RT-Thread 的 SD/MMC 設備驅(qū)動

這里使用的是 elm-chan fatfs,即fat32;而 DFS 是對各種文件系統(tǒng)的抽象層,用于適配不同的文件系統(tǒng)

配置完成后,保存到新的 .config, 并在env工具下執(zhí)行:
scons--target=mdk5
4 掛載文件系統(tǒng)
在main.c包含頭文件,編譯新生成的源文件,并下載到我們的開發(fā)板。
#include"dfs_fs.h"
如果掛載失敗,可以優(yōu)先進行這兩個動作:
檢查卡座的引腳是否存在虛焊
TF卡沒有被格式化為FAT32文件系統(tǒng),插入下面第10行代碼進行格式化
#ifdefRT_USING_SDIO rt_thread_mdelay(2000); if(dfs_mount("sd","/","elm",0,NULL) ==0) { rt_kprintf("sd mounted to /\n"); } else { rt_kprintf("sd mount to / failed\n"); dfs_mkfs("elm","sd"); }#endif
我這里使用的是閃迪 16GB TF卡,使用讀卡器可以看到TF卡已經(jīng)成功被格式化


5 文件讀寫測試
回到主干 rt-thread-master\examples 目錄,將目錄名為 file 的文件夾拷貝到 sdio-project\rt-thread\components\utilities\file
測試準備

這里參照其它單元測試案例寫 Kconfig 文件 和 SConscript 文件
Import('rtconfig')frombuilding import*
cwd =GetCurrentDir()src =Glob('*.c')
CPPPATH=[cwd]
group=DefineGroup('FilesUnitTest', src, depend=['RT_USING_FILE_IO_TEST'], CPPPATH=CPPPATH)
Return('group')
menu"File IO Unit Test"
config RT_USING_FILE_IO_TEST bool"RT-Thread File TestCases" defaultn endmenu



配置完成后,保存到新的 .config, 并在env工具下執(zhí)行:
scons--target=mdk5
在KEIL重新編譯,燒錄,開始測試
6 測試結果
讀寫的速度跟卡本身,DMA,文件系統(tǒng)等等因素有關,這里僅表示單個文件的讀寫測試結果。
通過串口助手發(fā)送指令 readwrite 來進行測試,MCU接收到指令后,會寫入240字節(jié)到目標文件
用法:readwrite + [filename]

通過串口助手發(fā)送指令 writespeed 來進行測試,MCU接收到指令后,會寫入1048576(1M)字節(jié)到目標文件,并輸出計算出的寫入速度,速度為565KB/s
用法:writespeed + [filename]

通過串口助手發(fā)送指令 readspeed 來進行測試,MCU接收到指令后,會去讀取目標文件,這里測試是緊跟著上一寫測試進行的,測試出速度為1938KB/s
用法:readspeed + [filename]

9 總結
在RT-Thread的設備驅(qū)動框架下,NXP現(xiàn)成的驅(qū)動還是十分完善,可以快速的跳過設備的驅(qū)動,進而聚焦應用程序的開發(fā)。同時RT-Thread的生態(tài)十分強大,此次測試組件也是現(xiàn)成的代碼,基本上是“零代碼”測評。
-
驅(qū)動
+關注
關注
12文章
1954瀏覽量
88522 -
SDIO
+關注
關注
2文章
78瀏覽量
20617 -
RT-Thread
+關注
關注
32文章
1613瀏覽量
44818
發(fā)布評論請先 登錄
RT-Thread記錄(一、版本開發(fā)環(huán)境及配合CubeMX)
RT-Thread設備驅(qū)動開發(fā)指南基礎篇—以先楫bsp的hwtimer設備為例
RT-Thread驅(qū)動開發(fā)指南進階篇-動手驅(qū)動先楫未適配的外設LCD
已結束-【書籍評測活動NO.4】RT-Thread官方撰寫,涵蓋26種設備驅(qū)動的開發(fā)指南
《RT-Thread設備驅(qū)動開發(fā)指南》讀書測評
RT-Thread編程指南
RT-Thread Studio驅(qū)動SD卡
RT-Thread 編程風格指南
RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
LPC55S69在RT-Thread上的SDIO驅(qū)動和文件系統(tǒng)
送《RT-Thread設備驅(qū)動開發(fā)指南》,手慢無!
電子工程專輯放福利啦!免費領取500本《RT-Thread設備驅(qū)動開發(fā)指南》
《RT-Thread設備驅(qū)動開發(fā)指南》基礎篇--以先楫bsp的hwtimer設備為例
從驅(qū)動到應用:RT-Thread環(huán)境下的SDIO開發(fā)指南
評論