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

CC2640 OAD失败问题

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

我使用的协议栈是2.1.0,
编译例程OADTarget,产生出OAD_merge.hex文件,用Flash Programmer 2烧录到TI官方的CC2650-7ID开发板上;
编译例程SimpleBLEPeripheral下的FlashOnly_OAD_ImgB,产生出36K的OADbin.bin文件。

用IOS上的SensorTag或者Multitool工具可以搜索到设备"OAD Target",连接后选择固件升级OADbin.bin文件,可以显示出上传进程条,最后报升级成功。

但是升级后,开发板的屏幕无任何显示,BLE也不能被搜索到了,BIM应该跳转到了imageB,但imageB似乎又没有正常工作。

请问我要怎样操作,才能用手机对芯片固件升级?

有个细节看你注意了没有?多半就是这个原因。OAD手册8.2节

VIII. Switch the RTOS in Flash configuration by following steps in section 8.2.

8.2 Switch the RTOS in Flash configuration
Switch the RTOS in Flash configuration. In the Application Workspace, under the “TOOLS” folder, open appBLE.cfg.
Comment out the first two lines as follows. This is because the Image B should not use TI-RTOS in ROM if the flash page 0 cannot be updated accordingly when the Image B is updated.
//var ROM = xdc.useModule('ti.sysbios.rom.ROM');

//ROM.romName = ROM.CC2650;

就是这个问题,已解决,谢谢!

咱两个人过程是一样的,我的也是生成FlashOnly_OAD_ImgB,和36K的OADbin.bin文件,现在想用手机升级,现在使用IOS上的SensorTag,我知道用什么方法把OADbin.bin传到手机里,我用qq传的,在升级选择升级文件的时候找不到文件

发个邮件附上.bin文件,在IOS里收邮件,打开附件时,选择sensorTag软件

或者装个itools,直接copy到sensortag apps里

TY:

我的APP超过了36K,所以按照OAD手册的8.5节,调整栈和应用的大小。

对于Application(Image B) project部分,调整文档说明的3个位置后,

编译时还是报空间不足错误,

Error[Lp011]: section placement failed

unable to allocate space for sections/blocks with a total estimated minimum size of 0x9354

bytes (max align 0x4) in <[0x00006050-0x0000efff]> (total uncommitted space 0x8fb0).

地址的定义还是以cc26xx_ble_app_oad.icf文件中的下列定义生效。

// Default for OAD Image B region, RTOS in Flash size.
define symbol FLASH_START = 0x00006000;
define symbol FLASH_END = FLASH_START + 0x8FFF;

不知道是哪里没有搞对?

你的app最终是多大呢?是否超过48K? 你的map文件发出来看下。

map文件在附件里


[1] = D:\BLE\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Application\CC2640\FlashOnly_OAD_ImgB\Obj
[2] = D:\BLE\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Application\CC2640\configPkg\package\cfg
[3] = command line
[4] = boot.arm3
[5] = dl7M_tln.a
[6] = driverlib.lib
[7] = m7M_tl.a
[8] = rt7M_tl.a
[9] = sysbios.arm3

35 379 bytes of readonly code memory
2 475 bytes of readonly data memory
12 479 bytes of readwrite data memory (+ 64 absolute)

Errors: 1
Warnings: none

报这个错误

把stack的map也发出来。你的apps 占38K,如果你按手册改了,stack size应该变小了。

我直接用SimpleBLEPeripheral的FlashOnly_ImgB(按教程只修改了appBLE.cfg)编辑能升级成功,但是我程序里边加了一个初始化串口程序然后就不能编译通过了,出现错误

1. 那你肯定都没有看文档,附件给你,你的app size 超过了36k,你需要去调整STACK的size,看手册7.5.5Adjusting Stack and Application Sizes

2. 另一个方法,你只大了一点,你可以去减小下代码size到36K以下,是有空间的。默认的simpleperipherl代码 profile 增加了simpleGattprofile.c

可以考虑减小它甚至去掉它,占size很大。2047.CC2640 BLE OAD User's Guide.pdf

我已经按照OAD说明文档8.5节减小了stack的大小,通过屏蔽掉bond功能,编译OADTarget成功,

失败是出现在编译app工程时。

发现SDK2.1.0下OAD文档好像写得有问题,APP_IMAGE_START和ICALL_STACK0_ADDR需要定义在Linker下,就可以编译成功了!

peng fei:

需要在工程中添加drives下的UART驱动。

不要按自己的方式改,请先完全follow TI的文档。ImageB的设定就跟你不一样。

你设置APP_IMAGE_START干啥?这是external 升级用的。

驱动已添加,应该是超过36K了我没有调整

Hi TY:

开始是完全按照OAD文档来做的,
照Figure19-Figure21修改了Compiler option、Linker option、Build Actions option 这3处。
但编译时出现Space不足的错误。


后来发现链接时始终去执行cc26xx_ble_app_oad.icf文件的第140行,即
// Default for OAD Image B region, RTOS in Flash size.
define symbol FLASH_START = 0x00006000;
define symbol FLASH_END = FLASH_START + 0x8FFF;
FLASH空间只有36K的配置。


最后把ICALL_STACK0_ADDR=0x11000,添加到工程配置中Linker下Config行中才使得FLASH_END相应扩大,编译通过,OAD也可以成功。

peng fei:

试一下添加tirtos_simplelink_2_13_00_06\packages\ti\drivers目录下UARTCC26XX.c和UART.c文件。

按照手册,应该是 on-chip 时才需要 Switch the RTOS in Flash configuration。

但是我现在发现off-chip时也需要 Switch the RTOS in Flash configuration 才行。

没有注释这两行,off-chip不成功。

注释后就成功了。

是文档描述问题还是我哪里不对?

Hi    xianbin xie

你的off-line在pc上升的还是手机上升的

都有啊!

xianbin xie:

            片外的时候是hex文件,怎么转换成bin文件的?

这个有好多方法吧! 网上随便搜一下 都一大把的 方法。

xianbin xie:

                    我用python转换成bin文件以后,用手机升级出现下图,这是哪里没有修改好吗?谢谢!

                  

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

网站地图

Top