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

FRDM-MCXN947提供對應的驅動文件是bsp_sdhc.c
SDHC是大容量SD卡,也就是SD High Capacity,支持最大32GB大小容量。
SDHC,Secure Digital High Capacity,大容量SD,也就是說,超過2G的SD都叫SDHC,因為早期的SD使用的是FAT16文件系統,并不支持大容量,而SDHC升級為FAT32,才支持2G以上的大容量。
2 搭建開發環境
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目錄
執行
scons--dist --target=mdk5
生成的工程在dist目錄,進入到dist下的project目錄,需要做以下兩個修改:
刪除 sdk_dist.py,上傳服務器或本地備份的時候不需要此文件
修改工程目錄的Kconfig,否則menuconfig會找不到Libraries文件夾下的其它Kconfig
最后在生成的工程下執行
pkgs--update
到這里,就可以在KEIL愉快的玩耍了。
3 配置 SDIO 驅動
芯片的 SDIO 外設驅動
RT-Thread 的 SD/MMC 設備驅動
這里使用的是 elm-chan fatfs,即fat32;而 DFS 是對各種文件系統的抽象層,用于適配不同的文件系統
配置完成后,保存到新的 .config, 并在env工具下執行:
scons--target=mdk5
4 掛載文件系統
在main.c包含頭文件,編譯新生成的源文件,并下載到我們的開發板。
#include"dfs_fs.h"
如果掛載失敗,可以優先進行這兩個動作:
檢查卡座的引腳是否存在虛焊
TF卡沒有被格式化為FAT32文件系統,插入下面第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卡已經成功被格式化
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工具下執行:
scons--target=mdk5
在KEIL重新編譯,燒錄,開始測試
6 測試結果
讀寫的速度跟卡本身,DMA,文件系統等等因素有關,這里僅表示單個文件的讀寫測試結果。
通過串口助手發送指令 readwrite 來進行測試,MCU接收到指令后,會寫入240字節到目標文件
用法:readwrite + [filename]
通過串口助手發送指令 writespeed 來進行測試,MCU接收到指令后,會寫入1048576(1M)字節到目標文件,并輸出計算出的寫入速度,速度為565KB/s
用法:writespeed + [filename]
通過串口助手發送指令 readspeed 來進行測試,MCU接收到指令后,會去讀取目標文件,這里測試是緊跟著上一寫測試進行的,測試出速度為1938KB/s
用法:readspeed + [filename]
9 總結
在RT-Thread的設備驅動框架下,NXP現成的驅動還是十分完善,可以快速的跳過設備的驅動,進而聚焦應用程序的開發。同時RT-Thread的生態十分強大,此次測試組件也是現成的代碼,基本上是“零代碼”測評。
-
驅動
+關注
關注
12文章
1912瀏覽量
86709 -
SDIO
+關注
關注
2文章
76瀏覽量
19843 -
RT-Thread
+關注
關注
32文章
1387瀏覽量
41690
發布評論請先 登錄
RT-Thread驅動開發指南進階篇-動手驅動先楫未適配的外設LCD

已結束-【書籍評測活動NO.4】RT-Thread官方撰寫,涵蓋26種設備驅動的開發指南
《RT-Thread設備驅動開發指南》讀書測評
RT-Thread編程指南
RT-Thread Studio驅動SD卡

RT-Thread 編程風格指南

RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

送《RT-Thread設備驅動開發指南》,手慢無!
電子工程專輯放福利啦!免費領取500本《RT-Thread設備驅動開發指南》

評論