智能车制作

标题: Kinetis K60 移植Huawei LiteOS [打印本页]

作者: wanglichao    时间: 2017-1-24 22:08
标题: Kinetis K60 移植Huawei LiteOS
告别裸机,用上国产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**********************/



作者: Vince_。    时间: 2017-1-26 17:39
浪险~
作者: Benson_LE7Ik    时间: 2017-1-29 18:25
顶一波,希望后面的老司机来点有技术含量的评测
作者: _Phantom_    时间: 2017-1-30 12:15
前排混脸熟




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2