微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2650 OAD

CC2650 OAD

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

我使用cc2650- smartRF06EB 和 cc2540的usb dongle。

1.上述硬件,IAR环境,按照协议栈里面的OAD手册,跑ble_cc26xx_2_00_00_42893协议栈中的OADTarget例程,可以运行。运行以后使用BLE Device Monitor配合cc2540的蓝牙usb dongle可以看到cc2650蓝牙的各种服务包括OAD服务;

2.在1基础上,构建SimpleBLEPeripheral工程,选择生成CC2640App - FlashOnly_OAD_ImgB,产生OADbin.bin文件,使用BLE Device Monitor的OAD功能,看上去可以向cc2650传输OADbin.bin,但OAD结束后,cc2650不复位;

3.在1基础上,调试OADTarget工程的CC2640App - FlashROM,可以发现使用BLE Device Monitor进行OAD传输时,OAD.c中的void OAD_imgBlockWrite(uint16_t connHandle, uint8_t *pValue);函数执行有问题,导致BLE Device Monitor传输完成后,cc2650并未达到复位条件。

可以帮我整理下思路吗?谢谢!

请问您SimpleBLEPeripheral的工程是原始默认的程序吗?生成出来的OADbin.bin文件有多大?

@WBJ:是的,没有修改过。OADbin.bin的大小:36.0kB 36,864字节。有没有什么思路,谢谢!

我说的具体一些,希望大家能帮到我,OADTarget工程调试的时候有几个疑问:

(先把活跃工程定义为CC2640Stack - Flash ROM,然后构建、下载不运行;然后把活跃工程定义为CC2640App - Flash ROM,然后构建、下载并调试(这里遇到一个小问题,就是CC2640Stack - Flash ROM工程设置中的Linker - Output文件名我改为了OADTargetStackFlashROM.out,不然不能调试))

1,全速运行,用BLE Device Monitor找到蓝牙从设备以后,进行OAD,OAD完成后,观察void OAD_imgBlockWrite(uint16_t connHandle, uint8_t *pValue)函数中用到的oadBlkNum变量,发现只有3,正确的话应该等于oadBlkTot(2304)并复位。

此时观察地址0x06000位置(ImageB位置),会有几十字节非0xffff的数据,且和OADbin.bin的前几十字节吻合,说明有一些数据是写入了,但是不知为何停止了。

1.1在1的基础上,用BLE Device Monitor设置不同的连接时间间隔,现象一致。

2,重新调试,全速运行,设置断点在void OAD_imgBlockWrite(uint16_t connHandle, uint8_t *pValue)函数中,

// Write a 16 byte block to Flash.
OADTarget_writeFlash(OAD_IMG_D_PAGE, (blkNum * OAD_BLOCK_SIZE), pValue+2, OAD_BLOCK_SIZE);

上述写入Flash的位置,用BLE Device Monitor找到蓝牙从设备以后,进行OAD,调试会立刻中断。但是单步上述语句执行完后,地址0x06000位置(ImageB位置)还是全部0xffff....,说明没有写入Flash,而该函数的实现应该是实现在ROM中,我没法调试分析...

3,先不设断点,OAD几十字节数据,即在0x06000地址处写入一些数据,然后重新调试,设置断点在void OAD_imgBlockWrite(uint16_t connHandle, uint8_t *pValue)函数中,

// If address starts a new page, erase that page first.
if ((addr % HAL_FLASH_PAGE_SIZE) == 0)
{
OADTarget_eraseFlash(addr / HAL_FLASH_PAGE_SIZE);
}

位置,然后开始OAD,第一次调用是,会执行这个断点擦除本来有数据的0x06000地址页,单步后,这个擦除操作是正确的。

请帮我分析下,或者给个思路,谢谢!拜托了

我觉得首先要计算一下bin文件的大小是否超过了128K flash的限制,

如果是使用internal flash是不能更新协议栈的,只能更新APP,而且还要算上bin oadtargetapp的量

LZ:

我在搭建CC2650的工作环境时遇到一些问题,能不能帮忙解答下

1.我在使用cc2650-smartRF06时,编译出现这样的错误

2.环境是:IAR7.4,SmartRF06 Evaluation Board,直接使用的ti_cc2650协议栈的历程;

3.下载程序配置:optiongs->debugger->setup->Driver->TI XDS,然后Download and Debug;

4.SerialBooTool和OtaServer这两个软件有什么用.

我当初也是按照TI的手册操作的。没有遇到这个问题。。

有几点可能需要注意的

1)所有东西,必须按照TI的默认路径安装,不要质疑这一点,我也尝试安装在其他路径下,结果带来一堆麻烦

2)好像IAR安装后,需要安装XDS100的驱动,驱动好像是在IAR路径文件夹下的。

希望能帮到你

1.所以安装路径都是默认的,在使用时是按照TI的TI-RTOS 2.00 for SimpleLink™ Wireless MCUs.pdf上面的说明配置的;

1.XDS 100的驱动是在C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.2\arm\drivers\ti-xds目录的ti_emupack_setup.exe?

1.所以安装都是默认路径

2.XDS 100驱动也安装好了

3.在下载程序时出现

LZ 你好!
我直接编译OADTarget这个例程,都编译不过,没有改动过,

查看附件,里面有三个工程都要下载进去吗?

你好!

你的OAD可以了吗?

我都编译不过,hexmerge.py这个文件要放哪里啊?谢谢!

放在工程文件夹下,看一下错误提醒里面的路径,拷贝过去就行。

注意下载来以后,要安装,再拷贝路径下->脚本文件夹里面的脚本文件。安装包里面的那个拷贝过去没用的

你好,

我这里没法安装啊,intelhex-1.5.win32,intelhex-1.5要怎么怎么安装呢,

我最近在调OAD例程。按照手册把生成的合成文件烧入班子后用BLE Device Monitor连接不上是怎么回事?

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

网站地图

Top