Analisis mendalam tentang pelayan GATT pen bacaan, baris gilir notifikasi, pengelompokan, saiz MTU, dan pemulihan paket hilang untuk BLE OEM peringkat pengeluaran.

Dipos pada: Sep 28, 2020 - 54 Paparan

Mekanisme Pelayan GATT dan Notifikasi Pen Bacaan: Throughput, Pengelompokan, dan Paket Hilang

Khalayak Sasaran: Pembangun firmware terbenam, pembangun aplikasi mudah alih, dan jurutera QA OEM yang perlu memahami cara pen baca menjadualkan pemberitahuan BLE pada pelayan GATTnya, sebab selang sambungan lebih penting daripada nombor throughput, dan cara pen pulih daripada pemberitahuan yang terputus tanpa merosakkan aliran acara OID.

Pelayan GATT pen baca ialah subsistem yang paling kerap digunakan dalam keseluruhan firmware. Pada firmware Q6/Q8 3.3.1, pelayan GATT mengendalikan sehingga 312 pemberitahuan sesaat semasa penggunaan puncak (ketukan OID berterusan ditambah telemetri VU audio ditambah acara bateri). Pada firmware F8 3.1.2, puncak ialah 184 pemberitahuan sesaat. Pelayan mesti beratur, memadan, memecahkan dan menghantar semula dalam semua keadaan ini tanpa sekali-kali menyekat saluran paip acara OID.

Artikel ini menjelaskan seni bina pelayan GATT, polisi penjadualan pemberitahuan, model langganan CCCD, interaksi antara MTU dan selang sambungan, mekanisme pemulihan paket yang hilang, dan pendikit telemetri yang boleh disesuaikan mengikut jenama.

1. Seni Bina Pelayan

Pelayan GATT beroperasi dalam satu utas khas dalam RTOS pen. Pada Q6/Q8, RTOS ialah FreeRTOS 10.3.1; pada F8 ialah Zephyr 3.2.0; pada K7/KF1 ialah FreeRTOS 8.2.0. Keutamaan utas ditetapkan pada tahap kedua tertinggi dalam sistem, tepat di bawah utas gangguan penderia OID.

Komponen RAM ROM Nota
Pelayan GATT 4.2 KB 12.8 KB Jadual servis + ciri
Baris Gilir Pemberitahuan 6.0 KB 1.4 KB 24 slot × 256 bait
Jadual CCCD 1.6 KB 0.4 KB 32 pelanggan
Enjin MTU 0.8 KB 2.4 KB Pemecahan L2CAP

Jumlah kos RAM subsistem GATT ialah 12.6 KB pada firmware Q6/Q8 3.3.1, yang muat dalam 32 KB yang diperuntukkan untuk tindanan BLE.

2. Baris Gilir Pemberitahuan

Baris gilir pemberitahuan mempunyai 24 slot, setiap satu 256 bait. Slot diisi oleh sumber acara OID (16 bait setiap ketukan, lihat TC-058) dan oleh penjana telemetri (saiz berubah-ubah). Slot dialirkan keluar oleh utas pelayan GATT apabila selang sambungan berlalu.

Metrik Baris Gilir Nilai pada Q6/Q8 Nilai pada F8 Nilai pada K7/KF1
Bilangan slot 24 16 12
Saiz slot 256 bait 128 bait 96 bait
Kadar pengaliran keluar 312/s 184/s 96/s
Kadar pengisian (puncak) 280/s 152/s 72/s
Margin 11% 17% 25%

Jika baris gilir penuh, pen menggunakan polisi tekanan balik: ia terlebih dahulu menggugurkan slot telemetri tertua, kemudian menggugurkan acara OID pendua, kemudian menggugurkan telemetri VU. Ketukan OID itu sendiri tidak pernah digugurkan, kerana kehilangan ketukan bermakna pengguna melihat main balik audio yang hilang, yang merupakan kegagalan UX yang serius.

3. Model Langganan CCCD

Setiap ciri Notify atau Indicate pada pen mempunyai Client Characteristic Configuration Descriptor (CCCD). Hos menulis 0x0001 untuk mengaktifkan Notify atau 0x0002 untuk mengaktifkan Indicate. Pen menyimpan keadaan langganan per rakan dalam rekod bon.

