导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. sapphiron
    S
    • 继续与 sapphiron 聊天
    • 开始与 sapphiron 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    sapphiron

    @sapphiron

    0
    声望
    4
    帖子
    96
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    sapphiron 关注

    sapphiron 发布的帖子

    • RE: OTA和错误码问题

      @mars 不是校验的问题, 校验成功后写引导, 如果最后写引导这一步出错呢? 写flash并不是百分百成功.
      除起始页256字节之外的flash,即使写失败也不会变砖, 可以回读校验数据是否写入成功. 分区1起始页256字节如果刚好在擦除后掉电没来得及写入或者写入失败肯定会变砖.

      发布在 FR801xH
      S
      sapphiron
    • RE: OTA和错误码问题

      @mars flash擦写出错是可能的, 比如擦写时掉电, 或者电压不稳.
      从机通过Notify和Indication可以回复主机, 我需要的是在主机写请求 从机判断数据无效时返回错误码, 你们SDK有定义错误码, 在ble_hl_error.h文件中, 比如 ATT_ERR_INVALID_HANDLE, ATT_ERR_INVALID_PDU, ATT_ERR_INVALID_OFFSET 等等, 怎么返回主机这些错误码? 其他厂家的SDK是可以返回错误码, 你们的SDK中没有类似的接口或回调.

      发布在 FR801xH
      S
      sapphiron
    • RE: OTA和错误码问题

      @mars 如果擦写起始页256字节出错呢,不还是会变砖吗
      另外从机怎么向主机返回错误码

      发布在 FR801xH
      S
      sapphiron
    • OTA和错误码问题

      sdk中没有发送响应的接口, 如果蓝牙主机发送Write Request, 从机判断数据无效, 怎么发送错误码

      系统时钟是由外部晶振提供还是内部RC?

      还有OTA功能, 没有bootloader, 分析源码, 采用双分区, 启动后ROM从Flash地址0处读取jump_table获得分区1的Version和Image Size等, 再从地址Image Size处读取jump table获得分区2的Version和Image Size, 如果分区2参数有效且Version大于分区1的Version, 则运行分区2程序, 否则运行分区1程序.
      这里有个问题, 如果升级失败, 下载分区的程序是不完整的, 可能无法读取jump_table, 设备会变砖. OTA服务做了一个处理, OTA开始时不擦除分区起始第一个页面256字节, 等数据传输完成后再擦除第一个页面, 写入数据. 但是这样还是会存在极低概率在擦写第一个页面出现异常变砖.
      如何自行编写bootloader, 自定义OTA服务?

      发布在 FR801xH
      S
      sapphiron