微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于安卓OAD更新问题

关于安卓OAD更新问题

时间:10-02 整理:3721RD 点击:

YAN,您好

我们现在使用安卓app + cc2640与ANCS蓝牙协议进行OAD固件更新。

发现使用IOS每次发8个字节更新速度根块,并且升级成功(时间:60s)。但是使用安卓的时候如果每次发1个字节虽然特别慢但也能更新成功(时间:15分钟)。

可是安卓每次发送8个字节虽然会快却跟新到一半就失败了,返回错误码0xffff,这是为什么呢?主要发现(oadBlkNum 不等于 blkNum)了。。。

// Check that this is the expected block number.
if (oadBlkNum == blkNum)
{
// Calculate address to write as (start of OAD range) + (offset into range)
uint32_t addr = imageAddress + (oadBlkNum * OAD_BLOCK_SIZE);

// If address starts a new page, erase that page first.
if ((addr % HAL_FLASH_PAGE_SIZE) == 0)
{
OADTarget_eraseFlash(addr / HAL_FLASH_PAGE_SIZE);
}

// Write a 16 byte block to Flash.
OADTarget_writeFlash(imagePage, (blkNum * OAD_BLOCK_SIZE), pValue+2, OAD_BLOCK_SIZE);

// Increment received block count.
oadBlkNum++;
}

升级的速度快慢和连接参数是有关的。可以抓包看一下iOS设备和Anroid设备的OAD时候的连接参数更新是否有成功,不稳定有可能是数据发送时序不匹配。可以调整一下连接参数试看看

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top