小米在建IoT护城河Vela NuttX

这篇具有很好参考价值的文章主要介绍了小米在建IoT护城河Vela NuttX。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MIDC 2020小米开发者大会刚刚过去。整场大会下来,几个印象比较深刻的点是:

  • 雷军宣布扩招5000名工程师;
  • 最新伸缩式大光圈镜头技术;
  • 小爱同学5.0发布;

……

当然了,还有一个更加值得被提及的重点是:

首次亮相的Xiaomi Vela物联网软件平台!

弱水三千,

为何小米去了NuttX这一瓢?

小米vela系统,RTOS,物联网,nuttx,vela

Xiaomi Vela软件平台是基于开源嵌入式操作系统NuttX打造的物联网软件平台。

比起安卓、iOS、鸿蒙等,NuttX知名度不算高,该系统于2007年由Gregory Nutt先生正式开源。发展至今,NuttX以功能丰富、性能稳定、商业化成熟度高赢得了市场的认可。

2016年被三星选为TizenRT操作系统的内核,小米自2017年开始基于NuttX开发物联网产品,2019年在小米的推动下正式进入Apache基金会,NuttX被正式更名为Apache NuttX。

众所周知,小米及其生态链企业的产品特别多,若每个供应商都有自己的一套OS解决方案,那么这种模式下,随着产品越来越丰富,小米的负担也会急剧增大。因此,提供一个统一的RTOS框架,为供应商提供接入该RTOS的驱动也就变成小米迫在眉睫的事情。

在业务驱动的情况下,加之小米不重复造轮子、提高效率的一贯作风,使得基于开源系统进行二次开发变得很好理解。然而,市场上开源或商业的RTOS非常多,为何小米偏偏选择NuttX呢?以下几点或许是这个问题的答案:

兼容性高:NuttX是可商用化RTOS中唯一一个对POSIX API有原生支持的实时操作系统,同时NuttX整体设计、代码组织,编译过程和Linux非常接近,因此很多Linux社区的开源软件可以很方便的移植到NuttX上,从而极大的简化开源软件移植、方便代码复用、降低学习曲线。

完成度高:NuttX集成了文件系统、网络协议栈、图形库和驱动框架,减少开发成本。

模块化设计:所有组件甚至组件内部特性,都可通过配置Kconfig来调整或关闭,可按需对系统进行裁剪,适用于不同产品形态。

代码精简:所有组件都是从头编码,专门对代码和数据做了优化设计。

轻量级:虽然NuttX实现了传统操作系统的所有功能,但是最终生成的代码尺寸还是可以很小(最小配置不到32KB,最大配置不超过256KB)。

社区活跃度高:很多厂商(比如小米、Sony,乐鑫、NXP等)和开源爱好者都在积极回馈社区,贡献活跃度。

Xiaomi Vela目标:

解放开发者,打通碎片化的IoT应用

在拉丁语中,Vela是帆船的意思。

从这个名字可以感受到,小米是希望与厂商、开发者一起,在物联的瀚海中乘风远航的愿景。

随着物联网设备的增多,加强手机与IoT设备之间的协同就变得避无可避,基于此小米正在重点开发小米妙享功能,并且即将开放视频投射和应用协同功能。而为了实现小米秒享在多设备上的应用,则需要一个跨设备的物联网软件平台来支撑,而这个平台便是基于开源嵌入式操作系统NuttX打造的Xiaomi Vela。

据悉,小米Vela拥有高性价比、可剪裁、代码易复用、完整度高四大优势,可以打通碎片化的IoT应用,支持高性价比的MCU设备。该平台是专门用于智能家居、可穿戴设备等算力受限设备上的物联网嵌入式开发平台,并逐步在手表、手环、音箱、智能家电、相机ISP、传感器等更多终端设备中落地。

在发布会上,小米对外公布了Xiaomi Vela的系统架构,如下图:

具体而言,小米Vela主要分为三⼤部分:

小米vela系统,RTOS,物联网,nuttx,vela

底层是NuttX内核:提供最基本的任务调度、跨进程间通信、文件系统等基础OS功能,同时也提供简洁高效的设备驱动、轻量级的TCP/IP协议栈和电源管理等组件;

