本文档详细介绍了如何通过DFU(Device Firmware Update)方式对NRF51822进行空中升级,这是一种常用于嵌入式物联网开发的低功耗蓝牙微控制器的升级方法。整个过程包括了针对NRF51822进行固件升级所需的一系列步骤,以及特定工具链和环境的配置。
首先,你需要安装适用于ARM的GCC 4.9.2015-q3-update版本的编译器工具链,这对于正确编译和链接针对NRF51822的应用程序至关重要。接下来,需要设置开发环境,这包括安装MinGW和mysys,以便运行Python脚本和其他命令行工具。
在软件库方面,文章提到了micro-ecc库,这是一个轻量级的椭圆曲线密码库,对于安全相关的操作是必要的。你需要将micro-ecc库的文件复制到指定目录,并执行make命令编译生成micro_ecc_lib_nrf51.lib库文件。
继续进行升级过程,PyInstaller在此过程中扮演了关键角色,它被用来打包Python脚本为可执行文件。通过pip安装nrfutil工具,这个工具将在后续步骤中用于管理和保护固件更新。安装nRFgoStudio,这是一个专用的开发工具,用于与Nordic Semiconductor的硬件进行交互。
设置环境变量,确保可以访问nRFgoStudio的安装路径,以便执行烧录操作。NRF51822的BootLoader升级需要特别注意,因为它通常不直接通过Keil进行烧录,而是借助外部烧录工具。首先,需要清除闪存,然后依次烧录SoftDevice、BootLoader,这些步骤需要精确配置。
升级过程中涉及到的私钥和公钥管理也是关键环节。使用nrfutil生成私钥和公钥文件,如priv.pem和public_key.c。私钥用于签名固件,而公钥用于验证升级包。将生成的公钥数组替换到dfu_public_key.c文件中,以确保固件的正确校验。
最后,文章强调了在烧录BootLoader时的注意事项,包括正确配置烧录工具和设置BootLoader版本号等升级参数。这一步骤的成功与否直接影响到后续的设备更新能否顺利进行。
本文提供了一个详尽的指南,帮助开发者在嵌入式物联网项目中通过DFU更新NRF51822,涉及到了必要的工具选择、环境配置和固件升级流程,为实际开发提供了实用的参考。