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.

NV与FLASH地址和操作上的问题

各位大神,问一个问题哈,在程序中向应用区NV某个item写入一个字节后重启,重启后bootload如何根据flash的page和offset读取到那个数据呢,这里涉及的问题主要是NV的item地址和flash page,offset的关系,还有NV本身的操作(一个NV item的具体flash地址是映射后得到的吗?)。。 多谢指导哦!!

  • 某个NV Item的操作并不是固定在Flash中某个地址上的,也就是说如果最一个NV Item做两次写操作,这两次写的数据在Flash中是不同的位置。

    NV操作的机制,是通过追加的方式来实现的,每次需要写数据的时候写到之前写过的最后面,然后把原先那个标志为废弃,等到废弃的Flash等于一个page的时候,再一次性擦除。

    这样做的目的为了保护Flash。

  • 好的,感谢VV大神神一样的回答哈。 补充问一下:  OTA中操作外部flash的时候, Write to the external NV storage via SPI:static void HalSPIWrite(uint32 addr, uint8 *pBuf, uint16 len),这个操作外部flash的函数参数 addr 是直接对应物理地址从0x0000开始的吗 ?