0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【試用報(bào)告】STM32與RT-Thread的完美結(jié)合:SD卡操作的順暢體驗(yàn)!

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-07-11 09:20 ? 次閱讀

本篇將介紹——如何在正點(diǎn)原子STM32探索者V3開發(fā)板上使用RT-ThreadSDIO驅(qū)動(dòng)和FATFS文件系統(tǒng)組件實(shí)現(xiàn)SD卡上的文件讀寫。


開始本篇實(shí)驗(yàn)前,需要搭建RT-Thread開發(fā)環(huán)境,可以參考我之前的帖子:【正點(diǎn)原子STM32探索者V3開發(fā)板體驗(yàn)】體驗(yàn)RT-Thread 5.0.0版本


在正點(diǎn)原子STM32探索者V3開發(fā)板上使用RT-Thread驅(qū)動(dòng)SD卡實(shí)現(xiàn)文件讀寫只需要三步:


  • 配置FATFS和SDIO功能

  • 編譯項(xiàng)目代碼

  • 燒錄程序到開發(fā)板


對,你沒看錯(cuò),不用寫代碼,只需要改改配置,編譯、燒錄、運(yùn)行就可以了!


一、準(zhǔn)備工作


1.1 準(zhǔn)備好開發(fā)板和SD卡

開始本篇實(shí)驗(yàn)之前,需要準(zhǔn)備一個(gè)MicroSD卡,我這里準(zhǔn)備的是一個(gè)32G的閃迪卡:



1.2 創(chuàng)建RT-Thread項(xiàng)目

和上一篇文章類似,首先打開RT-Thread Env工具, 并跳轉(zhuǎn)到rt-thread源碼的bsp/stm32/stm32f407-atk-explorer子目錄。


然后,使用如下scons命令,創(chuàng)建RT-Thtread項(xiàng)目:

scons --dist --target=mdk --project-name=rtt_sdio --project-path=D:\Hardware\ST\ExplorerV3_STM32F407\Elecfans_03\rtt_sdio

(左右移動(dòng)查看全部內(nèi)容)


如下圖所示:



注:如果已有RT-Thread項(xiàng)目,則可以跳過此步驟。


該命令執(zhí)行完成后,就可以看到創(chuàng)建的目錄和文件了:



其中,rtt_sdio.uvprojx即為剛剛scons命令生成的Keil項(xiàng)目文件。


二、配置RT-Thread


PS:這個(gè)以RT-Thread Env工具為例,對RT-Thread進(jìn)行配置,如果是使用RT-Thread Studio創(chuàng)建項(xiàng)目,進(jìn)行配置也是類似的。


2.1 打開文件系統(tǒng)相關(guān)配置

RT-Thread Env命令行窗口跳轉(zhuǎn)到項(xiàng)目所在目錄后,執(zhí)行meuconfig命令并回車,打開配置界面:



常用操作說明:

  • 上下鍵,移動(dòng)光標(biāo)

  • 回車鍵,進(jìn)入配置項(xiàng)

  • ESC鍵,退出當(dāng)前配置,返回上一級配置

  • 空格鍵,選中或取消光標(biāo)所在配置項(xiàng)

  • “/”鍵,搜索界面


在 Hardware Drivers Config -> Onboard Periopheral Drivers 配置中,選中 Enable File System:



PS:該配置項(xiàng)選(BSP_USING_FS)中后,會自動(dòng)選中RT_USING_DFS和RT_USING_DFS_ROMFS配置項(xiàng)。


2.2 打開SD卡相關(guān)配置

選中 Hardware Drivers Config -> Onboard Periopheral Drivers -> Enable File System (BSP_USING_FS)配置項(xiàng)后,繼續(xù)回車:



選中Enable SDCARD配置項(xiàng)目,如上圖所示。


然后左右移動(dòng)底部光標(biāo)到Save菜單上,回車保存,提示保存為.config:



回車后,彈出提示說配置已寫入到.config了:



敲回車,界面將會返回配置界面。


此時(shí),我們的對項(xiàng)目配置的修改已經(jīng)保存到.config文件了,我們只需要連續(xù)按ESC鍵即可退出配置界面。


2.3 打開RTC配置

類似的,找到并打開如下配置項(xiàng):



該配置項(xiàng)用于打開RTC功能,以實(shí)現(xiàn)計(jì)時(shí)功能(PS:文件系統(tǒng)需要計(jì)時(shí)功能)。


2.4 重新生成Keil項(xiàng)目文件

由于剛剛我們修改了配置項(xiàng),開啟了文件系統(tǒng)和SD卡相關(guān)的配置項(xiàng)目,需要重新生成Keil項(xiàng)目文件,才能正常編譯成功。