上层是Vela应用框架:主要分为上下两层,下层是为扩展系统服务提供的通用框架,包括蓝牙通信组件、通信组件、OTA服务、数据本地存储服务,以及对图形用户界面和脚本语言的支持,上层主要是针对不同的物联网应用开发。

右侧是开发者工具:主要提供Logger、Auto test、Emulator、GUI相关开发工具。

打通物联网最基础的功能,

鸿蒙与Xiaomi Vela的异同

在物联网时代,操作系统是最底层基础的系统架构,很多上层应用都基于操作系统才能布局生态。就在小米对外正式发布自家物联网操作系统Xiaomi Vela同一天,华为也举办了一场新品发布会,发布了15款智选新品,这是华为的物联网操作系统鸿蒙OS首次应用在华为智选生态产品上。

而在小米官方对Vela介绍中,Xiaomi Vela对标的其实是华为LiteOS。然而,随着LiteOS融入鸿蒙OS,Xiaomi Vela终将要面对的仍然是鸿蒙OS。

无论是鸿蒙还是Xiaomi Vela,都是为了打通物联网最基础的联通、协同相关功能。但两者仍然略有差异:

在战略层面:鸿蒙OS发布之初,华为官方对标的是安卓系统比;Xiaomi Vela则更倾向于认为是与Linux、安卓等高价操作系统是互补共生关系。

在应用层面:鸿蒙搭载的范围更广,覆盖到了内存配置比较大的领域,搭载华为鸿蒙OS的第一款产品是荣耀智慧屏;Xiaomi Vela更注重低功耗和轻量级的应用场景,其目标应用是智能家居、可穿戴设备等算力受限设备,而非手机、智能电视等。

逐步完善的物联网生态版图,

小米的手机+AIoT野望

  • 2013年,小米开始进军智能硬件领域,初步探索物联网;
  • 2015年,小米首次披露以手机为核心,连接所有设备的物联网战略,正式开启物联网布局;
  • 2019年初,雷军宣布全面All in IoT,未来五年持续投入高达100亿,抓住人工智能、物联网时代的新风口;
  • 2020年初,随着5G时代到来,5G将赋能AIoT,开启万物互联的智能时代即将到来,小米作出重大战略升级,加码为5年投入" +AIoT"500亿元。

这是小米入局物联网领域的一段缩影。

有网友说: 小米这两年成熟多了。相比更早以前的小米,最明显的表现在于公司的战略十分明确,即手机+AIoT双引擎战略。或许这一点可以作为小米更成熟了的佐证。

随着时间的推移,小米的物联网生态版图无疑也正在逐步完善。除了和以往一样,推出了更多新的硬件产品,小米还推出自己的系统平台Xiaomi Vela,试图通过打造核心的软硬件底层。

目前看来,小米畅快连、小米妙享、小米"一指连"UWB技术、小爱5.0、Works With Mijia开放生态,Xiaomi Vela软件平台、小米IoT模组家族以及丰富的小米生态链产品,都在从硬件到软件、从技术到服务、从产 品 到生态等各种维度加强"手机+AIoT"的生态场景体验与繁荣,积极推动整个AIoT场景与行业健康发展,小米物联网技术护城河才真正要建起来。基于目前已有的规模和品牌效应,或许这个进程也会比较快。

关于NuttX操作系统

关于NuttX操作系统

NuttX是一个成熟的实时操作系统,于07年由Gregory Nutt先生正式开源,2016年被三星选为TizenRT操作系统的内核,2019年在小米的推动下正式进入Apache基金会,经过开源社区多年的不懈努力,NuttX功能丰富,性能稳定,商业化成熟度高,Fitbit最近两代的手环产品和索尼多款消费级产品都是基于NuttX开发的。

为什么选择NuttX?

