首页 > 技术文章 > 基于华为云的智慧路灯实现--小熊派学习笔记(1)

logicexpression 2021-03-12 10:02 原文

一,该功能实现的系统架构

捕获

从上至下,最上层为系统级应用层,在云服务平台上实现,比如 智慧家居、智慧交通、车联网等等。一般通过PC、手机、端设备与用户进行交互,实现配置、监控、管理等功能。

云平台现在有阿里云、腾讯云、华为云、亚马逊云等。

端设备通过 无线4G/5G/LoRa/NB-IOT/eLTE-IOT及有线的方式家庭网关企业网关与云平台连接。

端设备通过固定的协议,LWM2M、CoAP、MQTT(基于TCP,UDP的协议)与云平台通信,端设备一般用于采集目标数据,或者执行目标操作。一般有完整的软件机构层次,统一的应用层协议,方便与各大平台连接。

下图为基于liteos的端设备架构

liteos

最上层为系统应用组件,例如GUI框架,传感器框架,OTA差分升级。

应用层接口支持CMSIS,POSIX,通行协议栈(LwM2M,CoAP,MQTT)。

文件系统支持vfs,littlefs,spiffs。

内核增强主要包括C++支持,低功耗,调测。

基础内核实现系统基本功能,IPC通信,软件定时器,内存任务管理,异常管理,中断管理。

硬件抽象层

硬件内核支持 ARM-M,ARM-A,ARM-64,RISC-V。

二、LiteOS 使用介绍

支持LINUX下以及WINDOWS下的编译,配置项目工程使用了make menuconfig工具。

liteos启动流程图

liteos

内存管理支持两种方式,静态内存和动态内存的方式,支持内存的初始化,分配及释放。

软件定时器是基于系统Tick时钟中断且由软件来模拟的定时器。LiteOS支持创建、启动,停止,删除,获取TICK,配置等对软件定时器的操作。

Liteos支持对中断函数的创建、配置、删除。支持中断共享,中断嵌套,支持独立中断栈,支持中断优先级配置等。

Liteos支持异常接管,属于一种调测手段。

Liteos支持多任务,抢占式调度,时间片轮询。支持配置任务优先级设置。

任务状态示意图

为了配合任务机制的运行,Liteos还支持队列,信号量,互斥锁,自旋锁。

队列用于任务间数据交互的支持。

信号量用于任务事件发生在任务之间同步使用。

自旋锁、互斥锁通常用于对共用内存数据的保护。

详细Liteos的使用间接请参考华为Liteos开发文档

liteos 应用入口在targets\…\Src\main.c的main函数中,在任务调度函数(LOS_Start)运行前,初始化应用任务(create_work_tasks)即可。

1

单次与循环任务写法

initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)TestTask1;

ret = LOS_TaskCreate(&g_taskLoId, &initParam); //在main函数中创建任务


UIN32 testTask1(VOID)

{

UCHAR i = 5;

Single Task(); //此处任务运行一次

while(1)

{

Cyclic Tasks(); //此处任务无限次数运行

}

while(i –)

{

Multiple Tasks(); //此处任务运行 i次

}
}


中断写法

ret = LOS_HwiCreate(_VECTOR,0,0(VOID(*)(uintptr_t)) osInterruptHandler,0);

STATIC VOID osInterruptHandler(VOID);

{

        //中断服务处理函数

}

推荐阅读