Nordic 52840 DFU 过程中的若干问题

        最近工作中用到了52840作为MCU开发项目。 DFU功能肯定是必不可少的配置。  之前在52832, 51822 中用的很熟练啦。 觉得应该也是一样的流程吧。 结果着实遇到了麻烦, 反复找了几天的原因才得以解决, 记录一下,为自己也为遇到同样问题的人少走点弯路。 关于DFU 的一般过程,搜一下可以找到很多, 这里就不赘述。 我遇到的问题就是无法进入DFU。 

问题一: 如何从bootloader中打印Log数据

        当遇到无法进入DFU时, 想到的第一个方法就是先从bootloader中打印出调试信息。 我用的SDK是SDK17.1.  52840的bootloader 默认的flash起始地址是0XF8000, 大小为0X6000。 当从SDK_Config.h 里使能Log之后编译出现很多错误, 原因就是bootloader的空间太小啦,不足以放下Log使能后的bootloader。调整bootloader的其实地址为0xF4000, 大小为0XA000。编译通过, 现在可以打印bootloader的调试信息啦。 

问题二:签名错误 Signature failed (err_code: 0x8542)

        通过打印Log的调试信息。 发现bootloader计算出来的签名 和 上传的升级包的签名是不一样的。 仔细对比发现, 签名64个字节,前32个字节和后32个字节如果调换一个顺序就和升级包的签名就一致啦。 进一步调试, 发现在bootloader中有函数nrf_crypto_backend_micro_ecc_verify()用于验证签名。函数中 的宏定义ECC_BACKEND_SWAP_BYTES 中的内容是灰化的。 这部分灰化的代码正是交换签名字节的顺序。 使能的方法就是在预编译里加入 uECC_VLI_NATIVE_LITTLE_ENDIAN=1

### 关于 nRF Connect 的详细使用教程 #### 工具概述 nRF Connect 是 Nordic Semiconductor 提供的一套工具集合,旨在简化蓝牙低功耗 (BLE) 设备的开发、调试和测试过程。该工具支持多种平台,并提供了图形化用户界面 (GUI) 和命令行接口 (CLI)[^1]。 --- #### 开发环境搭建 为了开始使用 nRF Connect 进行开发,需要完成以下准备工作: 1. **安装 nRF Connect SDK** 可以通过官方提供的指南下载并安装 nRF Connect SDK。推荐使用 Visual Studio Code 并配合 nRF Connect for VS Code 插件来构建开发环境[^2]。这种方式不仅提供了一个集成化的 GUI 界面,还包含了强大的 CLI 功能,能够显著提升开发效率。 2. **IDE 选择** 尽管 nRF Connect SDK 不依赖特定的 IDE,但建议优先考虑使用 VS Code 结合扩展插件的方式。如果选择其他 IDE,则可能需要手动配置一些额外的步骤。 3. **命令行工具** 对于偏好 CLI 的开发者,可以通过 `nrfutil` 命令行工具实现固件更新等功能。具体安装方法可参考官方文档中的说明。 --- #### BLE 设备调试与配置 nRF Connect 提供了一系列功能,帮助开发者快速上手 BLE 设备的调试工作: - **数据读写与 GATT 配置** 利用 nRF Connect 应用程序,可以直接连接到目标 BLE 设备并对其实现数据读取、写入以及 GATT 服务/特性的配置操作。这一特性极大地降低了 BLE 协议栈的学习门槛[^3]。 - **高级功能** 支持更复杂的场景需求,比如 OTA 固件升级、广播包分析等。这些功能均可以在应用内部找到对应的选项卡进行调用。 --- #### 测试框架支持 对于自动化测试的需求,nRF Connect 同样给出了完善的解决方案——基于 XML 脚本驱动的测试机制。以下是其主要特点: - **预定义模板** 官方已经准备好了若干示例脚本(如 HRM-DFU 和 HRM-Scanning),可供学习借鉴。每份脚本都附带详细的注释说明,便于理解各个字段含义及其作用范围[^4]。 - **跨平台兼容性** 虽然默认仅提供了适用于 Windows 的批处理文件 (`test.bat`) ,但实际上无论是在 macOS 或者 Linux 下都可以借助 ADB 命令达成相同效果。 --- #### 实际案例演示 假设现在要创建一个简单的项目并通过 nRF Connect 编译部署至硬件板子上,整个流程大致如下所示: ```bash # 初始化一个新的工程目录 west init my_nrf_project # 克隆远程仓库内容填充进来 cd my_nrf_project && west update # 设置编译器路径等相关参数 source zephyr-env.sh # 构建指定的目标二进制镜像 west build -b nrf52dk_nrf52832 samples/basic/blinky/ # 最终烧录结果到物理芯片当中去 west flash ``` 上述代码片段展示了如何利用 Zephyr RTOS 框架结合 West 工具链完成从零起步直至最终成品输出全过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值