Ciri Keadaan Lalai pada Sambungan Pertama Selepas Berlangganan
0x2A4D (ketukan OID) Notify dilumpuhkan Notify diaktifkan
0x2A19 (Bateri) Notify dilumpuhkan Notify diaktifkan
8E0C0003 (Status Kamus) Notify dilumpuhkan Notify diaktifkan
8E0C0005 (Telemetri) Notify dilumpuhkan Indicate diaktifkan
8E0C0007 (Audio VU) Notify dilumpuhkan Notify diaktifkan

Perkara halus: ciri Telemetri ialah Indicate, bukan Notify. Indicate memerlukan ACK daripada hos, yang menjamin penghantaran. Kami membuat pilihan ini kerana kehilangan telemetri tidak boleh diterima untuk QA. Kosnya ialah penalti kependaman kecil (1.2 ms tambahan) tetapi keuntungan kebolehpercayaan itu berbaloi.

4. Keputusan Selang Sambungan

Selang sambungan BLE dirundingkan antara pen dan hos. Pen memilih selang 15 ms; ia menerima apa-apa sahaja dari 7.5 ms hingga 4 s. Hos mencadangkan nilai; pen mengembalikan nilai pilihannya dalam Permintaan Kemas Kini Parameter Sambungan.

Selang Kependaman Pemberitahuan Throughput (PHY 1 MB) Kos Bateri (T2)
7.5 ms 3.75 ms purata 220 KB/s 12.4 mA
15 ms 7.5 ms purata 110 KB/s 6.2 mA
30 ms 15 ms purata 55 KB/s 3.1 mA
100 ms 50 ms purata 16 KB/s 0.9 mA
1 s 500 ms purata 1.6 KB/s 0.1 mA

Selang 15 ms ialah lalai pengeluaran kami. Ia mengimbangi throughput dengan bateri. Penggunaan sekolah yang mengutamakan responsif berbanding masa jalan akan melihat kependaman hujung-ke-hujung 6.4 ms. Penggunaan rumah yang mengutamakan masa jalan berbanding responsif akan melihat 30 ms.

5. Perundingan MTU

Pen memilih MTU sebanyak 247 bait (maksimum BLE 5.0 untuk bukan-DLE). Ia menerima mana-mana MTU dari 23 hingga 247. MTU menentukan berapa bait pemberitahuan tunggal dimasukkan dalam satu paket L2CAP.

MTU Laporan OID setiap Selang Pecahan
23 1 laporan (dipotong) Ya
64 3 laporan Tidak
128 7 laporan Tidak
185 11 laporan Tidak
247 15 laporan Tidak

Permintaan MTU pen dihantar dalam 100 ms pertama sambungan. Hos yang mengabaikan permintaan memaksa pen menggunakan MTU 23 bait, yang memecah setiap laporan dan memakan bateri. Kami telah menghantar 47,000+ pen dan 4 daripada 38 aplikasi rakan kongsi mengabaikan permintaan MTU. Empat aplikasi itu ditandakan dalam papan pemuka QA kami.

6. Algoritma Penumpukan Pemberitahuan

Untuk meminimumkan masa radio, pelayan GATT menumpuk pemberitahuan ke dalam satu paket L2CAP apabila jumlah muatan muat. Algoritma penumpukan berjalan sekali setiap selang sambungan:

1. Kosongkan barisan pemberitahuan ke dalam penimbal kelompok
2. Semasa saiz_kelompok + saiz_laporan_seterusnya <= MTU:
   a. Tambahkan laporan seterusnya ke dalam kelompok
   b. Tandakan laporan sebagai dihantar
3. Hantar kelompok sebagai satu paket L2CAP
4. Jika barisan masih mempunyai laporan yang belum dihantar:
   a. Tunggu selang sambungan seterusnya

Pada firmware Q6/Q8 3.3.1, algoritma penumpukan memuat purata 8.4 laporan setiap paket pada MTU 185 bait. Radio dihidupkan selama ~3.2 ms setiap selang sambungan. Pada firmware F8 3.1.2, puratanya ialah 6.1 laporan setiap paket.

7. Mekanisme Pemulihan Paket Yang Hilang

BLE Notify tidak menghantar semula. Jika satu paket hilang, hos tidak tahu ia telah dihantar. Pen mengendalikannya dengan:

  1. Mengekalkan nombor jujukan dalam muatan laporan OID.
  2. Mencatatkan setiap pemberitahuan yang dihantar dengan nombor jujuannya ke dalam penimbal telemetri QA.
  3. Menyediakan ciri penunjuk "Laporan Hilang" 8E0C000A-7B3C-4F8E-9F4D-2C8B5A1E0001 yang boleh dibaca oleh hos atas permintaan.

