跳到主要内容

课程介绍与资料下载

openvela的优势​

openvela是小米基于 Apache NuttX 开源的 AIoT 操作系统(2024 年正式开源,Apache 2.0 协议),作为小米澎湃 OS(HyperOS)的轻量化技术底座。开源地址如下:

https://github.com/open-vela

https://gitee.com/open-vela

https://gitcode.com/open-vela

学习入口地址如下:

https://github.com/open-vela/docs/blob/trunk/zh-cn/quickstart/openvela_ubuntu_quick_start.md

https://gitee.com/open-vela/docs/blob/trunk/zh-cn/quickstart/openvela_ubuntu_quick_start.md

https://gitcode.com/open-vela/docs/blob/trunk/zh-cn/quickstart/openvela_ubuntu_quick_start.md

Xiaomi Vela、openvela、Nuttx的关系​

它们的关系可以概括为:继承、发展和开源协作。

  • NuttX 是基础,是一个成熟的开源实时操作系统内核。

  • Xiaomi Vela 是上层建筑,是小米基于NuttX深度定制和扩展的商业物联网软件平台。

  • openvela是开源社区版本,是小米将Xiaomi Vela的核心部分开源后形成的项目,旨在与社区共同发展。

具体来说,NuttX 是一个开源的实时操作系统,于 2007 年由 Gregory Nutt 先生正式开源,2019 年在小米的推动下进入 Apache 基金会,更名为 Apache NuttX。小米自 2017 年开始基于 NuttX 开发物联网产品,Xiaomi Vela 就是在 NuttX 内核的基础上,提供了统一的软件服务,支持丰富的组件和易用的框架,能够适配多种不同硬件规格的产品,最小系统仅需 32KB 内存,CPU 主频不限,适配任意 SoC 多核架构,旨在打通碎片化的物联网应用场景。

2024 年 12 月 11 日,小米宣布 Xiaomi Vela 系统代码开源,openvela 项目上线 GitHub 、 Gitee和GitCode(地址见上面),主要遵循Apache License V2.0协议,详情请参考各代码仓LICENSE声明。openvela和Xiaomi Vela 基于同一套代码实现,基于 Apache NuttX,具备高标准的 POSIX 兼容性,当前已达到 88% 的兼容水平,这使得在其他标准操作系统上开发的软件可以轻松迁移到openvela。

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

Vela 的命名源自拉丁语中船帆的含义,也是南方星空中船帆星座的名字。选择这个名字的意义是希望与开发者一道携手,共同踏上星辰大海的征途。

各个GIT仓库​

openvela的代码由多个git仓库组成。以gitee为例,查看如下文件可以指导各个git仓库的位置:

https://gitee.com/open-vela/manifests/blob/dev/openvela.xml

openvela.xml的内容摘抄、解释一部分,如下:

核心GIT仓库如下:

  • 系统内核(nuttx):高实时性、高完备性、高兼容性、高灵活性

https://gitee.com/open-vela/nuttx

  • 应用程序(apps):

https://gitee.com/open-vela/nuttx-apps

  • 文档(docs):

https://gitee.com/open-vela/docs

  • 外部组件(external):

https://gitee.com/open-vela/external

  • 框架(frameworks):

https://gitee.com/open-vela/frameworks

  • 包(packages):

https://gitee.com/open-vela/packages

  • 厂家代码(vendor):

https://gitee.com/open-vela/vendor

  • 具体的厂家代码(比如全志):

https://gitee.com/open-vela/vendor_allwinnertech

  • 预先编译的工具:

https://gitee.com/open-vela/prebuilts_gcc_linux-x86_64_arm-none-eabi

五大关键系统能力​

  • 系统内核:高实时性、高完备性、高兼容性、高灵活性

  • 驱动框架:60+设备驱动框架、复杂驱动(USB、PCIe、加解密、GNSS等、CHRE等)

  • AI框架:首次落地端侧AI轻量级推理框架、端侧内核级优化提高算子性能、离线模型推理框架

  • LWAC框架:Light Weight Application Container,轻量应用容器

  • 维测套件:调试分析工具丰富而强大,比如GDB、Coredump等

技术架构​

<img src="C:\Users\MeiHao\AppData\Local\Temp\dsh_docx\pandoc\media/media/image4.png" style="width:5.74097in;height:2.74792in" alt="IMG_256" />

  • 内核层
    提供基础的操作系统(OS)功能,包括任务调度、跨进程间通信(IPC)、文件系统管理。此外,还提供设备驱动、轻量级 TCP/IP 协议栈和电源管理等精简高效的组件。同时,内核层支持同构多核和异构多核架构,以提升系统在不同架构下的性能支持能力。

  • 服务框架层
    通用的服务框架,专为扩展系统服务设计,包含连接子系统、图形子系统、多媒体子系统、安全子系统和 XPC 跨核通信能力等。该层提供灵活的服务扩展支持,是系统功能扩展的重要基础。

  • 维测工具
    常用工具和维测框架,除了常见的 Logger 和 Debugger 工具外,还包含 Emulator 这一强大的高仿真设备模拟器工具。Emulator 支持全面功能仿真,同时支持 CPU 指令集仿真。
    目前模拟器已支持多种产品形态,包括智慧面板、手表、手环和智能有屏音箱等。通过 Emulator 开发者可以使用 PC 端丰富的调试工具和信息,无需真实设备即可进行应用开发调试,降低开发和调试难度。

技术优势​

  • 高度可扩展:openvela 的设计注重模块化与可扩展性,使其能够灵活适应多样的物联网应用场景。小到仅配备 32KB RAM 的微型 BLE 模组,大到拥有 512MB RAM 的智能有屏音箱,openvela 都能提供高度可扩展的支持。

  • 一站式解决方案:随着时间的推移,openvela 不断沉淀了各类 AIoT 应用的共性需求,成为一个功能完备的软件平台,为各类物联网解决方案提供了全面的支持。厂商采用 openvela,可以显著降低研发成本并加速产品的上市时间。

  • 成熟的异构计算支持:openvela 为异构多核系统提供了强大的支持,实现了 MCU、MPU、DSP、GPU 以及 NPU 等不同处理单元间无缝的 IPC 通信机制。此外,openvela 还提供了一个高级的 RPC 框架,简化了 openvela 与 Android 和 Linux 系统的通信,使快速打造一个异构融合操作系统成为可能。

  • 标准兼容和高可移植性:openvela 内核基于 Apache NuttX ,这个被称为 “Tiny Linux” 的系统为 openvela 提供了高标准的 POSIX 兼容性。通过持续提升其 POSIX 兼容性,openvela 当前已达到 88% 的兼容水平。这种高标准的兼容性意味着在其他标准操作系统(例如 Linux)上开发的软件可以轻松迁移到 openvela,几乎不需要额外的工作。

  • 全面的连接套件:openvela 提供了广泛的协议支持,包括蓝牙 BR/EDR/LE、LE Mesh、WiFi、Matter、LTE Cat1、以太网、CAN/LIN 等。同时,它还能与小米的 HyperConnect 协议无缝集成,提供了强大的连接能力。

  • 丰富的开发者工具:openvela 提供了一系列完备的开发者工具,包括系统监控、性能分析、调试器、追踪、崩溃分析和日志分析工具,为开发者提供了强大的支持。

硬件支持​

openvela 支持各种不同的架构(ARM32、ARM64、RISC-V、Xtensa、MIPS、CEVA 等)和硬件平台。

配套资料及开发板​

下载地址​

在百问网www.100ask.net下载中心:

对应关系​

交流群​

配套开发板​

天猫:<u>https://detail.tmall.com/item.htm?id=986865105043&skuId=6115148742842</u>

课程内容​

最终成果与所涉及知识​

本课程目标是使用openvela实现一个AI语音助手,它具备联网功能,采集声音发送到服务器,得到返回结果并播放出来。

当我们有问题需要解答时,一般是掏出手机、搜索答案。当你在不方便掏出手机时,身边可以放置一个“AI语音助手”:可以立刻跟它语音交流,联网咨询各类问题。

比如:

你在开车,小孩突然问你“为什么高速路面有缝隙”,你不可能掏出手机,你可以直接向AI语音助手提问。

你是个蓝领工人,搬砖时不方便计数,可以跟AI语音助手说:刚才又搬了100块砖,帮我记录一下。

你是个学生,可以使用它来记录课堂老师的讲话,并且转换为文字。

视频演示产品的使用。

程序框架:

程序中涉及的openvela内容为:

① 任务、线程的创建

② 任务/线程之间数据的传输

③ 临界资源的互斥访问:比如声卡、LCD的使用

④ 同步操作:比如按键的使用

⑤ 驱动程序开发:声卡、LCD的驱动开发

讲课方法​

本课程的学习分为2个层次:

① openvela的快速使用:

掌握它的常用接口函数,比如创建进程/线程、消息队列、信号量、互斥量的使用。作为初学者,掌握这些技能就可以进行一般的APP开发了。

② openvela的内部机制:

比如驱动程序框架与开发、文件系统框架与使用、系统启动流程、调试技术。

本课程先让学员能快速使用openvela:我们提供封装好的库函数,先让大家能直接调用声卡、网卡、显示器的操作函数,把精力放在openvela的API函数使用上,快速编写出APP以掌握这些API。

当入门之后,再去深入研究openvela的内部实现,比如驱动程序怎么写、系统如何启动等细节。