CC2640 OAD 问题
您好,我司在调试oad时候遇到问题,求助
环境:基于官方2.1协议栈例程SimpleBLEPeripheral工程开发 没有外挂flash
python: python27 intelhex-1.5.win32.exe
未做oad之前,定义了FEATURE_OAD宏 下载运行功能正常,OAD服务uuid F000FFC0已经运行 ,下面是我做oad的过程
按照文档CC2640 BLE OAD User's Guide.pdf 第八节 Building On-chip OAD内容操作
8.1 Building BIM 未做改动
8.2 Building the BLE Stack 对于提到的CC2640_BLE_peri_HL_CL_FlashROM.a我没太明白怎么使用,故未做改动,请问一下,这里请问具体如何操作?
8.3 Building the OAD Target Application 根据文字描述,我修改如下
Build Actions--->Post-build command line 加入合并脚本
python "C:\Python27\Scripts\hexmerge.py" -o "$PROJ_DIR$\FlashROM\Exe\OAD_merge.hex" -r "0000:1FFFF" --overlap=error "$PROJ_DIR$\FlashROM\Exe\SimpleBLEPeripheralAppFlashROM.hex":0100:1FFFF "$PROJ_DIR$\..\..\..\..\..\util\BIM\CC26xx\FlashOnly\Exe\BIM.hex":0000:1F5FF "$PROJ_DIR$\..\..\Stack\CC2640\FlashROM\Exe\SimpleBLEPeripheralStackFlashROM.hex":F000:1EFFF
编译成功,生成了OAD_merge.hex 下载成功后无法运行
然后我根据我们板子gpio 配置了官方例程 OADTarget 编译后用 Flash Programmer 2 下载OAD_merge.hex ,运行正常
故开始移植OADTarget例程的配置,修改如下
1、
Options→Linker→Config. ‘Linker configuration file’:修改为
$PROJ_DIR$\..\..\..\..\..\common\cc26xx\IAR\cc26xx_ble_app_oad.icf
‘Configuration file symbol definitions’:添加 RTOS_ROM=1
2、
Options→C/C++ Compiler→Preprocessor→Defined symbols加入宏
ICALL_STACK0_ADDR=0xF000
FEATURE_OAD
FEATURE_OAD_ONCHIP
HAL_IMAGE_A
3、 stack我对比了下,SimpleBLEPeripheral 的CALL_STACK0_ADDR=0x0000F000 ICALL_RAM0_ADDR=0x200043E4 放在了文件IAR-Boundary.xcl中用了在 Extra Options用 -f $PROJ_DIR$\..\..\Config\IAR-Boundary.xcl引入而已,其他就是OADTarget 中ICALL_RAM0_ADDR=0x20004300 ,故stack未做修改
4、 编译APP失败,报错
然后我看来下,cc26xx_ble_stack.icf 代码 根据文档0x00600 到0x1000是OAD Target APP Part 1 内容,故添加了下IMAGE起始地址宏
Options→Linker→Config. ‘Configuration file symbol definitions’:添加APP_IMAGE_START=0x600
5、编译成功,下载后,依然无法运行
请问各位大神,有何良药医治该顽疾,文档我是看了几遍,实在悟不出其中奥妙,不知是偶内力不够,还是秘籍缺斤少两,请各位大神指点,万分感谢,有在上海的,请吃大餐!
楼主如果只想实现OAD不要改什么的话,我们就有现成的,如下图,你点击就可以了
然后编译,我们老版本的OAD手册有个错误,新版本改过来了,应该是HAL_IMAGE_B不是A
对于Python 的位置应该是这样的
你试试看
你好,你说的这是imageB的制作了,我说的是 用python把 三个合并成OAD_merge.hex之后下载进去,运行不了,过程不是应该是OAD_merge.hex下进去能够运行,然后制作imageB,通过apk 来通过oad的uuid写入imageB部分,然后reset,运行imageB
其实你可以用JFLAH来合并hex,不一定要用python的
感谢您的帮忙,问题我已经解决了,是我的代码编译后太大了,Target APP 从0x600开始写入 超过了0x5FFF,修改了flash end搞定跑起来啦
shi lian:
您好!我用官方的从机例程按你的步骤配置,用python把 三个合并成OAD_merge.hex,但是编译不过,提示Error while running c:\Python27\python.exe "C:\Python27\Scripts\hexmerge.py" -o "C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\MilkPowderStick\CC26xx\
IAR\Application\CC2640\FlashROM\Exe\OAD_merge.hex" -r "0000:1FFFF" --overlap=error "C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\
MilkPowderStick\CC26xx\IAR\Application\CC2640\FlashROM\Exe\SimpleBLEPeripheralAppFlashROM.hex":0100:1FFFF "C:\ti\simplelink\
ble_cc26xx_2_01_00_44423\Projects\ble\MilkPowderStick\CC26xx\IAR\Application\CC2640\..\..\..\..\..\util\BIM\CC26xx\FlashOnly\Exe\BIM.hex":0000:1F5FF "C:\ti\
simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\MilkPowderStick\CC26xx\IAR\Application\CC2640\..\..\Stack\CC2640\FlashROM\Exe\
SimpleBLEPeripheralStackFlashROM.hex":F000:1EFFF ,这是怎么回事啊,还有其他什么需要配置吗?
安装好Python27后, 无需要其他配置。请确认你的Python是否正常安装。还有就是你的hexmergy.py 等脚本的目录是否正确(我2年前安装的目录和 这个的目录就不对应)。
另外,新问题,建议开新帖。
你好,我在编译的时候出错了,就是制作imageB的时候,编译这个工程。错误在附件中。