找回密码
 立即注册

微信扫码登录

查看: 327|回复: 2

Zigbee程序根据按键切换deviceid和modeid遇到问题

[复制链接]

10

主题

18

回帖

134

积分

注册会员

积分
134
发表于 2024-9-29 14:27:51 | 显示全部楼层 |阅读模式
大家好,
       最近想做个功能,用按键切换endpoint的device id,和modeid,当我按键切换好后重启,重启会根据条件判断,讲device id 和modeid 重新赋值,当设备已经入网,使用按键调用zb_factoryReset()离网并重启,重启时给mode id重新赋值的时候,程序会跑飞,芯片会变砖,除非重新烧录程序,排除了很久没有发现问题,难道它不允许我这样操作么,以下相关代码:a是从nv中读取的值,当我将以下代码注释了,就不会出现这个问题,所以非常疑惑,希望得到你们的帮助,谢谢


u8 modeid1[6] = {5, 'a','a','a','a','a'};
u8 modeid2[6] = {5, 'b','b','b','b','b'};



void test{
switch(a)
{
        case 1:
                memcpy(g_zcl_basicAttrs.modelId,modeid1,sizeof(modeid1));
                break;

        case 2:
                memcpy(g_zcl_basicAttrs.modelId,modeid2,sizeof(modeid2));
                break;

}       


27

主题

121

回帖

447

积分

版主

积分
447
发表于 2024-9-29 19:07:55 | 显示全部楼层
你好,
g_zcl_basicAttrs是全局变量,从上面的伪代码来看只是往全局变量赋值,这种操作应该是没有问题的。
运行后变砖,说明存在异常操作修改到了固件区,可以将固件读出来和原始的固件进行比较,再着重检查flash操作时是否有非法地址的情况。

10

主题

18

回帖

134

积分

注册会员

积分
134
 楼主| 发表于 2024-9-30 08:48:36 | 显示全部楼层
TL_YB 发表于 2024-9-29 19:07
你好,
g_zcl_basicAttrs是全局变量,从上面的伪代码来看只是往全局变量赋值,这种操作应该是没有问题的。
...

感谢您的回答,可以用BTD读取出来对吧,怎么知道flash地址是合法的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2024-11-24 06:10 , Processed in 0.086116 second(s), 19 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表