【已解决】BenKen V1.63 整片擦除后 烧录UA固件不能运行
元旦前还程序还能正常跑,用的WindIDE生成的一个点灯Demo,昨天下载的时候改了一下固件名字,发现没法下载,就选了 整片擦除,然后下进去没法用了,只有UA固件地址0x11000Debug串口什么东西也没有,然后我改成了QIO的固件地址0x00,Debug刚开始还有日志,后来再刷UA固件,还是不能正常运行
元旦前还程序还能正常跑,用的WindIDE生成的一个点灯Demo,昨天下载的时候改了一下固件名字,发现没法下载,就选了 整片擦除,然后下进去没法用了,只有UA固件地址0x11000Debug串口什么东西也没有,然后我改成了QIO的固件地址0x00,Debug刚开始还有日志,后来再刷UA固件,还是不能正常运行
花露水 2023年 Jan 4日 13:58元旦前还程序还能正常跑,用的WindIDE生成的一个点灯Demo,昨天下载的时候改了一下固件名字,发现没法下载,就选了 整片擦除,然后下进去没法用了,只有UA固件地址0x11000Debug串口什么东西也没有,然后我改成了QIO的固件地址0x00,Debug刚开始还有日志,后来再刷UA固件,还是不能正常运行
整片擦除后bootload也被擦除了,QIO 固件中有 bootload,需要烧录下 QIO 固件(起始地址需要修改为0x00000000)。下图为烧录 QIO 的配置:
之后如果需要再烧录UA固件,起始地址需要修改为 0x00011000
我刚才重新下载了QIO,但是配网没法用了,很奇怪
附件里是日志
应该是 KV flash 没有初始化导致的。有两种方法可以解决:
Code: Select all
#include "tuya_ws_db.h"
...
ws_db_init_mf();
注意:方法二在正式生产中不可使用,只能在调试开发过程中使用
你这里在对模组进行整片擦除,模组内的授权信息也就没了,推荐使用方式一对模组进行一次烧录授权。你也可以通过代码将 UUID 和 authkey 写入flash 中,关于代码写入授权信息的方式你可以参考 SDK 中带的 tuyaos_demo_quickstart 示例:
我试试
还是不能配网,也进不去线程
Code: Select all
TATIC VOID_T user_main(VOID_T)
{
OPERATE_RET rt = OPRT_OK;
// Initialization, because DB initialization takes a long time,
// which affects the startup efficiency of some devices,
// so special processing is performed during initialization to delay initialization of DB
TY_INIT_PARAMS_S init_param = {0};
init_param.init_db = TRUE;
strcpy(init_param.sys_env, TARGET_PLATFORM);
TUYA_CALL_ERR_LOG(tuya_iot_init_params(NULL, &init_param));
// Initialization LWIP
#if defined(ENABLE_LWIP) && (ENABLE_LWIP == 1)
TUYA_LwIP_Init();
#endif
ws_db_init_mf();
// Initialize device
PR_DEBUG("device_init");
TUYA_CALL_ERR_LOG(__soc_device_init());
return;
}
花露水 2023年 Jan 5日 09:56还是不能配网,也进不去线程
Code: Select all
TATIC VOID_T user_main(VOID_T) { OPERATE_RET rt = OPRT_OK; // Initialization, because DB initialization takes a long time, // which affects the startup efficiency of some devices, // so special processing is performed during initialization to delay initialization of DB TY_INIT_PARAMS_S init_param = {0}; init_param.init_db = TRUE; strcpy(init_param.sys_env, TARGET_PLATFORM); TUYA_CALL_ERR_LOG(tuya_iot_init_params(NULL, &init_param)); // Initialization LWIP #if defined(ENABLE_LWIP) && (ENABLE_LWIP == 1) TUYA_LwIP_Init(); #endif ws_db_init_mf(); // Initialize device PR_DEBUG("device_init"); TUYA_CALL_ERR_LOG(__soc_device_init()); return; }
你的 tuyaos是使用的哪一个版本的,你先烧录下SDK里面自带的 tuyaos_demo_quickstart 示例的 QIO
好了,能正常运行了,是不是烧录QIO的时候不能全擦除?
不要全擦,会把一些必要信息给擦掉,导致系统无法正常运行。
你需要把 tuyaos_demo_quickstart 里面的 UUID 和 authkey 改成你的 uuid 和 authkey,不然的话可能会出现设备掉线等问题的。