CC2650 OAD
我使用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连接不上是怎么回事?