OneOS概述
OneOS 是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M、MIPS、RISC-V等主流芯片架构,兼容POSIX、CMSIS等标准接口,支持MicroPython语言开发,提供图形化开发工具,能够有效提升开发效率并降低开发成本,帮助用户开发稳定可靠、安全易用的物联网应用。
OneOS主要特点
灵活裁剪
抢占式实时多任务的RTOS。内存资源占用极小,支持多任务处理、软件定时器、信号量、互斥锁、消息队列、邮箱和实时调度等特性。可灵活裁剪,搭配丰富组件,适应不同客户需求。
跨芯片平台
应用程序可无缝移植,大幅提高软件复用率。支持的主流芯片架构有:ARM Cortex-M、MIPS、RISC-V等。支持几乎所有的MCU和主流的NB-IOT、4G、WIFI、蓝牙通信芯片。
丰富组件
提供丰富的组件功能,如互联互通、端云融合、远程升级、室内外定位、低功耗控制等。同时提供开放的第三方组件管理工具,支持添加各类第三方组件,以便扩展系统功能。
超低功耗设计
支持MCU和外围设备的功耗管理,用户可以根据业务场景选择相应低功耗方案,系统会自动采用相应功耗控制策略,进行休眠和调频调压,有效降低设备整体功耗。
FOTA升级
提供免费的FOTA升级服务。支持加密、防篡改、断点续传等功能,同时支持智能还原和回溯机制,拥有完善的版本管理和灵活的升级策略配置机制。
全面彻底的安全设计
针对物联网设备资源受限、海量连接、网络异构等特点,参考等保2.0及《GB/T 36951-2018 信息安全技术 物联网感知终端应用安全技术要求》等规范,在系统安全、通信安全、数据安全等方面提供多维度安全防护能力。
OpenCPU开发框架
支持通信SoC芯片OpenCPU开发模式,为开发者带来屏蔽复杂通信芯片差异的高效开发方式,提供统一开发体验。同时,在同样的业务功能下,减少了设备额外MCU开销和存储器的使用,大幅降低设备成本。
简易开发
一站式开发工具OneOS Studio可用于对内核和组件的功能进行配置,支持组件自由裁剪,让系统按需进行积木式构建,同时可帮助用户跟踪调试,快速定位问题。
许可协议
OneOS 代码遵循 Apache License 2.0 开源协议。
OneOS架构
OneOS 总体架构采用分层设计,主体由内核层、组件层、安全框架组成。采用一个轻量级内核加多个系统组件的模式,使物联网操作系统具备极高的可伸缩性。
内核层
极简的硬实时内核,支持多任务管理调度、任务间同步的信号量和互斥量、任务间通信的消息队列和邮箱、以及内存管理等。
组件层
包括网络协议、OneNET接入、远程升级、虚拟文件系统、SHELL命令行工具、日志系统、测试框架等。采用模块化设计,使各个组件的功能独立,易于灵活裁剪。
OneOS目录结构
目录
描述
arch
存放和 MCU(或 CPU )架构体系相关的代码。
common
存放一些通用的没有具体业务指向的程序代码,所有模块都可以使用,不通过编译选项控制是否编译
,采用默认编译进工程的方式。
components
存放组件代码,可进行裁剪。
demos
存放内核或组件的对外接口如何使用的示例程序。
docs
存放一些文档,如编码规范、编程指南等。
drivers
存放驱动的抽象层代码和具体外设的驱动代码。
kernel
存放内核代码,如任务管理及调度、任务间同步以及通信、内存管理等代码。
libc
Libc 库部分硬件相关接口的底层适配。
osal
OneOS操作系统接口抽象层,支持Posix接口、CMSIS接口、RT-Thread接口等
projects
各种开发板的示例工程
scripts
存放OneOS-Cube工具在编译构造时所需要的脚本文件。
thirdparty
存放第三方开源社区或第三方厂家的程序,包括组件、工具、协议实现或对接平台的代码等。
Kconfig
Menuconfig配置文件,代码工程(如projects目录下的示例工程)中的Kconfig文件
会引用此文件
SConscript
OneOS操作系统使用Scons构建工具时的根编译脚本,该脚本会引用其它目录
的SConscript脚本,若在OneOS操作系统根目录增加新的代码目录,需要修改
此文件(参见“从零开始构建代码工程”章节)。
LICENSE
License 授权说明。
硬件支持
目前系统已支持的SOC/MCU列表如下:
芯片制造商
SOC/MCU
瑞昱
RTL8710BX
GigaDevice
gd32vf103
ST
STM32F030
ST
STM32F091
ST
STM32F103
ST
STM32F107
ST
STM32F302
ST
STM32F303
ST
STM32F334
ST
STM32F401
ST
STM32F405
ST
STM32F407
ST
STM32F410
ST
STM32F411
ST
STM32F413
ST
STM32F429
ST
STM32F446
ST
STM32F469
ST
STM32F722
ST
STM32F746
ST
STM32F767
ST
STM32F769
ST
STM32G071
ST
STM32H743
ST
STM32H747
ST
STM32H750
ST
STM32L4R5
ST
STM32L4R9
ST
STM32L053
ST
STM32L152
ST
STM32L432
ST
STM32L433
ST
STM32L452
ST
STM32L475
ST
STM32L496
目前系统已支持的传感器列表如下:
厂商
传感器
类型
ADI
ADXL345
加速度计
AsahiKASEI
AK8963
磁力计
BOSCH
BMP180
压力计
ST
lsm6dsl
加速度计、陀螺仪、计步计
invensense
mpu6xxx(mpu6050/mpu9250/icm20608)
加速度计、陀螺仪
ASAIR
aht10
温度计、湿度计
ROHM
BH1750
环境光照强度
Sensirion
SHT20
温度计、湿度计
目前系统已适配的开发板列表如下:
注:下列开发板均经过测试可支持 OneOS 系统,但是外设资源并不全面支持,需要用户一定程度二次开发,如果有好的意见和建议欢迎与 OneOS 工程师联系。
开发板名称
资料链接
apollo
gd32vf103-Longan-nano
stm32f030-vanviot-s5
stm32f091-nucleo-64
stm32f103-c8t6-demo
stm32f103-m5310-nbiot
stm32f103-rct6
stm32f107-vct6-100
stm32f302-nucleo
stm32f303-k8t6-nucleo
stm32f334-r8t6-nucleo
stm32f401-ret6-nucleo
stm32f405-lvsn-mini
stm32f407-atk-explorer
stm32f410-rbt6-nucleo
stm32f411-ret6-nucleo
stm32f413-zht6-nucleo
stm32f429-atk-apollo
stm32f429-st-disco
stm32f446-zet6-nucleo
stm32f469-st-disco
stm32f722-st-nucleo
stm32f746-st-nucleo
stm32f767-atk-apollo
stm32f769-st-disco
stm32g071-nucleo-64
stm32h743-atk-apollo
stm32h747-st-disco
stm32h750-h750x-pro
stm32l4r5-nucleo-144
stm32l4r9-st-disco
stm32l053-nucleo-64
stm32l152-nucleo-64
stm32l432-nucleo-32
stm32l433-nucleo-64
stm32l452-st-nucleo
stm32l475-atk-pandora
stm32l475-cmcc-oneos
stm32l496-ali-developerkit
贡献代码
1.在OneOS官方开源仓库界面找到右上角的fork按钮,克隆出OneOS对应的您自己仓库;
2.根据您的需求在本地git clone一份fork出仓库的代码,进行代码更新;
3.将本地您的代码更新,push 到您fork的远程分支;
4.创建符合规范的pull request,向OneOS官方开源仓库的master分支提交合入请求;
5.OneOS开发团队会定期审查pull request,在通过专家审查后合入到OneOS官方代码中。
加入OneOS社区
关注我们的微信公众号:中移OneOS,有最新的前沿消息给您推送~
加入我们的QQ群(群名OneOS交流家园,群号:158631242),有专业的开发人员与您探讨~