微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540 更新固件请教

CC2540 更新固件请教

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

请教下,我们现在有种需要,通过串口更新固件,可不可以直接使用库里对Flash读写接口来将固件写入到指定地址,然后重启?

如果可以,请教这个地址是多少?

如果不可以,请教有没有办法通过用户程序透过串口来更新了?

好吧,没人更,自己回了,cc2540 原来有个SBL用串口更新,怪我没看到。

现在还有是些问题:

1、SBL编译出来的代码太大248K,优化与不优化是一样大的(例子也是这么大),是不是因为用了这种方式,所以文件固定大小,我看文件后面有一半全是0xFF。

2、我是使用peripheral 与 Observer 同时工作的模式,现在有一个问题,当连接手机APP的时候,peripheral 启动了自动更新连接参数,不过 请求更新后,有时候会收到 GAP_LINK_PARAM_UPDATE_EVENT 更新完成的消息,有时候又不能(确定每次连接的时候都有发送请求),如果收到GAP_LINK_PARAM_UPDATE_EVENT 消息,则收发数据正常,如果没收到GAP_LINK_PARAM_UPDATE_EVENT就不能收发数据,不知道为什么不能收到Center的 这个消息。 还有就是如果连接IOS的话,则从来都不会收到 GAP_LINK_PARAM_UPDATE_EVENT 消息,很奇怪

好吧,自娱自乐吧

2、好像不是更新参数的原因,我将配对改成GAPBOND_PAIRING_MODE_WAIT_FOR_REQ 等待配对时,就可以了,不过不清楚为什么设置成GAPBOND_PAIRING_MODE_INITIATE的时候,经常连接不上,而且就算有时候连接上了,也要很长时间,并且中途手机APP断开它根本检测不到。这是为啥了?

新的问题

3、发现我设置绑定后,好像根本就没有成功过,其实上面的配对也根本没有成功(这个是根据GAPBondMgr_Register 注册的两个回调得到的结果),这是为啥了?

4、还是SBL的问题,成功BIN太大,还有个问题,更新的时候,手动重启硬件发0xF8是可以进入更新的,但如果使用 HAL_SYSTEM_RESET() or SystemResetSoft()  则不能进入更新模式,发现它们更新就没有 SBL boot 等待输入0xF8的3s就直接启动用户程序了,好像根本就没有启动SBl BOOT ,想请问下,使用SBL更新时应该使用哪个接口重启设备?

TI的员工给个回复啊

新的问题,关于配对的

所说配对与否表示是否对通信加密,但我现在的想法是自己定义密码(用户设置,设备没有屏),所以设置的参数为:

GAPBOND_PAIRING_MODE_INITIATE 主动发起配对 , GAPBOND_IO_CAP_DISPLAY_ONLY 只能提供密码,启动绑定,但测试发现只会接收到  GAPBOND_PAIRING_STATE_STARTED 消息,发送密码的回调倒也是跑了 GAPBondMgr_PasscodeRsp,如果我输入错误的密码,会立刻返回 GAPBOND_PAIRING_STATE_COMPLETE 消息并显示出错,但如果我输入正常的密码,并没有收到 GAPBOND_PAIRING_STATE_COMPLETE 消息,而后断开再连接时,有时候还会产生 配对请求,有时候又不会。 不知道这是为什么?

由于上述问题,我换了个想法,反正配对仅表示通信加密,那其实密码是什么并不重要,所以我修改了配对:GAPBOND_PAIRING_MODE_INITIATE 主动发起配对 GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT 无输入输出功能 ,据说这样 通信两边会自动生成密码配对,但实际情况是,手机端还是会配对 配对请求圣诞框,此时如果输入密码,还是和上面一边,基本无法工作。

而且如果 配对的话,连接很不稳定,连接有问题时,两都也都无法即使检测到,但如果设置成 GAPBOND_PAIRING_MODE_WAIT_FOR_REQ 等待对方发起配对的话,则一切正常,连接状态也能即使检测到。

究竟要如何配对了? 让设备自动生产的也成啊 

关于配对的问题:

Peripheral 设置成主动配对的时候,手机APP会弹出配对请求,不过只是不出现 输入密码的对话框,然后 Peripheral 这边可以收到 开始配对的消息  GAPBOND_PAIRING_STATE_STARTED ,不过在等待了很久后,才出现 GAPBOND_PAIRING_STATE_COMPLETE 配对完成 ,但 status = 23 ,我看一下状态定义,没有23的定义,不知道这个23表示什么意思 ?

对了,我使用的是 http://processors.wiki.ti.com/index.php/SimpleBLE_ComboRoles    Peripheral + Observer ,不知道与这个是否有关系 ?

我最近也要这样固件升级,能给点介绍吗?

我也碰到这个脑残的问题了!升级一次挺顺利,第二第三次就跟吃了药一样,经常timeout,有时候是连接的时候timeout,有时候是升级到一半的途中timeout,软件复位不管用,直接断电源再上电又能正常升级,多尝试几次升级,又出现timeout,然后又得断电!

这TI的CC2540串口升级没做好就别拿出来坑人啊!早知道这么差劲直接用nordic的了,资料说明又少的可怜!

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

网站地图

Top