TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2652R: BLE5-Stack中,osal_snv_read返回出错的问题

Part Number:CC2652R

假如调用osal_snv_write(0x101, 5, "abcde")函数,在SNV中写入编号为0x101的内容为“abcde”共5个字符,

osal_snv_read(0x101, 5, tmp)是能够正确读出数据的。

但是如果我调用osal_snv_read函数时,读取的字节数大于5,则返回0x05的错误,即为NVINTF_BADLENGTH,表示错误的长度。

疑问:难道在调用osal_snv_read读取存储在SNV中的数据时,需要知道此条目保存的数据的准确字节数吗?

Kevin Qiu1:

你或许可以使用sizeof(),这样就不必每次修改len值了

,

YiKai Chen:

你用的協議棧版本是?新版的好像不直接調用這些API了,建議你參考一下 dev.ti.com/…/flash_memory-cc13xx_cc26xx.html

,

wei wang:

问题是我将数据保存到SNV中,重启后我想获取它,怎么会提前知道它的len值呢

,

wei wang:

我安装的SDK是5.20,用到的BLE5-Stack是2.02.02

,

Kevin Qiu1:

参考下面代码,使用sizeof;

osal_snv_read(BLE_NVID_TEST, sizeof(testFlag), (uint8 *)&testFlag);

,

wei wang:

您没明白我的意思,假设我之前在0x101的id条目中保存设备名称字符串,此时是知道保存到条目中的len长度。但比如断电重启后,我并不知道之前在0x101的条目中保存了多长的数据,那我该如何调用osal_snv_read获取呢?还是说osal_snv_read和osal_snv_write函数只能操作定长的数据,这样len就没有异议了,但这样的话空间利用率不高啊

,

Kevin Qiu1:

wei wang 说:还是说osal_snv_read和osal_snv_write函数只能操作定长的数据,这样len就没有异议了,但这样的话空间利用率不高啊

是只能操作定长数据,当无效数据较多时,驱动程序会自动压缩,参考:

https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_5_30_01_01/docs/ble5stack/ble_user_guide/html/ble-stack-common/flash_memory-cc13xx_cc26xx.html

,

wei wang:

好的,我通过实验验证的就是osal_snv_write和osal_snv_read必须操作定长的数据,否则osal_snv_read会报错

赞(0)
未经允许不得转载:TI中文支持网 » CC2652R: BLE5-Stack中,osal_snv_read返回出错的问题
分享到: 更多 (0)