Aplikasi hos, apabila mengesan jurang dalam nombor jujukan, boleh:

  1. Melakukan bacaan manual pada keadaan kamus.
  2. Membandingkan ID halaman kamus yang terakhir dilihat dengan halaman semasa untuk mengesan acara yang terlepas.
  3. Secara pilihan, langgan semula ciri OID untuk menetapkan semula secara paksa.

Untuk 99.4% kejadian paket hilang, pengguna tidak menyedari kehilangan tersebut kerana acara seterusnya tiba dalam 15 ms dan saluran audio tidak terjejas.

8. Pendikit Telemetri

Pemberitahuan telemetri ialah ciri yang paling memakan jalur lebar. Secara lalai, pen menghantar telemetri pada 0.5 Hz (setiap 2 s). Pelanggan OEM boleh meminta kadar yang lebih tinggi (sehingga 10 Hz) dengan menetapkan bit khusus jenama dalam ciri ID jenama.

Kadar Telemetri Jalur Lebar Kos Bateri (Q6/Q8) Kes Penggunaan
0.1 Hz 0.05 KB/s +0.1 mA Pen rumah
0.5 Hz (lalai) 0.25 KB/s +0.3 mA Standard ODM
1 Hz 0.5 KB/s +0.6 mA Program sekolah
5 Hz 2.5 KB/s +2.4 mA Ujian tekanan QA
10 Hz 5.0 KB/s +4.8 mA Nyahpepijat kejuruteraan

Seorang pentadbir IT sekolah yang memerlukan data kesihatan pen masa nyata akan menetapkan bit khusus jenama untuk membolehkan telemetri 1 Hz. Ini menelan kos ~3% bateri pada Q6 (900 mAh), yang boleh diterima untuk program bilik darjah.

9. Ciri Audio VU

Ciri VU audio 8E0C0007-7B3C-4F8E-9F4D-2C8B5A1E0001 ialah apungan 4-bait (ketepatan tunggal IEEE 754) yang mewakili tahap output audio semasa. Ia dihantar pada 30 Hz pada firmware Q6\/Q8 3.3.1 apabila TTS aktif. Aplikasi hos menggunakannya untuk memaparkan bar VU kecil di skrin.

Model Kadar VU Lebar Jalur VU Kos Bateri
Q6\/Q8 30 Hz 0.12 KB\/s +0.2 mA
L5 30 Hz 0.12 KB\/s +0.2 mA
T2 60 Hz 0.24 KB/s +0.4 mA
Y6 60 Hz 0.24 KB/s +0.4 mA
F8 Tiada — 0

VU dilumpuhkan pada F8 dan P2 untuk menjimatkan bateri. Pada T2/Y6 kadar digandakan kerana model tersebut mempunyai OLED untuk menghasilkan animasi yang lebih lancar.

10. Ujian Tekanan yang Dijalankan pada Setiap Firmware

Ujian Tempoh Kriteria Lulus
Ketukan OID berterusan selama 1 jam 3,600 ketukan 0 laporan hilang
Bateri pada 10 Hz selama 24 jam 864,000 peristiwa Tiada limpahan baris gilir
Putus sambungan + sambung semula 100 kitaran 100 kitaran Pasangan semula dalam <1.5 s
8 ikatan peer + sambungan berurutan 8 kitaran Semua 8 peer menyambung semula
MTU 23 dipaksa oleh hos 5 min Tiada limpahan penimbal

Jika mana-mana ujian gagal, firmware ditolak. Merentasi 86 keluaran firmware sejak 2023, 3 gagal ujian ketukan berterusan (limpahan baris gilir) dan 1 gagal ujian MTU-23 (limpahan penimbal). Kesemuanya telah dibaiki sebelum keluaran semula.


Peak Notification Rate (notifications/s)

11. Bagaimana Ini Berhubung dengan Artikel Lain

TC-061 berada di tengah-tengah saluran paip BLE. TC-057 mentakrifkan lapisan HID di atas. TC-058 mentakrifkan deskriptor di bawahnya. TC-059 mentakrifkan model pasangan yang membolehkan hos melanggan. TC-060 mendokumentasikan skema yang dilaksanakan oleh pelayan ini. TC-062 merangkumi laluan Wi-Fi selari. TC-063 merangkumi penemuan LAN. TC-064 merangkumi CoAP, protokol yang berjalan melalui laluan LAN.

13. Bacaan Berkaitan


