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

CC2640 SNV 疑问?

使用协议栈:2.2

开发平台:CCS6.1

例程为协议栈自带的simple_peripheral工程,在SimpleBLEPeripheral_taskFxn任务中,使用SNV的步骤为:

1、先osal_snv_write(),

2、再osal_snv_read(),

加入这两个后程序就不运行了,我参考了PDF中的说明,也是这样调用的,请问还要注意什么吗?

Rugooo Zhang:

回复 Yue TANG:

你好

       我确实是这样参考PDF写的代码,经过一上午的测试,可以确认的是写的代码,在逻辑上并没有错误。

       问题出现在:

        1、我在读操作的时候,将读出的指针通过 memcpy来拷贝到全局变量的时候,出现的程序未运行,

        2、只要在有osal_snv_read()和osal_snv_write()的地方,我都用了memcpy将局部变量拷贝为全局变量,

        问题总结:

        1、不知memcpy这一类函数对RTOS系统的任务调度或者系统任务有什么影响吗?为什么会导致程序死机的情况。

        2、SNV的操作会花费一些时间,需要向2540那样,在操作的时候进临界段吗?

Rugooo Zhang:

回复 Yue TANG:

还有一个重要的参数上午忘记说了,

把GAPROLE_TASK_STACK_SIZE=520预编译取消。适当扩大该堆栈,程序就正常运行。

首先,SNV操作的时Flash区域,字节缓存在cache中,和GAPRole的堆栈有什么关系呢?

xinkang zheng:

回复 Rugooo Zhang:

我使用这两个API来操作SNV存储的时候也出现过问题,因为我把写和读程序写入了uart的callback函数结果出现了莫名其妙的写和读的错误,后来我把write和read操作改到了App消息处理中就好了,是尝试一下把这个操作在程序的其他地方进行,祝你早日解决问题。zhengxinkang@qq.com

赞(0)
未经允许不得转载:TI中文支持网 » CC2640 SNV 疑问?
分享到: 更多 (0)