logo资料库

SDK12空中升级详细步骤操作.pdf

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
SDK12.0 nrf52832 空中升级详细步骤 小潘 921537102 本文档为个人学习总结,只作为学习交流用途 欢迎大神指导纠正错误。
打开\examples\dfu\bootloader_secure 目录下为 bootloader 源文件存放的路径,如 图。根据官方介绍,SDK12 以前的 bootloader 为 Legacy DFU,12 版本正式引入了 Secure DFU, 是不能与旧版本的兼容的。打开该目录可以发现有两种 bootloader,有_debug 为调试版本, 如果需要避免一些检查可以打开这个版本,本次实验不是使用 debug 版本。本次实验以 nrf52832 SDK12.2 为例,使用正式的 bootloader 版本。 编译 bootloader 出现两个错误:1、uecc.h 文件找不到。2、需要生成私有的 key 首先要安装 micro-ecc 1、根据提示安装 4.9-2015-q3-update 版本的 GCC compiler toolchain for ARM 2、安装一个 WinGW 或者 GCC Make 确保可以运行 Make 编译,这里安装的是 WinGW , 配置 win 系统环境变量 Path,将 MinGW 安装目录里的 bin 文件夹的地址添加到 PATH 里面, (注意:PATH 里两个目录之间以英文的;隔开)。打开 MinGW 的安装目录,打开 bin 文件 夹,将 mingw32-make.exe 重命名为 make.exe,环境变量 Path 配置如图。
在系统变量 Path 编辑 3、安装之后在 GitHub 中,github 地址为 https://github.com/kmackay/micro-ecc 下 载 ecc 的 zip 源 码 复 制 到 \external\micro-ecc 目 录 下 , micro-ecc-master 改名为 micro-ecc,并解压文件。
注意源文件的路径 4、在 bootloader 中找到 external\micro-ecc\nrf52_keil\armgcc 这个路径这 里使用的是 nrf52 和 keil 编译器,在这个目录中有 Makefile 文件,shift+鼠标 右键在此处打开 DOS 命令,输入 make,则开始编译创建 micro_ecc_lib_nrf52.lib 库文件,生成之后编译 bootloader,第一个错误已经解决。
接下来为第二步 Key 的生成 Zip 文件的打包和 key 的生成需要用到 nrfutil 软件,注意,是新版本的 nrfutil 软件(version 1.5.0 or later)与以前不一样的是,是 Python Package,首先在 GitHub 下载 nrfutil 的相关文件,在 这里我安装了 Python2.7,使用 Python 来安装 nrfutil。 Nrfutil 相关文件下载地址: https://github.com/NordicSemiconductor/pc-nrfutil/ 1、安装 Python2.7,将 Python 的路径添加到系统的环境变量中。(方法与上面安装 WINGW 类似) 2、安装好了 Python2.7 之后 pip 已经安装上了,将 pip 的路径配置到环境变量中,打开 cmd, 输入 pip 出现命令列表则表示已经安装成功 我的 Python 和 pip 路径分别为: 3、GitHub 中下载 nrfutil 的相关文件 https://github.com/NordicSemiconductor/pc-nrfutil/ 4、解压压缩包并打开有 setup.py 文件的目录,在此处打开 dos 命令(shift+右键打开)。 5、输入 python setup.py install 这步骤需要有网络的时候运行,安装可能需要等待几分钟时 间。
6、安装成功之后,这个时候\Python27\Scripts 的目录下出现了 nrfutil.exe 则表示安装完成。 7、在 DOS 命令下输入 nrfutil 可以获取更多关于 nrfutil 的信息,则表示 nrfutil 安装成功 现在可以使用 nrfutil 来生成 key 了
在 cmd 命令中输入以下内容: nrfutil.exe keys generate d:\cc_test\private.key 如图在 d 盘的 cc_test 文件夹中会生成 private.key 文件 然后使用这个生成的文件来生成 public key 这里我们直接生成.c 文件 在 cmd 中输入: nrfutil keys display --key pk --format code d:\cc_test\private.key --out_file d:\cc_test\public_key.c 输入完成之后文件夹中会出现相应的.c 文件了 将这个文件改名为 dfu_public_key.c ,将\examples\dfu\bootloader_secure 这个路径下的 dfu_public_key.c 用新生成的替换掉。 此时再编译 bootloader,已经没有错误的提示了 这时在 build_目录下会生成的 bootloader 的 hex 文件,可以用 nRFgo Studio 下载 bootloader 了。注意,还是和以前步骤一样,先下载协议栈,再下载 bootloader。
Bootloader 可以正常工作之后,我们下一步就可以打包我们自己的 application 空中升级包了, 上面安装的新版本的 nrfutil.exe 来进行 zip 包的打包。 一个 zip 包包含了我们要升级的 hex 文件和 init data 还有数字签名。官方可以 softdevice, bootloader 和 application 进行空中升级,在此只演示应用程序的空中升级。 1、准备好应用程序的 hex 文件,通常 hex 文件是编译之后出现在_build 文件夹中,默认 52832sdk 例程编译出来名称为 nrf52832_xxaa.hex。本次实验我们以串口透传例程作为空中 升级的固件。使用的是 Ble_app_uart 例程 2、将前面步骤生成的 private.key 和 application.hex 放入同一个路径中,这里将文件同样放 在放在 d:\cc_test 下 3、在该路径 shift+右键打开 DOS 命令输入以下内容: nrfutil pkg generate --hw-version 52 --application-version 1 --application application.hex --sd-req 0x8C --key-file private.key cc_Dfu12.2.zip 注:这个步骤就是向 zip 中添加 init data 和数字签名,官方定义的规则如下:
分享到:
收藏