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

news2024/9/19 7:38:00

超低功耗、精准定位、快速量产——迷你小巧的合宙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.coloradmin.cn/o/2145801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微型导轨在3D打印设备中的应用与实践

微型导轨的应用范围非常广泛,尤其在追求高精度、高效率及低噪音的现代打印技术中扮演着重要角色。微型导轨在3D打印机等精密设备中是常用元件,以提高打印质量和效率。 在打印机中,无论是喷墨式、激光式还是3D打印机,都需要精确的打…

JDBC编程详细总结

一、JDBC编程 JDBC编程有标准步骤(八股文) 注册驱动 将sql语句的运行环境加载到JVM 连接数据库 获得执行SQL的对象 执行SQL语句,获得结果 关流 1、 注册驱动 Class.forName("com.mysql.jdbc.Driver");//5.7版本 加载驱动 Class.forName("com.mysql.cj.jdb…

为什么收录是谷歌seo的底子?

收录是谷歌SEO的基础,因为它决定了网站页面能否被用户找到。只有被谷歌收录的页面,才有机会在搜索结果中出现。如果页面没有被收录,谷歌根本就不知道它的存在,这意味着即使内容再好、关键词再精准,也不会有任何排名 被…

fo-dicom,第一个基于.NET Standard 2.0 开发的DICOM开源库

1. 简介: fo-dicom是一个基于C#开发的库,用于处理DICOM(Digital Imaging and Communications in Medicine)格式的数据。DICOM是一种用于医学影像和相关信息的标准格式,广泛应用于医学领域。fo-dicom提供了多平台支持&…

华为OD机试 - 报数问题 - 约瑟夫环(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

浸没边界法精度相关的论文的阅读笔记

Convergence proof of the velocity field for a stokes flow immersed boundary method https://doi.org/10.1002/cpa.20233 研究对象的选取 他这里为什么能够选取一个周期性边界的流场啊?为什么不是狄利克雷边界或者诺伊曼边界? 方形流场的边界值 …

keil里sprintf的用法

代码&#xff1a; #include<stdio.h> int main(void) {float i-123.45;char zifu[10];sprintf(zifu,"%f",i);while(1);return 0; } 仿真结果 代码&#xff1a; #include<stdio.h> int main(void) {float i123.45;char zifu[10];sprintf(zifu,"%f…

ReKep——李飞飞团队提出的新一代机器人操作方法:基于视觉语言模型和关键点约束

前言 由于工厂、车厂的任务需求场景非常明确&#xff0c;加之自今年年初以来&#xff0c;我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建)&#xff0c;使得近期我司七月接到了不少来自车厂/工厂的订单&#xff0c;比如柔性上料、物料分拣、…

Linux嵌入式相机 — 项目总结

main函数执行流程 1、初始化触摸屏 Touch_screen_Init();struct tsdev *ts NULL; ts ts_setup(NULL, 0); //以阻塞打开2、初始化 LCD LCD_Init(void); 通过 ioctl 函数获取 LCD 的固定参数、可变参数&#xff0c;得到分辨率、bpp、一行的长度&#xff08;以字节为单位&a…

如何创建和编辑抖音百科词条,不会的找我们代创建!

如何创建和编辑抖音百科词条&#xff0c;不会的找我们代创建&#xff01; 如何创建抖音百科个人词条&#xff0c;个人抖音百科的创建 #抖音百科 #百科 #推广 做过百度百科的老板们注意了&#xff0c;等一下别划走。 2024 年品宣新风口出现了&#xff0c;抖音百科正在替代百度…

Unity Behavior Designe 可视化有限状态机(Composites篇)

对有限状态机这一个概念你可以看看这两篇文章&#xff1a; Unity 一个比较适合学习的FSM状态机(汉化和功能简述)-CSDN博客 C# x Unity面向对象补全计划 设计模式 之 实现一个简单的有限状态机-CSDN博客 当时我对代码下的有限状态机只有一个想法&#xff0c;设计巧妙&#…

数据结构与算法学习day21-回溯法

一、组合 1.题目 . - 力扣&#xff08;LeetCode&#xff09; 2思路 把组合问题抽象成树形结构&#xff08;N叉树&#xff09; 每次从集合中选取元素&#xff0c;可选择的范围随着选择的进行而收缩&#xff0c;调整可选择的范围。 图中可以发现n相当于树的宽度&#xff0c…

Linux(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑)&#xff0c;然后C盘、D盘。 Linux系统的根目录是/&#xff0c;我们可以使用cd /进入根目录&#xff0c;然后使…

客户端/服务器的简易实现

目录 一,网络编程套接字 二,UDP/TCP的区别(​编辑) 三,UDP API使用 四,TCP API使用 一,网络编程套接字 socket socket(操作系统给应用程序的API,起了一个名字,就成为socket API) socket API提供了两套API分别为UDP和TCP: 二,UDP/TCP的区别() TCP有链接,可靠传输,面向字…

图解view_transformation(可视化BEV视角转换的过程)

BEV视图生成的流程总结&#xff1a; &#xff08;1&#xff09;生成视锥 &#xff08;2&#xff09;将视锥由uv坐标系转到EGO坐标系 &#xff08;3&#xff09;视锥体素化 &#xff08;4&#xff09;bev_pool &#xff08;1&#xff09;生成视锥 长宽数量: 模型输入图片尺寸//…

Winform登录实现及工具栏切换

1、登录实现 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace LoginApp {public par…

峟思传感器在水库坝体渗漏防治措施中的应用

在水库工程管理中&#xff0c;坝体渗漏是一个不容忽视的问题&#xff0c;它不仅影响水库的正常运行&#xff0c;还可能对下游地区造成严重的安全隐患。因此&#xff0c;采取有效的渗漏防治措施至关重要。在这一过程中&#xff0c;传感器作为关键的技术手段&#xff0c;发挥着不…

react + antDesignPro 企业微信扫码登录

效果 实现步骤 1、项目中document.ejs文件引入企微js链接 注意&#xff1a;技术栈是使用的react antDesignPro&#xff0c;不同的技术栈有不同的入口文件&#xff08;如vue在html文件引入&#xff09; <script src"https://wwcdn.weixin.qq.com/node/wework/wwopen/j…

02 ETH

以太坊与比特币有什么不同&#xff1f; 以太坊立足比特币创新之上&#xff0c;于 2015 年启动&#xff0c;两者之间有一些显著不同。 比特币就仅仅是比特币&#xff1b;以太坊包括以太币&#xff0c;以太币才是和比特币对等的存在。以太坊是可编程的&#xff0c;所以你可以在…

Mybatis+Druid+MybatisPlus多数据源配置

MybatisDruidMybatisPlus多数据源配置 平常我们使用的是 properties 或者 yaml 来配置数据库的地址、用户名、密码等 但是这样只能配置一个数据源 现在我们想在一个项目里面配置多个数据源&#xff0c;那么我们就需要配置自己的配置类 配置类和配置文件 Mybatismysqldruid配置…