Part Number:LAUNCHXL-CC26X2R1
我申请了两页FLASH,如果存满了FLaSH会怎么处理?
Galaxy Yue:
您好,
如果flash存满了就会出现无法写入数据,需要您进行擦除的情况。
,
疾风亦有归途:
是通过osal_snv_write去写FLASH的
,
Galaxy Yue:
您好,不太明确您的意思。可以描述的更具体一些吗?
,
疾风亦有归途:
抱歉我可能表达方式有问题,NV规划如下:(16K)
因为只有osal_snv_write/read ,并未提供类似CLear flash接口,所以当经常osal_snv_write数据且flash大小有限,OSAL_snv如何管理Flash?
,
Galaxy Yue:
您好,
您可以尝试一下使用osal_snv_write函数将不需要的NV项的值写入为默认值或者擦除值或无效值。
,
疾风亦有归途:
闪光灯 — 简单链接 CC13x2 / CC26x2 SDK BLE5 堆栈用户指南 2.01.01.00 文档 (ti.com)
哥,看下这个
,
Galaxy Yue:
您好,
已经查阅,因为OSAL SNV操作中本可以正常 写入的话,那这个函数本身使用就没有问题的。
那您问的是如果BLE stack申请了两页FLASH,OSAL_snv如何减少或者抹去Flash吗?
,
疾风亦有归途:
我想了解TI对Flash管理机制,我们的产品OSAL_snv用于存储密钥,如BLE_NVID_CUST_START这个index存入5字节密钥,当密钥失效时,BLE_NVID_CUST_START这个index存入5字节0x00,然后发现flash中数据是续写并没有擦除之前的数据(如图),因此我推测TI采用倒序读取数据,以同样索引的最后一个为准,这样可以避免Flash频繁擦写,所以我的疑虑是担心某一次密钥更新,刚好flash已经满了,然后TI的管理机制会让密钥失效。
注:我们是10把密钥。一把是主密钥写入后不会更新,其余9把可能一周更新一次
,
Galaxy Yue:
您好,您的问题已经帮您升级。
,
Galaxy Yue:
您好,请参阅此处提供的文档
https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/7.10.00.98/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gapbondmngr-cc13xx_cc26xx.html#gapbondmgr-and-snv
另外,请记住,器件将最大限度地减少闪存页擦除周期,因为它会消耗功率并影响器件的使用寿命(闪存擦除周期实际上是有限的,并在该部件的数据表中提到)。 因此,TI 驱动程序使用闪存 ID 的策略。 当变量值更新时,Flash ID 指向的物理地址会发生变化(但旧值不会被覆盖)。
希望能对您有所帮助