市场上开源或商业的RTOS非常多,为什么我们最终选择NuttX作为Xiaomi Vela的基础?主要有以下几个原因:

  • NuttX对POSIX标准有原生兼容:NuttX是可商用化RTOS中唯一一个对POSIX API有原生支持的实时操作系统,所以很多Linux社区的开源软件可以很方便的移植到NuttX上,这样可以极大的简化开源软件移植,方便代码复用,降低学习曲线,其它RTOS需要适配层把POSIX API转成内部API,而且通常只兼容一小部分的POSIX接口。
  • 完成度高:NuttX集成了文件系统、网络协议栈、图形库和驱动框架,减少开发成本。
  • 模块化设计:所有组件甚至组件内部特性,都可以通过配置Kconfig来调整或关闭,可按需对系统进行裁剪,适用于不同产品形态。
  • 代码精简:所有组件都是从头编码,专门对代码和数据做了优化设计。
  • 轻量级:虽然NuttX实现了传统操作系统的所有功能,但是最终生成的代码尺寸还是可以很小(最小配置不到32KB,最大配置不超过256KB)。
  • 和Linux系统的兼容性:因为NuttX整体设计、代码组织,编译过程和Linux非常接近,将会极大地降低Android/Linux开发者的迁移成本。
  • 活跃开放的社区:很多厂商(比如小米、Sony,乐鑫、NXP等)和开源爱好者都在积极回馈社区。

NuttX的系统架构

从纵向看,NuttX和传统操作系统一样由调度子系统、文件子系统、网络子系统、图形子系统和驱动子系统组成。从横向看,NuttX向上给应用程序提供了POSIX和ANSI定义的标准C/C++接口。对于没有标准化的组件(比如各种外设),NuttX通常会提供兼容Linux的API。向下NuttX定义了Arch API、块设备驱动接口、网卡驱动接口、display驱动接口,以及各种总线和外设的lower half驱动接口,使得芯片厂商能够规范、快速地完成移植工作。下图中数量众多的蓝色模块就是NuttX实现的各种功能。

小米vela系统,RTOS,物联网,nuttx,vela

子系统介绍

调度子系统

NuttX支持大多数RTOS都没有实现的进程概念,并提供完整的POSIX API,比如pthread、信号量、消息队列、时钟/定时器、信号、环境变量等。同时,也支持RTOS上常见的优先级翻转和tickless模式。NuttX支持对称多处理(SMP)和非对称多处理(AMP)两种多核编程模式,开发者可以根据芯片设计的特点和应用场景的需求,选择使用SMP或AMP,甚至同时使用SMP和AMP。NuttX支持所有常见CPU架构,比如Cortex-A/Cortex-R/Cortex-M、AVR、MIPS、32位/64位 RISC-V,X86/X64,Z80,以及Tensilica和CEVA的DSP,并有超过150款芯片成功移植到NuttX上。

文件系统

NuttX设计了一套完整而小巧的虚拟文件系统,除了支持统一的目录和文件操作外,还支持挂载点、字符设备,块设备等高级概念。直接支持10多种常用的文件系统。比如FAT、LittleFS、SmartFS、NFS、ROMFS、TMPFS等。另外,NuttX内置根文件系统,无需挂载即可启动,极大的简化了开发和部署流程。

网络子系统

NuttX实现了完整的网络协议栈,支持以太网、WiFi、802.15.4、蓝牙、CAN等数据链路层协议,支持IPv4、IPv6以及相关的ARP、ICMP、IGMP、MLD等传输层协议,实现了BSD兼容套接字API,除了常见的TCP、UDP协议外,还支持raw packet、unix domain、netlink套接字类型。另外,NuttX还提供了大量的应用层协议实现,比如DHCP、DNS、NTP、Telnet、FTP、SMTP、HTTP等。

驱动子系统

除了接入到文件系统的块设备驱动和接入到TCP/IP协议栈的网络设备驱动外,NuttX还为各种常见总线和外设定义了类似Linux的字符设备驱动。一方面通过NuttX为每类设备定义的标准IOCTL接口,应用程序可以用统一的API访问不同厂商的硬件驱动,另一方面NuttX驱动框架实现了和硬件无关的操作(比如权限控制、buffer管理,睡眠/唤醒等),降低驱动程序的开发难度。最后,NuttX提供了一套基于activity统计的低功耗管理框架,使得驱动程序可以方便地实现低功耗控制。

欢迎通过以下链接访问NuttX官网,也欢迎大家加入Apache NuttX社区。文章来源地址https://www.toymoban.com/news/detail-735119.html

