該庫不再被維護,並且沒有計劃繼承該庫。雖然現有 nRF5 SDK 用戶仍然可以存取它,但不會收到進一步的更新或支援。我們建議不要使用此程式庫啟動新項目,因為可用的韌體(.hex 檔案)使用過時的 SoftDevice 二進位。
pc-ble-driver
提供用於藍牙低功耗 nRF5 SoftDevice 序列化的 C/C++ 函式庫。
概述
建築學
支援的環境
作業系統
軟器件和IC
安裝裝置驅動程式
驅動安裝
驅動程式驗證
安裝工具
安裝依賴項
在 Windows 上安裝
在 Ubuntu Linux 上安裝
在 macOS 上安裝
從原始碼編譯 pc-ble-driver
在 Windows 上編譯
在 Ubuntu Linux 或 macOS 上編譯
編譯連接 HEX 文件
在 Windows 上編譯
在 Ubuntu Linux 或 macOS 上編譯
編程連接 HEX 文件
範例
已知問題
執照
pc-ble-driver
由一組靜態和共享庫組成,這些庫透過與運行 SoftDevice 和連接軟體的 nRF5 連接晶片的串行端口通訊向應用程式提供 SoftDevice 功能,此處包含為單個 .hex 檔案。有關 SoftDevice 序列化的詳細信息,請參閱序列化。
C/C++ 庫可以直接連接,但也作為更高級別的綁定提供,以減少控制為代價簡化開發(在大多數情況下是可以接受的):
pc-ble-driver-js Node.JS 綁定
pc-ble-driver-py Python 綁定
其中「應用晶片」只是通用硬體(即 Windows、Linux 或 macOS 裝置),儘管它也可以是 Arduino 或 Raspberry Pi 等。
Windows 7、8 和 10、32 和 64 位元(在 Windows 7 上測試)
Ubuntu Linux LTS 64 位元(在 Ubuntu 18.04 上測試)
macOS 64 位元(在 10.14 Mojave 上測試)
要使用 pc-ble-driver,您的開發套件需要具有正確的韌體。所需的韌體可在hex/sd_api_v<x>
資料夾中找到,其中包含與pc-ble-driver
通訊所需的 SoftDevice 和連接韌體。
產生的庫與以下 SoftDevice API 版本和 nRF5x IC 相容:
SoftDevice s130 API 版本 2: connectivity_<version>_1m_with_s130_2.xx
(nRF51 和 nRF52 系列 IC)
SoftDevice s132 API 版本 3: connectivity_<version>_<1m|*usb>_with_s132_3.xx
(僅適用於 nRF52 系列 IC)
SoftDevice s132 API 版本 5: connectivity_<version>_<1m|*usb>_with_s132_5.xx
(僅適用於 nRF52 系列 IC)
SoftDevice s132 API 版本 6: connectivity_<version>_<1m|*usb>_with_s132_6.xx
(僅適用於 nRF52 系列 IC)
SoftDevice s140 API 版本 6: connectivity_<version>_<1m|*usb>_with_s140_6.xx
(僅適用於 nRF52 系列 IC)
*usb) 僅適用於具有 USBD 週邊裝置的 nRF52 系列 IC
主成分分析 | 正式名稱 | 貨號 | 筆記 |
---|---|---|---|
PCA10028 | nRF51 開發套件 | nRF6824 | |
PCA10031 | nRF51 加密狗 | nRF6825 | |
PCA10040 | nRF52 開發套件 | nRF6827 | |
PCA10056 | nRF52840 { 開發套件 } | nRF6828 | *) |
PCA10059 | nRF52840 { 加密狗 } | nRF6829 | 只能使用支援 Nordic USB CDC 串列連接埠的連接韌體 |
*) 可使用 Nordic USB CDC 串列埠版本和 SEGGER J-Link-OB (VCOM) 版本。在 PCA10056 上使用 Nordic USB CDC 串列埠版本需要連接接腳 P0.18 和 P0.24。 QSPI 晶片的引腳也必須就位(預設)。檢測是PCA10056還是PCA10059的演算法是檢查是否可以與QSPI晶片通訊。 PCA10059沒有QSPI晶片。 nRF Connect DFU 觸發器使用偵測來確定在 DFU 和應用模式之間切換時使用哪個引腳來重置裝置。
此通訊庫可在任何類型的序列埠 (UART) 上運作,但最常在 Segger J-Link USB CDC UART 上使用。要設定所需的 J-Link 驅動程序,只需下載並安裝與您的作業系統相符的版本:
賽格J-Link
安裝所需的驅動程式並連接支援 J-Link 的板(例如 Nordic 開發套件)後,連接埠應該可用。
此外,您必須停用Mass Storage Device
才能使用pc-ble-driver
與裝置通訊,請參閱data corruption or drops issue
。
序列埠將顯示為COMxx
。只需檢查裝置管理員中的“連接埠(COM 和 LPT)”部分即可。
序列埠將顯示為/dev/ttyACMx
。
預設情況下,並非所有使用者都可以存取該連接埠。鍵入以下命令將您的使用者新增至dialout
群組,以使其能夠存取序列埠。請注意,需要重新登入才能生效。
$ sudo usermod -a -G dialout <用戶名>
若要防止調變解調器管理器服務嘗試連接到 CDC ACM 序列埠:
$ systemctl stop ModemManager.service $ systemctl 禁用 ModemManager.service
序列埠將顯示為/dev/tty.usbmodemXXXX
。
有一個已知問題,如果您遇到任何問題,請在此處檢查。
要對連接韌體進行編程,您需要nrfjprog
,它與 nRF5x 命令列工具捆綁在一起,可以從以下位置下載:
適用於 Windows 的 nRF5x 命令列工具
適用於 Linux 32 位元的 nRF5x 命令列工具
適用於 Linux 64 位元的 nRF5x 命令列工具
適用於 macOS 的 nRF5x 命令列工具
在 Linux 和 macOS 上將nrfjprog
和mergehex
加入PATH
。
或者, nRF Connect Programmer
可以幫助您透過 UI 支援對連接韌體進行程式設計。
下載 nRF Connect Desktop 並在那裡安裝nRF Connect Programmer
。
要編譯pc-ble-driver
您將需要以下工具:
AC/C++ 工具鏈
git (>=2.19)
CMake (>=3.11)
氯苯酚
pc-ble-driver
要編譯connectivity
HEX 文件,您將需要其他工具:
巧克力口味
忍者
適用於 Arm 的 GNU 嵌入式工具鏈
Python
點
恩夫蒂爾
connectivity
HEX文件請依照以下步驟在特定平台上安裝相依性:
下載Visual Studio 15
或更高版本並安裝。
安裝巧克力。使用cmd.exe
安裝(以管理員身份執行)
# 複製下面的所有內容@"%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"
如果Chocolatey
已按上述方式安裝,但尚未新增至 PATH,請執行:
$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
安裝Git
。
$ choco install -y git
安裝CMake
。
$ choco install -y cmake
安裝 vcpkg。
$ git 克隆 https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ git checkout 標籤/2020.04 $ .bootstrap-vcpkg.bat
然後將 vcpkg 位置加入PATH
並將其設定為VCPKG_ROOT
環境變數。
只有當您想要編譯自己的connectivity
HEX 檔案時才需要執行以下步驟。
安裝ninja
。
$ choco install -y 忍者
下載並安裝GNU Embedded Toolchain for Arm
從這個位置下載。
請按照安裝說明進行操作。
在環境變數中將其安裝路徑設定為GNUARMEMB_TOOLCHAIN_PATH
。例如:
$ 設定 GNUARMEMB_TOOLCHAIN_PATH=c:gccarmemb
安裝Python
和pip
,然後安裝nrfutil
$ pip install nrfutil# 如果安裝成功但驗證失敗則重新啟動
安裝build-essential
。
$ sudo apt-get -y install build-essential
安裝Git
$ sudo apt-get -y 安裝 git
如果安裝的Git
版本低於要求,則:
$ sudo add-apt-repository ppa:git-core/ppa $ sudo apt 更新 $ sudo apt安裝git
安裝CMake
。
$ sudo apt-get -y 安裝 cmake
如果版本低於要求,請從來源安裝CMake
。
安裝 vcpkg。
$ git 克隆 https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ git checkout 標籤/2020.04 $ ./bootstrap-vcpkg.sh
然後將 vcpkg 位置加入PATH
和VCPKG_ROOT
環境變數中。
安裝Ninja
。
$ sudo apt-get install ninja-build
只有當您想要編譯自己的connectivity
HEX 檔案時才需要執行以下步驟。
安裝GNU Embedded Toolchain for Arm
。
從這裡下載
提煉
在環境變數中將其位置設定為GNUARMEMB_TOOLCHAIN_PATH
。
安裝Python
和pip
,然後安裝nrfutil
。
$ pip install nrfutil# 如果安裝成功但驗證失敗則重新啟動# 如果錯誤仍然存在,請嘗試更新 pip 本身。
安裝Xcode (>=10.1)
。
使用 HomeBrew 安裝gcc6
。
$ 釀造安裝 gcc6
使用 HomeBrew 安裝CMake
。
$ 釀造安裝cmake $brew 升級 cmake
如果版本低於要求,請從來源安裝CMake
。
安裝 vcpkg。
$ git 克隆 https://github.com/Microsoft/vcpkg/ $ cd vcpkg $ git checkout 標籤/2020.04 $ ./bootstrap-vcpkg.sh
然後將 vcpkg 位置加入PATH
和VCPKG_ROOT
環境變數中。
只有當您想要編譯自己的connectivity
HEX 檔案時才需要執行以下步驟。
安裝GNU Embedded Toolchain for Arm
。
從這裡下載
提煉
在環境變數中將其位置設定為GNUARMEMB_TOOLCHAIN_PATH
。
安裝Python
和pip
,然後安裝nrfutil
$ pip install nrfutil# 如果安裝成功但驗證失敗則重新啟動
安裝 vcpkg 依賴項。
# cd <pc-ble-driver-root-folder># 確保設定 %VCPKG_ROOT% 並將其新增至 %PATH%$ mkdir build && cd build $ vcpkg 安裝 asio catch2 spdlog
CMake 根據本文選擇要使用的 Visual Studio 編譯器:在命令列上建置 C/C++ 程式碼
$ cmake -G 忍者 ..
編譯
$ cmake --build .
(可選)使用--config
選項選擇建置配置。通常可以使用Debug
、 Release
、 MinSizeRel
和RelWithDebInfo
。例如:
$ cmake --build . --配置偵錯
安裝 vcpkg 依賴項。
# cd <pc-ble-driver-root-folder># 確保 $VCPKG_ROOT 已設定並新增至 $PATH$ mkdir build && cd build $ vcpkg 安裝 asio catch2 spdlog
CMake
$ cmake -G忍者 ..
(可選)使用-DCMAKE_BUILD_TYPE
選項選擇建置配置。通常可以使用Debug
、 Release
、 MinSizeRel
和RelWithDebInfo
。
(可選)使用-DARCH
選項選擇目標體系結構(32 或 64 位元)。這些值可以是x86_32
、 x86_64
、 x86_32,x86_64
。例如:
$ cmake -G忍者 -DCMAKE_BUILD_TYPE=調試 -DARCH=x86_32,x86_64 ..
編譯
$ cmake --build .
pc-ble-driver
。確保設定了以下環境變數:
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
確保以下路徑已新增至 PATH:
VCPKG_ROOT
mergehex
請依照以下步驟在特定平台上安裝相依性:
設定環境
# cd <pc-ble-driver-root-folder>$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"# 確保已依照本節開頭所述設定環境變數#
CMake
$ mkdir build && cd build# 修改 -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
設定為 1 以啟用編譯連接韌體。
CONNECTIVITY_VERSION
定義編譯的連接韌體的版本。
檢查在 Windows 上編譯 pc-ble-driver 的更多選項
編譯
$ cmake --build . --目標編譯連接
編譯後,HEX 檔案位於hex/sd_api_v<x>
資料夾中。它們包括 SoftDevice 和連接應用程式。
設定環境
# cd <pc-ble-driver-root-folder>$ export TMP=/tmp# 確保已依照本節開頭所述設定環境變數#
CMake
$ mkdir build && cd build# 修改 -DCONNECTIVITY_VERSION=abc$ cmake -G忍者 -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
設定為 1 以啟用編譯連接韌體。
CONNECTIVITY_VERSION
定義編譯的連接韌體的版本。
檢查在 Ubuntu Linux 或 macOS 上編譯 pc-ble-driver 的更多選項
編譯
$ cmake --build . --目標編譯連接
編譯後,HEX 檔案位於hex/sd_api_v<x>
資料夾中。它們包括 SoftDevice 和連接應用程式。
如果尚未安裝 nRF5x 命令列工具,請前往安裝工具。
要使用此庫,您需要對 nRF5x IC 上的連接韌體進行編程
使用 nRF5x 命令列工具對 IC 進行擦除和編程:
$ 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
或者,使用 nRF Connect Programmer 對 IC 進行擦除和編程。
某些套件(例如 pca10059 nRF52 加密狗)沒有板載調試器,必須透過串行 DFU 進行編程。在 Windows 上,需要裝置驅動程式才能讓作業系統正確偵測到套件。要安裝所需的驅動程序,請確保您安裝了最新的 nRF Connect for Desktop。
可透過命令列或 nRF Connect for Desktop 透過串列 DFU 對連接韌體進行程式設計。
使用 nrfutil 進行設備韌體升級通常分兩步驟完成:1:產生 DFU zip 包,2:執行 DFU 程序。 DFU zip 套件已預先製作並包含在該儲存庫中。要使用 nrfutil 和預製的 DFU 套件運行 DFU 過程:
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s<x>_<a>.<b>.<c>_dfu_pkg.zip -p <serial port>
這些範例是使用pc-ble-driver
進行開發的良好起點。例如心率監測器(BLE 週邊)和心率收集器(BLE 主設備),並展示了基於pc-ble-driver
的應用程式的基本結構。
若要快速啟動並執行範例,請參閱範例/README.md。
如果您在安裝 pc-ble-driver 過程中遇到問題,請參閱 Issues.md。
請隨意透過建立拉取請求來提出變更。
如果您計劃進行任何重要的更改,請從小處開始,並在投入太多工作之前徵求意見。如果拉取要求不太適合目前產品路線圖,則可以拒絕該拉取要求。
為了接受您的拉取請求,我們需要您簽署我們的貢獻者授權協議 (CLA)。提交第一個拉取請求後,您將看到執行此操作的說明。
如果您發現任何錯誤,或有疑問或其他回饋,請在 Nordic DevZone 入口網站上提交貼文。請注意,錯誤報告應足夠詳細地描述如何重現錯誤。
有關詳細信息,請參閱許可證文件。