AWorksLP例程介绍(MR6450)—— SD卡
简介
SD卡(Secure Digital Card)是一种安全数字卡。它是在MMC基础上发展起来的、以半导体闪存为基础的新一代存储器件。由于其体积小、数据传输速度快、可热插拔等优点,被广泛应用于便携式和嵌入式设备中。
FatFs 是一种适用于小型嵌入式系统的通用FAT 文件系统。它完全用ANSIC语言编写,完全独立于底层I/O。因此,它可以轻松移植到不同且资源有限的微控制器。可见,FatFs是嵌入式开发中管理SD卡中文件时最常用的文件系统。
FatFs文件系统已集成到AWorksLP中,支持使用该文件系统来管理SD卡文件。
相关API
AWorksLP功能列表:
部分接口参数属性表:
项目编译
环境搭建、Eclipse工程编译与配置、开发板仿真与调试请参考
《AWorksLP SDK快速入门(MR6450)——开箱体验》。
套路介绍
src目录下的demo_sdcard_fs.c例程代码的第149到157行使用了一个while循环,如代码1所示。循环中,每500ms打开一次SD卡设备,通过检查返回值来检测是否插入了SD卡。如果检测到返回值大于等于0,则表明插入了SD卡。
需要注意的是,打开SD卡的设备名称(demo_sdcard_fs.c第67行宏默认定义为“__BLK_NAME”为“/dev/sdcardB0”)需要与实际检测到的SD卡设备名称一致。在AWorksLP中,SD卡默认是动态监控的。当插入SD卡时,串口上会打印设备信息,如图1所示。串口显示SD卡设备名称“sdcardA0”,所以我们需要将“__BLK_NAME”的宏定义修改为“/dev/sdcardA0”。
代码1 SD卡设备检测流程
图1 串口打印SD卡设备名称
代码2中159到172行的功能是使用aw_make_fs函数接口将SD卡格式化为FatFs文件系统。第159 行中的宏定义默认为#if 0。在本例程中,为了演示此步骤,将宏更改为#if 1。
需要注意的是,格式化会清除卡中的数据。格式化前,需要确保卡内没有重要数据。

代码2 SD卡格式化
格式化完成后,代码3中的第174行使用aw_mkdir函数创建一个名为“/sd”的目录,将该目录作为SD卡的挂载点。创建的目录的文件模式是文件所有者、用户组和其他用户可以对该目录进行读写。第181行通过aw_mount函数将SD卡挂载到“/sd”目录中。需要注意的是,挂载前需要确保该目录存在。如果SD卡挂载到不存在的目录,则会挂载失败。挂载的文件系统也需要与SD卡上格式化的文件系统格式一致,否则挂载也会失败。
代码3 安装SD卡
最后的例程将调用第189行的__fs_file_rw函数,函数体如代码4所示。在该函数中,将在“/sd”目录中创建一个名为“aworks_sd_test.txt”的测试文件。通过读写文件,读写完成后会对数据进行验证。如果验证通过,则表明SD卡读写测试成功。至此,SD卡例程已经执行完毕,整个过程中会打印串口信息,如图2所示。
代码4 __fs_file_rw读写测试函数
图2 SD卡例程执行成功的串口信息
扩展介绍
上一节提到,AWorksLP SD卡默认是动态检测设备,即支持热插拔。这是通过检测引脚实现的。在实际应用中,可能需要将检测管脚复用于其他功能以节省I/O资源。在这种情况下,可以将SD卡定义为静态设备,以便检测引脚可以重复用于其他功能。
在AWorksLP 中,对于SD 卡的动态设备,图形配置界面中没有可用的SD 卡设备。您只需选择对应的SDIO控制器即可。上述例程中,SD卡是通过sdio1设备进行控制的,因此只需确保sdio1设备已使能即可,如图3所示。
图3 确认动态设备下选择控制器
静态注册SD卡设备时,需要执行以下操作:
在pins.dts ({board}\\dts\\pins.dts) 文件中注释CD 引脚配置。修改完成后如代码5所示;
在board.dts文件中添加SD卡设备,如代码5所示。
代码5 评论引脚
代码6 添加SD卡设备
修改完成后,重新打开例程编译图形配置界面。在Board EPC6450-AWI/Devices/External Memories选项下可以看到板下新添加的sdcardA设备,如图4所示。启用此项,保存退出,重新编译工程并执行固件。套路现象和上一节描述的一模一样。
图4 选择SD卡设备
注意:静态SD卡设备下的例程执行需要在固件运行之前插入SD卡。

