
متطفل Bluetooth 5 و 4.x LE لأجهزة TI CC1352/CC26x2 مع دعم للإعلانات الموسعة، جميع أوضاع PHY، تصفية MAC/RSSI، وتصدير PCAP متوافق مع Wireshark.
Sniffle هي أداة استنشاق (sniffer) لبلوتوث 5 و 4.x (LE) باستخدام أجهزة TI CC1352/CC26x2.
يتميز Sniffle بعدد من الخصائص المفيدة، بما في ذلك:
إذا كنت لا تريد عناء إعداد بيئة بناء للبرنامج الثابت، يمكنك ببساطة كتابة ملفات البرنامج الثابت الجاهزة باستخدام UniFlash/DSLite. تُرفق ملفات البرنامج الثابت الجاهزة بالإصدارات في تبويب الإصدارات على GitHub لهذا المشروع. عند استخدام البرنامج الثابت الجاهز، تأكد من استخدام كود Python المطابق لوسم الإصدار بدلاً من master لتجنب مشكلات التوافق مع البرنامج الثابت المتأخر عن فرع master.
إن arm-none-eabi-gcc المقدم عبر مدير حزم توزيعات لينكس المختلفة
غالبًا ما يفتقر إلى بعض ملفات الرأس أو يتطلب بعض التغييرات على إعدادات
الرابط. لتقليل المتاعب، أقترح استخدام ARM GCC المرتبط أعلاه.
يمكنك فقط تنزيل الملفات التنفيذية الجاهزة واستخراجها.
يتم توفير TI SDK كملف ثنائي قابل للتنفيذ يستخرج مجموعة من الكود المصدري
بمجرد قبول اتفاقية الترخيص. على لينكس وماك، الدليل الافتراضي
للتثبيت موجود داخل ~/ti/. يعمل هذا بشكل جيد وتتوقع ملفات البناء (makefiles)
هذا المسار، لذا أقترح الالتزام بالافتراضي هنا. وينطبق الأمر نفسه
على أداة 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` الخاص بك.
## بناء البرنامج الثابت (Firmware)
بمجرد تثبيت GCC وDSLite وSDK وتشغيلها، يجب أن يكون بناء Sniffle أمرًا مباشرًا. فقط انتقل إلى دليل `fw` وشغّل الأمر `make`. إذا لم تقم بتثبيت SDK في الدليل الافتراضي، فقد تحتاج إلى تعديل `SIMPLELINK_SDK_INSTALL_DIR` في ملف makefile.
إذا كنت تبني أو تثبّت على أحد أنواع Launchpad الأخرى غير CC26x2R، فيجب عليك تحديد `PLATFORM=xxx`، إما كوسيط للأمر make، أو بتعريفه كمتغير بيئة قبل استدعاء make. يمكن العثور على القيم المدعومة لـ `PLATFORM` في ملف makefile الخاص بالبرنامج الثابت. تأكد من تنفيذ `make clean` قبل البناء لمنصة مختلفة.
## تثبيت البرنامج الثابت (لوحة TI Launchpad)
لتثبيت Sniffle على لوحة CC26x2R Launchpad (الموصولة بالطاقة) باستخدام DSLite، شغّل `make load` داخل دليل `fw`. بالنسبة لأي نماذج أخرى من Launchpad، يجب تحديد وسيط `PLATFORM` للأمر make كما هو موصوف أعلاه. يمكنك أيضًا وميض الملف الثنائي المُجمَّع `sniffle.hex` باستخدام واجهة UniFlash الرسومية.
## تثبيت البرنامج الثابت (دونجل SONOFF USB)