热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nrf52832DUF功能加看门狗

篇首语:本文由编程笔记#小编为大家整理,主要介绍了nrf52832DUF功能加看门狗相关的知识,希望对你有一定的参考价值。环境:nrf52832

篇首语:本文由编程笔记#小编为大家整理,主要介绍了nrf52832 DUF功能加看门狗相关的知识,希望对你有一定的参考价值。


环境:nrf52832 ,SDK11
问题描述:应用程序中不加WDT时升级功能正常,加了WDT后会在升级一半就重启
原因分析:在升级过程中没有喂狗,导致看门狗发飙了

解决办法:

#ifdef ADD_WDT
static void Feed_WDT(void)
NRF_WDT->RR[0] = WDT_RR_RR_Reload;
#endif

static void wait_for_event()
// Transport is waiting for event?
while(true)

#ifdef ADD_WDT
Feed_WDT();
#endif
// Can't be emptied like this because of lack of static variables
#ifdef BLE_STACK_SUPPORT_REQD
(void)sd_app_evt_wait();
#else
__WFI();
#endif
app_sched_execute();

2、SDK12以后的版本
问题描述:不加WDT时,升级正常,加了WDT后需要升级两次才能切换到application
问题分析:升级过程是没错的,只是在copy bank1_code to bank0_code时出现了看门狗重启
解决办法:
不仅要在wait_event中喂狗,还要在copy code过程中喂狗

1、

static void wait_for_event()
// Transport is waiting for event?
while(true)

#ifdef ADD_WDT
Feed_WDT();
#endif
// Can't be emptied like this because of lack of static variables
#ifdef BLE_STACK_SUPPORT_REQD
(void)sd_app_evt_wait();
#else
__WFI();
#endif
app_sched_execute();

2、
在nrf_dfu_utils.c 中的 nrf_dfu_app_continue喂狗,修改类似下面这样

// Copy the application down safely
do

/* this fix up the bug that need dfu twice to enter application at 2017-10-25 11:43:34 */
// ADD_WDT
#if 1
NRF_WDT->RR[0] = WDT_RR_RR_Reload;
#endif
cur_len = (length_left > split_size) ? split_size : length_left;

推荐阅读
author-avatar
PHP小白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有