Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制][SDK广播超时会复位重启][获取复位源][128位UUID改成16位]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题

本文摘录于:https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人!
先参考上面的文章做如下修改:
在这里插入图片描述

将如下代码:
// <0=> NRF_CLOCK_LF_SRC_RC 内部时钟
// <1=> NRF_CLOCK_LF_SRC_XTAL 外部晶振时钟
// <2=> NRF_CLOCK_LF_SRC_SYNTH  从高速时钟合成的低速时钟

#ifndef 
### BLE 协议栈初始化卡死问题分析 当遇到BLE协议栈初始化过程中出现卡死的情况时,可能的原因涉及多个方面。通常这类问题与硬件配置不当、固件版本不兼容或是特定设备的独特行为有关。 对于Nordic Semiconductor的nRF52系列MCU,在移植FreeRTOS操作系统并集成其官方提供的BLE SDK时,可能会遭遇此类挑战[^3]。具体来说: - **硬件抽象层(HAL)**:确保所有必要的外设驱动程序已正确设置,并且这些驱动能够稳定工作于所选微控制器上。 - **内存分配**:检查堆栈大小以及静态/动态内存池尺寸是否合理设定,过小可能导致系统资耗尽从而引发挂起现象;过大则浪费有限RAM空间影响性能表现。 - **中断优先级管理**:调整不同ISR(Interrupt Service Routine)之间的相对重要程度,防止高优先生命体征服务抢占低优先级但时间敏感的任务处理机会造成阻塞。 针对上述提到的具体情况——即更改blob数据结构中的任意字节或MAC地址均会使验证失败这一特性[^1],推测可能是由于安全机制的存在所致。为了绕开此障碍继续调试过程,可以考虑采取如下措施之一: #### 方法一:禁用某些安全性功能 如果项目允许降低部分防护级别,则可以在编译选项里关闭那些不必要的加密算法或者身份认证流程,以便更轻松地进入下一步骤开发阶段。 #### 方法:模拟合法输入序列 通过逆向工程理解目标平台是如何构建初始状态参数集(如随机数种子),进而尝试构造一组满足条件的数据提交给底层API调用函数作为启动参数传递进去。 ```c // 示例代码片段展示如何创建一个自定义的安全上下文对象用于测试目的 ble_gap_sec_params_t sec_param; memset(&sec_param, 0, sizeof(sec_param)); sec_param.bond = SEC_PARAM_BOND; // 是否建立绑定关系 sec_param.mitm = SEC_PARAM_MITM; // 中间人攻击保护开关 ... err_code = sd_ble_gap_authenticate(conn_handle, &sec_param); APP_ERROR_CHECK(err_code); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值