
nrf52832进入DFU升级之前卡死问题
发布日期:2021-07-19 12:30:12
浏览次数:7
分类:技术文章
本文共 1277 字,大约阅读时间需要 4 分钟。
nrf52832 SDK版本:nRF5_SDK_13.0.0_04a0bfd
找到进入DFU BootLoader的函数,如下static void on_hvc(ble_dfu_t * p_dfu, ble_evt_t * p_ble_evt){ ble_gatts_evt_hvc_t * p_hvc = &p_ble_evt->evt.gatts_evt.params.hvc; if (p_hvc->handle == p_dfu->control_point_char.value_handle) { // Enter bootloader if we were waiting for reset after hvc indication confimation. if (p_dfu->is_waiting_for_reset) { (void)bootloader_start(); } }}
之所以会开始,原因在于bootloader_start()被开发者在其他任务事件里面调用了,这种卡死现象并不是100%复现,本人也是在线调试发现的。在线调试时,停止运行,程序会一直卡在__iar_SB +addr。
当然,如果使用在线调试是可以100%复现的,在bootloader_start()中err_code = sd_softdevice_vector_table_base_set(NRF_UICR->NRFFW[0]);处设置断电,如果运行还能跳转到bootloader就没有问题,如果bootloader_start()在其他任务时间调用,该断点处继续运行就不会一直卡住。static uint32_t bootloader_start(void){ uint32_t err_code; err_code = sd_power_gpregret_clr(0, 0xffffffff); VERIFY_SUCCESS(err_code); err_code = sd_power_gpregret_set(0, BOOTLOADER_DFU_START); VERIFY_SUCCESS(err_code); err_code = sd_softdevice_disable(); VERIFY_SUCCESS(err_code); err_code = sd_softdevice_vector_table_base_set(NRF_UICR->NRFFW[0]); VERIFY_SUCCESS(err_code); NVIC_ClearPendingIRQ(SWI2_IRQn); interrupts_disable(); NVIC_SystemReset(); return NRF_SUCCESS;}
转载地址:https://blog.csdn.net/jdsnpgxj/article/details/104070239 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2023年09月16日 18时27分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Java-40】基于Java的IO流处理——字节数组流
2019-03-07
【Java-50】基于Java语言将批量数据导入数据库
2019-03-07
【高数-2】多元函数最值
2019-03-07
Scala编程1|Scala编程环境配置
2019-03-07
scala编程_2|scala变量声明与for循环
2019-03-07
【Scala编程_3】|数组
2019-03-07
【Scala编程_4】IDEA快捷键
2019-03-07
【Scala编程_5】map
2019-03-07
【Scala编程_8】方法与函数
2019-03-07
【Java】List集合常用创建方式
2019-03-07
【Java】String字符串的比较
2019-03-07
基于Spark rdd的单词计数,Java与Scala版本
2019-03-07
由GeoJson格式渲染地图
2019-03-07
Spark集群启动与查看Spark集群进程启动情况
2019-03-07
浮点数精度问题——由Mathf.Floor()引发的思考
2019-03-07
Unity——浅谈AB包(AssetBundle)
2019-03-07
Mac、移动端的抓包方式和注意事项——Charles
2019-03-07
Unity资源管理和策略
2019-03-07