「经验」太坎坷,CC2650STK(SensotTag)调试笔记
弄死过两个CC2650STK,又救活了。
想用BLE做点东西,以前使用CC2541
因为是单个理器的关系,在做耗时操作时会导致蓝牙中断,问题一直没法解决
这次论坛活动弄了一套CC2650STK的开发板
看着网站上说(包括TI官网)可以使用JLINK调试
我就天真的以为真的可以
手里有一些开发板上带的JLKINK(NXP LPC54102开发板和FREESCALE的K40开发板)和淘宝上买的JLINK V8
按照TI官网的说明一步步调试
可是怎么也调不通,提示Can not find ICE-Pick……等错误
好容易有一次IAR下载的进度条开始往前走了一点,没等走完又报错
结果是原来好用的SensorTag变成石头了
后来又经过无数次的看贴和调试都没成功
前些天EEWORLD论坛又有活动,Mouser上买LAUNCHPAD 28377S的开发板半价
最高返200E金币
顺便带了一块LAUNCHXL2-RM46的开发板
为来应该买SensorTag Debugger DevPack调试CC2650STK的
觉得一块SensorTag Debugger DevPack虽然便宜,可除了调试CC2650以外也没别的用
就决定买LAUNCHXL2-RM46,220MHz的RM46L852处理器看起来还挺爽
关键板载XDS110仿真器,顺便可以用来调试CC2650,能不能行买来再说
到货后第一个就用来调试CC2650STK
先是用IAR打开examples\cc2650stk\sensortag例程
编译完下载时IAR提示更新XDS110的固件
更新完成后IAR提示Fatal error: Failed to connect to the XDS emulator (connect ICEPick)错误
结果就是不好用,各种试都不行
取下CC2650再用CCS仿真载上带的RM46L852也不好用
各种试还不行是原来板子上的XDS110就是坏的,还是被IAR升级升坏的呢?
心想这下完蛋了CC2650没调成RM46L852也不能用了
在网上好个找贴子最后有人说使用2.2.4.2的固件可以用
按照提示用C:\ti\ccsv6\ccs_base\common\uscif\xds110中的xdsdfu.exe把固件刷成2.2.4.2后
RM46L852可以用了
CC2650还是不行,用CSS也提示错误,大部分是固件版本不兼容等等
看了无数贴,试了无数次都是一样的结果
准备放那吃灰吧
有空时又试了下Flash Programmer 2
也是提示错误,Failed to enumerate XBAL devices
又试了UniFlash
虽然磕磕绊绊经常断,不过好在可以读取BLE MAC,有时候FLASH数据也能读出来
真是太神奇了,这说明XDS110基本上是可以用的
于是用UniFlash写examples\cc2650stk\sensortag\iar\app\FlashOnly_OAD\Exe\sensortag_cc2650stk_app.hex文件到CC2650
有时候能写成功,可是成功后装上电池也没有反应
有时候CC2650STK上的红灯会一直亮
后来拿一块好的CC2650STK用UniFlash读出FLASH和坏的比较一下发现数据很不一样,也不知道是为什么
今天又看到一个贴子说Flash Programmer 2 的XDS110默认是 4线JTAG可以改成2线cJTAG
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/94918.aspx
按照提示把XDS110.dat 和XDS110c2.dat文件名互换了一下
插上开发板打开Flash Programmer 2发现可以检测到CC2650器件了
靠,太神奇了
于是又用Flash Programmer 2读器件MAC,读FLASH都可以
因为Flash Programmer 2可以把FLASH导出.bin文件
如果我把好的CC2650STK的FLASH读出来,再写到坏的CC2650STK里
是不是能先把坏的救活?
管他有啥用先弄好再说
试了一下能读好的,也能写坏的
写好以后坏的还是坏的,装上电池就是没反应
再用Flash Programmer 2读两个的FLASH比较,一模一样
真是的了,啥毛病,搞不懂
再试试把好的CC2650STK中的固件再写回好的CC2650STK
结果好的也变石头了,两石头
两个CC2650STK都挂了,什么心情,恨死TI了,让我费了这么大劲
后来又查资料,查到XDS110可以使用xdsdfu -s 01234567 –r来修改SN
这样一台电脑就可以插多个不同SN的XDS110设备来同时调试多个MCU
觉得改不改没啥用,也没别的招,试试吧
改完以后电脑提示找到新硬件
然后使用CCS仿真,居然能下载了
又迈了一步
下载examples\cc2650stk\sensortag到CC2650
点运行,CC2650没反应
点暂停看到程序运行在Hwi.c中的Void Hwi_excHandler(UInt *excStack, UInt lr)函数中的
while (Hwi_excHandlerFunc == NULL) {
;
}
处
啥原因也不清楚
CSS不行就用IAR试试
打开examples\cc2650stk\sensortag编译,下载
下载成功,点运行,CC2650也没有反应
点暂停,程序不知道跑哪了,找不到当前位置
看来是examples\cc2650stk\sensortag程序有问题
更有可能是我没弄明白examples\cc2650stk\sensortag是不是直接编译仿真就可以
又看到examples\hex下有cc2650stk_sensortag_rel.hex文件
抱着试试看的态度用Flash Programmer 2刷了一下
插上电池亮了,用手机也能搜到
对比了一下cc2650stk_sensortag_rel.hex是335K
IAR编译的sensortag_cc2650stk_app.hex是153K
应该不是一个项目的关系?
先不管,把另一个CC2650STK也刷回来再说
看了一下,刷好这个是旧的,因为旧的在到手时就发现TMP006掉碴了,不好用
再刷新的CC2650STK的时候中途总是断
Flash Programmer 2提示Unable to start target CPU
用UniFlash下载会在下载的过程中提示Status: Cortex_M3_0: JTAG Communication Error: (Error -1170 @ 0x0) Unable to access the DAP.后中断
试了无数次都一样
新的不能下载
旧的再下载还是能下
一批的东西,PCB和芯片全一样的两个CC2650STK差距怎么就这么大呢
不死心,您猜怎么着?
最后新板使用IAR Project菜单中的Download下的Download File把cc2650stk_sensortag_rel.hex烧进去的
现在两个CC2650都能启动,都可以用手机搜到
这件事太乱太乱,只能等冷静下来好好梳理了
经过这几天的尝试总结如下:
1、JLINK调试CC2650是不行的,至少硬件V8以下,软件V6.10a版本以下不行
能试的我都试了,不过我的V8是D版,开发板带的JLINK硬件版本是1.0
2、LAUNCHXL2-RM46开发板带的XDS110可以仿真CC2650
需要烧最新的固件,需要改序列号
3、另外我把C:\ti\ccs_base下的文件覆盖到C:\ti\ccsv6\ccs_base下了,不知道会有什么用
4、LAUNCHXL2-RM46开发板带的XDS110仿真CC2650,有时会提示ID不对
是因为板上的RM46L852 MCU和CC2650共用一个调试口
又不能物理断开,如果有这种提示可以按住开发板上的PORRST按钮,这是一个硬件复位
据RM46L852手册上说,硬件复位时的RM46L852所有引脚都为高阻态
这样就不会影响CC2650调试了
5、C:\ti\simplelink\ble_sdk_2_02_00_31\examples\cc2650stk\sensortag下的项目和cc2650stk(SensorTag)出厂时带的固件不一样至少直接编译时是不一样的
可能是我没弄明白
6、C:\ti\simplelink\ble_sdk_2_02_00_31\examples\hex\cc2650stk_sensortag_rel.hex这个固件和出厂带的基本一样
Jlink调试CC2650报错
CCS调试CC2650时遇到的其中一个错误
Flash Programmer 2插入XDS110时报错 Failed to enumerate XBAL devices
Flash Programmer 2改成默认2线cJTAG后可以找到CC2650
Flash Programmer 2成功连接设备
Flash Programmer 2成功给旧板下载固件
Flash Programmer 2有时左边会只显示一个XDS110硬件
Flash Programmer 2成功读取CC2650 FLASH
Flash Programmer 2使用Read Flash to File把新板的固件导出到电脑
Flash Programmer 2把成功从新板导出的固件烧回到旧板,校验成功,可就是不好用
Flash Programmer 2读取CC2650 MAC地址
UniFlash读取到的MAC地址和Flash Programmer 2读取的一样
使用UniFlash烧新板导出的固件到旧板
UniFlash烧固件的过程
CCS有时会报错
IAR使用XDS110给CC2650下载固件的过程
修改序列号后的XDS110在使用UniFlash给旧板烧固件时没有错误提示
修改序列号后的XDS110在使用UniFlash给新板烧固件时总是有错误提示
错怪C:\ti\simplelink\ble_sdk_2_02_00_31\examples\cc2650stk\sensortag项目了刚才重装了一下,使用IAR下载成功
除了TMP006收到就坏了,其它都好用