在當(dāng)前項(xiàng)目目錄中,使用如下命令,重新生成Keil項(xiàng)目文件:

scons --target=mdk --project-name=rtt_sdio

(左右移動(dòng)查看全部內(nèi)容)


如下圖所示:




三、編譯、燒錄、運(yùn)行


3.1 編譯項(xiàng)目

由于我安裝的是Keil 5.37,需要先切換默認(rèn)便器才可以正常編譯通過。


切換默認(rèn)編譯器,具體操作為:



在彈出的Options for Target - rt-thread界面中,下拉ARM Compiler,選擇Use default compiler version 6,即使用默認(rèn)的版本6編譯器;


點(diǎn)擊底部的OK,確認(rèn)。


修改完默認(rèn)編譯器后,點(diǎn)擊編譯圖標(biāo)(或者按快捷鍵F7進(jìn)行編譯),將會開始編譯:



編譯完成后,Build Output將會看到:



有一個(gè)Error,重新編譯一下,可以直接看得清楚,不用往回找是哪個(gè)文件編譯報(bào)錯(cuò):



報(bào)錯(cuò)信息說:

  • board/ports/drv_filesystem.c文件中,聲明變量romfs_root為static,

  • rt-thread/components/dfs/filesystems/romfs\dfs_romfs.h文件中,聲明變量romfs_root為非static,


前后聲明不一致,導(dǎo)致報(bào)錯(cuò),解決方法很簡單, 將drv_filesystem.c中的static去掉即可 。


修改后,再次重新編譯,就可以編譯通過了:



3.2 下載程序

編譯成功后,我們需要將生成的二進(jìn)制程序代碼文件燒錄到開發(fā)板上。


開始測試之前,我們需要先將MicroSD卡插入開發(fā)板(建議斷電操作,PC端先斷開):



插入SD卡后,檢查開發(fā)板和PC之間的USB線和JTAG調(diào)試器連接。


由于我使用的是JLink調(diào)試器,因此還需要修改項(xiàng)目的調(diào)試器設(shè)置(Keil項(xiàng)目默認(rèn)的調(diào)試器設(shè)置是ULINK)。


修改Keil項(xiàng)目的調(diào)試設(shè)置,具體操作如下(這里以JLink為例):





這里,我修改了Port為SW,代表使用SWD接口(JTAG也可以),Max表示最大時(shí)鐘信號頻率,修改為50M下載速度更快。


看到成功識別了 ARM CoreSight JTAG-DP,說明JLINK調(diào)試器已經(jīng)成功識別到主控芯片了。



最后點(diǎn)擊確定,回到Options for Target - Blinky界面,點(diǎn)擊OK,保存設(shè)置;


以上準(zhǔn)備就緒后,在Keil中,點(diǎn)擊Download按鈕(或者F8快捷鍵),開始下載程序到開發(fā)板:



3.3 運(yùn)行程序

燒錄完成后,連接串口,輸入help命令回車可以看到:



可以看到文件系統(tǒng)相關(guān)的操作命令:

  • mkfs,可以用于創(chuàng)建文件系統(tǒng)

  • mount,可以用于掛載文件系統(tǒng)

  • umount,可以用于卸載文件系統(tǒng)


還有文件相關(guān)的操作命令:

  • cp,拷貝文件

  • mv,移動(dòng)或重命名文件

  • cat,顯示文件內(nèi)容

  • echo,可用于創(chuàng)建或?qū)懭胛募?/p>


四、在msh中操作SD卡


燒錄完成后,我們就可以在RT-Thread的msh環(huán)境中愉快地操作SD卡了。


4.1 查看設(shè)備

輸入list device命令并回車,可以查看設(shè)備:



這里sd0為分區(qū),后續(xù)會對他進(jìn)行操作。


4.2 格式化SD卡

初次使用的SD卡,可能沒有文件系統(tǒng),或者文件系統(tǒng)不是FAT格式的,需要將SD卡格式化為FAT文件系統(tǒng),后續(xù)才能掛載成功。


注意:格式化操作會導(dǎo)致SD卡上已有數(shù)據(jù)全部丟失;因此,在執(zhí)行格式化操作前,請確認(rèn)SD卡上沒有重要數(shù)據(jù),或者你已對SD卡上的重要數(shù)據(jù)進(jìn)行了備份。


mkfs命令用法:



接下來,我們可以通過mkfs命令對SD卡進(jìn)行格式化:



mkfs執(zhí)行會持續(xù)一段時(shí)間,請耐心等待(具體因不同SD卡容量和速度等級而異,我的32GB卡消耗了幾秒鐘)。


4.3 掛載文件系統(tǒng)

接下來,我們可以在串口終端內(nèi)使用mount命令將SD卡掛載到根目錄:



mount -h可以查看mount命令的用法:



另外需要注意的是,fstype參數(shù)使用的是elm(這里的elm實(shí)際就是FATFS)。


4.4 簡單的文件讀寫測試

前面提到echo命令比較特殊,可以寫文件,接下來使用echo寫文件,cat讀文件,ls查看文件:



這里使用了ls、echo、cat命令,進(jìn)行了文件讀寫操作。


4.5 簡單的目錄操作測試

接下來,進(jìn)行簡單的目錄操作演示。



這里首先使用了pwd查看當(dāng)前工作目錄,然后演示了ls、mkdir、cd命令;


如果你是對RT-Thread了解不多的朋友,看到這里可能會非常驚奇——在一個(gè)可以運(yùn)行在單片機(jī)RTOS上,居然可以這么方便的進(jìn)行文件系統(tǒng)、目錄、文件操作。


五、本篇小結(jié)


可以看到,在基于RT-Thread系統(tǒng)的項(xiàng)目中,我們沒有添加任何代碼,就可以實(shí)現(xiàn)SD卡進(jìn)行文件系統(tǒng)和件相關(guān)操作。這是因?yàn)镽T-Thread系統(tǒng)正點(diǎn)原子STM32探索者V3開發(fā)板的BSP中已經(jīng)支持了SDIO功能,另外RT-Thread系統(tǒng)本身包含了SDIO驅(qū)動(dòng)框架、FATFS支持,以及相關(guān)的命令。因此,我們可以在shell中非常方便的進(jìn)行文件系統(tǒng)相關(guān)操作,以及文件相關(guān)操作。


參考鏈接

  • RT-Thread Env工具下載:https://www.rt-thread.org/download.html#download-rt-thread-studio

  • RT-Thread Env 用戶手冊:https://www.rt-thread.org/document/site/#/development-tools/env/env

  • RT-Thread 5.0.0 發(fā)布聲明:https://mp.weixin.qq.com/s/x9Sb3hc_GxV5VYfagGKhcA

  • RT-Thread RTC設(shè)備文檔:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc

  • RT-Thread 虛擬文件系統(tǒng):https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem





聲明本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


更多熱點(diǎn)文章閱讀

  • 基于Cortex-M3內(nèi)核的32位微控制器,STM32項(xiàng)目實(shí)戰(zhàn)分享!

  • 基于32位RISC-V設(shè)計(jì)的互聯(lián)型微控制器,沁恒微CH32V307開發(fā)樣例

  • RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實(shí)戰(zhàn)樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計(jì),合宙 Air105 核心板開發(fā)總結(jié)

  • 嵌入式Linux開發(fā)秘籍!工程師大佬親歷分享項(xiàng)目樣例


原文標(biāo)題:【試用報(bào)告】STM32與RT-Thread的完美結(jié)合:SD卡操作的順暢體驗(yàn)!

