Silabs Homekit开发--静态Pin码的产生和使用

一、将动态生成Setup Code的宏 HOMEKIT_DISPLAY_SUPPORT 的值设置为0

二、使用“homekitsetupcode.exe”工具产生静态Setup Code

工具路径在 C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.6\protocol\bluetooth\bin

第一代EFR32请使用以下命令(-f 后面的参数为实际芯片的大小)

.\homekitsetupcode.exe -f 1024 –c 767-12-767
.\homekitsetupcode.exe -f 1024 –n 20 –V summary.txt
.\homekitsetupcode.exe -f 1024 –p out –n 10
.\homekitsetupcode.exe -f 1024 –s 54212 –c 987-32-123
.\homekitsetupcode.exe -f 1024 –r
.\homekitsetupcode.exe -f 1024 –e
.\homekitsetupcode.exe -f 1024 -i A1PX -q BMP,5,2
.\homekitsetupcode.exe -f 1024 -a tokens.csv -u uuids.txt

我们实际使用的是第二代EFR32,所以使用以下命令

.\homekitsetupcode.exe -x -c 111-22-333

生成 SN_000023_PIN_111_22_333_SI_KG2R.nvm3 文件

三、产生一个带固定setup code的烧录固件

APP应用固件名字:soc-homekit-thermometer-rtos.hex

BootLoader固件名字:bootloader-storage-internal-single.s37

setup code的NVM3文件名字:SN_000023_PIN_111_22_333_SI_KG2R.nvm3

3.1 将设备的NVM3读出来,产生文件my_nvm3_data.s37

PS C:\Users\tensi\SimplicityStudio\v4_workspace\Simplicity Commander>  commander nvm3 read -o my_nvm3_data.s37
WARNING: No serial number or IP address given, cannot lock access to adapter.
Reading 24576 bytes from 0x000f8000...
Writing to my_nvm3_data.s37...
Overwriting file: my_nvm3_data.s37...
DONE

3.2 解析读出来的my_nvm3_data.s37文件

PS C:\Users\tensi\SimplicityStudio\v4_workspace\Simplicity Commander>  commander nvm3 parse my_nvm3_data.s37
Parsing file my_nvm3_data.s37...
Found NVM3 range: 0x000F8000 - 0x000FE000
Using 4096 B as maximum object size, based on given size of NVM3 area.
All NVM3 objects:
    KEY -       TYPE -     SIZE - DATA
0x80001 -       Data -     68 B - DE 66 2A 78 DB C9 73 BB (+ 60 more bytes)
0x80002 -       Data -     20 B - 79 BE 19 1D 31 CD DE CD (+ 12 more bytes)
0x80003 -       Data -      8 B - D7 AC 00 36 58 37 41 49
0x80000 -    Counter -      4 B - 0
0x40033 -       Data -      2 B - 01 00
0x44000 -       Data -      4 B - 01 00 00 00
0x4002c -       Data -      6 B - 96 3A 55 C6 A0 E5
0x4003c -       Data -      1 B - 01
0x40036 -       Data -      0 B -
0x40035 -       Data -      4 B - 00 00 00 00
0x4003d -       Data -     16 B - C8 D8 D2 53 36 B9 7C E1 (+ 8 more bytes)
0x40037 -       Data -     16 B - 16 10 9A A3 92 15 36 45 (+ 8 more bytes)

NVM3 erase count: 1

DONE

3.3  将SN_000023_PIN_111_22_333_SI_KG2R.nvm3重命名为nvm3_objects.txt,并且加到之前读出来的文件里面

