当前位置: 首页 > article >正文

高效开发,从暗藏玄机的文件系统开始—合宙Air201资产定位模组LuatOS

超低功耗、精准定位、快速量产——迷你小巧的合宙Air201,正给越来越多的行业客户带来高效开发体验。

4G-Cat.1模组的文件系统关乎数据传输速度、存储效率,以及数据安全性等等诸多因素,在应用开发中极为重要。

本期,我们来学习合宙Air201的实用示例——文件系统的使用

 Air201文件系统的使用 

图片

合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。

内部集成高效、简单、可靠的LuatOS语言,旨在帮助客户降低开发难度,降低研发成本,以及打造超小超低功耗的精品产品。

合宙Air201最新资料下载链接:
www.hezhoudingwei.com

本教程教你使用Air201文件系统,可根据实际情况灵活运用。我们先来简单了解文件系统相关的基础知识:

文件系统是为了解决什么问题产生的?

4G-Cat.1通信模组的文件系统是为了支持数据存储与管理、支持远程管理和配置,以及保障数据安全性而产生的。

常见的文件系统有哪些?

在嵌入式系统和物联网设备中,常见的文件系统类型包括FAT、YAFFS、JFFS2,以及专为嵌入式系统设计的文件系统如SquashFS和LittleFS等。

文末阅读原文,了解不同文件系统类型在应用中的优缺点。

合宙Air201选择的文件系统有何特点?

合宙选择LittleFS作为主文件系统,并通过VFS扩展支持其他文件系统。

LittleFS文件系统是由ARM公司(特别是其mbedOS团队)开发的一款专为微控制器(MCU)和物联网(IoT)设备设计的轻量级、健壮的文件系统。

它针对资源受限的环境进行了优化,具有轻量高效、闪存友好、易用可移植、支持高度定制等特色优势。

合宙Air201的文件系统分区存储方式,使用Block存储策略:

将文件分割成多个数据块(Blocks),每个数据块可以独立存储和处理,这样允许多个数据块同时读写,从而提高数据传输速度和存储效率。

默认分配的文件系统(lfs)大小为512KB,在代码中也可通过 fs.fsstat("/") 实时获取文件系统的空间大小。

图片

接下来,开始讲解Air201文件系统的使用示例:

1. 搭建环境

新同学建议先看前期的基础知识相关教程,更有助于理解和操作。

此时可以在LuaTools项目管理中新建一个项目,重新选择底层固件和脚本;或者在原有项目的基础上,不更换固件,将原来的脚本删除,添加为demo/fs的脚本。

图片

1.1 硬件准备:

图片

  • 合宙Air201 PCBA

  • 带有数据通信功能的数据线

  • Win10以上PC

1.2 软件准备:

  • LuaTools调试工具:
    https://doc.openluat.com/wiki/52?wiki_page_id=5071

  • 最新固件:
    https://gitee.com/openLuat/LuatOS-Air201/tree/master/core

  • 最新脚本:
    https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/fs


2. 编写代码

2.1 代码基本配置

我们在编写一个新脚本的时候,首先应该做的操作就是把框架搭好,有一个合理的框架才能编写出完美的代码。

以下代码对脚本做了命名、添加使用库、创建任务线程等操作:

图片

2.2 添加看门狗

注意:我们在进行文件系统的操作时,可能会出现空间不足死机的情况。

我们可以提前添加看门狗,来避免程序卡死:

图片

2.3 读写操作

以下代码对文件进行了打开读取内容和写入内容的操作,建议仔细阅读,可帮助我们更好地了解和掌握文件系统的读写操作。

图片

运行这段代码,得到的结果如下图打印:

图片

2.4 文件seek操作

下面为大家演示seek的操作:

图片

如果没有加入seek的操作,这段代码运行结果应该是"ABCDEFG12345hello",但是因为seek将文件指针移动,导致结果输出不同。

图片

3. 课后习题

好,这里留给你一个课后习题,动手试试吧:

- 本期课后习题 -

如何将TCP得到的数据存到文件系统呢?

今天的分享就到这里了
更多实用示例带你开启应用之门
下一期见~

Air201最新资料详见:
www.hezhoudingwei.com  

图片

你有哪些开发故事分享呢

快来文末留言或加交流群吧


http://www.kler.cn/a/310216.html

相关文章:

  • Labelme标注数据的一些操作
  • Elasticsearch中什么是倒排索引?
  • docker基础:搭建centos7(详见B站泷羽sec)
  • 第16章 SELECT 底层执行原理
  • 关于Oracle数据库密码复杂度检查的一些概念
  • 【安全测试】sqlmap工具(sql注入)学习
  • 产品经理学习笔记
  • scanf()函数的介绍及基础用法
  • 孙怡带你深度学习(1)--神经网络
  • wordpress主题摘要调用显示错误解决办法
  • 计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 无人机光电吊舱的技术!!
  • XML_Tomcat_HTTP
  • 如何设计可靠的 IIoT 架构
  • 大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践
  • 【.NET全栈】ASP.NET实战—基于ASP.NET的求职系统设计与实现
  • uni-app开发流程(开发、预览、构建和发布过程)
  • 基于SSM的“新闻发布及管理系统”的设计与实现(源码+数据库+文档)
  • 【可测试性实践】C++单元测试:gtest gmock
  • MySQL示例:创建数据库与表
  • BOM编程
  • 基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
  • python植物大战僵尸项目源码【免费】
  • 国内版Microsoft Teams 基础版部署方案
  • 小商品市场配电系统安全用电解决方案
  • 创客中国AIGC专题赛冠军天鹜科技:AI蛋白质设计引领者