0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【试用报告】STM32与RT-Thread的完美结合:SD卡操作的顺畅体验!

电子发烧友论坛 来源:未知 2023-07-11 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本篇将介绍——如何在正点原子STM32探索者V3开发板上使用RT-ThreadSDIO驱动和FATFS文件系统组件实现SD卡上的文件读写。


开始本篇实验前,需要搭建RT-Thread开发环境,可以参考我之前的帖子:【正点原子STM32探索者V3开发板体验】体验RT-Thread 5.0.0版本


在正点原子STM32探索者V3开发板上使用RT-Thread驱动SD卡实现文件读写只需要三步:


  • 配置FATFS和SDIO功能

  • 编译项目代码

  • 烧录程序到开发板


对,你没看错,不用写代码,只需要改改配置,编译、烧录、运行就可以了!


一、准备工作


1.1 准备好开发板和SD卡

开始本篇实验之前,需要准备一个MicroSD卡,我这里准备的是一个32G的闪迪卡:



1.2 创建RT-Thread项目

和上一篇文章类似,首先打开RT-Thread Env工具, 并跳转到rt-thread源码的bsp/stm32/stm32f407-atk-explorer子目录。


然后,使用如下scons命令,创建RT-Thtread项目:

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

(左右移动查看全部内容)


如下图所示:



注:如果已有RT-Thread项目,则可以跳过此步骤。


该命令执行完成后,就可以看到创建的目录和文件了:



其中,rtt_sdio.uvprojx即为刚刚scons命令生成的Keil项目文件。


二、配置RT-Thread


PS:这个以RT-Thread Env工具为例,对RT-Thread进行配置,如果是使用RT-Thread Studio创建项目,进行配置也是类似的。


2.1 打开文件系统相关配置

RT-Thread Env命令行窗口跳转到项目所在目录后,执行meuconfig命令并回车,打开配置界面:



常用操作说明:

  • 上下键,移动光标

  • 回车键,进入配置项

  • ESC键,退出当前配置,返回上一级配置

  • 空格键,选中或取消光标所在配置项

  • “/”键,搜索界面


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



PS:该配置项选(BSP_USING_FS)中后,会自动选中RT_USING_DFS和RT_USING_DFS_ROMFS配置项。


2.2 打开SD卡相关配置

选中 Hardware Drivers Config -> Onboard Periopheral Drivers -> Enable File System (BSP_USING_FS)配置项后,继续回车:



选中Enable SDCARD配置项目,如上图所示。


然后左右移动底部光标到Save菜单上,回车保存,提示保存为.config:



回车后,弹出提示说配置已写入到.config了:



敲回车,界面将会返回配置界面。


此时,我们的对项目配置的修改已经保存到.config文件了,我们只需要连续按ESC键即可退出配置界面。


2.3 打开RTC配置

类似的,找到并打开如下配置项:



该配置项用于打开RTC功能,以实现计时功能(PS:文件系统需要计时功能)。


2.4 重新生成Keil项目文件

由于刚刚我们修改了配置项,开启了文件系统和SD卡相关的配置项目,需要重新生成Keil项目文件,才能正常编译成功。


在当前项目目录中,使用如下命令,重新生成Keil项目文件:

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

(左右移动查看全部内容)


如下图所示:




三、编译、烧录、运行


3.1 编译项目

由于我安装的是Keil 5.37,需要先切换默认便器才可以正常编译通过。


切换默认编译器,具体操作为:



在弹出的Options for Target - rt-thread界面中,下拉ARM Compiler,选择Use default compiler version 6,即使用默认的版本6编译器;


点击底部的OK,确认。


修改完默认编译器后,点击编译图标(或者按快捷键F7进行编译),将会开始编译:



编译完成后,Build Output将会看到:



有一个Error,重新编译一下,可以直接看得清楚,不用往回找是哪个文件编译报错:



报错信息说:

  • board/ports/drv_filesystem.c文件中,声明变量romfs_root为static,

  • rt-thread/components/dfs/filesystems/romfs\dfs_romfs.h文件中,声明变量romfs_root为非static,


前后声明不一致,导致报错,解决方法很简单, 将drv_filesystem.c中的static去掉即可 。


修改后,再次重新编译,就可以编译通过了:



3.2 下载程序

编译成功后,我们需要将生成的二进制程序代码文件烧录到开发板上。


开始测试之前,我们需要先将MicroSD卡插入开发板(建议断电操作,PC端先断开):



插入SD卡后,检查开发板和PC之间的USB线和JTAG调试器连接。


由于我使用的是JLink调试器,因此还需要修改项目的调试器设置(Keil项目默认的调试器设置是ULINK)。


修改Keil项目的调试设置,具体操作如下(这里以JLink为例):





