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

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

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

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

NRF51800 空中升级DFU的更多相关文章

  1. NRF52832空中升级DFU

    Secure DFU环境搭建 升级原理,加密原理在此不做描述,详情参考http://www.cnblogs.com/iini/p/9314246.html 1.工具一览 gcc-arm-none-ea ...

  2. 如何实现蓝牙空中升级BLE OTA

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank) ...

  3. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  4. BLE空中升级 谈(二)

    BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项(续) TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有 编号 名称 Hex 用法 1 Cc2540 ...

  5. BLE空中升级 谈(一)

    BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项 现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里不谈论它是满足 ...

  6. iOS蓝牙空中升级(固件升级)

    空中升级又叫固件升级,指你手机从服务器下载下来的包或者数据,通过蓝牙传输给你的外设升级固件.如果你能把蓝牙的基础搞懂,其实也并不是很难,我在这里只不过提供一下思路. 空中升级略难的地方在于数据处理和交 ...

  7. nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)

    准备需要加入DFU功能的工程 在工程main文件services_init函数中加入DFU服务 uint32_t err_code; // Initialize the async SVCI inte ...

  8. nRF52832 BLE_DFU空中升级OTA(二)编译下载(SDK14.2.0)

    上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是bootloader的,一个是应用程序的,其路径分别为: bootloader:SDK_14.2.0工程\examples\ ...

  9. nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)

    准备工作,需要安装好几个软件,详细的过程请参考下面的文章(http://www.cnblogs.com/iini/p/9314246.html)这里说的非常详细,而且也有工具在云盘,对于初学者非常友好 ...

随机推荐

  1. Vue语法学习第一课——插值

    学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...

  2. oracle 语句导出 导入一张表语句

    导出: exp system/midsoft@bafy0929 file=d:\dzbl_models_temp.dmp tables=(emr.dzbl_models_temp) ; 导入:imp ...

  3. 精进之路之lru

    原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. 实现1 最常见的实现是 ...

  4. double 四舍五入保留一定的位数

    /** * double 类型的 四舍五入 保留一定的位数 * @param value * @param decimal 保留的位数 * @return * @throws Exception */ ...

  5. Laravel Scout 开启队列, 自定义queue name和queue connection

    scout.php的默认配置: 'queue' => env('SCOUT_QUEUE', false), 修改为: 'queue' => [ 'queue' => env('SCO ...

  6. 2018-软工机试-D-定西

    单点时限: 1.0 sec 内存限制: 256 MB 这么多年你一个人一直在走 方向和天气的节奏会让你忧愁 你说你遇见了一大堆奇怪的人 他们看上去好像都比你开心 ——李志<定西> 这首歌的 ...

  7. Jquery easyUI datagrid遇到空行做判断

    点击[上月]按钮直到没有数据,上月按钮禁用.并提示无数据. 最直接的思路就是datagrid('reload',{month:-1}); 可是这样,想了很多办法无法获取加载的数据. 最简单的办法: $ ...

  8. 为UITextField增加MaxLength特性

    iOS 实现方案 在 HTML 的世界里,输入框天生就有 MaxLength 属性,可以限制用户输入的最大字符数量 可惜 iOS 上对应的 UITextField 并没有这样方便的属性,只有自己动手来 ...

  9. ECSIDE标签

    ECSIDE标签之<ec:table>标签的属性说明与使用   EC side是基于jsp tag的开源列表组件,可以帮助我们快速实现墙大的列表的jsp标签.EC side可以展现列表(分 ...

  10. backref 用法

    源码 def backref(name, **kwargs): """Create a back reference with explicit keyword argu ...