LuatOS-Air二次开发学习

LuatOS简介

在介绍LuatOS-Air之前,先介绍下LuatOS。
LuatOS是合宙自研的嵌入式操作系统。覆盖各类物联网应用场景,可运行于4G Cat.1/MCU/NB-IoT/2G/Wi-Fi/蓝牙等等不同的物联网主控芯片。通过完善的嵌入式操作系统LuatOS,使得物联网主控CPU更容易被用户使用,大幅度降低用户的研发成本和研发周期。

LuatOS从2014年推出至今,一直深受广大用户好评,在多行业多应用领域得到充分验证,功能非常齐全,性能非常稳定。从最开始的单一的LuatOS-Air解决方案发展到LuatOS-Air、LuatOS-SoC、LuatOS-iRTU、LuatOS-AirUI四种解决方案。

LuatOS-Air软件开发简介

LuatOS-Air = Lua + AT。
用户采用lua脚本语言编程就能实现物联网应用开发、驱动开发、UI开发。嵌入式开发人员一般情况下都是从C语言开始入手的,然而C语言的学习难度较大,入门门槛也比较高。很多人因为自身C语言的瓶颈导致很难做出来复杂的产品。
LuatOS-Air将传统的AT命令用Lua语言封装成API,开发者可以通过调用API轻松便捷的实现SOCKET、MQTT、OTA、GPIO、I2C、SPI等功能。并且官方为物联网应用开发、驱动开发、UI开发的各种功能提供了demo,直接刷机就能运行学习,大大减少用户的开发成本。

SDK软件介绍

SDK软件分为两部分=底层固件core+上层Lua脚本(lib+demo)

  • 底层固件core:每次发布版本,底层固件core压缩包中有6个不同功能组合的固件,各版本功能的区别详见core压缩包中的Readme.txt。
  • lib:官方为方便用户进一步做应用开发写的lib库,一般情况下,不需要用户修改,直接引用就行。
  • demo:demo中提供了不同功能的实例代码,任何一个demo都可以直接下载到开发板上跑起来测试。

名词解释

  • core:底层软件、底层固件、内核固件。是基于主芯片封装好接口给Lua脚本调用的.pac软件包,不对外开源。

SDK架构

Cat.1模块底层core中跑的操作系统是FreeRTOS,core在启动过程中,会创建一系列的tash,例如音频、协议栈、串口等。
其中有一个task,用来加载Lua虚拟机,解析运行用户编写的Lua脚本,这个task,我们称之为Lua virtual task(另外在Lua脚本中,利用Lua的携程特性封装了一个sys.taskInit接口,借用了task的概念,实际上并不是真正的task)。
脚本中的所有应用,都运行在Lua virtual machine task中,属于单task应用。

应用脚本运行流程

脚本运行流程是,底层core通过启动Lua task运行Lua虚拟机,Lua虚拟机会找到对应的main.lua逐行嵌套开始解析执行,main.lua最末尾一行代码sys.run()来处理内核或外部的消息。

“外部”消息队列:core中各task间数据通信的一种手段。
“内部”消息队列:在Lua脚本中合宙自定义的一套内部消息驱动机制。

如何获取底层core固件

官方每一个内测通过的底层core固件版本都会更新到合宙Air720U&724U&722U Lua 固件更新说明,并同时发布版本releasenote。

每次发布版本,底层固件core压缩包中有6个不同功能组合的固件,解压后会发现有6个.bin文件+6个.pac文件+1个readme.txt文件,.bin为远程升级文件,.pac为需要下载的固件版本。

Lua上层脚本包跟底层core固件版本并不是同步更新,每一个内测通过的luat上层脚本包会更新。

Luat上层脚本包主要由demo + lib组成,解压下载后的Luat上层脚本包有三个文件夹:demo、lib、doc。
demo是各个功能的示例代码,包含UI开发、应用开发、驱动开发,可以直接下载到开发板中测试。lib是合宙官方为方便用户进一步做应用开发写的lib库,一般情况下不需要修改lib,直接引用即可,doc是注释文件。

LuaTools简介

Luatools是合宇宙提供的单机版调试工具,支持最新固件获取、固件打包、trace打印、单机烧录等功能。此工具适用于合宙的SoC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15833.shtml

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

相关文章

【数据结构课程学习】二叉树_堆:Lesson2

🎁个人主页:我们的五年 🔍系列专栏:数据结构课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 1.二插树的概念和结构 🚗二叉树的概念: 🚗特殊的二叉树&am…

c++ using 关键字

在C中,using 关键字有多种用途,但最常见的用途之一是在命名空间(namespace)中引入名称,以避免在代码中频繁使用命名空间前缀。此外,using 还可以用于类型别名(typedef 的替代品)和模…

Gitee的原理及应用详解(一)

本系列文章简介: Gitee是一款开源的代码托管平台,是国内最大的代码托管平台之一。它基于Git版本控制系统,提供了代码托管、项目管理、协作开发、代码审查等功能,方便团队协作和项目管理。Gitee的出现,在国内的开发者社…

LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制,帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述…

ssms用户登陆失败,服务器处于单用户模式。目前只有一位管理员能够连接。解决方案

文章目录 问题解决方案单用户模式什么是单用户模式?为什么使用单用户模式?实现步骤 问题 连接smss的时候发现无法连接,显示 服务器处于单用户模式。目前只有一位管理员能够连接 解决方案 打开SQL Server配置管理器 右键属性 在启动参数的最…

[集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类

接着[集群聊天服务器]----(六)业务模块之用户注册、登录、退出以及客户端异常退出函数中对于业务模块的用户注册、登录、退出以及客户端异常退出函数的剖析,现在我们对点对点聊天以及添加好友的实现进行剖析。 点对点聊天 当客户端输入msgidONE_CHAT_MSG时&#x…

Java集合框架提供了一系列用于存储和操作数据集合的接口和类

Java集合框架(Java Collections Framework)是Java标准库的一部分,它提供了一系列用于存储和操作数据集合的接口和类。这个框架的设计目标是提供一种统一的方式来处理不同类型的集合,使得集合的使用更加方便、灵活和高效。 Java集…

网络系统防护技术

文章目录 访问控制授权口令权限系统主要组成部分:工作流程:安全特性:口令系统与口令攻击Web服务器的口令系统安全口令 权限管理基础设施PMIPMI属性证书结构 防火墙技术防火墙简介包过滤防火墙应用网关防火墙代理服务防火墙状态检测防火墙 访问…

Pycharm2024搭建QT6开发环境

创建pyqt6虚拟环境 首先,创建一个qt6的虚拟环境: conda create --name pyqt6 python3.11.7激活环境: conda activate pyqt6安装pyqt6 安装pyqt6: pip install pyqt6创建代码目录 创建目录: 使用pycharm打开这个…

【AI学习】对LLM训练中数据处理的再认识

最近读了几篇文章,对于LLM模型中的数据处理,有了一些再认识。 这几篇文章分别是《世界顶级风投a16z创始人对谈AI与创业》、《Ben Thompson对 Nat Friedman 和 Daniel Gross的采访》、《AI教父Hinton最新万字精彩访谈:直觉,AI创新的…

etcd集群部署

1.etcd介绍 1.1 什么是etcd etcd的官方定义如下: A distributed, reliable key-value store for the most critical data of distributed systemetcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key value)存储、配置共享和服务发现等…

举例说明逃逸分析和标量替换的应用

1、逃逸分析(Escape Analysis) 例子: 假设我们有一个方法,该方法创建了一个Point对象,并只在方法内部使用它: public class EscapeAnalysisExample {public static void printPoint(int x, int y) {Poin…

Selenium 自动化测试工具(1) (Selenium 工作原理,常用API的使用)

文章目录 什么是自动化测试什么是测试工具:Selenium 工作原理(重要)Selenium API定位元素CSS 选择器xpath 定位元素 通过Java代码实现自动化1. 定位元素2. 关闭浏览器3. 获取元素文本4. 鼠标点击与键盘输入5. 清空内容6.打印信息 什么是自动化测试 关于自动化&…

CSS3 动画教程

CSS3 动画教程 在前端开发中,CSS3 动画为我们提供了一种强大而直观的方式来创建动态效果。本教程将带你深入了解 CSS3 动画的各个方面。 一、基本概念 CSS3 动画通过定义关键帧来实现元素在不同状态之间的平滑过渡。 二、创建简单动画 以下是一个简单的示例&am…

python flask框架,css介绍及应用

css CSS(层叠样式表)是一种用于描述网页样式和布局的样式表语言。它用于控制网页元素的外观和排列,包括字体、颜色、大小、边距、位置等。通过CSS,可以使网页更具吸引力、易读性和用户友好性。以下是CSS的基本概念和常见应用&…

UEFI EDK2源码学习(一)——环境安装

部署环境 vmvare15.0 ubuntu20.04 docker edk2 源码 具体步骤 docker安装 # 更新apt软件包索引 sudo apt-get update# 添加docker依赖 sudo apt-get install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 添加docker 官方…

2.Redis之Redis的背景知识

Redis 是一个在内存中存储数据的中间件 用于作为数据库,用于作为数据缓存. 在分布式系统中能够大展拳脚~ 1.Redis的特性介绍(优点) 1.1 在内存中存储数据 MySQL 主要是通过"表"的方式来存储组织数据的,"关系型数据库" Redis 主要是通过“键值对" 的…

IP数据云确认参展2024 ChinaJoy BTOB与诸位共展未来!

作为在全球数字娱乐领域兼具知名度与影响力的年度盛会,2024年第二十一届ChinaJoy BTOB将于7月26日至7月28日在上海新国际博览中心盛大召开,秉承着初心“游”在,精彩无限!(英译:Stay True, Game On.&#xf…

三、ESP32-IDF之LED

实现 ESP32-S3 的 IO 作为输出功能,实现LED灯以500毫秒闪烁一次 1、GPIO&LED简介 1.1、GPIO简介 GPIO 是负责控制或采集外部器件信息的外设,主要负责输入输出功能。 1.2、LED简介 LED,即发光二极管。 2、硬件设计 (1)原理图 LED 接…

【css3】04-css3转换

目录 1 2D转换 2 3D转换 3 案例:旋转的魔方 1 2D转换 ## 2D转换 ☞ 位移 transform: translate(100px,100px); 备注: 位移是相对元素自身的位置发生位置改变 ☞ 旋转 transform: rotate(60deg); 备注&am…