1.简介
1.1 OneOS简介
OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-A和 Cortex-M、MIPS、RISC-V等主流芯片架构,兼容POSIX、CMSIS等标准接口,支持Javascript、MicroPython等高级语言开发模式,提供图形化开发工具,能够有效提升开发效率、降低开发成本,帮助用户快速开发稳定可靠、安全易用的物联网应用。OneOS 代码遵循 Apache 2.0 license 开源协议。OneOS总体架构采用分层设计,主体由驱动、内核、组件、安全框架组成。采用一个轻量级内核加多个系统组件的模式,加上海量硬件的适配支持,使OneOS具备极高的可伸缩性与易用性。操作系统整体架构如下图:
36447649bd027db90e.png (501.74 KB )
2023-6-28 14:16 上传
1.2 OneOS features
- 灵活裁剪:抢占式的实时多任务RTOS内核,支持多任务处理、软件定时器、信号量、互斥锁、消息队列、邮箱和实时调度等特性,RAM和ROM资源占用极小。可灵活裁剪,搭配丰富组件,适应不同客户需求。
- 跨芯片平台:应用程序可无缝移植,大幅提高软件复用率。支持的主流芯片架构有:ARM Cortex-A和Cortex-M、MIPS、RISC-V等。支持几乎所有的MCU和主流的NB-IOT、4G、WIFI、蓝牙通信芯片。
- 组件丰富:提供丰富的组件功能,如互联互通、端云融合、远程升级、室内外定位、低功耗控制等。同时提供开放的第三方组件管理工具,支持添加各类第三方组件,以便扩展系统功能。
- 易于开发:一站式开发工具OneOS Studio可用于对内核和组件的功能进行配置,支持组件自由裁剪,让系统按需进行积木式构建,同时可帮助用户跟踪调试,快速定位问题。
- 低功耗设计:支持MCU和外围设备的功耗管理,用户可以根据业务场景选择相应低功耗方案,系统会自动采用相应功耗控制策略,进行休眠和调频调压,有效降低设备整体功耗。
- 安全设计:针对物联网设备资源受限、海量连接、网络异构等特点,参考等保2.0及《GB/T 36951-2018 信息安全技术 物联网感知终端应用安全技术要求》等规范,在系统安全、通信安全、数据安全等方面提供多维度安全防护能力。
- OpenCPU开发框架:支持通信SoC芯片OpenCPU开发模式,为开发者带来屏蔽复杂通信芯片差异的高效开发方式,提供统一开发体验。同时,在同样的业务功能下,减少了设备额外MCU开销和存储器的使用,大幅降低设备成本。
2.准备工作
2.1软件准备
- 下载OneOS-Cube工具软件
- KEIL PACK 包
- 下载OneOS 样例工程
2.2硬件准备
- MM32F5277E9P开发板
- MM32-JLINK
3.实验流程
3.1下载OneOS工程
登录网址下载OneOS工程:https://gitee.com/cmcc-oneos/OneOS
点击克隆/下载,复制SSH,或直接下载整个工程的压缩包ZIP,但是可能下载的工程不完全。
注意下载的工程应为master主线,若下载的dev分支,需git checkout master进入。
新建一个文件夹命名为OneOS(或其它),进入文件夹后,右击选择git bash,使用git指令克隆代码仓库:
git指令:
$ git clone git@gitee.com:cmcc-oneos/OneOS.git
3.2 下载OneOS cube工具
登录网址下载工具https://os.iot.10086.cn/doc/quick_start/setup_env/oneos_cube.html,点击“工具获取”,选择“工具下载”,选择“OneOS-Cube”
双击exe文件,安装OneOS-Cube工具,点击下一步,确定安装位置以及桌面快捷键后,点击安装,完成安装。
进入OneOS文件夹,打开“Projects”文件,右击选择“OneOS_Cube”,输入“project”。若没有project文件,需切换master分支。
3.3 生成MM32F5270工程
选择“MANUFACTOR(STM32)”后回车,选择“MM32”后回车;
选择“SERIES(MM32F327XX)”,选择“MM32F5XX”后回车;
选择MODEL(PLUS-F5270)回车,选择“(X)PLUS-F5270”后回车;
输入Q键退出,输入Y确定,工程开始下载,生成新的文件“mm32f5270-plus-f527”。
3.4配置工程
打开mm32f5270-plus-f5270文件夹,打开KEIL工程文件。进入board.c程序,确认引脚配置是否与PLUS-F5270一致,然后编译下载程序。
主函数:
#include <board.h>
#include <os_task.h>
static void user_task(void *parameter)
{
int i = 0;
for (i = 0; i < led_table_size; i++){
os_pin_mode(led_table[i].pin, PIN_MODE_OUTPUT);
}
while (1){
for (i = 0; i < led_table_size; i++){
os_pin_write(led_table[i].pin, led_table[i].active_level);
os_task_msleep(200);
os_pin_write(led_table[i].pin, !led_table[i].active_level);
os_task_msleep(200);}}}
int main(void){
os_task_t *task;
task = os_task_create("user", user_task, NULL, 512, 3);
OS_ASSERT(task);
os_task_startup(task);
return 0;}
4.实验结果
若配置的引脚为(1, 14)和(2, 9),PLUS-F5270开发板B14和C9对应的LED将会交换闪烁:
---------------------
作者:春娇霹雳娃
链接:https://bbs.21ic.com/icview-3311324-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。