物联网实践 | Huawei LiteOS开发环境搭建及Demo程序在Hi3861上编译烧录运行

物联网实践 | Huawei LiteOS开发环境搭建及Demo程序在Hi3861上编译烧录运行,第1张

本次实践是为尝试在嵌有华为海思芯片的 Hi3861 WIFI物联网开发板上配置开发环境并使用配套开发工具( HUAWEI DevEco Device Tool 或 HUAWEI LiteOS Studio )将Demo工程编译烧录和运行。

参照华为海思编撰的 《物联网技术和应用》 进行搭建。

1.确认开发环境已经正确安装后,启动 Huawei LiteOS Studio

2.新建工程, SDK版本 选择 HiHope WiFi_IoT Hi3861SPC025

SDK目录 在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_WiFi-IoT_Hi3861SPC025 ;

参考目录 选择在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_Pegasus_HelloWorld 。

目标板Hi3861V100。

3.按F4进入工程配置, 目标板配置 中:厂商 HiSilicon ,选中目标板 Hi3861V00 ,确认。

4. 编译器配置森渗散 中:SConstruct脚本,点击文件夹右侧的放大镜自动搜索SConstruct脚本位置,正常搜索完点确认。

5. 烧录器配置 中:烧录方式选择 HiBurner ,确认。

6. 串口配置 中:成功连接Hi3861板后,端口选择唯一一个COM端口;波特率选择 921600 ,确认。

7.F7 编译 ,成功此氏时终端输出紫色 BUILD SUCCESS 字样。

8.F8 烧录 ,出现HiBurn程序窗口时,按一次喊链Hi3861板上的Ret按键,烧录开始。成功时如图:

9.烧录完成,重新拔插数据线,HelloWorld程序运行正常,OLED屏上显示Hello World字样,Hi3861板上LED灯闪烁。

Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NON不同的可靠性传输模式

GIT地址: https://github.com/eclipse/californium

模块说明

~.californium-core

californium 核心模块,定义了一系列协议栈核心接口,并提供了Coap协议栈的完整实现,

~.element-connector

从core模块剥离的连接器模块,用于抽象穗拆网络传输层的接口,使得coap可以同时运行于udp和tcp多种传输协议之上;

~.scandium-core

Coap over DTLS 支持模块,提供了DTLS 传输的Connector实现;

~.californium-osgi

californium 的osgi 封装模块;

~.californium-proxy

coap 代理模块,用于支持coap2coap、coap2http、http2coap的转换;

~.demo-xxx

样例程序;

其中,californium-core和element-connector是coap技术实现最关键的模块,后面的分析将围绕这两个模块进行。

Californiium 定义了三层架构:

1 网络层,负携族碧责处理端口监听,网络数据收发;

2 协议层,负责Coap协议数据包解析及封装,实现消息的路由、可靠性传输、Token处理、观察者模型等等;

3 逻辑层,负责 Resource定义和映射,一个Resource 对应一个URL,可独立实现Coap 请求处理。

异步线程池

三层架构中都可以支持独立的线程池,其中网络层与协议层的线程池保持独立;

逻辑层可为每个Resource指定独立的线程池,并支持父级继承的机制,即当前Resource若没有定义则沿用父级Resource线程辩举池;

若逻辑层未指定线程池,则默认使用协议层的线程池。

GIT地址: https://github.com/eclipse/californium

Coap是基于UDP的应用层,但是Californium实现了coap udp和tcp两种传输层协议,单次请求传输限制在1M以内。

提供:GET、POST、PUT、DELETE四种请求类型。

Coap是基于二进制的协议,header只有4个字节,非常紧凑。

console模式既是即时命令行模式戚巧, 也可以称之为交互模式, 就像micropython的交互模式一样

烧录console模式脚本, 烧录方法和第一篇中讲解的一样, 脚本是luattools v2自带的,在 \resource\8910_script\script_LuaTask_V2.3.6\demo\console 目录下

烧录完成后, 我们需要用一条micro-USB数据线连接UART接口, 然后打开电脑上的串口调试助手, 我们可以看到串口调试助手进入了console

根据air724ug a13原橘仔拦理图: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/attachment/20210106210504049_EVB_Air724UG_A13_%E8%AE%BE%E8%AE%A1%E6%96%87%E4%BB%B6_20200723.pdf

我们可以看到: gpio1接到了 绿色LED灯上

现在我们想点亮这个灯, 方法就是在console中输入命令使得gpio1引脚拉高

具体 *** 作步骤只有一步, 在控制台输入:

灯亮了。这里, 我们其实用了一个pins模块的setup函数。参考API: http://doc.openluat.com/wiki/3?wiki_page_id=1382

参考文档: http://doc.openluat.com/wiki/6?wiki_page_id=60

Air724UG模块引脚共支持29个GPIO,部分引脚上电前后状态不同,如使用这些管脚,需根据实际情况使用。

注意 : Air724UG没有GPIO8

对luat来说 GPIO控制只有以下两个方法:

首先要引入 pins模块

返回值

返回function

配置为输出模式时,返回的函数,可以设置IO的电平

配置为输入圆胡或者中断模式时,返回的函数,可以实时获取IO的电平

精彩的设计, 以下是举例:

我们可以初始化一个pin脚blue_led为输出.

此时blue_led这个变量是个function类型的数据

上面的配置是输出模式,所以返回的function可以设置IO的电平

明白了, setup以后,控制GPIO高低可以直接 blue_led(0) 这样了

以demo中的console为例:

通过看main文件,我们可以确定:

下面我们来一个LED闪烁程序,尝尝鲜

然后开始编写逻辑:

我们发现, 一个小小的闪灯并不简单, 涉及了任务等我们没有接触过的luat特性, 接下来, 我们会慢慢的越来越了解

下面, 尝试将闪烁函数抽取并开启多任务

根据上面的 pins.setup 函数,如果函数的第二个参数传入function的话,就会开启GPIO中断

下面我们来尝试一下:

由于开发板没有按键,我们使用GPIO15来模拟按键, GPIO15的位置如下图所示

开启中断模式, 我们首先要定义一个function作为中断函数, 这里还是使用了匿名函数

根据上面的 pins.setup 函数的返回值, 如果是中断模式时,返回的函数可以实时获取IO的电平, 所以我们可以看一下中断电平


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8198316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存