打开主菜单

谷雨文档中心 β

更改

NRF52832DK-DFU固件升级教程

添加2,820字节2020年1月7日 (二) 11:34
dfu add the bootloader contents
''注:关于nrf_bootloader,nrf_dfu,nrf_dfu_transport详细说明,可以查看Nordic的nRF5_SDK_15.2.0文档。''
=== Bootloader详细说明 ===
在DFU过程中,Bootloader占据作用的位置,这章节将详细说明DFU过程中,Bootloader所做的工用。
 
Bootloader主要负责的事项:
* 引导应用程序
* 激活新固件
* 进入DFU 模式,激活DFU传输,并交付接收到的新固件
* 喂狗看门狗定时器
在Nordic提供的SDK中,每个bootloader例子都包含一DFU传输方式。
 
==== Bootloader 设置页信息 ====
这个设置页(settings page)存储在非易失性存储器(flash)中,用于保存bootloader与DFU相关的信息。这个设置页主要包含以下几方面的内容:
* 当前固件大小,CRC-32校验值
* 挂起固件大小,CRC-32校验值
* 固件更新进度
* 固件激活时度
* 当前固件版本(应用程序与bootloader)
* 一些特殊数据
 
==== 固件激活(Fireware activation) ====
固件激活是固件更新最后一步。在启动期间,bootloader将会读取settings page里的相应信息,基于这些信息固件激活会被触发。固件激活涉及到新固件copy,以代替旧固件(如果应用程序是双块区域的,这个将在memory layout会用说明),同时会更改settings page信息,以请允许新固件启动。bootloader 要确保copy过程中断电安全。
 
==== DFU 模式(DFU mode) ====
在DFU模式,bootloader会打开DFU传输,以便设备接收新的固件。bootloader进入DFU模式,可以通过以下几个条件:
* 没有有效的应用程序存在
* SoftDevice与有效的应用程序都存在时,host请求bootloader进行应用程序更新
* 进入DFU模式可以通过以下几个源触发:
** Button(NRF_BL_DFU_ENTER_METHOD_BUTON)
** Pin reset(NRF_BL_DFU_ENTER_METHOD_PINRESET))
** GPREGRET寄存器设置特定的值(NRF_BL_DFU_ENTER_METHOD_GPREGRET)
** 应用程序通过向settings page写入请求(NRF_BL_DFU_ENTER_METHOD_BUTTONLESS)
当进入DFU 模式,不活动定时器被启动。当定时器到期时,bootloader就会复位。任何DFU活动都会使不活动定时器重启。不活动定时器超时时间默认是NRF_BL_DFU_INACTIVITY_TIMEOUT_MS。如果SoftDevice激活后,设备进入DFU模式,不活动定时器超时时间被设置为NRF_BL_DFU_CONTINUATION_TIMEOUT_MS。
 
==== 启动应用程序(Starting the application) ====
基于settings page的信息,bootloader可以确定是否有应用程序存在,处在什么位置。在启动应用程序之前,bootloader会检查程序的完整性。当然完整性检查也可以在特定的情况下跳过以减少启动时间(NRF_BL_APP_CRC_CHECK_SKIPPED_ON_GPREGRET2,NRF_BL_APP_CRC_CHECK_SKIPPED_ON_SYSTEMOFF_RESET)。只要以下之一条件发生,bootloader就会进入DFU模式:
* 没有application安装
* 完整性检查失败
* 没有setttings page
[[分类:NRF52832DK]]
[[分类:实验手册]]
119
个编辑