NRF52840 BLE OTA

1 . 概述

  一般MCU DFU(Device Firmare Update)接口为USB、UART、I2C等有线接口。对于NRF52840这颗MCU来说,通过BLE可以做到无线的DFU,即OTA(over the air) DFU。这里主要试下Nordic官方的BLE OTA例程,看看有没有上面需要特别注意的点。

2. nRF5 SDK DFU工作原理

  这里介绍下nRF5 SDK Secure DFU(SoftDevice-S140)工作的原理,即需要加密升级过程。

2.1 ROM空间规划

  不同其他家MCU bootloader的放置位置,NRF52系列的Bootloader放置在App的后面,因为前面放置了SoftDevice即协议栈,SoftDevice里面前4K(0x1000)空间放置的是MBR( master boot record) 主引导记录部分,上电后由MBR决定跳转到Bootloader还是SoftDevice里面运行,MBR会读取NRF_UICR->NRFFW[0] 的值,不为0xFFFFFFF时即认为bootloader是有的,所以跳转到NRF_UICR->NRFFW[0]对应的值里运行。所以bootloader工程里会通过编译指令把bootloader起始地址设置到NRF_UICR->NRFFW[0](0x10001014)位置上, 此外bootloader 还会在MBR_BOOTLOADER_ADDR(0x0FF8)地址上写入Bootloader起始地址,在MBR_PARAM_PAGE_ADDR(0x0FFC)地址上也写入MBR Params Page Address。

  这里APP是有两块的,就是Double bank架构,每次都运行App bank0里的程序,bootloader先更新App Bank1,等App Bank1更新OK后,再把Bank1里的内容搬移到Bank0,就完成了一次更新。这样架构能保证即使更新失败时也有设备也有正常功能。

  Reverse区域可以放置一些不希望被更新掉的App数据

  Bootloader(空间占用24K)会判断是否需要跳转到App运行,还是留在bootloader执行升级DFU操作,判断条件如下

  • 按键是否按下(GPIO状态)
  • 保持寄存器GPREGRET1是否为0x
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值