Minta Sebut Harga — Dapatkan Respons Kilang yang Pantas

14. Telemetri Pengeluaran, Data Lapangan, dan Buku Panduan Pembeli

Merentasi 86 keluaran firmware yang dihantar sejak 2023, log pelayan GATT kami menunjukkan penurunan berterusan dalam peristiwa limpahan baris gilir pemberitahuan. Barisan firmware semasa — B1/B2 pada 2.4.7, F8 pada 3.1.2, K7/KF1 pada 1.9.5, L5 pada 4.2.0, P2 pada 2.0.3, Q6/Q8 pada 3.3.1, dan T2/Y6 pada 2.6.4 — mengekalkan kadar limpahan bergulung 1 jam di bawah 0.06 peratus merentasi 47,000+ unit yang digunakan di 47 negara. Angka itu penting kerana satu limpahan di meja sekolah yang sibuk bermakna satu kod OID yang terlepas dan seorang kanak-kanak yang memandang pen yang senyap, yang sebenarnya tiket sokongan yang tidak dikehendaki oleh mana-mana pengimport.

14.1 Throughput Dunia Sebenar vs Kelas Sambungan

Carta di bawah memplotkan throughput pemberitahuan berterusan purata yang kami ukur pada pen pengeluaran semasa suite tekanan 5 peringkat. Nilai datang daripada 1,200 ujian (100 unit × 12 binaan firmware) yang dikumpul antara S2 2025 dan S1 2026 di dalam kebuk anechoic kami pada 23°C dan 55 peratus RH.

Sustained Notifications / Second (avg of 1,200 runs)

14.2 Latensi Pemberitahuan Merentasi Model pada Persentil ke-95

Profil latensi berubah dengan ketara apabila anda bergerak daripada K7 dan KF1 peringkat permulaan kepada L5 dan T2 kelas utama kerana teras Cortex-M4F yang lebih pantas mempunyai 8 KB penimbal pemberitahuan berbanding 2 KB pada Cortex-M0+. Pembeli yang mengendalikan armada 5,000+ pen dalam program sekolah biasanya mengambil berat tentang persentil ke-95 lebih daripada min kerana latensi ekor mendorong kelembapan yang dirasakan pada aplikasi pengiring ibu bapa.

Model Teras Penimbal Min (ms) p95 (ms) p99 (ms) Limpahan / jam
K7 Cortex-M0+ 2 KB 38 86 142 0.12%
KF1 Cortex-M0+ 2 KB 36 82 138 0.11%
B1 Cortex-M4F 4 KB 24 54 96 0.04%
B2 Cortex-M4F 4 KB 22 51 92 0.04%
F8 Cortex-M4F 4 KB 26 58 101 0.05%
Q6 Cortex-M4F 4 KB 23 52 95 0.04%
Q8 Cortex-M4F 4 KB 21 49 89 0.03%
L5 Cortex-M4F 8 KB 14 32 58 0.01%
T2 Cortex-M4F 8 KB 12 28 52 0.01%
Y6 Cortex-M4F 8 KB 13 30 55 0.01%
P2 Cortex-M0+ 2 KB 41 92 156 0.14%

14.3 Peraturan Keputusan Pembeli

Tip pembeli: Jika saluran pengedaran anda memasangkan pen dengan aplikasi pendamping ibu bapa yang menghantar pings setiap 5 saat (corak biasa untuk penjejak pembacaan K-3), pilih L5 atau T2 dengan penimbal 8 KB. Kependaman p95 32 ms mengekalkan respons yang dirasakan di bawah 50 ms, iaitu ambang "segera" manusia. Model kemasukan seperti P2 akan membocorkan 0.14 peratus pemberitahuan setiap jam pada kadar tersebut dan peti masuk sokongan anda akan merasainya dalam suku pertama.

14.4 Liputan Pensijilan Blok Radio BLE

Radio yang membawa pemberitahuan ini ialah blok yang sama yang diuji di bawah pengisytiharan pelbagai bidang kuasa kami. CE-RED (EN 300 328 v2.2.2), FCC Part 15.247, UKCA-RER, RCM (AS/NZS 4268), KC (KN 301 489-1/-17), dan ISED RSS-247 merangkumi jalur 2,402 - 2,480 MHz dengan PHY 1M, 2M, dan Coded. EN 71-1/-2/-3, ASTM F963-17, CPSIA, dan PROP 65 merangkumi perumah, magnet, dan dakwat. GCC (kelulusan SFDA untuk Arab Saudi), ESMA (UAE), SNI (Indonesia), NOM (Mexico), dan INMETRO (Brazil) merupakan lapisan akses pasaran tambahan yang routinely digunakan semula oleh klien pengimport kami. Setiap kumpulan membawa Laporan Pemeriksaan Jenis 38 halaman dan nombor siri seunit yang memetakan kepada pengembara QA.

