ML307R_APP_DEMO_SDK是在ML307R_OpenCPU_Standard_SDK标准代码基础上,新增了面向用户APP层的demo示例,区别于标准代码中的examples的示例代码,app_demo里已对用户常用参数进行提取,用户简单修改参数后即可实现联网自动化、数据透传、FOTA等功能,且各功能均可独立自动运行。
下图为ML307R_APP_DEMO_SDK使用的常见流程及相关函数接口介绍:
本demo相关文件均存放在SDK的app_demo文件夹中,文件包含:
①app_demo_custom ——APP层源代码
②SConscript ——编译脚本
③README ——说明文件
④使用指南
APP层源代码,包含有app_demo_midware、inc、src文件。
app_demo_midware:demo中使用的中间层文件,将ML307R 原生cm开头的函数进行抽象和封装,实现包含:asocket、GPIO、LED、Log日志、网络模块、MQTT、RTC、串口等常用功能,demo基于该中间件进行开发,用户同时也可以参考和使用。
src:demo的.c源文件,目前包含:main主函数、SOCKET、MQTT、OS、FOTA 5项功能,各功能如下:
功能 | 测试函数名 | 函数功能 |
main主函数 | app_demo_main_task | 完成初始化、开启网络自维护 |
SOCKET | app_asocket_demo_func | 自动完成SOCKET连接并搭建一路透传通路 |
MQTT | app_mqtt_demo_func | 自动完成MQTT连接并搭建一路透传通路 |
OS操作系统 | app_os_demo_func | 操作系统,会开启信号量、定时器、消息队列 |
FOTA | app_http_fota_demo_func | 可完成一次FOTA升级过程 |
inc:demo的.h源文件,和.c源文件相对应。包含c文件使用的函数库以及对外部开放的函数声明。
SConscript脚本中包含了以上源文件的编译规则,需要将需要编译的文件进行添加,本SDK中已添加完成。注意:建议.c代码都放入到flash_source_files中运行。
步骤1:编译需预安装python3.7以上版本,安装完python后,打开命令行执行pip install scons安装scons工具。详细编译环境搭建请参考《ML307R_SDK开发指导手册》
步骤2:以测试socket功能为例,将main主函数测试变量区中的宏定义APP_SOCKET_DEMO_TEST设置为1,其余设置为0,建议每次只打开测试一个功能。
步骤3:在SDK根目录下,先执行scons -c清除历史编译信息,再执行相应编译命令启动编译。
编译命令 | 测试函数名 |
scons | 编译custom用户层代码 |
scons -c | 清除编译历史编译信息 |
scons demo=y | 编译标准代码中的demo即examples中的demo |
scons app_demo=y | 编译app_demo中的代码,即本文提到的demo |
步骤4:scons app_demo=y执行编译,编译成功后固件在out/image/目录下。
步骤5:使用aboot工具下载固件,具体参考《维护诊断工具用户手册》。
步骤6:例如使用ML307R开发板进行测试,需插入可正常使用4G物联卡,接好电源、两路串口和天线,在电脑串口助手工具打开相关串口,再执行上电开机操作。
1、使用串口工具连接模组DBG 口打印日志,打印相关开机信息即说明固件下载成功,demo开始运行。
2、使用串口工具连接UART0,发现服务器下发了117.136.30.2:54244 CONNECTED OK 说明TCP连接完成。
3、查看LOG部分关键字 出现HAL_SOCKET_MSG_CONNECTED 再次确认了TCP已连接完成。
前文已经介绍了如何运行app_demo,本章节将介绍如何添加用户自己的工程,这里提供两种方法:
方法一:基于app_demo_custom创建用户工程
基于app_demo_custom中添加自己的文件,因为app_demo_custom已经添加好了app_demo_midware中间件,ML307R的所有cm接口、中间件接口都可以使用。步骤如下:
①创建自己的c文件和h文件,注意文件同名,以test.c为例子如下
方法二:基于custom创建用户工程
①可见custom是一个空的工程,首先我们需要将app_demo_midware中的所有源码拷贝至该路径下。
②根据需求添加自己的.c和.h 以添加app_demo_socket.c和test.c为例
每个demo开设了用户参数变量区,用户可根据自己的需求进行参数修改。
SOCKET
MQTT
FOTA
如有其他修改需求,请在充分理解代码的基础上,修改app_demo_xxxx的代码,而非修改app_demo_midware的代码。
问1:app_demo与SDK的examples程序有什么区别?
答:examples 中的demo属于标准SDK中的demo,测试方法主要是通过输入串口命令进行单一功能调试。
app_demo中的demo是标准SDK demo的补充,更面向于用户层的demo,通过简单修改即可实现DTU设备透传功能。
建议用户结合两种demo进行参考和开发。
答:①确认scons是否安装成功
cmd命令中输入scons -v如果能读取到版本 则说明安装无误,如果没有请按照《ML307R_SDK开发指导手册》进行编译环境搭建。
②提示缺少某某文件
首先确认该文件是否存在,其次查看SConscript是否有加入该文件的编译,最后查看路径是否正确,常见问题为多一层路径或少一层路径。
现有功能 | 未来新增功能 |
main主函数 | 文件系统读写 |
SOCKET | IIC器件读写 |
MQTT | SPI器件读写 |
OS操作系统 | 休眠功能 |
FOTA | DUMP死机排查 |
后续我们将以app_demo方式开放更多面向用户侧的demo程序,欢迎客户体验及提出建议。