CC2640 无法配对、绑定
CC2640绑定的程序,设置如下:
// Setup the GAP Bond Manager
{
uint32_t passkey = 0; // passkey "000000"
uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;
uint8_t mitm = TRUE;
uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
uint8_t bonding = TRUE;
GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey);
GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);
GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);
GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);
GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding); }
启动程序,执行配对的时候,函数没有执行回调函数。
仿真时,发现函数可以进入 GAP_SLAVE_REQUESTED_SECURITY_EVENT事件,但是从设备没有进入回调函数,主设备也没有进入回调函数。
求大神指点一下。
ye,
你的主设备是什么?有没有拿手机测试过?
Yan:
你好,我用手机测试过,同样无法进入绑定函数。
ye,
stack工程里面的buildConfig.opt里面的-DGAP_BOND_MGR有打开吗?
YAN:
谢谢你的回答。
的确没有打开。
我打开了,编译报错:
Fatal Error[Pe035]: #error directive: "Bond Manager cannot be used since NO_OSAL_SNV used! Disable in buildConfig.opt" C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\Roles\gapbondmgr.c 43
我把OSAL_SNV=0 注销掉后,报错:
unable to allocate space for sections/blocks with a total estimated minimum size of 0xfb3f bytes (max align 0x4) in <[0x0000e000-0x0001efff]> (total uncommitted space 0xefd0).
请问,我改如何修改?
ye,
你用的是哪个工程?
bond需要SNV的空间来保存背对信息,你再看一下stack工程的options里面preprocessor 下关于SNV的宏定义。
没有相关的宏定义,该如何定义?
我的宏定义如下:
USE_ICALL
FLASH_ROM_BUILD
xPOWER_SAVING
INCLUDE_AES_DECRYPT
xPM_DISABLE_PWRDOWN
xTESTMODES
xTEST_BLEBOARD
OSAL_CBTIMER_NUM_TASKS=1
xDEBUG HALNODEBUG
xDEBUG_GPIO
xDEBUG_ENC
xDEBUG_SW_TRACE
NEAR_FUNC=
DATA=
CC26XXWARE CC26XX
该填什么东西:?
ye,
不需要加任何东西,默认是有SNV的。
你用的是什么工程?
我用的工程模板是SimpleBLEMulti 实现的是多角色连接。但是我目前想绑定设备,发现无法绑定。
ye,
原来如此。这个工程占用的空间比较大,因为4.1的特性以及为了和多个设备连接。
你需要调节一下ICALL_STACK0_ADDR 起始地址试试看,需要扩大点flash空间。
请问这个地址ICALL_STACK0_ADDR 在哪修改?
我找到这个地址了,原来设置的是:
#ifndef ICALL_STACK0_ADDR
#define ICALL_STACK0_ADDR 0x00008000ul
#endif
我修改成 0x00006000ul 和0x00010000ul,编译后报的错是一样的。还是不行。
ye,
可以在IAR-Boundary.xcl & IAR-Boundary.bdef修改ICALL boundaries
YAN:
非常的感谢,修改这两个地方,解决了问题。遇到一个有趣的事情,就是我更改了这两个地址,编译完后,会报错,然后再看这两个地址,发现已经变了。然后再次编译,就可以通过了。应该是IAR自动给分配的空间吧。
再次谢谢了!
ye,
这是因为boundary.exe这个脚本在修改地址空间后需要运行两次才可以,第一次报错正常。
同时要感谢活力股HG。
你好:
我也遇到相同的问题,但是我打开-DGAP_BOND_MGR,修改--define=ICALL_STACK0_ADDR=0x0000D000地址空间后,系统无法正常运行了。使用的也是SimpleBLEMulti工程;