Re: 【求助】【tuyaos】请问如何连接指定IP端口获取FOTA文件
愚者千虑必有一得 2023年 Dec 26日 13:41还没给你发布呢,更新的话,在你原来的基础上更新,不会引入其他的修改。不过这个功能存在2个问题:
1,需要一定的flash空间,大概10k左右
2,工具侧需要开发,现在是没支持的
行,那能告诉我怎么通过接入指定WIFI获取FOTA文件吗,我先试着搞下局域网OTA
愚者千虑必有一得 2023年 Dec 26日 13:41还没给你发布呢,更新的话,在你原来的基础上更新,不会引入其他的修改。不过这个功能存在2个问题:
1,需要一定的flash空间,大概10k左右
2,工具侧需要开发,现在是没支持的
行,那能告诉我怎么通过接入指定WIFI获取FOTA文件吗,我先试着搞下局域网OTA
愚者千虑必有一得 2023年 Dec 26日 13:41还没给你发布呢,更新的话,在你原来的基础上更新,不会引入其他的修改。不过这个功能存在2个问题:
1,需要一定的flash空间,大概10k左右
2,工具侧需要开发,现在是没支持的
我在看 example_http_download 示例的时候有几个疑问
1)mk文件中“首先确保设备正确连接iot平台”是指手机配网后连接到的涂鸦云吗?如果是,出厂设备没有手机配网的如何连接到iot平台
2)连接平台后如何触发“pre_gw_ug_cb”这个回调来获取url,key这些信息
升级的过程主要分为三个部分:
升级前的获取升级包和设备升级能力信息;
下载写入固件到flash;
进行升级切换工作;
如果开发者通过自己的方式获取到了UG固件,并能保证合法性,通过我们的TKL接口,可以直接进行OTA。
Code: Select all
//平台支持的 OTA 能力,一般用于选择下载域名,自己获取固件不需要用这个接口,自己保证正确即可。
OPERATE_RET tkl_ota_get_ability (
UINT_T *image_size,
TUYA_OTA_TYPE_E *type )
//通知开发平台数据开始写入,需要准备资源
OPERATE_RET tkl_ota_start_notify (
UINT_T image_size,
TUYA_OTA_TYPE_E type,
TUYA_OTA_PATH_E path )
//固件数据写入处理,TuyaOS 从云端拉数据写入平台 Flash
OPERATE_RET tkl_ota_data_process (
TUYA_OTA_DATA_T *pack,
UINT_T *remain_len )
//通知开发平台数据写完成,需要校验文件,设置状态
OPERATE_RET tkl_ota_end_notify ( BOOL_T reset )
具体的操作逻辑如下:
我之前获取一个20K的文件测试能够完整下载下来。但是换成UG文件长达6M的文件下载发现每次都不能下载完成,连接就断了。用example_wifi_sta 试验发现,连接成功后18S就会断开。有什么方法关闭这个超时机制或延长这个超时时长吗?
愚者千虑必有一得 2024年 Jan 30日 10:29升级的过程主要分为三个部分:
升级前的获取升级包和设备升级能力信息;
下载写入固件到flash;
进行升级切换工作;
如果开发者通过自己的方式获取到了UG固件,并能保证合法性,通过我们的TKL接口,可以直接进行OTA。
Code: Select all
//平台支持的 OTA 能力,一般用于选择下载域名,自己获取固件不需要用这个接口,自己保证正确即可。 OPERATE_RET tkl_ota_get_ability ( UINT_T *image_size, TUYA_OTA_TYPE_E *type ) //通知开发平台数据开始写入,需要准备资源 OPERATE_RET tkl_ota_start_notify ( UINT_T image_size, TUYA_OTA_TYPE_E type, TUYA_OTA_PATH_E path ) //固件数据写入处理,TuyaOS 从云端拉数据写入平台 Flash OPERATE_RET tkl_ota_data_process ( TUYA_OTA_DATA_T *pack, UINT_T *remain_len ) //通知开发平台数据写完成,需要校验文件,设置状态 OPERATE_RET tkl_ota_end_notify ( BOOL_T reset )
具体的操作逻辑如下:
企业微信截图_17065816502795.png
目前我们已经能获取到了完整字节的UG bin文件,因为我们服务器给的校验方式和tkl_ota.c文件中的校验方式不同,我们参考涂鸦适配层的tkl_ota.c文件,将接收到的数据从UG_START_ADDR 0x12A000开始写入。但写入完后重启没能成功升级,想询问一下如何触发将该区数据写到应用区,来实现升级。
这个接口有调用吗?
OPERATE_RET tkl_ota_end_notify ( BOOL_T reset )
基于你们已经拉到完整的 UG 文件, 你们只要把 UG 文件中的涂鸦头去掉,把剩下的 UG 数据写到 0x12A000 地址上,重启设备就能正常升级了。 涂鸦头结构体如下: