NRF51800 空中升级DFU

下面是基础软件的安装:【抄袭他人所得】

1.安装Python软件,建议版本2.7.9及以上,不超过3.0版本【以下安装步骤需要联网】
2.安装Python的pip模块,通过命令提示符进入到Python的安装目录,在命令提示符中输入命令“python.exe -m pip install SomePackage”进行安装(如图1),如果需要更新则按照命令提示符的提示输入命令进行更新,

更新命令应该是“python.exe -m pip install --upgrade pip”,【不同版本命令不同,实际命令参照命令提示符的提示】。


图 1
我的电脑中已经安装Python和pip模块,青色部分是Python的安装路径,红色部分是安装命令。由于电脑中已经安装过pip模块并更新到了最新版本,所以此处提示安装满足需求。
3. 安装nrfutil软件,通过命令提示符进入到pip模块的安装目录(在Python安装目录下搜索pip,打开pip.exe所在目录就是pip模块的安装目录),输入命令“pip.exe install nrfutil”进行安装(如图2)。

图 2
我的电脑中,青色部分是pip模块的安装路径,红色部分是安装命令。安装完成后可能会提示PATH路径问题(如图3)。

图 3
根据提示将pip模块安装路径添加到系统和用户的PATH环境变量中即可,具体操作方式可自行百度。
4. 安装“Python SetupTools”,在该命令提示符中输入命令“pip.exe install -U setuptools”进行安装(如图4)。

图 4
5. 安装“pyinstaller”,在该命令提示符中输入命令“pip.exe install pyinstaller”进行安装(如图5)。

图 5
6. 获取nrfutil源码操作,你很容易死在这里!!,从“ https://github.com/NordicSemiconductor/pc-nrfutil/ ”下载源代码并解压到文件夹,版本更新多次,注意你的版本可能不再被支持!!!!!!

注意:从上面看出最新的版本包是Version 5.0.0 文件版本包  ,如果你是用nrf51822 的nRFSDK 10.0 的固件包,那马你只能是选择version0.5.2 和更老的版本,不然你做的可能是好几天的无用功。

下面的是我用Version 5.0. 0的资源包的生成过程,如果你的版本选择错了,下面的步骤让你慢慢发现问题。

通过命令提示符进入到该文件夹目录,输入命令“pip install -r requirements.txt”进行安装(如图6)。(在version 0.5.2 的版本中是没有 requirements.txt 的,你可以跳过这一步)

图 6
青色部分是源代码目录,红色部分是命令。
7. 安装nrfutil软件,在源代码目录下的命令提示符中输入命令“ python setup.py install ”进行安装(如图7)。

图 7
8. 安装结束

 DOC命令集合:

可以用 nrfutil settings generate --help 获取一些帮助信息。(在version 0.5.2 的版本中是没有 此条命令)

生成密匙:(在version 0.5.2 的版本中是没有 此条命令)

1. 生成key文件,在某个目录下打开 dos 命令(shift+右键打开) 输入 nrfutil.exe keys generate private.key  就会在当前目录生成private.key文件。
2. 生成key.c文件,在有key文件的目录下打开 dos 命令(shift+右键打开) 输入 nrfutil keys display --key pk --format code private.key --out_file dfu_public_key.c 生成相关的.c文件

 

生成bootloader setting (在version 0.5.2 的版本中是没有 此条命令)

nrfutil.exe settings generate --family NRF51 --application application.hex --application-version 3 --bootloader-version 2 --bl-settings-version 1 bootloader_settings.hex

红色是你要支行的文件,蓝色是生成的文件。

生成zip 软件包,也就是手机app升级需要的包:(在version 0.5.2 的版本中是没有 此条命令)

nrfutil pkg generate --hw-version 51 --application-version 1 --application application.hex --sd-req 0x87 --key-file private.key application.zip

红色是你要支行的文件,蓝色是生成的文件。

再这个地方一定要查看你所安装的版本能不能生成你对应的所需文件!!!!!!!

DOC 中执行 nrfutil pkg generate --help 命令,在这里你就能发现你的源库选的对不对了。

  大大 总结!:

 下面是可以判定成功案列: 芯片是NRF51822 ,官方固件包  nRF51_SDK_10.0.0_dc26b5e,官方协议栈 s110_nrf51_8.0.0_softdevice.hex 或者 s110_nrf51822_7.0.0_softdevice.hex ,官方源 pc-nrfutil库 nrfutil-0.5.2

安装软件同上,后期有必要再添加软件。

DOC 运行: nrfutil.exe dfu genpkg --help

生成DFU升级包:

 nrfutil.exe dfu genpkg ants_app.zip --application ants.hex --application-version 0xffff --dev-revision 0xffff --dev-type 0xffff --sd-req 0x0064

红色是你要支行的文件,蓝色是生成的文件。

总结:此版本的升级方案没有密匙加密这相当不安全的!!!。

原文地址:https://www.cnblogs.com/LVNG2018/p/10411574.html