首页 > 其他分享 >基于RT-Thread快速上手SD NAND 虚拟文件系统

基于RT-Thread快速上手SD NAND 虚拟文件系统

时间:2023-12-15 19:06:39浏览次数:31  
标签:RT 文件 Thread 文件系统 NAND SD

  SD NAND 也称之为贴片式TF卡,贴片式SD卡,采用标准的SDIO接口,兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M,对比128M的SD卡,可以看到贴片SD卡尺寸更小,不要SD卡座,占用更小的PCB面积;也可以节省PCB板层数,2层板即可使用。而且兼容可替代普通TF卡/SD卡,硬件电路软件程序通用。本案例基于RT-Thread物联网操作系统,更是不需要编写任何复杂的驱动代码就可以SD NAND读写操作。

  (文末提供,STM32驱动代码下载连接,需要可以自行下载)

基于RT-Thread快速上手SD NAND 虚拟文件系统_SD卡

基于RT-Thread快速上手SD NAND 虚拟文件系统_SD卡_02

基于RT-Thread快速上手SD NAND 虚拟文件系统_贴片式存储芯片_03

  将SD NAND插入SD卡卡座。首先,新建一个RT-Thread项目工程,这里基于Draco开发板创建。

基于RT-Thread快速上手SD NAND 虚拟文件系统_文件系统_04

  完整的RT-thread项目默认是开启虚拟文件系统组件,RT-Thread DFS 组件的主要功能特点有:

  •   为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。
  •   支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。这里默认开启FatFS.
  •   支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。

基于RT-Thread快速上手SD NAND 虚拟文件系统_SD卡_05

  在 RT-Thread 中,我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的路径上,然后通过这个路径来访问存储设备。在应用程序文件夹下可找到mnt.c源程序。可以看到挂载文件系统的代码如下所示。

基于RT-Thread快速上手SD NAND 虚拟文件系统_RT-Thread_06

  上图通过自动化初始化代码实现文件系统挂载。挂载成功dfs_mount函数返回0.通过调试串口可以看到打印信息。Mount "/dev/sd0" on "/":0 done,说明SD NAND挂载成功。

基于RT-Thread快速上手SD NAND 虚拟文件系统_贴片式存储芯片_07

  读写文件测试:文件系统正常工作后,就可以运行应用示例,在该示例代码中,首先会使用 open() 函数创建一个文件 text.txt,并使用 write() 函数在文件中写入字符串 “RT-Thread Programmer!\n”,然后关闭文件。再次使用 open() 函数打开 text.txt 文件,读出其中的内容并打印出来,最后关闭该文件。

基于RT-Thread快速上手SD NAND 虚拟文件系统_贴片式存储芯片_08

  测试结果:在调试中断输入msh 命令readwrite_sample,即可运行案例。可以看到成功创建了文本,并写入了数据。

基于RT-Thread快速上手SD NAND 虚拟文件系统_SD卡_09

标签:RT,文件,Thread,文件系统,NAND,SD
From: https://blog.51cto.com/u_16359561/8843547

相关文章

  • Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法
    在现代软件开发中,提供清晰全面的 API文档 至关重要。@ApiModel 和 @ApiModelProperty 这样的代码注解在此方面表现出色,通过增强模型及其属性的元数据来丰富文档内容。它们的主要功能是为这些元素命名和描述,使生成的API文档更加明确。@ApiModel 和 @ApiModelProperty 的......
  • Tomcat servelet javax 和 jakarta
    *[GitHub-apache/tomcat-jakartaee-migration:ApacheTomcatmigrationtoolforJakartaEE](https://github.com/apache/tomcat-jakartaee-migration)*[未来可期!但别再傻傻分不清javax和jakarta](https://baijiahao.baidu.com/s?id=1758965939027753195)*[[Solved]The......
  • style中通过import引入样式时,scoped不生效
    通过import引入的外部css文件,这种引入方式是全局的,也会影响其他组件的页面样式<stylelang="scss"scoped>@importurl(../style.scss);</style>此时虽然用了scoped,但是样式还是全局的。造成样式污染的案例:(1)、父页面中引入css文件<stylescoped>@import"~@/assets/sty......
  • vscode调试import文件报错: ModuleNotFoundError No module named 'libs'
    vscode调试python时出现import其他文件夹找不到路径的报错,需要设置正确的workingdirectory(cwd)和PYTHONPATH(env){"version":"0.2.0","configurations":[{"name":"Python:CurrentFile",&quo......
  • 爬虫遇到`abort` method will be deleted later!怎么解决
     在进行网络爬虫过程中,有时候可能会遇到"abort"methodwillbedeletedlater!的问题,这是由于网站的反爬机制或者请求频率过高导致的。本文将介绍一些解决这个问题的方法和技巧。 1.调整请求频率: 通过减少请求的频率,可以降低被网站检测到的概率。可以使用延时或者随机等方式......
  • clickhouse partition 设定分区
    clichouse会对数据分区存放,目的是为了在搜索时提高效率。除此之外,还可以用来维护磁盘使用空间。clickhouse并不适合从数据库按照条件查询删除数据,如果数据太多不定期清除,会把磁盘占满。clickhouse提供了ttl,用作设定数据库表的数据的生命周期,如果到了时间,就会删除数据。如果要删......
  • python读取rtsp流,并消耗
    1.python读取rtsp流,并消耗(用线程)importosimportcv2importgcimporttimeimportthreadingimportnumpyasnpfromPILimportImagetop=100stack=[]#向共享缓冲栈中写入数据:defwrite(stack,cam,top:int)->None:  """  :paramcam:摄像头参数  :para......
  • Python实现RTSP流测试
    本文将详细介绍如何使用Python来测试RTSP流。首先,我们需要了解什么是RTSP。RTSP(RealTimeStreamingProtocol)是一种基于文本的IP协议,主要用于控制实时数据的传输,例如音频或视频。在本文中,我们将使用Python中的OpenCV库来测试RTSP流。一、安装OpenCV库在Python中使用OpenCV库需......
  • Sortable 拖拽排序组件实现原理
    如果想要实现拖拽排序功能,有很多现成的库可以供使用,比如Sortable.js(vuedraggable)、dnd-kit(react-dnd)等可以轻松帮助实现这一功能。本文的目标不是介绍如何使用这些库,而是手动实现一个简单版的Sortable组件。通过本文的阅读,您将深入了解拖拽排序的核心原理。使用模板使用Sor......
  • springcloudalibabada搭建过程中springboot启动卡住起不来 (Started MoonceProviderApp
    如下图一样springcloudAlibaba在创建新模块之后启动新模块没有注册到nacos上,而是直接卡住起不来原因 原因是:引入了错误的web包: 解决办法:引入相应的 spring-boot-starter-web包:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot......