设计网站设计,做网站哪里接单,找工程包工平台app,广告公司常用软件NRF52832在OTA升级时#xff0c;修改了APP的蓝牙MAC会导致无法升级#xff0c;原因是OTA程序的蓝牙MAC没有被修改所以手机扫描蓝牙时无法连接
解决办法
在bootloader的程序里面加入修改蓝牙mac地址的代码实现原理#xff1a;
在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大小不要和其他文件地址冲突了