查看: 9159|回复: 10

有人在做nRF51822的自升级吗?

[复制链接]
  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-6-9 14:36:24 | 显示全部楼层 |阅读模式
    分享到:
              用nRF51822有段时间了,现在要开始做 自升级。不知道论坛里有没有人朋友在做这块呢?
    我以前没有接触过任何有关于程序自升级(firmware update)的东西,也不知道该如何着手。还希望有接触过的朋友指点一二。
              不胜感激!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2014-6-13 09:21:25 | 显示全部楼层
            花了两天整理了一下相关资料,看了官方推荐的 在bootloader里面做DFU服务实现OTA方案。但是总感觉有很多局限性。
    比如:  1  手机端必须同时监听两个不同的服务,
              2  每次进 bootloader 前必须复位,所以必须先断开与手机端的连接,再让手机重新扫描新服务。
              3  flash 一共256k. 官方的softdevice 需要占用80k,bootloader 需要14k ,假如application 需要分成两块,一块用来存储当前固件,另一块用来存储新固件,所以每一块有81k.  也就是说,最多只能只能存储两个版本的程序,就没有回滚的功能。那一旦当前固件和新固件都出现错误,就麻烦了。
              4 升级SoftDevice 比较困难,因为bootloader在跑DFU服务的时候,需要用到BLE协议栈。除非在SoftDevice上,再做一层bootloader,专门用来升级softdevice.         

    我更加倾向的方案:
             由于我之前移植过SD卡驱动,以及文件系统。那么完全可以把新固件通过PC直接拷贝到SD卡里,每次MCU上电,先检查SD卡里是否有新版固件,如果有则提醒手机端是否需要升级。手机端确认之后,MCU直接从SD卡里将固件读取出来,写入flash.
             优点:1 实现起来简单方便,升级过程中不需要BLE参与。
                       2  可以在SD卡里保存多个版本(出厂版,当前版,新版)的固件。有利于回滚。

             缺点:1 尤其依赖SD卡的稳定性,一旦SD卡损坏或是出现其他故障,将导致MCU固件无法升级。
                        2 由于固件已经存在于SD中,读取和烧写固件的速度非常快,用户几乎感受不到升级过程,连个进度条都没有。

    目前最终的方案,还没有定下来。

             
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-19 10:02
  • 签到天数: 298 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-6-26 08:44:49 | 显示全部楼层
    Depth 发表于 2014-6-13 09:21
    花了两天整理了一下相关资料,看了官方推荐的 在bootloader里面做DFU服务实现OTA方案。但是总感觉 ...

    分析得相当精彩!楼主最终如何选择呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2014-6-27 09:47:33 | 显示全部楼层
    lch0821 发表于 2014-6-26 08:44
    分析得相当精彩!楼主最终如何选择呢?

    采用方案2.:SD卡方案。
    借助SD卡这一有利条件,直接将固件以文件形式拖放到SD卡中。
    为了能读SD卡中的固件文件(.BIN 格式),我需要把文件系统做到 Bootloader 中。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-14 15:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-7-24 21:45:34 | 显示全部楼层
    也可以不要文件系统,  直接写扇区,  这样简单的多;
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2014-8-1 14:22:22 | 显示全部楼层
    houj.cn 发表于 2014-7-24 21:45
    也可以不要文件系统,  直接写扇区,  这样简单的多;

    SD卡同时还需要用来存储其他的数据,如果不用文件系统,我如何在那么多的文件中找到 .BIN 的firmware文件呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2014-10-9 16:03
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-9-26 11:27:21 | 显示全部楼层
    楼主,请教bootload是自己写还是官方提供的,如果是自己写应该怎样这写,可以存贮在在flash中的哪个地址段?恳请楼主回答.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2014-10-9 16:03
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-9-26 11:28:03 | 显示全部楼层
    Depth 发表于 2014-6-13 09:21
    花了两天整理了一下相关资料,看了官方推荐的 在bootloader里面做DFU服务实现OTA方案。但是总感觉 ...


    楼主,请教bootload是自己写还是官方提供的,如果是自己写应该怎样这写,可以存贮在在flash中的哪个地址段?恳请楼主回答.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-14 15:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-10-14 15:18:22 | 显示全部楼层
    Depth 发表于 2014-8-1 14:22
    SD卡同时还需要用来存储其他的数据,如果不用文件系统,我如何在那么多的文件中找到 .BIN 的firmware文件 ...

    给你的文件在SD卡上分配固定地址
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2014-11-7 14:15:22 | 显示全部楼层
    houj.cn 发表于 2014-10-14 15:18
    给你的文件在SD卡上分配固定地址

    SD卡是用户可读的,万一他格式化了咋办
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 05:13 , Processed in 0.180701 second(s), 32 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.