当前位置: 首页 > news >正文

NRF52832修改OTA升级时的bootloader蓝牙MAC

NRF52832在OTA升级时,修改了APP的蓝牙MAC会导致无法升级,原因是OTA程序的蓝牙MAC没有被修改所以手机扫描蓝牙时无法连接

解决办法

在bootloader的程序里面加入修改蓝牙mac地址的代码

实现原理:

在bootloader蓝牙广播开启之前修改蓝牙mac
通过让bootloader去加载app保存在flash中的mac地址信息
然后进行设置即可

1:添加fsd模块
在sdkconfig.h中加入fds的宏定义
根据编译报错添加所需要的文件及其路径
直到fds组件编译通过
注意:app中修改的mac地址也必须用fds写入flash,
不然bootloader找不到存mac的信息块,并且尽量让
两个fds的大小,page,等配置参数一样(直
接从app的sdkconfig复制过来用就一样了)

2:添加代码
初始化fds
读出mac信息
修改蓝牙

1:打开文件:nrf_dfu_ble.c 找到函数 ble_dfu_transport_init()
2:在advertising_start(); 调用前修改mac	
/**User app code**//****/flash_app_init(); //初始化fdss_dvc_ble_info_t dvc_ble_info = {0}; //这个是自定义变量用来存mac的if (dvc_ble_info_load(&dvc_ble_info) == 0) //读出mac信息{ble_gap_addr_t bleAddr;sd_ble_gap_addr_get(&bleAddr);bleAddr.addr[0] = dvc_ble_info.ble_mac[5];bleAddr.addr[1] = dvc_ble_info.ble_mac[4];bleAddr.addr[2] = dvc_ble_info.ble_mac[3];bleAddr.addr[3] = dvc_ble_info.ble_mac[2];bleAddr.addr[4] = dvc_ble_info.ble_mac[1];bleAddr.addr[5] = dvc_ble_info.ble_mac[0];bleAddr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC; // 公共类型的广播地址;  如果是静态随机,最高2位需要为11:  addr[5]|0xC0if (bleAddr.addr_type == BLE_GAP_ADDR_TYPE_RANDOM_STATIC){bleAddr.addr[5] = (dvc_ble_info.ble_mac[0] | 0xC0);}err_code = sd_ble_gap_addr_set(&bleAddr); //设置macAPP_ERROR_CHECK(err_code);}/****//**User app code**/err_code = advertising_start();VERIFY_SUCCESS(err_code);

3:注意增加代码之后的bootloader的ROM大小不要和其他文件地址冲突了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/327828.html

相关文章:

  • # Python 编程入门教程
  • Sqoop【实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)
  • 第十四届蓝桥杯JavaA组省赛真题 - 特殊日期
  • 《VulnHub》Lampião:1
  • RabbitMq高可用
  • 降本增效的车间管理大屏,车间主任看了拍手称快,速来领取。
  • Open AI要给GPT应用开发者“发钱” 黄金的宏观关系被打破了吗?
  • 【Docker】Docker安全与最佳实践:保护你的容器化应用程序
  • QT 信号(Signal)与槽(Slot)机制
  • 音频干扰检测(频域方法)
  • Rust引用借用 vs 原始指针
  • 抖音视频关键词无水印下载软件|手机网页视频批量提取工具
  • 关于Devc++调试的问题以及解决STL变量无法查看
  • MATLAB:优化与规划问题
  • Oracal执行计划解析
  • 对form表单对象中数组中的字段进行校验的方法
  • 一、JAVA集成海康SDK
  • PAT 乙级 1031 查验身份证 c语言实现
  • LeetCode 345. 反转字符串中的元音字母
  • go中函数与方法的区别与go中关于面向对象理解
  • SQL Server 实验二:数据库视图的创建和使用
  • 树结构导入
  • Promise封装ajax
  • 47 vue 常见的几种模型视图不同步的问题
  • 以太网/USB 数据采集卡 24位16通道 labview 256K同步采样
  • python基础 | 核心库:PIL
  • #Linux系统编程(共享内存)
  • 蓝桥杯备考随手记: practise01
  • 【openGL4.x手册09】转换反馈
  • 记录一次报错提示npx update-browserslist-db@latest