告别裸机,用上国产RTOS HuaweiLiteOS来玩转你的智能车吧
固件库使用超核电子CHK-LIB
Huawei LiteOS简介:
Huawei LiteOS 是华为面向IoT领域,构建的“统一物联网操作系统和中间件软件平台”,以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
2015年,华为在HNC网络大会上,正式推出了“ 1+2+1 ”物联网战略,即“一个物联网平台,两种接入方式,一个轻量级物联网操作系统”。
轻量级的物联网操作系统,终端设备智能化使能平台
自发布以来,Huawei LiteOS以1个轻量级、低功耗,快速启动内核为基础,增加N个框架:通过支持多传感协同,使得终端数据采集更智能,数据处理更精准;通过支持长短距连接,实现全连接覆盖,提供多Profile支持与共享支撑更多业务场景,同时可伸缩连接能力有显著提升;通过支持基于JavaScript的应用开发框架,统一应用开发平台,使得产品开发更“敏捷”;Huawei LiteOS为开发者提供设备智能化使能平台,有效降低开发门槛、缩短开发周期。
Huawei LiteOS通过开源开放提供统一开放的API,可广泛应用于智能家居、穿戴式、车联网、制造业等领域,并与奋进、杭州熊迈、海康威视、海尔、美的、Intel、WRTNode等企业和机构共建开放物联网生态,帮助合作伙伴快速开发物联网产品,加速物联网产业发展。
2、 基础架构
开放的API,屏蔽底层差异,让应用开发者只需关注上层应用开发。友好的兼容性使得已熟悉在 Linux 系统上开发应用的开发者,能够非常平滑的切换到 Huawei LiteOS 系统上开发,同时由于 Huawei LiteOS 系统的精简内核特性,使得开发者更容易理解内核。
轻量级内核:更小体积、更低功耗、更快响应 合作伙伴和第三方开发者基于 Huawei LiteOS Kernel 能够快速开发智能硬件,产品具备快速启动、低功耗等竞争力。 传感框架:更低时延、更高精度,传感智能化 降低 50% 时延,2X +精确度,采集算法 ->智能算法
互联引擎:更多协议、更广互通,联接智能化 互联互通中间件,支持短距、LTE、NB-IoT 等多种互联技术,解决IoT不同协议的设备互联互通,覆盖家庭互联、穿戴互联、工业互联等多种场景,在业务层面提供开放API和业务Profile,方便开发者开发应用,实现不同设备间互操。
运行引擎:更轻框架、更好性能,应用智能化 面向物联网的应用开发框架 • 使能轻量级物联网设备JavaScript开发 • JS框架、JS虚拟机和OS协同优化性能和功耗 高性能、轻量级 JavaScript 虚拟机 • 极小的ROM和内存占用空间 • 提供独立用户空间和应用隔离,保护应用安全
main文件如下,主要任务创建实例如下:
/**
******************************************************************************
* @file main.c
* @Author Supowang Any question please send mail to 512965803@qq.com
* @version V1.0
* @date 2016-12-07
* @BRIEF Huawei LiteOS 移植DEMO
******************************************************************************
* @attention
* Huawei LiteOS Source Code :http://developer.huawei.com/ict/cn/site-iot/product/liteos
* GitHub:https://github.com/LiteOS
* Huawei LiteOS
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
// Huawei LiteOS相关头文件
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "los_base.h"
#include "los_config.h"
#include "los_typedef.h"
#include "los_hwi.h"
#include "los_task.ph"
#include "los_sem.h"
#include "los_event.h"
#include "los_memory.h"
#include "los_queue.ph"
//Kinetis相关头文件
#include "gpio.h"
#include "common.h"
#include "uart.h"
UINT32 g_TestTskHandle;
void hardware_init(void)
{
DelayInit();
DelayMs(10);
UART_QuickInit(UART3_RX_PC16_TX_PC17, 115200);
GPIO_QuickInit(HW_GPIOD, 6, kGPIO_Mode_OPP);
GPIO_QuickInit(HW_GPIOD, 7, kGPIO_Mode_OPP);
}
VOID task1(void)
{
UINT32 uwRet = LOS_OK;
UINT32 count=0;
while(1)
{
count++;
printf("This is task 1,count is %d\r\n",count);
PDout(6) = !PDout(6);
uwRet = LOS_TaskDelay(1000);
if(uwRet !=LOS_OK)
return;
}
}
UINT32 creat_task1(void)
{
UINT32 uwRet = LOS_OK;
TSK_INIT_PARAM_S task_init_param;
task_init_param.usTaskPrio = 1;
task_init_param.pcName = "task1";
task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task1;
task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
task_init_param.uwResved = LOS_TASK_STATUS_DETACHED;
uwRet = LOS_TaskCreate(&g_TestTskHandle,&task_init_param);
if(uwRet !=LOS_OK)
{
return uwRet;
}
return uwRet;
}
VOID task2(void)
{
UINT32 uwRet = LOS_OK;
UINT32 count=0;
while(1)
{
count++;
printf("This is task 2,count is %d\r\n",count);
PDout(7) = !PDout(7);
uwRet = LOS_TaskDelay(2000);
if(uwRet !=LOS_OK)
return;
}
}
UINT32 creat_task2(void)
{
UINT32 uwRet = LOS_OK;
TSK_INIT_PARAM_S task_init_param;
task_init_param.usTaskPrio = 1;
task_init_param.pcName = "task2";
task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task2;
task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
task_init_param.uwResved = LOS_TASK_STATUS_DETACHED;
uwRet = LOS_TaskCreate(&g_TestTskHandle,&task_init_param);
if(uwRet !=LOS_OK)
{
return uwRet;
}
return uwRet;
}
UINT32 osAppInit(void)
{
UINT32 uwRet = 0;
hardware_init();
uwRet = creat_task1();
if(uwRet !=LOS_OK)
{
return uwRet;
}
uwRet = creat_task2();
if(uwRet !=LOS_OK)
{
return uwRet;
}
return LOS_OK;
}
/*********************************************END OF FILE**********************/
|