这里,我修改了Port为SW,代表使用SWD接口(JTAG也可以),Max表示最大时钟信号频率,修改为50M下载速度更快。


看到成功识别了 ARM CoreSight JTAG-DP,说明JLINK调试器已经成功识别到主控芯片了。



最后点击确定,回到Options for Target - Blinky界面,点击OK,保存设置;


以上准备就绪后,在Keil中,点击Download按钮(或者F8快捷键),开始下载程序到开发板:



3.3 运行程序

烧录完成后,连接串口,输入help命令回车可以看到:



可以看到文件系统相关的操作命令:

  • mkfs,可以用于创建文件系统

  • mount,可以用于挂载文件系统

  • umount,可以用于卸载文件系统


还有文件相关的操作命令:

  • cp,拷贝文件

  • mv,移动或重命名文件

  • cat,显示文件内容

  • echo,可用于创建或写入文件


四、在msh中操作SD卡


烧录完成后,我们就可以在RT-Thread的msh环境中愉快地操作SD卡了。


4.1 查看设备

输入list device命令并回车,可以查看设备:



这里sd0为分区,后续会对他进行操作。


4.2 格式化SD卡

初次使用的SD卡,可能没有文件系统,或者文件系统不是FAT格式的,需要将SD卡格式化为FAT文件系统,后续才能挂载成功。


注意:格式化操作会导致SD卡上已有数据全部丢失;因此,在执行格式化操作前,请确认SD卡上没有重要数据,或者你已对SD卡上的重要数据进行了备份。


mkfs命令用法:



接下来,我们可以通过mkfs命令对SD卡进行格式化:



mkfs执行会持续一段时间,请耐心等待(具体因不同SD卡容量和速度等级而异,我的32GB卡消耗了几秒钟)。


4.3 挂载文件系统

接下来,我们可以在串口终端内使用mount命令将SD卡挂载到根目录:



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



另外需要注意的是,fstype参数使用的是elm(这里的elm实际就是FATFS)。


4.4 简单的文件读写测试

前面提到echo命令比较特殊,可以写文件,接下来使用echo写文件,cat读文件,ls查看文件:



这里使用了ls、echo、cat命令,进行了文件读写操作。


4.5 简单的目录操作测试

接下来,进行简单的目录操作演示。



这里首先使用了pwd查看当前工作目录,然后演示了ls、mkdir、cd命令;


如果你是对RT-Thread了解不多的朋友,看到这里可能会非常惊奇——在一个可以运行在单片机RTOS上,居然可以这么方便的进行文件系统、目录、文件操作。


五、本篇小结


可以看到,在基于RT-Thread系统的项目中,我们没有添加任何代码,就可以实现SD卡进行文件系统和件相关操作。这是因为RT-Thread系统正点原子STM32探索者V3开发板的BSP中已经支持了SDIO功能,另外RT-Thread系统本身包含了SDIO驱动框架、FATFS支持,以及相关的命令。因此,我们可以在shell中非常方便的进行文件系统相关操作,以及文件相关操作。


参考链接

  • 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 发布声明:https://mp.weixin.qq.com/s/x9Sb3hc_GxV5VYfagGKhcA

  • RT-Thread RTC设备文档:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc

  • RT-Thread 虚拟文件系统:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem





声明本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


更多热点文章阅读

  • 基于Cortex-M3内核的32位微控制器,STM32项目实战分享!

  • 基于32位RISC-V设计的互联型微控制器,沁恒微CH32V307开发样例

  • RK3568!四核64位ARMv8.2A架构,汇聚编译源码及实战样例

  • 尺寸仅有21mm*51mm,板边采用邮票孔设计,合宙 Air105 核心板开发总结

  • 嵌入式Linux开发秘籍!工程师大佬亲历分享项目样例