文章出處:【微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:【試用報(bào)告】STM32與RT-Thread的完美結(jié)合:SD卡操作的順暢體驗(yàn)!

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread操作系統(tǒng)應(yīng)用開發(fā)寒假師資培訓(xùn)

    隨著物聯(lián)網(wǎng)和智能系統(tǒng)的快速發(fā)展,嵌入式成為當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。為進(jìn)一步提升全國大學(xué)生在嵌入式芯片及系統(tǒng)設(shè)計(jì)領(lǐng)域的創(chuàng)新能力,特別是針對物聯(lián)網(wǎng)應(yīng)用開發(fā)中RT-Thread操作
    的頭像 發(fā)表于 12-06 01:06 ?127次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>操作</b>系統(tǒng)應(yīng)用開發(fā)寒假師資培訓(xùn)

    RT-Thread上CAN實(shí)踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進(jìn)行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅(qū)動(dòng)移植,并正常啟動(dòng)RT-T
    的頭像 發(fā)表于 11-13 01:03 ?1185次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實(shí)踐

    新書發(fā)布——《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

    我們非常高興地宣布,由鄭苗秀、沈鴻飛和廖建尚編著的《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》一書正式發(fā)布。本書的編寫團(tuán)隊(duì)由多位在嵌入式和實(shí)時(shí)操作系統(tǒng)領(lǐng)域有著豐富經(jīng)驗(yàn)的專家組
    的頭像 發(fā)表于 09-03 08:06 ?599次閱讀
    新書發(fā)布——《<b class='flag-5'>RT-Thread</b>嵌入式實(shí)時(shí)<b class='flag-5'>操作</b>系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

    2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

    親愛的RT-Thread社區(qū)成員們:我們非常高興地宣布,2024年RT-Thread全球開發(fā)者線下培訓(xùn)即將拉開帷幕!24年全球巡回培訓(xùn)將覆蓋超10座城市及國家,為開發(fā)者提供一個(gè)深入學(xué)習(xí)RT-Thread嵌入式開發(fā)的絕佳機(jī)會。
    的頭像 發(fā)表于 08-07 08:35 ?1247次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓(xùn)火熱來襲!

    RT-Thread內(nèi)部機(jī)制大揭秘,帶你深入操作系統(tǒng)內(nèi)核

    一、RT-Thread概述RT-Thread是一款具有顯著優(yōu)勢的開源嵌入式實(shí)時(shí)操作系統(tǒng)。它不僅具備輕量級、實(shí)時(shí)性強(qiáng)的特點(diǎn),還擁有廣泛的開源社區(qū)支持和豐富的應(yīng)用場景。在輕量級方面,RT-Thre
    的頭像 發(fā)表于 08-01 08:11 ?3611次閱讀
    <b class='flag-5'>RT-Thread</b>內(nèi)部機(jī)制大揭秘,帶你深入<b class='flag-5'>操作</b>系統(tǒng)內(nèi)核

    RT-Thread 新里程碑達(dá)成——GitHub Star 破萬!

    RT-Thread實(shí)時(shí)操作系統(tǒng)開源項(xiàng)目在GitHub上的star數(shù)量突破一萬!截止發(fā)文,RT-Thread作為實(shí)時(shí)操作系統(tǒng)在業(yè)界Star數(shù)量排名第一!倉庫地址:https://gith
    的頭像 發(fā)表于 07-04 08:35 ?481次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達(dá)成——GitHub Star 破萬!

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-28 08:35 ?448次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    【上海】5月25日-基于恩智浦MCX N系列MCU結(jié)合RT-Thread的應(yīng)用與實(shí)踐 線下培訓(xùn)

    5月25號,RT-Thread將攜手恩智浦共同舉辦基于恩智浦MCXN系列MCU結(jié)合RT-Thread的應(yīng)用與實(shí)踐線下培訓(xùn)。我們將為大家?guī)矶髦瞧諱CXN系列MCU的詳細(xì)介紹、精彩Demo展示、以及
    的頭像 發(fā)表于 05-13 18:19 ?877次閱讀
    【上?!?月25日-基于恩智浦MCX N系列MCU<b class='flag-5'>結(jié)合</b><b class='flag-5'>RT-Thread</b>的應(yīng)用與實(shí)踐 線下培訓(xùn)

    新書發(fā)布——《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù):RT-Thread與ARM編程實(shí)踐》

    RT-Thread又一本新書《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)——基于RT-Thread與ARM的編程實(shí)踐》發(fā)布,標(biāo)志著RT-Thread生態(tài)和實(shí)時(shí)操作
    的頭像 發(fā)表于 05-11 08:35 ?805次閱讀
    新書發(fā)布——《實(shí)時(shí)<b class='flag-5'>操作</b>系統(tǒng)應(yīng)用技術(shù):<b class='flag-5'>RT-Thread</b>與ARM編程實(shí)踐》

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-16 08:35 ?424次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    RT-Thread榮獲“最具影響力IoT操作系統(tǒng)獎(jiǎng)”

    2024年3月30日,第十一屆開源操作系統(tǒng)年度技術(shù)會議(OS2ATC)在西郊賓館舉辦!RT-Thread作為國內(nèi)領(lǐng)先的開源操作系統(tǒng)斬獲了“最具影響力IoT操作系統(tǒng)獎(jiǎng)”。該獎(jiǎng)項(xiàng)是對
    的頭像 發(fā)表于 04-12 08:37 ?436次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲“最具影響力IoT<b class='flag-5'>操作</b>系統(tǒng)獎(jiǎng)”

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深嵌入式軟件工程師農(nóng)曉明老師為您講
    的頭像 發(fā)表于 03-27 11:36 ?827次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 03-27 08:34 ?537次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    請問rt-thread可以同時(shí)開啟usb虛擬串口和sd模擬U盤嗎?

    rt-thread可不可以同時(shí)開啟usb虛擬串口和sd模擬U盤,求問
    發(fā)表于 03-05 08:06

    RT-Thread SDIO驅(qū)動(dòng)SDget scr返回失敗是什么原因呢?

    STM32F429芯片,rt-thread標(biāo)準(zhǔn)版,添加了SD驅(qū)動(dòng),調(diào)試時(shí)發(fā)現(xiàn)在mmcsd_get_scr時(shí)返回-1,打印錯(cuò)誤日志發(fā)現(xiàn)是cmd.err=-1,這是什么原因呢? 打印信
    發(fā)表于 02-23 06:05