Diese Bibliothek wird nicht mehr gepflegt und es gibt keine Pläne für einen Nachfolger dieser Bibliothek. Während es für bestehende nRF5 SDK-Benutzer weiterhin zugänglich bleibt, wird es keine weiteren Updates oder Support erhalten. Wir empfehlen, keine neuen Projekte mit dieser Bibliothek zu initiieren, da die verfügbare Firmware (.hex-Dateien) veraltete SoftDevice-Binärdateien verwendet.
pc-ble-driver
bietet C/C++-Bibliotheken für die Bluetooth Low Energy nRF5 SoftDevice-Serialisierung.
Überblick
Architektur
Unterstützte Umgebungen
Betriebssystem
SoftDevice und IC
Gerätetreiber installieren
Treiberinstallation
Fahrervalidierung
Werkzeuge installieren
Abhängigkeiten installieren
Installation unter Windows
Installation unter Ubuntu Linux
Installation unter macOS
Kompilieren des PC-BLE-Treibers aus dem Quellcode
Kompilieren unter Windows
Kompilieren unter Ubuntu Linux oder macOS
Kompilieren von Konnektivitäts-HEX-Dateien
Kompilieren unter Windows
Kompilieren unter Ubuntu Linux oder macOS
HEX-Dateien für die Konnektivität programmieren
Beispiele
Bekannte Probleme
Lizenz
pc-ble-driver
besteht aus einer Reihe statischer und gemeinsam genutzter Bibliotheken, die der Anwendung SoftDevice-Funktionalität über die serielle Portkommunikation mit einem nRF5-Konnektivitätschip bereitstellen, auf dem das SoftDevice und die Konnektivitätssoftware ausgeführt werden, die hier als einzelne .hex-Datei enthalten sind. Weitere Informationen zur SoftDevice-Serialisierung finden Sie unter Serialisierung.
Die C/C++-Bibliotheken können direkt angebunden werden, werden aber auch als übergeordnete Bindungen bereitgestellt, die die Entwicklung auf Kosten einer reduzierten Kontrolle erleichtern (in den meisten Fällen akzeptabel):
pc-ble-driver-js Node.JS-Bindungen
pc-ble-driver-py Python-Bindungen
Dabei handelt es sich beim „Anwendungschip“ lediglich um generische Hardware (z. B. ein Windows-, Linux- oder macOS-Gerät), obwohl es sich beispielsweise auch um einen Arduino oder Raspberry Pi handeln könnte.
Windows 7, 8 und 10, 32 und 64-Bit (getestet unter Windows 7)
Ubuntu Linux LTS 64-Bit (getestet auf Ubuntu 18.04)
macOS 64-Bit (getestet auf 10.14 Mojave)
Um pc-ble-driver verwenden zu können, muss Ihr Entwicklungskit über die richtige Firmware verfügen. Die benötigten Firmwares befinden sich im Ordner hex/sd_api_v<x>
und enthalten die SoftDevice- und Konnektivitäts-Firmware, die für die Kommunikation mit pc-ble-driver
erforderlich ist.
Die generierten Bibliotheken sind mit den folgenden SoftDevice-API-Versionen und nRF5x-ICs kompatibel:
SoftDevice s130 API Version 2: connectivity_<version>_1m_with_s130_2.xx
(ICs der Serien nRF51 und nRF52)
SoftDevice s132 API Version 3: connectivity_<version>_<1m|*usb>_with_s132_3.xx
(nur für ICs der nRF52-Serie)
SoftDevice s132 API Version 5: connectivity_<version>_<1m|*usb>_with_s132_5.xx
(nur für ICs der nRF52-Serie)
SoftDevice s132 API Version 6: connectivity_<version>_<1m|*usb>_with_s132_6.xx
(nur für ICs der nRF52-Serie)
SoftDevice s140 API Version 6: connectivity_<version>_<1m|*usb>_with_s140_6.xx
(nur für ICs der nRF52-Serie)
*USB) nur für ICs der nRF52-Serie mit USBD-Peripherie
PCA | Offizieller Name | Artikelnummer | Notizen |
---|---|---|---|
PCA10028 | nRF51-ENTWICKLUNGSKIT | nRF6824 | |
PCA10031 | nRF51-DONGLE | nRF6825 | |
PCA10040 | nRF52-ENTWICKLUNGSKIT | nRF6827 | |
PCA10056 | nRF52840 { Entwicklungskit } | nRF6828 | *) |
PCA10059 | nRF52840 {Dongle} | nRF6829 | Kann nur Konnektivitäts-Firmware mit Unterstützung für den seriellen Nordic USB CDC-Anschluss verwenden |
*) Kann sowohl die Nordic USB CDC-Version mit seriellem Port als auch die SEGGER J-Link-OB (VCOM)-Version verwenden. Für die Verwendung der seriellen USB-CDC-Version von Nordic auf PCA10056 müssen Sie die Pins P0.18 und P0.24 verbinden. Die Pins zum QSPI-Chip müssen ebenfalls vorhanden sein (standardmäßig). Der Algorithmus zur Erkennung, ob es sich um PCA10056 oder PCA10059 handelt, besteht darin, zu prüfen, ob eine Kommunikation mit dem QSPI-Chip möglich ist. PCA10059 verfügt über keinen QSPI-Chip. Die Erkennung wird vom nRF Connect DFU-Trigger verwendet, um zu bestimmen, welcher Pin zum Zurücksetzen des Geräts beim Wechsel zwischen DFU- und Anwendungsmodus verwendet werden soll.
Diese Kommunikationsbibliothek funktioniert über jede Art von seriellem Port (UART), am häufigsten wird sie jedoch über einen Segger J-Link USB CDC UART verwendet. Um die erforderlichen J-Link-Treiber einzurichten, laden Sie einfach die zu Ihrem Betriebssystem passende Version herunter und installieren Sie sie:
SEGGER J-Link
Nachdem Sie die erforderlichen Treiber installiert und ein J-Link-fähiges Board (z. B. Nordic Development Kits) angeschlossen haben, sollte der Port verfügbar sein.
Darüber hinaus müssen Sie das Mass Storage Device
deaktivieren, um pc-ble-driver
für die Kommunikation mit dem Gerät verwenden zu können. Beachten Sie data corruption or drops issue
.
Der serielle Port wird als COMxx
angezeigt. Überprüfen Sie einfach den Abschnitt „Anschlüsse (COM & LPT)“ im Geräte-Manager.
Der serielle Port wird als /dev/ttyACMx
angezeigt.
Standardmäßig ist der Port nicht für alle Benutzer zugänglich. Geben Sie den folgenden Befehl ein, um Ihren Benutzer zur dialout
-Gruppe hinzuzufügen und ihm Zugriff auf den seriellen Port zu gewähren. Beachten Sie, dass eine erneute Anmeldung erforderlich ist, damit dies wirksam wird.
$ sudo usermod -a -G dialout <Benutzername>
So verhindern Sie, dass der Modemmanager-Dienst versucht, eine Verbindung zum seriellen CDC ACM-Port herzustellen:
$ systemctl stoppt ModemManager.service $ systemctl deaktiviert ModemManager.service
Der serielle Port wird als /dev/tty.usbmodemXXXX
angezeigt.
Es gibt ein bekanntes Problem. Überprüfen Sie es hier, wenn Sie auf Probleme stoßen.
Um die Konnektivitäts-Firmware zu programmieren, benötigen Sie nrfjprog
, das mit den nRF5x-Befehlszeilentools gebündelt ist und heruntergeladen werden kann von:
nRF5x-Befehlszeilentools für Windows
nRF5x-Befehlszeilentools für Linux 32-Bit
nRF5x-Befehlszeilentools für Linux 64-Bit
nRF5x-Befehlszeilentools für macOS
Fügen Sie nrfjprog
und mergehex
zu PATH
unter Linux und macOS hinzu.
Alternativ kann Ihnen nRF Connect Programmer
bei der Programmierung der Konnektivitäts-Firmware mit UI-Unterstützung helfen.
Laden Sie nRF Connect Desktop herunter und installieren Sie dort nRF Connect Programmer
.
Zum Kompilieren pc-ble-driver
benötigen Sie die folgenden Tools:
AC/C++-Toolchain
Git (>=2.19)
CMake (>=3.11)
vcpkg
pc-ble-driver
aus dem Quellcode Zum Kompilieren von connectivity
HEX-Dateien benötigen Sie zusätzliche Tools:
Schokoladend
Ninja
GNU Embedded Toolchain für Arm
Python
Pip
nrfutil
connectivity
HEX-DateienBefolgen Sie die Schritte, um Abhängigkeiten auf einer bestimmten Plattform zu installieren:
Laden Sie Visual Studio 15
oder eine neuere Version herunter und installieren Sie es.
Installieren Sie Chocolatey. Mit cmd.exe
installieren (Als Administrator ausführen)
# Kopieren Sie alles unten@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/ install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
Wenn Chocolatey
bereits wie oben beschrieben installiert, aber nicht zum PATH hinzugefügt wurde, führen Sie Folgendes aus:
$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
Git
installieren.
$ choco install -y git
Installieren Sie CMake
.
$ choco install -y cmake
Installieren Sie vcpkg.
$ Git-Klon https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ git checkout tags/2020.04 $ .bootstrap-vcpkg.bat
Fügen Sie dann den vcpkg-Speicherort zum PATH
hinzu und legen Sie ihn als Umgebungsvariable VCPKG_ROOT
fest.
Die folgenden Schritte sind nur erforderlich, wenn Sie Ihre eigenen connectivity
HEX-Dateien kompilieren möchten.
ninja
installieren.
$ choco install -y ninja
Laden Sie GNU Embedded Toolchain for Arm
Version 7-2018q2 herunter und installieren Sie es
Von diesem Ort herunterladen.
Befolgen Sie die Installationsanweisungen.
Legen Sie den Installationspfad in den Umgebungsvariablen als GNUARMEMB_TOOLCHAIN_PATH
fest. Zum Beispiel:
$ set GNUARMEMB_TOOLCHAIN_PATH=c:gccarmemb
Installieren Sie Python
und pip
und installieren Sie dann nrfutil
$ pip install nrfutil# Neustart, wenn die Installation erfolgreich ist, die Validierung jedoch fehlschlägt
build-essential
installieren.
$ sudo apt-get -y install build-essential
Installieren Sie Git
$ sudo apt-get -y install git
Wenn die installierte Version von Git
niedriger als erforderlich ist, dann:
$ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-Update $ sudo apt install git
Installieren Sie CMake
.
$ sudo apt-get -y install cmake
Installieren Sie CMake
von der Quelle, wenn die Version niedriger als erforderlich ist.
Installieren Sie vcpkg.
$ Git-Klon https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ Git Checkout-Tags/2020.04 $ ./bootstrap-vcpkg.sh
Fügen Sie dann den vcpkg-Speicherort zur Umgebungsvariablen PATH
und VCPKG_ROOT
hinzu.
Ninja
installieren.
$ sudo apt-get install ninja-build
Die folgenden Schritte sind nur erforderlich, wenn Sie Ihre eigenen connectivity
HEX-Dateien kompilieren möchten.
Installieren Sie GNU Embedded Toolchain for Arm
Version 7-2018q2.
Hier herunterladen
Extrakt
Legen Sie den Speicherort in Umgebungsvariablen als GNUARMEMB_TOOLCHAIN_PATH
fest.
Installieren Sie Python
und pip
und dann nrfutil
.
$ pip install nrfutil# Starten Sie neu, wenn die Installation erfolgreich ist, aber die Validierung fehlschlägt.# Wenn die Fehler weiterhin bestehen, versuchen Sie, Pip selbst zu aktualisieren.
Installieren Sie Xcode (>=10.1)
.
Installieren Sie gcc6
mit HomeBrew.
$ brew installiere gcc6
Installieren Sie CMake
mit HomeBrew.
$ brew install cmake $ brew upgrade cmake
Installieren Sie CMake
von der Quelle, wenn die Version niedriger als erforderlich ist.
Installieren Sie vcpkg.
$ Git-Klon https://github.com/Microsoft/vcpkg/ $ cd vcpkg $ Git Checkout-Tags/2020.04 $ ./bootstrap-vcpkg.sh
Fügen Sie dann den vcpkg-Speicherort zur Umgebungsvariablen PATH
und VCPKG_ROOT
hinzu.
Die folgenden Schritte sind nur erforderlich, wenn Sie Ihre eigenen connectivity
HEX-Dateien kompilieren möchten.
Installieren Sie GNU Embedded Toolchain for Arm
Version 7-2018q2.
Hier herunterladen
Extrakt
Legen Sie den Speicherort in Umgebungsvariablen als GNUARMEMB_TOOLCHAIN_PATH
fest.
Installieren Sie Python
und pip
und installieren Sie dann nrfutil
$ pip install nrfutil# Neustart, wenn die Installation erfolgreich ist, die Validierung jedoch fehlschlägt
Installieren Sie vcpkg-Abhängigkeiten.
# cd <pc-ble-driver-root-folder># Stellen Sie sicher, dass %VCPKG_ROOT% festgelegt und zu %PATH%$ mkdir build && cd build hinzugefügt ist $ vcpkg asio Catch2 SPDLOG installieren
CMake Wählen Sie den zu verwendenden Visual Studio-Compiler gemäß diesem Artikel aus: Erstellen Sie C/C++-Code in der Befehlszeile
$ cmake -G Ninja ..
Kompilieren
$ cmake --build .
Wählen Sie optional die Build-Konfiguration mit der Option --config
aus. Normalerweise sind Debug
, Release
, MinSizeRel
und RelWithDebInfo
verfügbar. Zum Beispiel:
$ cmake --build . --config Debuggen
Installieren Sie vcpkg-Abhängigkeiten.
# cd <pc-ble-driver-root-folder># Stellen Sie sicher, dass $VCPKG_ROOT festgelegt und zu $PATH$ mkdir build && cd build hinzugefügt ist $ vcpkg asio Catch2 SPDLOG installieren
CMake
$ cmake -G Ninja ..
Wählen Sie optional die Build-Konfiguration mit der Option -DCMAKE_BUILD_TYPE
aus. Normalerweise sind Debug
, Release
, MinSizeRel
und RelWithDebInfo
verfügbar.
Wählen Sie optional die Zielarchitektur (32 oder 64-Bit) mit der Option -DARCH
aus. Die Werte können x86_32
, x86_64
, x86_32,x86_64
sein. Zum Beispiel:
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DARCH=x86_32,x86_64 ..
Kompilieren
$ cmake --build .
pc-ble-driver
aus dem Quellcode, falls Sie dies noch nicht getan haben.Stellen Sie sicher, dass die folgenden Umgebungsvariablen festgelegt sind:
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
Stellen Sie sicher, dass die folgenden Pfade zu PATH hinzugefügt wurden:
VCPKG_ROOT
mergehex
Befolgen Sie die Schritte, um Abhängigkeiten auf einer bestimmten Plattform zu installieren:
Umgebung festlegen
# cd <pc-ble-driver-root-folder>$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"# Stellen Sie sicher, dass Umgebungsvariablen wie am Anfang dieses Abschnitts beschrieben festgelegt wurden
CMake
$ mkdir build && cd build# Ändern -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
ist auf 1 gesetzt, um das Kompilieren der Konnektivitäts-Firmware zu ermöglichen.
CONNECTIVITY_VERSION
definiert eine Version für die kompilierte Konnektivitäts-Firmware.
Weitere Optionen finden Sie unter Kompilieren des PC-BLE-Treibers unter Windows
Kompilieren
$ cmake --build . --target Compile_Connectivity
Die HEX-Dateien sind nach der Kompilierung im Ordner hex/sd_api_v<x>
verfügbar. Dazu gehören das SoftDevice und die Konnektivitätsanwendung.
Umgebung festlegen
# cd <pc-ble-driver-root-folder>$ export TMP=/tmp# Stellen Sie sicher, dass Umgebungsvariablen wie am Anfang dieses Abschnitts beschrieben festgelegt wurden
CMake
$ mkdir build && cd build# Ändern -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
ist auf 1 gesetzt, um das Kompilieren der Konnektivitäts-Firmware zu ermöglichen.
CONNECTIVITY_VERSION
definiert eine Version für die kompilierte Konnektivitäts-Firmware.
Weitere Optionen finden Sie unter Kompilieren des PC-Ble-Treibers unter Ubuntu Linux oder macOS
Kompilieren
$ cmake --build . --target Compile_Connectivity
Die HEX-Dateien sind nach der Kompilierung im Ordner hex/sd_api_v<x>
verfügbar. Dazu gehören das SoftDevice und die Konnektivitätsanwendung.
Gehen Sie zu „Tools installieren“, wenn die nRF5x-Befehlszeilentools noch nicht installiert wurden.
Um diese Bibliothek verwenden zu können, müssen Sie die Konnektivitäts-Firmware auf einem nRF5x-IC programmieren
Verwenden Sie die nRF5x-Befehlszeilentools, um den IC zu löschen und zu programmieren:
$ nrfjprog -f NRF5<x> -e $ nrfjprog -f NRF5<x> --program hex/sd_api_v<x>/connectivity_<ver>_<baudrate>_with_s<x>_<a>.<b>.<c>.hex
Alternativ können Sie den IC mit dem nRF Connect Programmer löschen und programmieren.
Einige Kits, wie der pca10059 nRF52-Dongle, verfügen nicht über einen integrierten Debugger und müssen über eine serielle DFU programmiert werden. Unter Windows sind Gerätetreiber erforderlich, damit die Kits vom Betriebssystem korrekt erkannt werden. Um die erforderlichen Treiber zu installieren, stellen Sie bitte sicher, dass Sie die neueste Version von nRF Connect for Desktop installiert haben.
Die Programmierung der Konnektivitäts-Firmware über serielles DFU kann über die Befehlszeile oder über nRF Connect for Desktop erfolgen.
Das Upgrade der Geräte-Firmware mit nrfutil erfolgt normalerweise in zwei Schritten: 1: Generieren des DFU-Zip-Pakets und 2: Durchführen des DFU-Verfahrens. Ein DFU-Zip-Paket wurde vorgefertigt und ist in diesem Repository enthalten. So führen Sie die DFU-Prozedur mit nrfutil mit dem vorgefertigten DFU-Paket aus:
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s<x>_<a>.<b>.<c>_dfu_pkg.zip -p <serial port>
Die Beispiele dienen als guter Ausgangspunkt für die Entwicklung mit pc-ble-driver
. Beispiele umfassen einen Herzfrequenzmonitor (BLE-Peripheriegerät) und einen Herzfrequenzsammler (BLE-Master) und zeigen die Grundstruktur einer auf pc-ble-driver
basierenden Anwendung.
Um die Beispiele schnell zum Laufen zu bringen, lesen Sie examples/README.md.
Wenn bei der Installation des PC-Ble-Treibers Probleme auftreten, lesen Sie bitte Issues.md.
Sie können jederzeit Änderungen vorschlagen, indem Sie eine Pull-Anfrage erstellen.
Wenn Sie vorhaben, nicht triviale Änderungen vorzunehmen, fangen Sie bitte klein an und fragen Sie nach einer Einigung, bevor Sie zu viel Arbeit hineinstecken. Eine Pull-Anfrage kann abgelehnt werden, wenn sie nicht gut in die aktuelle Produkt-Roadmap passt.
Um Ihre Pull-Anfrage anzunehmen, müssen Sie unsere Contributor License Agreement (CLA) unterzeichnen. Anweisungen dazu werden Ihnen angezeigt, nachdem Sie Ihre erste Pull-Anfrage eingereicht haben.
Wenn Sie Fehler finden oder Fragen oder sonstiges Feedback im Allgemeinen haben, senden Sie bitte einen Beitrag auf dem Nordic DevZone-Portal. Beachten Sie, dass Fehlerberichte ausreichend detailliert beschreiben sollten, wie der Fehler reproduziert werden kann.
Einzelheiten finden Sie in der Lizenzdatei.