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

相关推荐
eybk1 小时前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.941 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala
守护者1703 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。3 小时前
Docker学习
java·开发语言·学习
Rinai_R3 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌3 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang3 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
Web阿成5 小时前
3.学习webpack配置 尝试打包ts文件
前端·学习·webpack·typescript
雷神乐乐5 小时前
Spring学习(一)——Sping-XML
java·学习·spring