[Nordic BLE]nRF51822 OTA 之修改boot区大小修改

针对Nordic BLE,nRF5协议栈设备OTA 之修改boot区大小修改

Platform:Keil5.14、nRF5_SDK_11.0.0_89a8197

【SPP】Content:

1、NORDIC 51 OTA简介
      对于nRF51822来说,升级过程有点特殊,nRF51822芯片内部有段SoftDevice的程序,它是芯片上电后首次运行的程序,不过这段程序不负责程序升级,它是Nordic官方提供的蓝牙协议栈程序,当然它也具备一点bootloader的功能,也就是说,芯片上电后,它会判断芯片内部是否有bootloader代码(bootloader代码位置固定,所以它能判断出是否有合法的bootloader程序),若有bootloader程序则会跳转到bootloader程序执行,若没有bootloader程序而只检测到了用户的app程序,那么就直接跳转到app程序运行,当然这个bootloader程序就是我们自己主要改写的代码,只是它存储的位置和app程序是不一样的。


       1.1、Flash空间布局

                                                                  

                                            
  图片来源: Nordic SDK 文档(https://developer.nordicsemi.com/nRF5_SDK/nRF51_SDK_v8.x.x/doc/8.1.0/s130/html/a00102.html)

1.2、bootloader起始地址修改
        本文Applicaton区地址为0x1B000-0x3C000,大小为132k,由Flash布局可知bootloader区地址为0x3C000-0x40000,大小为16k。由于我们需要在boot区操作外部flash,需要移植spi-flash通用驱动库,导致boot区不够用。通过阅读SDK文档,得知我们可以通过修改boot起始地址,改变boot区域的大小。
        例如:修改BOOTLOADER_REGION_START宏为0x38400,然后将工程中配置也修改为0x38400,将size调整相对应大小。
        注:nRF51822_AC的flash为256k,所以最大地址为0x40000,故将size改为0x40000-0x38400。(所有地址必须为0x400的整数倍,由于flash的单位为0x400)。

                            
        1.2.1 烧写程序时,必须先擦除整个芯片,然后先烧写softdevive,然后再烧boot,烧写工具必须为nrfjprog。

                            

           至此boot区大小已经修改成功为0x7800,我们可以在boot区移植更多功能的代码了;         


原文:https://blog.csdn.net/qq_33897480/article/details/80082478 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值