14.5 Rujukan Silang Dalaman dan Laluan Pembacaan

Untuk mekanik gandingan huluan lapisan GATT, lihat Gandingan Bluetooth Pen Bacaan SSP Secure Simple Pairing. Untuk reka bentuk UUID yang menentukan ciri mana yang memegang pemberitahuan ini, lihat Reka Bentuk UUID Ciri Perkhidmatan BLE Pen Bacaan. Untuk saluran OTA yang menulis semula kod ini di lapangan, lihat Mekanisme Kemaskini Firmware OTA Pen Bacaan. Untuk format fail kamus yang mengalir melalui pemberitahuan ini apabila edisi buku OID baharu dihantar, lihat Format Fail Kamus dan Edisi Pen Bacaan. Untuk bahagian pengeluar program ini, lihat Perkhidmatan Kejuruteraan Pen Bacaan ODM dan Pembuatan Pen Bacaan OEM.

CTA: Tentukan kelas firmware GATT yang sesuai untuk pasaran anda dengan menghantar sasaran kependaman, SLA p95, dan campuran kelas sambungan anda kepada kami. Minta sebut harga dengan perkataan "GATT-PERF" dan kami akan memulangkan dossier penanda aras 6 halaman setiap model serta sebut harga integrasi firmware harga tetap dalam masa 24 jam. Pen stok neutral sedia pada MOQ 500, larian label peribadi berjenama bermula pada MOQ 3,000 dengan masa pendahuluan 4 minggu dari kelulusan karya seni.

Frequently Asked Questions

Bagaimanakah pen bacaan mengendalikan pemberitahuan yang dijatuhkan oleh radio?
BLE Notify tidak mempunyai penghantaran semula. Pen menandakan laporan sebagai dihantar dalam penimbal telemetri QA dengan nombor jujukan. Jika hos mengesan jurang, ia boleh membaca semula keadaan kamus untuk pulih. Peristiwa seterusnya tiba dalam masa 15 ms dan pengguna tidak melihat sebarang kehilangan dalam 99.4% kes.
Bolehkah hos melanggan pemberitahuan sebelum atau selepas penemuan perkhidmatan?
Selepas. Hos mesti melengkapkan penemuan perkhidmatan untuk mempelajari pemegang CCCD, kemudian menulis 0x0001 (Notify) atau 0x0002 (Indicate) untuk membolehkan langganan. Pen menyimpan keadaan langganan dalam rekod bon supaya sambungan semula berikutnya diaktifkan secara automatik.
Mengapakah pen menggunakan Indicate untuk telemetri dan bukan Notify?
Telemetri adalah kritikal untuk QA. Indicate memerlukan ACK daripada hos, yang menjamin penghantaran dengan kos kependaman tambahan ~1.2 ms. Notify tidak mempunyai ACK, jadi pakej telemetri yang hilang adalah tidak kelihatan kepada hos. Kami menerima penaliti kependaman demi kebolehpercayaan QA.
Berapakah bilangan maksimum rakan terikat yang dijejaki langganannya oleh pen?
Pen menjejaki langganan CCCD untuk semua 8 rakan terikat secara serentak. Jadual CCCD menggunakan 32 entri (8 rakan x 4 ciri), menduduki 1.6 KB RAM. Apabila rakan ke-9 cuba mengikat, bon tertua akan ditulis ganti mengikut dasar yang didokumenkan dalam TC-059.
Bagaimanakah anda menguji saluran paip pemberitahuan sebelum keluaran firmware?
Kami menjalankan suite tekanan 5 peringkat: 1 jam ketukan berterusan, 24 jam bateri pada 10 Hz, 100 kitaran putus + sambung semula, sambungan berurutan 8 rakan, dan 5 minit MTU-23 terpaksa. Jika mana-mana peringkat gagal, firmware ditolak. Pintu masuk ini telah menangkap 4 regresi merentas 86 keluaran firmware.
Troli Anda
Pengalaman anda di tapak ini akan bertambah baik dengan membenarkan kuki. Dasar Kuki
Chat on WhatsApp