Nordic DFU 空中升级包制作(以52832为例)

 

  【Brief】很多的产品都支持空中升级,何为空中升级(DFU:Device Firmware Update),其实就是设备进行固件升级,网上有很多的说明和讲解,在这里不进行原理的叙述。我也是最近几个月需要学习和使用这个DFU相关的知识,在这篇“平淡无奇”的文章中就行流程的讲解和制作的过程。

  【Choose】nrf52832芯片作为我主要讲解的例子,其他nordic芯片同理;softdevice选用最新的SDK15.2版本;编译软件选用keil MDK;下载工具选nrfgostudio;调试工具和方式:JLink-SWD方式;思维导图绘制工具:X-Mind8。

  【1、准备工作】在制作空中升级包之前,需要有几个准备工作;

    a、先确定你的程序能够正常且正确运行,编译通过;

    b、下载相应的软件进行安装,主要的为:(1)python,一般选择安装3.0以下版本的,常用的为2.7左右版本的;

                                                                       (2)pc-nrfutil,这个是nrf工具安装,非常重要;

                                                                       (3)micro-ecc,nordic DFU中使用了micro-ecc来实现ECDSA算法和功能;

                                                                       (4)MinGW,暂时不需要也可不安装

     c、除了上面的工具,还需要通过命令的方式去实现制作过程。

     d、免费给大家分享一下我整理的部分软件安装包:

       链接:https://pan.baidu.com/s/1NXkyDMb65gswVlFtelHilA 
       提取码:zduy 

  【流程】     

    1、如果每次都输入命令去生成文件,比较麻烦,所以建议自己新建一个文件夹,里面保存自己建的可执行文件(组),即.bat文件,目的在于之后更方便的去使用相关的命令;

    2、下面依次简单说明一下命令和执行结果 (注:我在手机上通过nrfconnect操作的截图不放上来,自己动手亲自操作就明白了),只是说一下制作升级包的流程。

     a、制作第1个.bat命令文件:nrfutil keys generate priv.pem             

                                                   nrfutil keys display --key pk --format code --out_file dfu_public_key.c priv.pem  

     b、制作第2个.bat命令文件 :nrfutil settings generate --family NRF52 --application nrf52832_xxaa_name.hex --application-version number1 --bootloader-version number2 --bl-settings-version number3 settings.hex   

     c、制作第3个.bat命令文件 :mergehex.exe -m s132_nrf52_6.1.0_softdevice.hex nrf52832_xxaa_name.hex -o sd_and_app.hex 

                                                   mergehex.exe -m sd_and_app.hex nrf52832_xxaa_s132_name_boot.hex -o sd_and_app_and_boot.hex       

                                                   mergehex.exe -m sd_and_app_and_boot.hex settings.hex -o name_sd_app_boot_settings_complete.hex      

     d、制作第4个.bat命令文件 : nrfjprog.exe -f NRF52 --eraseall   

                                                     nrfjprog.exe --program "name_sd_app_boot_settings_complete.hex" --verify

                                                     nrfjprog.exe -f NRF52 --reset 

     e、制作第5个.bat命令文件 : nrfutil pkg generate --hw-version 52 --sd-req 自定 --application-version 自定 --application nrf52832_xxaa_name.hex --key-file priv.pem NAME.zip     

      f、制作第6个.bat命令文件 : nrfutil pkg generate --hw-version 52 --sd-req 自定 --application-version 自定 --application nrf52832_xxaa_s132.hex --key-file priv.pem dfu_package.zip

     g、制作第7个.bat命令文件 : nrfutil pkg generate --hw-version 52 --sd-req 自定 --application-version 自定 --application sd_and_app.hex --key-file priv.pem name_boot.zip

  【过程】上面的命令可以根据自己的项目选用的芯片和SDK版本来进行修改;每一个命令都可以在网上自行查到,但是需要注意不要乱用。谨记:一般情况下,public_key整个项目不管是前中后期都是保持不变的,因为一旦改变,后面会导致已推出的设备将无法使用。

     [1]执行第1个.bat文件,目的是创建private 和 public_key,通过.bat文件一步到位:

Nordic DFU 空中升级包制作(以52832为例)_第1张图片

    [2]执行第2个.bat文件,目的在于创建setting文件:

Nordic DFU 空中升级包制作(以52832为例)_第2张图片

     

Nordic DFU 空中升级包制作(以52832为例)_第3张图片

     [3]执行第3个.bat文件,目的是合并sd、boot和app文件:

Nordic DFU 空中升级包制作(以52832为例)_第4张图片

     [4]执行第4个.bat文件,目的是烧录[3]合并的.hex文件,这个步骤可以用nrfgostudio来做,想要用命令实现烧录的也可以执行[4]这个步骤,一般用于大量生产产品时,选用合并烧录命令来烧录会有更高的效率,假设单纯是试验,两个办法都是可行的。

Nordic DFU 空中升级包制作(以52832为例)_第5张图片

     [5]执行第5个.bat文件,目的是制作app的升级包,有时候,你不需要升级其他内容,只需要升级application的时候,就单独分出来做一个升级包即可,尤其是后期维护和修改时。、

     [6]执行第6个.bat文件,目的是制作boot的升级包,跟[5]的原因类似,也是选择进行升级相应的部分,而不是每次都全部进行升级或者是修改,那样造成的效率是很不高的。

Nordic DFU 空中升级包制作(以52832为例)_第6张图片

     [7]执行第7个.bat文件,目的是制作boot和sd的升级包,这个呢,是为了产品的更新换代,比如说我的应用程序没有什么大问题,bug也很少,但是由于我需要这个产品去支持其他的一些应用,那么在升级app之前,我需要把产品底层的文件和启动文件先给修改并且升级,以方便之后产品的功能更新或是其他的更新。

     【小结】其实到这里,制作升级包的工作也就完成了,这些升级包制作完后可以去试验一下;先把打包好的文件存放在手机中,再通过nRFconnect软件尝试进行空中升级,最后查看一下你升级过后的版本号(当然也可以是其他的一些标记来证明空中升级成功)。如果失败,请检查自己的命令参数是否正确(如:sd-req,协议栈ID,不同的协议栈ID号也不相同,所以可以根据nRFgostudio中的提示来进行设置),还有就是确认程序是否支持或开启了dfu的功能。下面分享一张我通过学习稍做归纳总结的一张dfu图:

Nordic DFU 空中升级包制作(以52832为例)_第7张图片

   上图中最后一个命令是帮助命令,如果你觉得什么命令或者不知道怎么去使用nrfutil,那么这个命令可以帮助你去熟悉和使用相应的命令,由于命令描述过多,我仅截个图来给大家参考一下(nrfutil pkg generate --help)。

Nordic DFU 空中升级包制作(以52832为例)_第8张图片

你可能感兴趣的:(Nordic)