原文标题:【试用报告】STM32与RT-Thread的完美结合:SD卡操作的顺畅体验!

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:【试用报告】STM32与RT-Thread的完美结合:SD卡操作的顺畅体验!

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    学习强国深度报道 RT-Thread“1+X+N”战略,国产操作系统赋能高端制造引关注|媒体视角

    近日,国产嵌入式操作系统领军企业RT-Thread睿赛德在工博会发布的“1+X+N”战略体系,获得了国家级权威媒体平台“学习强国”的重点报道。该报道从产业高度深入剖析了RT-Thread睿赛德以自主
    的头像 发表于 09-29 17:37 904次阅读
    学习强国深度报道 <b class='flag-5'>RT-Thread</b>“1+X+N”战略,国产<b class='flag-5'>操作</b>系统赋能高端制造引关注|媒体视角

    使用RT-Thread studio 开发RT-Thread Nano项目的时候 串口的驱动是要自己写吗?

    刚入坑。使用RT-Thread studio 开发RT-Thread 标准板项目的时候直接使用里边的串口uart_dev=rt_device_find(“uart5”);然后操作设备,
    发表于 09-26 08:14

    STM32cubeMX生成配置rt-thread引用问题求解

    如题,本人小白,刚接触rt-threadSTM32F1/4简便配置起见利用cubeMX自动生成,测试几次后直接蒙了,不知道哪些文件是rt-thread项目必须的,网上说法也五花八门,说代码屏蔽某些
    发表于 09-12 07:21

    在Ubuntu上开发基于先楫MCU的RT-Thread应用指南

    1、前言RT-ThreadEnv是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menu
    的头像 发表于 08-29 12:22 1230次阅读
    在Ubuntu上开发基于先楫MCU的<b class='flag-5'>RT-Thread</b>应用指南

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了一个全面、系统的RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微
    的头像 发表于 08-24 10:05 685次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时<b class='flag-5'>操作</b>系统<b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

    RT-Thread 遇上 Rust:安全内核 RusT-Thread 的诞生

    大家好,我们是中国科学技术大学操作系统原理与设计(H)课oooooS小组。这个项目是我们的课程大作业:参考RT-Thread架构,使用Rust搭建一个原生的嵌入式操作系统内核。初识Rust是因为xk
    的头像 发表于 08-02 11:03 3207次阅读
    <b class='flag-5'>RT-Thread</b> 遇上 Rust:安全内核 RusT-<b class='flag-5'>Thread</b> 的诞生

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2431次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    从驱动到应用:RT-Thread环境下的SDIO开发指南

    目录硬件介绍搭建开发环境配置SDIO驱动挂载文件系统文件读写测试演示视频源码工程总结本文主要讲述RT-Thread环境下的SDIO开发指南,基于MCXN947开发板。1硬件介绍本次测评的是SDIO
    的头像 发表于 06-28 09:02 2475次阅读
    从驱动到应用:<b class='flag-5'>RT-Thread</b>环境下的SDIO开发指南

    玄铁加入RT-Thread 高级会员合作伙伴 | 战略新篇

    今天起,玄铁XuanTie正式成为RT-Thread高级会员合作伙伴。此次合作标志着双方将在嵌入式操作系统创新、RISC-V生态构建及行业应用落地等领域展开深度协同,加速推动开源技术的产业化进程
    的头像 发表于 06-23 20:22 871次阅读
    玄铁加入<b class='flag-5'>RT-Thread</b> 高级会员合作伙伴 | 战略新篇

    2025 RT-Thread全球技术大会议程正式发布!

    。2024RT-Thread全球技术大会,由开源操作系统RT-Thread发起,并联合国内外领先企业的重磅嘉宾,携手国内外顶尖企业专家与超3万名线上参与者,共议边缘计算、嵌入式
    的头像 发表于 05-27 19:28 1072次阅读
    2025 <b class='flag-5'>RT-Thread</b>全球技术大会议程正式发布!

    【直播预告】《实时操作系统应用技术—基于RT-Thread与ARM的编程实践》教学脉络及资源简介

    直播预告直播主题:《实时操作系统应用技术—基于RT-Thread与ARM的编程实践》教学脉络及资源简介开放时间:2025年5月29日(周四)20:00主讲老师:王宜怀课程类型:视频直播观看平台
    的头像 发表于 05-26 17:50 1099次阅读
    【直播预告】《实时<b class='flag-5'>操作</b>系统应用技术—基于<b class='flag-5'>RT-Thread</b>与ARM的编程实践》教学脉络及资源简介

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    的开源实时操作系统,正持续优化社区协作流程,现面向全球开发者招募审核团(ReviewTeam)成员,共同维护代码质量,推动RT-Thread生态繁荣发展!什么是RT
    的头像 发表于 05-21 18:02 1065次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源RTOS社区治理与演进

    中新社:RT-Thread携“睿擎平台”亮相工博会 | 媒体视角

    4月23日,成都国际工业博览会拉开帷幕。中国新闻网专访RT-Thread睿赛德,以“国产操作系统再亮剑,睿擎平台开启工业新时代”为题,报道了“睿擎工业开发平台”在工博会上首发亮相。中国新闻网专访
    的头像 发表于 04-24 11:16 1106次阅读
    中新社:<b class='flag-5'>RT-Thread</b>携“睿擎平台”亮相工博会 | 媒体视角

    RT-Thread嵌入式操作系统专业培训班来上海啦!

    RT-Thread官方将在上海(RT-Thread大本营)发起为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时
    的头像 发表于 02-27 17:27 825次阅读
    <b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作</b>系统专业培训班来上海啦!

    如何将RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE上呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有所帮助。
    的头像 发表于 02-13 10:37 2440次阅读
    如何将<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE上