请教下,我们现在有种需要,通过串口更新固件,可不可以直接使用库里对Flash读写接口来将固件写入到指定地址,然后重启?
如果可以,请教这个地址是多少?
如果不可以,请教有没有办法通过用户程序透过串口来更新了?
Wang Joe:
好吧,没人更,自己回了,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 消息,很奇怪
Wang Joe:
回复 Wang Joe:
好吧,自娱自乐吧
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更新时应该使用哪个接口重启设备?
Wang Joe:
回复 Wang Joe:
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 等待对方发起配对的话,则一切正常,连接状态也能即使检测到。
究竟要如何配对了? 让设备自动生产的也成啊
Wang Joe:
回复 Wang Joe:
关于配对的问题:
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 ,不知道与这个是否有关系 ?
jianyou zhao:
我最近也要这样固件升级,能给点介绍吗?
David wei:
回复 Wang Joe:
我也碰到这个脑残的问题了!升级一次挺顺利,第二第三次就跟吃了药一样,经常timeout,有时候是连接的时候timeout,有时候是升级到一半的途中timeout,软件复位不管用,直接断电源再上电又能正常升级,多尝试几次升级,又出现timeout,然后又得断电!
这TI的CC2540串口升级没做好就别拿出来坑人啊!早知道这么差劲直接用nordic的了,资料说明又少的可怜!