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.
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):
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.
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
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:
connectivity__1m_with_s130_2.xx
(ICs der Serien nRF51 und nRF52)connectivity__<1m|*usb>_with_s132_3.xx
(nur für ICs der nRF52-Serie)connectivity__<1m|*usb>_with_s132_5.xx
(nur für ICs der nRF52-Serie)connectivity__<1m|*usb>_with_s132_6.xx
(nur für ICs der nRF52-Serie)connectivity__<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 | Konnektivitäts-Firmware kann nur mit Unterstützung für den seriellen Nordic USB CDC-Anschluss verwendet werden |
*) 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:
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 < username >
So verhindern Sie, dass der Modemmanager-Dienst versucht, eine Verbindung zum seriellen CDC ACM-Port herzustellen:
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
Der serielle Port wird als /dev/tty.usbmodemXXXX
angezeigt.
Es liegt ein bekanntes Problem vor. Wenn Sie auf Probleme stoßen, sehen Sie hier nach.
Um die Konnektivitäts-Firmware zu programmieren, benötigen Sie nrfjprog
, das mit den nRF5x-Befehlszeilentools gebündelt ist und heruntergeladen werden kann von:
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:
pc-ble-driver
aus dem Quellcode Um connectivity
HEX-Dateien zu kompilieren, benötigen Sie zusätzliche Tools:
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)
# Copy everything below
@ " %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 "
Installieren Sie Git
.
$ choco install -y git
Installieren Sie CMake
.
$ choco install -y cmake
Installieren Sie vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-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: g ccarmemb
Installieren Sie Python
und pip
und installieren Sie dann nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
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 clone 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.
GNUARMEMB_TOOLCHAIN_PATH
fest. Installieren Sie Python
und pip
und dann nrfutil
.
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
Installieren Sie Xcode (>=10.1)
.
Installieren Sie gcc6
mit HomeBrew.
$ brew install 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 clone 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.
GNUARMEMB_TOOLCHAIN_PATH
fest. Installieren Sie Python
und pip
und installieren Sie dann nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Installieren Sie vcpkg-Abhängigkeiten.
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
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 Debug
Installieren Sie vcpkg-Abhängigkeiten.
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
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
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ 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
verfügbar. Dazu gehören das SoftDevice und die Konnektivitätsanwendung.
Umgebung festlegen
# cd
$ export TMP=/tmp
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ 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
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 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...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_.._dfu_pkg.zip -p
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.