关闭

CC2541 OAD总结

1218人阅读 评论(0) 收藏 举报
分类:

1、2541的OAD要加上ccservice这个profile才能工作,但源码工程没包含。

2、OAD的工作模式是:BIM+A+B

     BIM根据FLASH里的一个掩码来选择启动A还是B,一般是用A来作OAD升级程序,B是正常使用的固件。

     当固件要更新流程是:

    B收到手机软件端命令,自己复位到A,然后手机软件与A连接,进行OAD,下载更新完A会自动复位到B运行。

void enter_oad(void)
{
  
    GAPRole_TerminateConnection(); 
#ifdef FEATURE_OAD    
    uint16 crc[2] = { 0x0000, 0xFFFF };
    uint16 addr = OAD_IMG_R_PAGE * ((uint16)(HAL_FLASH_PAGE_SIZE / HAL_FLASH_WORD_SIZE)) + OAD_IMG_CRC_OSET / HAL_FLASH_WORD_SIZE;
    HalFlashWrite(addr, (uint8 *)crc, 1);
#endif
    HAL_SYSTEM_RESET();
}

3、OAD过程android和ios中会存在着service的缓存的更新, 软件端要先订阅0x2a05 (services changed)这个服务,然后设备端调用GATTServApp_SendServiceChangedInd

这样软件就会自动更新服务缓存。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6404次
    • 积分:146
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    更多信息
    QQ:398899182 Email:398899182@qq.com
    文章分类
    文章存档
    最新评论