PS C:\Users\tensi\SimplicityStudio\v4_workspace\Simplicity Commander> commander nvm3 set my_nvm3_data.s37 --nvm3file nvm3_objects.txt --outfile my_modified_nvm3_data.s37
Parsing file my_nvm3_data.s37...
Found NVM3 range: 0x000F8000 - 0x000FE000
Using 4096 B as maximum object size, based on given size of NVM3 area.
Setting NVM3 object: 0x80003 = 2FDF2AAE4B473252
Setting NVM3 object: 0x80004 = 38106ECFACC6534EED0DA71A6F1230F4
Setting NVM3 object: 0x80005 = 06A22CBA832DE3C553278266AFFE56CD432710A604CAB3399B098CC64BEFAC582FCA395EB04A42B8A0C854CE8E30D227BEAF6A1704E75BBAB7F98B089580D99F529B1E82501C5DD0E054A5155AA438CA11F44AA30CE5044A5793A9FAB2E558D32145371CD64AB7CC552587FB7DB0D061151F8AA5A604C53B48CE852295C7E77B3D79F7EC6A19F5A6AF4F39182363C2DD9980A5E60FCDBEAC7D8AA3B1D65D00F719EAEBF808AA3BBDE99A31EDBA39C9ED682A1F44999084D7B98E6095E34C48371C8ED93D3E3C8C13870728FE4E4782E2EE6A213CE271858029C64E54FD42E946FA2104F427229F801C9AED0A159CA1C0222A83603B0DBA304016E95E1E06721F7AC5D510916E33F78B3E999E387C802AA02F8195AEB322423A2556D1C65056633F2ED00505EF3A4F4D53E2C611FBACEAD14EF9737E2D43EFA81D064CE8E49624C410B0B6BE98AA03C9D2FEFEB37AB60AA5734B4F53E6CEA739F7D6E9388903461326F4FD5BADE0AFCCCDC8B757644D0CB955754AFCCABCBF86EE347104385189
Writing to my_modified_nvm3_data.s37...
DONE

3.4 将添加NVM3后的文件重新解析确认,确认key为0x80003、0x80004和0x80005的已经添加

PS C:\Users\tensi\SimplicityStudio\v4_workspace\Simplicity Commander> commander nvm3 parse my_modified_nvm3_data.s37
Parsing file my_modified_nvm3_data.s37...
Found NVM3 range: 0x000F8000 - 0x000FE000
Using 4096 B as maximum object size, based on given size of NVM3 area.
All NVM3 objects:
    KEY -       TYPE -     SIZE - DATA
0x80001 -       Data -     68 B - DE 66 2A 78 DB C9 73 BB (+ 60 more bytes)
0x80002 -       Data -     20 B - 79 BE 19 1D 31 CD DE CD (+ 12 more bytes)
0x80000 -    Counter -      4 B - 0
0x40033 -       Data -      2 B - 01 00
0x44000 -       Data -      4 B - 01 00 00 00
0x4002c -       Data -      6 B - 96 3A 55 C6 A0 E5
0x4003c -       Data -      1 B - 01
0x40036 -       Data -      0 B -
0x40035 -       Data -      4 B - 00 00 00 00
0x4003d -       Data -     16 B - C8 D8 D2 53 36 B9 7C E1 (+ 8 more bytes)
0x40037 -       Data -     16 B - 16 10 9A A3 92 15 36 45 (+ 8 more bytes)
0x80003 -       Data -      8 B - 2F DF 2A AE 4B 47 32 52
0x80004 -       Data -     16 B - 38 10 6E CF AC C6 53 4E (+ 8 more bytes)
0x80005 -       Data -    384 B - 06 A2 2C BA 83 2D E3 C5 (+ 376 more bytes)

NVM3 erase count: 1

DONE

3.5 将APP和BootLoader以及NVM3文件合并成一个烧录固件

PS C:\Users\tensi\SimplicityStudio\v4_workspace\Simplicity Commander> commander.exe convert bootloader-storage-internal-single.s37 soc-homekit-thermometer-rtos.hex my_modified_nvm3_data.s37 --outfile BLE-APP-BL-PIN.hex
Parsing file bootloader-storage-internal-single.s37...
Parsing file soc-homekit-thermometer-rtos.hex...
Parsing file my_modified_nvm3_data.s37...
Writing to BLE-APP-BL-PIN.hex...
DONE

四、设备烧录BLE-APP-BL-PIN.hex固件及验证

4.1 将芯片擦除,并烧录 

