
Bluetooth 5 и 4.x LE сниффер для оборудования TI CC1352/CC26x2 с поддержкой расширенной рекламы, всех режимов PHY, фильтрации MAC/RSSI и экспорта в PCAP, совместимого с Wireshark.
Sniffle — это сниффер для Bluetooth 5 и 4.x (LE) с использованием аппаратного обеспечения TI CC1352/CC26x2.
Sniffle имеет ряд полезных функций, включая:
Если вы не хотите тратить усилия на настройку среды сборки прошивки, вы можете просто прошить готовые двоичные файлы прошивки с помощью UniFlash/DSLite. Готовые двоичные файлы прошивки прикреплены к релизам на вкладке релизов GitHub этого проекта. При использовании готовой прошивки убедитесь, что используете код Python, соответствующий тегу релиза, а не ветке master, чтобы избежать проблем совместимости с прошивкой, которая отстаёт от ветки master.
arm-none-eabi-gcc, предоставляемый менеджерами пакетов различных дистрибутивов Linux, часто не содержит некоторых заголовочных файлов или требует изменений в конфигурации компоновщика. Чтобы избежать лишних хлопот, я рекомендую использовать ARM GCC по ссылке выше. Вы можете просто скачать и распаковать готовые исполняемые файлы.
TI SDK предоставляется в виде исполняемого двоичного файла, который извлекает набор исходного кода после принятия лицензионного соглашения. В Linux и Mac каталог установки по умолчанию находится в ~/ti/. Это работает нормально, и мои makefile'ы ожидают этот путь, поэтому я рекомендую оставить значение по умолчанию. То же самое относится и к инструменту TI SysConfig.
После извлечения SDK вам нужно будет отредактировать один makefile в соответствии с вашей средой сборки. Внутри ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 (или в том месте, куда был установлен SDK) находится makefile с именем imports.mak. Единственные пути, которые необходимо указать здесь для сборки Sniffle, — это пути к GCC, XDC, cmake и SysConfig. Компилятор CCS нам не нужен. Смотрите diff ниже в качестве примера и адаптируйте под место установки.```
diff --git a/imports.mak b/imports.mak
index b2cf5bf59..389d1a7c3 100644
--- a/imports.mak
+++ b/imports.mak
@@ -18,14 +18,14 @@
-XDC_INSTALL_DIR ?= /home/username/ti/xdctools_3_62_01_15_core -SYSCONFIG_TOOL ?= /home/username/ti/ccs1270/ccs/utils/sysconfig_1.21.1/sysconfig_cli.sh +XDC_INSTALL_DIR ?= $(HOME)/ti/xdctools_3_62_01_15_core +SYSCONFIG_TOOL ?= $(HOME)/ti/sysconfig_1.21.1/sysconfig_cli.sh
-CMAKE ?= /home/username/cmake-3.21.3/bin/cmake +CMAKE ?= cmake PYTHON ?= python3
TICLANG_ARMCOMPILER ?= /home/username/ti/ccs1270/ccs/tools/compiler/ti-cgt-armllvm_3.2.2.LTS-0 -GCC_ARMCOMPILER ?= /home/username/arm-none-eabi-gcc/12.3.Rel1-0 +GCC_ARMCOMPILER ?= $(HOME)/arm_tools/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi IAR_ARMCOMPILER ?= /home/username/iar9.50.2
Начиная с версии SDK 8.30.01.01, для компиляции с последними версиями GCC (и binutils) требуется небольшое изменение SDK, чтобы избежать ошибок компоновки "Unknown destination type (ARM/Thumb)" и "dangerous relocation: unsupported relocation".```
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
index 187cfd744..4cbf0d384 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
@@ -236,6 +236,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
index 717f49c9a..1c83ed725 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
@@ -226,6 +226,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe
После внесения этого изменения вам потребуется перекомпилировать SDK.``` cd ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 make build-gcc -j5
### Получение DSLite
DSLite — это инструмент командной строки TI для программирования и отладки через XDS110
отладчики. Платы Launchpad CC26xx и CC13xx обе содержат отладчики XDS110.
К сожалению, TI не предоставляет отдельного скачивания DSLite для командной строки.
Самый простой способ получить DSLite — установить [UniFlash](http://www.ti.com/tool/download/UNIFLASH)
от TI. Он доступен для Linux, Mac и Windows. Исполняемый файл DSLite будет
находиться по пути `deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite`
относительно каталога установки UniFlash. В Linux каталог установки UniFlash по умолчанию
находится внутри `~/ti/`.
Вам следует добавить каталог с исполняемым файлом DSLite в вашу `$PATH`.
## Сборка прошивки
После того как GCC, DSLite и SDK установлены и работают, сборка
Sniffle должна быть простой. Просто перейдите в каталог `fw` и
выполните `make`. Если вы не установили SDK в каталог по умолчанию, вам может
потребоваться отредактировать `SIMPLELINK_SDK_INSTALL_DIR` в makefile.