ZLG官方商城:https://sale.zlg.cn/
ZLG开发者社区:https://z.zlg.cn/
刷机常用的Rec模式究竟是什么?
擦除缓存分区:清除系统缓存
install zip from SDcard:从SDcard 安装zip 升级包
备份和恢复:备份和恢复系统
安装和存储:安装和存储选项
高级:高级设置
备份与恢复功能详解
备份:备份当前系统
恢复:恢复之前的系统
高级恢复:高级恢复选项
format system:格式化系统(最好在刷机前执行)
格式数据:格式数据
format sdcard:格式化内部存储卡(你会后悔这样做的)
挂载USB 存储:在恢复模式下启用USB 大容量存储功能
Wipe Battery Stats: 清除电池调试记录数据
修复权限:修复Root权限
标题:挂载sd卡是什么意思?出错了怎么办?;挂载存储是什么意思
链接:https://yyuanw.com/news/rj/54388.html
版权:文章转载自网络,如有侵权,请联系删除!
用户评论
我经常遇到这种情况!试过很多方法,还是总是挂载失败哎…不知道是不是我的SD卡问题 🤔 希望能够有个简单易懂的解决方案。
有13位网友表示赞同!
感觉标题说的太官方了!我想问问大神们,如果挂载失败是什么原因造成的啊? 我现在手机和电脑都无法识别该SD卡 😭
有19位网友表示赞同!
我刚开始接触这玩意儿,"挂载sd卡是什么意思" 这个说法我真的完全不明白了… 是不是可以换个更容易理解的解释啊? 希望有人能帮我理清思路!
有9位网友表示赞同!
原来挂载存储指的是把SD卡当成硬盘使用啊。以前总是以为是读写操作的区别 🧐 不过我偶尔也会遇到挂载失败的情况,看了这篇文章希望能找到解决方法 🙏 。
有11位网友表示赞同!
说的很清楚了!终于明白sd卡挂载是什么概念了! 我之前一直用USB来传输文件,现在看来直接把SD卡挂载起来是不是更方便啊?
有7位网友表示赞同!
真是太感谢啦! 这篇文章解开了我的一个疑惑!我之前尝试过多种方法,但始终找不到正确的步骤。今天终于成功挂载了SD卡,这下可以轻松地转移文件资料啦!
有16位网友表示赞同!
这篇文章虽然解释了不少知识点,但我还是感觉有点绕… 能不能用更直观的例子来讲解一下?比如我们可以举一些日常生活中的应用场景呢?
有7位网友表示赞同!
挂载sd卡的功能确实很实用! 我可以用它来释放手机存储空间,还能直接在我的电脑上使用SD卡里的文件,太方便了~ 但有时也会出现驱动问题导致无法正常挂载,希望以后能找到解决方法.
有8位网友表示赞同!
文章写的很棒!我之前一直以为手机插SD卡就是为了拍照和存视频,没想到原来还可以做这么多事情,比如直接在电脑上编辑SD卡里的文件。让我重新认识了SD卡的功能!
有19位网友表示赞同!
挂载sd卡的步骤似乎很简单,但我总是操作过程中会出错误? 可能是我的设备不支持这种情况吧 😔 希望看到一些常见问题的解答和解决方法。
有7位网友表示赞同!
我觉得标题说的太笼统了,"什么是挂载存储" 这四个字也太抽象了吧!可以简单概括一下SD卡挂载的作用吗?例如它能让我们做什么或者有什么好处呢?
有14位网友表示赞同!
我之前遇到过挂载sd卡的问题,一直找不到解决办法,最后还是打电话给客服,费了一定的时间和精力。希望这篇文章里有一些实用的小技巧,可以帮助大家避免类似的困扰。
有5位网友表示赞同!
终于找到了解释"挂载存储" 的文章! 以前一直以为就是简单地把SD卡插进设备里。原来还有那么多讲究啊! 我要去好好学习一下挂载sd卡的操作步骤和常见的错误解决方法了!
有5位网友表示赞同!
我用安卓手机,有时候会遇到挂载失败的情况,导致无法读写文件。希望这篇文章能提供一些针对安卓系统的解决方案。
有13位网友表示赞同!
我感觉SD卡挂载功能越来越重要了,不仅可以扩充存储空间,还能把不同设备的数据共享起来,真是太方便啦! 但我希望SD卡的容量能够更大点...
有9位网友表示赞同!
这篇文章让我对挂载sd卡的概念有了更深入的理解。其实很多问题都可以通过阅读官方文档或者技术网站找到答案,只是要注意查找关键词和相关信息而已。
有9位网友表示赞同!
SD卡挂载功能的确很方便,但如果操作不当可能会导致数据损坏,这一点真的很危险! 希望大家在使用过程中一定要注意备份重要文件并进行仔细操作。
有10位网友表示赞同!
看来挂载sd卡是一个很有用的技巧! 我以后学习的时候可以用它来储存和管理我的笔记文件,再也不用担心电脑存储空间紧张了!
有20位网友表示赞同!