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

相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫7 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下7 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。7 天前
2026.2.25监控学习
学习
im_AMBER7 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习