背景:
1 " suota app版本1.3/1.1;
2”sdk5.0.3
问题描述:
14580”中有引导加载,8000处含spota应用程序,1 f000头文件;
2”手机端启动suota,扫描到14580年设备,选择某个图像传输(block1,强制刷入8000),手机端看到suota启动,传输了20个包;
然后手机端就自行退出了链接,跳到suota扫描首页面;
3”链接smartsnipper,发现14580 flash中8000 - b000的数据已经擦掉,后续的没有变动,检查代码应该在此次app_spotar.c
//删除头部和图像
如果(spota_state。mem_dev == SPOTAR_IMG_SPI_FLASH)
{
#如果(SPOTAR_SPI_DISABLE !)
ret = app_erase_flash_sectors (spota_state。mem_base_add, codedesize + CODE_OFFSET);
if(ret != ERR_OK) return SPOTAR_EXT_MEM_WRITE_ERR;
其他#
返回SPOTAR_EXT_MEM_WRITE_ERR;
# endif
}
进入app_erase_flash_sectors,发现只是消除两个部门后就退出了;
(我= 0;我<部门;我+ +)
{
ret = spi_flash_block_erase(starting_sector, SECTOR_ERASE);
starting_sector + = SPI_SECTOR_SIZE;
if (ret != ERR_OK) break;
}
修改ret = spi_flash_block_erase (starting_sector SECTOR_ERASE);为做{ret = spi_flash_block_erase (starting_sector SECTOR_ERASE);} (ret ! = ERR_OK)时,依然只删除两个部门,然后挂掉;
怀疑看门狗,于是undef wdog,依然无果。
问题:
1”该现象是14580端这边主动挂掉可能性大,还是收到了手机端某个命令(重置)挂掉的可能性大吗?
2》是否存在可能擦除过程中有其他并行的底层任务冲突导致失败?
3”手机端的suota的日志在什么目录,找了半天没找到:,搜索suota关键字无果
因为强制block2 13000本来就是ff,如果我强制擦掉的ret为好,那么能够升级成功,何解?
(我= 0;我<部门;我+ +)
{
//ret = sp_flash_block_erase (starting_sector, SECTOR_ERASE);
ret = ERR_OK;
starting_sector + = SPI_SECTOR_SIZE;
if (ret != ERR_OK) break;
}
返回受潮湿腐烂;
如果uncommet ret = spi_flash_block_erase (starting_sector SECTOR_ERASE);如下,升级还是失败,消除2部门后退出
(我= 0;我<部门;我+ +)
{
ret = spi_flash_block_erase(starting_sector, SECTOR_ERASE);
ret = ERR_OK;
starting_sector + = SPI_SECTOR_SIZE;
if (ret != ERR_OK) break;
}
返回受潮湿腐烂;
似乎有某个定时器超时一般,但是我已经关闭了看门狗,费解中......
您好,
请问硬件环境是什么?是自己的板子还是官方开发板?