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

FRDM-MCXN947提供對應(yīng)的驅(qū)動(dòng)文件是bsp_sdhc.c
SDHC是大容量SD卡,也就是SD High Capacity,支持最大32GB大小容量。
SDHC,Secure Digital High Capacity,大容量SD,也就是說,超過2G的SD都叫SDHC,因?yàn)樵缙诘腟D使用的是FAT16文件系統(tǒng),并不支持大容量,而SDHC升級為FAT32,才支持2G以上的大容量。
2 搭建開發(fā)環(huán)境
Keil :v5.32,官方推薦5.36及以上
RT-Thread env-windows-1.5.0
構(gòu)建工程:
獲取 RT-Thread 當(dāng)前最新的工程 https://github.com/RT-Thread/rt-thread/
通過 env 工具進(jìn)入 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目錄,進(jìn)入到dist下的project目錄,需要做以下兩個(gè)修改:
刪除 sdk_dist.py,上傳服務(wù)器或本地備份的時(shí)候不需要此文件
修改工程目錄的Kconfig,否則menuconfig會(huì)找不到Libraries文件夾下的其它Kconfig

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

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

RT-Thread 的 SD/MMC 設(shè)備驅(qū)動(dòng)

這里使用的是 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)先進(jìn)行這兩個(gè)動(dòng)作:
檢查卡座的引腳是否存在虛焊
TF卡沒有被格式化為FAT32文件系統(tǒng),插入下面第10行代碼進(jìn)行格式化
#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
測試準(zhǔn)備

這里參照其它單元測試案例寫 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 測試結(jié)果
讀寫的速度跟卡本身,DMA,文件系統(tǒng)等等因素有關(guān),這里僅表示單個(gè)文件的讀寫測試結(jié)果。
通過串口助手發(fā)送指令 readwrite 來進(jìn)行測試,MCU接收到指令后,會(huì)寫入240字節(jié)到目標(biāo)文件
用法:readwrite + [filename]

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

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

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