4.2 打开手机Homekit的APP,输入setup code:111-22-333,设备连接成功,LOG打印如下:

[main] start up
------------------------
gecko_evt_system_boot_id
homekit_use_new_static_address
use_new_static_addr = 0
mac addr : 9e:bf:d6:78:48:f6
use_new_static_addr = 0
------------------------
gecko_evt_le_connection_opened_id
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
gecko_evt_homekit_pair_verified_id
verified result :0
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
gecko_evt_homekit_read_request_id : 74
GATTDB_homekit_accessory_flags
------------------------
------------------------
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_homekit_read_request_id : 137
GATTDB_homekit_lock_target_state
------------------------
gecko_evt_homekit_read_request_id : 44
GATTDB_HOMEKIT_ACCESSORY_INFORMATION_MANUFACTURER
------------------------
gecko_evt_homekit_read_request_id : 49
GATTDB_HOMEKIT_ACCESSORY_INFORMATION_MODEL
------------------------
gecko_evt_homekit_read_request_id : 54
GATTDB_HOMEKIT_ACCESSORY_INFORMATION_NAME
------------------------
gecko_evt_homekit_read_request_id : 59
GATTDB_HOMEKIT_ACCESSORY_INFORMATION_SERIAL_NUMBER
------------------------
gecko_evt_homekit_read_request_id : 64
GATTDB_HOMEKIT_ACCESSORY_INFORMATION_FIRMWARE_REVISION
------------------------
gecko_evt_homekit_read_request_id : 74
GATTDB_homekit_accessory_flags
------------------------
gecko_evt_homekit_read_request_id : 145
GATTDB_homekit_name_2
------------------------
gecko_evt_homekit_read_request_id : 163
GATTDB_homekit_logs
------------------------
gecko_evt_homekit_read_request_id : 169
GATTDB_homekit_audio_feedback
------------------------
gecko_evt_homekit_read_request_id : 175
GATTDB_homekit_lock_management_auto_security_timeout
------------------------
gecko_evt_homekit_read_request_id : 182
GATTDB_homekit_administrator_only_access
------------------------
gecko_evt_homekit_read_request_id : 188
GATTDB_homekit_lock_last_known_action
------------------------
gecko_evt_homekit_read_request_id : 196
GATTDB_homekit_current_door_state
------------------------
gecko_evt_homekit_read_request_id : 204
GATTDB_homekit_motion_detected
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_homekit_read_request_id : 137
GATTDB_homekit_lock_target_state
------------------------
gecko_evt_homekit_identify_id
------------------------
gecko_evt_le_connection_closed_id
------------------------
gecko_evt_homekit_connection_closed_id
------------------------
gecko_evt_le_connection_opened_id
------------------------
------------------------
------------------------
------------------------
------------------------
gecko_evt_homekit_pair_verified_id
verified result :0
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
------------------------
gecko_evt_homekit_read_request_id : 74
GATTDB_homekit_accessory_flags
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_homekit_read_request_id : 137
GATTDB_homekit_lock_target_state
------------------------
gecko_evt_homekit_read_request_id : 163
GATTDB_homekit_logs
------------------------
gecko_evt_homekit_read_request_id : 169
GATTDB_homekit_audio_feedback
------------------------
gecko_evt_homekit_read_request_id : 175
GATTDB_homekit_lock_management_auto_security_timeout
------------------------
gecko_evt_homekit_read_request_id : 182
GATTDB_homekit_administrator_only_access
------------------------
gecko_evt_homekit_read_request_id : 188
GATTDB_homekit_lock_last_known_action
------------------------
gecko_evt_homekit_read_request_id : 196
GATTDB_homekit_current_door_state
------------------------
gecko_evt_homekit_read_request_id : 204
GATTDB_homekit_motion_detected
------------------------
gecko_evt_homekit_read_request_id : 129
GATTDB_homekit_lock_current_state
------------------------
gecko_evt_le_connection_closed_id
------------------------
gecko_evt_homekit_connection_closed_id

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值