您好!
我们有一个 使用 SimpleLink CC13x2 26x2 SDK v4.20.01.04运行在 CC2652R 上的简单应用程序。 它使用 BLE 无线电和 Zigbee。 我们一直在使用 zclport API 来创建和管理闪存中的几个 NV 项目、而闪存高于 NVOCMP 驱动程序的一层。 最近、我们浏览了一篇文章、其中指出应用程序不应直接使用 NVOCMP 驱动程序、而应使用 osal_SNV API 来管理闪存项。
闪存—SimpleLink CC13x2 / CC26x2 SDK BLE5-Stack 用户指南2.01.00.00文档
如果是正确的,那么我们似乎应该迁移 NV 接口以使用 osal_SNV() API。 是这样吗?
我从那条路开始、然后遇到了几个问题。
1.上面发布的相同链接似乎表明我们只能使用从0x80到0x8F 的令牌 ID 值-最多只支持16个应用程序令牌。 是这样吗?
2. osal_snv_init()函数在初始化过程中的调用很晚-在应用程序初始化函数被调用之后。 我可以在堆栈调用 osal_svn_init ()之前调用 osal_svn_read ()和_write ()函数吗? 如果不是,那么在堆栈初始化完成之前,我是否无法使用 osal_SNV_read ()和 write ()函数? 是否可以使用任何类型的事件或通知来了解 OSAL SNV 系统何时可以使用?
3、我在初始化期间编写了一个简单的函数、尝试初始化 OSAL SNV (在堆栈之前)、然后读取和写入一个新值。 规范如下:
静态 my_struct_typedef_t my_struct ={0};
uint8_t status = osal_SNV_init ();
status = osal_SNV_read (0x80、sizeof (my_struct)、&my_struct);
//将值设置到 my_struct 中
status = osal_svn_WRITE(0x80, sizeof (my_struct ),&my_struct );
--
我打印了所有3个状态值、并获得了以下结果:
* osal_snv_init ()-返回0
* OSAL_SNV_READ ()-返回2 (INVALIDPARAMETER ?)
* OSAL_SNV_WRITE ()-返回5 ( INVALID_MSG_POINTER ?)
为什么这些简单的调用失败了?
谢谢!