微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640使用内部Flash进行OAD升级的问题

CC2640使用内部Flash进行OAD升级的问题

时间:10-02 整理:3721RD 点击:

三个问题如下:

1. Image B是用户代码,它是不是不能用来升级,包括升级不能升级Image B,也不能升级OAD Target App(Image A)?

2. 如果问题1答案是不能的话,那么就是Image B必须通过OAD Target App来升级了,既然这样,为何还一定要让Image B包含OAD的Profile呢?我的理解是Image只要有下面这个操作就能回到OAD Target App了,然后用OAD Target App升级Image B。而其它的什么Profile或者Service都不用加到Image B了(好处不好用解释了)

uint16_t crc[2] = {0x0000, 0x0000};
      
// Invalidate the image.
OADTarget_writeFlash(OAD_IMG_R_PAGE, OAD_IMG_R_OSET + AD_IMG_CRC_OSET,(uint8_t *)crc, 4);

// Reset.
HAL_SYSTEM_RESET();

3. 内部Flash方式的OAD是没有SNV的,如何添加?是否只要在OAD Target App的stack工程配置中的Preprocessor中将OSAL_SNV=0改为OSAL_SNV=1或者OSAL_SNV=2即可?link文件之类的需要改动吗?

Image 不需要包含OAD profile. 你后面的理解是正确的。

你的Q3是什么意思?请具体说一下。

所以问题1的答案就是“不能”的。

Image 不需要包含OAD profile

——我认为Image B也是不用包含OAD Profile的,但是你们的OAD文档下面两个黄色高亮的部分怎么理解?在你们的例程中,Image B也是加了OAD Profile的,这个加了干啥子用?!

Q3的意思就是内部Flash方式的OAD是没有SNV的,如OAD文档中下面的黄色高亮部分描述,那么如果想使用bond功能,并且应用层想用SNV功能,如何添加?是否只要在OAD Target App的stack工程配置中的Preprocessor中将OSAL_SNV=0改为OSAL_SNV=1或者OSAL_SNV=2即可?link文件之类的需要改动吗?

你好,

回答你的问题三。

首先在OAD Target App的stack工程配置中的Preprocessor中将OSAL_SNV=0改为OSAL_SNV=1或者OSAL_SNV=2只是用来设置你是否使用NV模块,是使用4K的还是使用8K的,但是光修改这个还是不够的。

因为app与stack的boundary是固定的,如果不用SNV的4K或者8K资源,可以把这个boundary的边界往下调整4K或者8k。

默认就是OSAL_SNV=0的,改成OSAL_SNV=1或者OSAL_SNV=2之后,boundary的边界要怎么调整?

你好,

你使用的是sdk2.1呢还是sdk2.2?

编译stack部分时,会自动生成iar_boundary.xcl。然后,这个.xcl会被app包含,所以,可以说是自动的。

所以只要设置OSAL_SNV=0/1/2,其它的自动完成,包括boundary的重生成,对吗?

都讲这么明白了,还不清楚啊。如果我截图的那两处没有变化。就是自动的。

哈哈,问题需要确认,多谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top