找回密码
 立即注册

微信扫码登录

查看: 401|回复: 6

休眠设备如switch在没有加网的情况下,IO唤醒会重启

[复制链接]

24

主题

39

回帖

290

积分

华贵铂金

积分
290
发表于 2025-4-24 08:33:29 | 显示全部楼层 |阅读模式 来自 广东深圳
information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: 8258
SDK及版本: V3.7.1.2_Patch_0001(PR)
在开发测试过程发现,对于End device设备,在设备没有加网情况下,通过IO唤醒,设备会重启,为什么会这样设计呢?
按理不管有没有网络,休眠后唤醒应该执行isRetention为true这条支线。



telink-zb-switch.png

27

主题

297

回帖

937

积分

版主

积分
937
发表于 2025-4-25 16:06:27 | 显示全部楼层 来自 上海
检查一下你的休眠模式,如果是deep with retention模式的话才会执行isRetention的分支。

24

主题

39

回帖

290

积分

华贵铂金

积分
290
 楼主| 发表于 2025-4-26 15:41:44 | 显示全部楼层 来自 广东深圳
这个sampleSwitch默认不是deep with retention模式吗? 如果设备有网络,则IO唤醒时会执行isRetention分支。
麻烦贵司可验证确认一下这种情况,以及如何解决不管设备有没有网络,在IO唤醒时应该执行isRetention分支,而不应该执行初始化的分去。

27

主题

297

回帖

937

积分

版主

积分
937
发表于 2025-4-30 16:25:22 | 显示全部楼层 来自 上海
在drv_pm_lowPowerEnter()函数中,可以找到如下代码,唤醒源决定了睡眠模式可能是DEEP_WITH_RETENTION或DEEPSLEEP模式。
drv_pm_sleep_mode_e sleepMode = (wakeupSrc & PM_WAKEUP_SRC_TIMER) ? PM_SLEEP_MODE_DEEP_WITH_RETENTION : PM_SLEEP_MODE_DEEPSLEEP;


所以,如果没有timer事件的话就是进的deep模式。
当然,你可以修改休眠模式,强制使其进入deep with retention的休眠模式。

24

主题

39

回帖

290

积分

华贵铂金

积分
290
 楼主| 发表于 2025-5-7 17:55:18 | 显示全部楼层 来自 广东深圳
谢谢,这个回复对我很有帮助!
有以下问题,需要麻烦您进一步解答:
1. 对于sampleSwitch demo, 设备没有入网时,也就是没有timer事件了,那么就是在deep模式?
2. 可强制使其进入deep with retention的休眠模式,是通过修改为drv_pm_sleep_mode_e sleepMode = PM_SLEEP_MODE_DEEPSLEEP; ?
3. sleepMode为什么要这样判断一下,是因为功耗?PM_SLEEP_MODE_DEEP_WITH_RETENTION和PM_SLEEP_MODE_DEEPSLEEP之间的功耗相关很大吗?

27

主题

297

回帖

937

积分

版主

积分
937
发表于 2025-5-9 19:42:17 | 显示全部楼层 来自 上海
1. 是的
2. PM_SLEEP_MODE_DEEP_WITH_RETENTION
3. deep with retention模式下,部分RAM会保持供电,所以休眠功耗会比deep模式大。

24

主题

39

回帖

290

积分

华贵铂金

积分
290
 楼主| 发表于 2025-5-14 08:19:13 | 显示全部楼层 来自 广东深圳
非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-6-7 00:50 , Processed in 0.110804 second(s), 24 queries .

Powered by Telink 隐私政策

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

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