到了这里,关于小米在建IoT护城河Vela NuttX的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nuttx杂记

    1、设置自启动应用 修改deconfig文件下的“CONFIG_INIT_ENTRYPOINT”参数即可 2、消息队列使用 以下是Nuttx系统中使用queue_create函数创建队列的示例代码: 该示例代码创建了一个名为“my_queue”的消息队列,允许最多10个消息,每个消息的最大大小为256字节。它使用pthread库创建两个线

    2023年04月14日
    浏览(28)
  • IOT2050 (Debian11)安装 Azure IoT Edge Runtime

    Jiang Jia Hao jiahao.jiang@scapeak.com 注:若在执行第三步命令出现:-bash: gpg: command not found错误,请先安装 gpg 命令。 gpg 命令用于签名、加密和验证数据。 你需要在系统中使用 gpg 命令,可以按照以下步骤安装: 注:若在执行安装命令时出现如下错误,请安装缺失的依赖包 安装缺

    2024年02月05日
    浏览(36)
  • STM32之NB-IoT学习(一)——NB-IoT介绍

    这篇先总结一下NB-IoT的基本知识,下一篇再涉及相关单片机程序代码。 目录 一. NB-IoT概念及特点 1.概念 2.特点 3.目前主要应用情况 二. NB-IOT部署方式 1.独立部署(Stand alone operation)简称ST 2.保护带部署(Guard band operation)简称GB 3.带内部署(In-band operation)简称IB 三.工作状态

    2024年02月08日
    浏览(41)
  • IOT云平台 simple(6)springboot netty实现IOT云平台基本的架构(mqtt、Rabbitmq)

    本系列教程包括: IOT云平台 simple(0)IOT云平台简介 IOT云平台 simple(1)netty入门 IOT云平台 simple(2)springboot入门 IOT云平台 simple(3)springboot netty实现TCP Server IOT云平台 simple(4)springboot netty实现简单的mqtt broker IOT云平台 simple(5)springboot netty实现modbus TCP Master IOT云平台 si

    2023年04月09日
    浏览(33)
  • 【IoT物联网】IoT小程序在展示中央空调采集数据和实时运行状态上的应用

      利用前端语言实现跨平台应用开发似乎是大势所趋,跨平台并不是一个新的概念,“一次编译、到处运行”是老牌服务端跨平台语言Java的一个基本特性。随着时代的发展,无论是后端开发语言还是前端开发语言,一切都在朝着减少工作量,降低工作成本的方向发展。  

    2024年02月16日
    浏览(39)
  • Microsoft Azure & NVIDIA IoT 开发者季 I|Azure IoT & NVIDIA Jetson 开发基础

    随着各行各业数字化转型的不断升级,以及物联网技术的迅速发展,实现以场景为中心的边缘到到云的解决方案,以应对行业特定的业务挑战已经成为越来越多行业企业的技术选择。 作为一个支持以不同方式集成应用程序,以满足托管、本地扩展、基于容器的现代化以及无服

    2024年02月05日
    浏览(88)
  • 【IOT】学习资料

    随着科技的不断发展,物联网(IoT)已经成为了当今数字化时代的一部分。物联网将各种物理设备、传感器和互联网连接起来,为我们提供了巨大的数据流和智能化的应用。在这个庞大的生态系统中,物联网平台扮演着至关重要的角色,它们不仅可以连接和管理物联网设备,

    2024年02月20日
    浏览(52)
  • IOT低功耗设计思路

    IOT低功耗设备设计大致为3个方面的设计: 器件选型、电路设计、软件设计、续航寿命估算 单片机 1.选择具备多种低功耗工作模式的MCU,如MCU支持5种低功耗模式(Sleep,Stop0,Stop2,Standby,VBat),开启带有RTC唤醒的Stop模式可让功耗尽可能低;低功耗MCU的选型:总功耗可以分为

    2024年03月25日
    浏览(37)
  • ioT组态工具

    目前支持两种数据源,mysql和orcal。绑定数据源是为了实现数据推送更新。 点击左侧的目录数结构,然后点击右边的+号画面即可新建画面。如果选择模板则可以基于已有模板创建。 系统默认了一些自定义的控件,支持svg,png,jpg,gif等格式的控件。也支持zip批量导入。 模板管理

    2024年02月08日
    浏览(37)
  • 什么是IoT数字孪生?

      数字孪生是资产或系统的实时虚拟模型,它使用来自连接的物联网传感器的数据来创建数字表示。数字孪生允许您从任何地方实时监控设备、资产或流程。数字孪生用于多种目的,例如分析性能、监控问题或在实施之前运行测试。从物联网数字孪生中获得的见解使用户能

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包