您好!
为了避免磨损闪存、我假设在实际写入闪存之前最好检查 NVS 项目的内容是否与其现有内容相同。 我的问题是、我们需要在应用程序中执行此类检查、还是由驱动程序自行执行?
谢谢。
ZL
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
为了避免磨损闪存、我假设在实际写入闪存之前最好检查 NVS 项目的内容是否与其现有内容相同。 我的问题是、我们需要在应用程序中执行此类检查、还是由驱动程序自行执行?
谢谢。
ZL
尊敬的 Sid:
示例项目在 NVS 中写入的函数似乎会检查项目的内容是否与现有内容相同。
/*********************************************************************
* @fn NV_writeItem
*
* @brief Write a data item to NV.
*
* @param nv_id - Valid NV item Id.
* @param len - Length of data to write.
* @param *pBuf - Data to write.
*
* @return NVINTF_SUCCESS if successful, failure code otherwise.
*/
uint8 NVOCOP_writeItem( NVINTF_itemID_t nv_id, uint16 len, void *pBuf )
//...
for (i = 0; i < len; i++)
{
HalFlashRead(NV_PAGE, offset, &tmp, 1);
if (tmp != ((uint8 *)pBuf)[i])
{
break;
}
offset++;
}
if (i == len)
{
// Changed value is the same value as before.
// Return here instead of re-writing the same value to NV.
return NVINTF_SUCCESS;
}
//...
我想只要我们调用此函数而不是直接调用 NVS 驱动程序,我们就不需要在自定义的应用程序中自行执行此类检查。
此致!
ZL
尊敬的 Sid:
NVOCoP_writeItem 中的代码似乎不起作用。 在我们的应用程序中,我们有一个定制的 NVS 项目来存储 PAN ID、加密密钥和通道掩码等。 如果我们调用函数3次保存该项目而不更改其内容、则可以在闪存中看到该项目的3个副本。
下面的屏幕截图是通过 Flash-Programmer-2回读的。 突出显示具有重复(0x55)的通道掩码。
我想我们还需要在应用中进行这样的检查。
此致!
ZL
