wiced_hal_write_nvram 调用这个函数存入一些 变量数据后,调用wiced_power_save_start 进入deepsleep。测试过程中现 有时候 会出现 wiced_hal_write_nvram 写入数据不成功。
有什么情况,会影响wiced_hal_write_nvram函数的写入?
wiced_hal_write_nvram
已解决! 转到解答。
请问调用write的API之后,写入失败的时候,这个API的返回值是否正确?
返回值都是正常的。
函数调用如下:
void flash_save_queue_address(void)
{
wiced_bt_dev_status_t status = WICED_BT_SUCCESS;
uint16 vl_write=0;
vl_write = wiced_hal_write_nvram ( BTU_QUEUE_ADDRESS_VS_ID, sizeof(t_Data_store_info), (uint8_t *)&flash_data_store_info ,&status );
WICED_BT_TRACE("FLS:W QUEUE CNF into NVRAM R:%x, W:%x, %d, result: %d \n",flash_data_store_info.vl_readPoint,flash_data_store_info.vl_writePoint, vl_write,status);
}
打印的写入值如下:
唤醒读取的打印值如下:
正常情况下,只要返回值正确,应该是已经写入成功了,也有可能是wakeup的时候读取有问题。建议在写入指令后面读取一次检查下是否已经写进去了,然后再进入deepsleep。
在测试过程中,一般都是成功的,但是出现的失败概率比较小还是有的,如果读取有问题的话,是重新读取一遍? 我们长时间测试读写flash的过程也发现 往DS 区域写数据后,读取也会出现个别字节对应不上的问题?解决方案也是 写入后,重新读取一遍检查下?
先用这种方式测试一下,看是写入的问题,还是sleep醒来之后读取的问题。根据目前的信息很难找到问题的具体原因。