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

关于CC13X2的NVS问题请教

您好:

这边的应用是:固件烧写时会有初始的参数数据(INT16_T) 和 信息数据(string),运行中会有修改这些数据,掉电后不能丢失

目前调试了OADUAPP的例程和NVSinternal例程两个,有一下几个问题:

1:OADUAPP例程的NVS有两个,两个的REGION TYPE是generated和pointer分别应用上有什么区别?这两块分别对应UAPP和PAPP?还是固件区/用户数据区?

2:OADUAPP例程的这个Region Base是否可以按照固件大小修改?

3:NVSINTERNAL例程的region base地址0x10000是否是用户希望的flash使用区域的起始地址?

4:OADUAPP例程中,nodetask.c里有如下代码实现擦除页后,从NVS起始位置实现三个数据的写入:

/* Write the node and server address to NVS*/
NodeStorage_eraseAll();
status = NodeStorage_writeStartSeq();
status |= NodeStorage_write(NODESTORAGE_NODE_ADDR_OFFSET, &nodeAddr, 1);
status |= NodeStorage_write(NODESTORAGE_SERVER_ADDR_OFFSET, pDstAddr, 1);

在nvsinternal历程里,也有页的擦除和字符串的写入  NVS_WRITE(…….),这里我加了一个NVS_WRITE(……),从代码上看,跟oad历程相似,可是为什么这里只能写入一个字符串?必须擦除后才能写另一个字符串?

请问NVS的擦除必须是按页擦除吧?写入是只能一次写入(如nvsinternal历程)还是可以多次指定offset写入(如oad例程)?写入前必须做擦除操作吗?

谢谢!!

Viki Shi:

需要跟同事讨论一下,后续再来回复

Viki Shi:

OADUAPP是哪个例程,off chip OAD?

1、Generated指:an internal flash region is automatically generated

Pointer指:provide a pointer to the memory location to the predefined internal flash region

2、可以通过sysconfig修改,见下图

3、这是默认地址,可以如2修改

4、NVS_WRITE是写入flash,使用flash时,每次擦除后只能写一次,也就是说,变量无法持续更新。 描述不清晰,重新表述如下:

如果一个变量已经写入过,要再次写入【更新此变量】,那只能擦除后再写。但是不同的变量可以用nvs_write多次写入

user4461669:

回复 Viki Shi:

Viki您好,关于第4点,我用的OADUAPP是rfWsnNodeIntFlashOadClientUApp例程,工程里nodetask.c里第220—226行,应该是擦除页后写入三个数据,相当于连续调用三次NVS_WRITE函数,是这样的吗?谢谢第二点的附图没看到

Viki Shi:

回复 user4461669:

我更正了一下上面问题4的表述,请查看详情,图片已补充:

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC13X2的NVS问题请教
分享到: 更多 (0)