Эта библиотека больше не поддерживается, и создание ее преемника не планируется. Хотя он останется доступным для существующих пользователей nRF5 SDK, он не будет получать дальнейших обновлений или поддержки. Мы рекомендуем воздержаться от запуска новых проектов с этой библиотекой, поскольку в доступной прошивке (файлы .hex) используются устаревшие двоичные файлы SoftDevice.
pc-ble-driver
предоставляет библиотеки C/C++ для сериализации Bluetooth Low Energy nRF5 SoftDevice.
Обзор
Архитектура
Поддерживаемые среды
Операционная система
SoftDevice и IC
Установка драйверов устройств
Установка драйвера
Проверка драйверов
Установка инструментов
Установка зависимостей
Установка в Windows
Установка на Ubuntu Linux
Установка на macOS
Компиляция pc-ble-driver из исходников
Компиляция в Windows
Компиляция в Ubuntu Linux или macOS
Компиляция HEX-файлов подключения
Компиляция в Windows
Компиляция в Ubuntu Linux или macOS
Программирование подключения HEX-файлов
Примеры
Известные проблемы
Лицензия
pc-ble-driver
состоит из набора статических и общих библиотек, которые обеспечивают функциональность SoftDevice приложению посредством связи через последовательный порт с микросхемой подключения nRF5, на которой работает SoftDevice и программное обеспечение для подключения, включенное здесь в виде одного шестнадцатеричного файла. Дополнительные сведения о сериализации 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)
64-разрядная версия macOS (проверено на версии 10.14 Mojave)
Чтобы использовать pc-ble-driver, в вашем комплекте разработки должна быть установлена правильная прошивка. Необходимые прошивки находятся в папке hex/sd_api_v<x>
и содержат SoftDevice и прошивку для подключения, необходимую для связи с pc-ble-driver
.
Сгенерированные библиотеки совместимы со следующими версиями API SoftDevice и микросхемами nRF5x:
SoftDevice s130 API версии 2: connectivity_<version>_1m_with_s130_2.xx
(ИС серии nRF51 и nRF52)
SoftDevice s132 API версии 3: connectivity_<version>_<1m|*usb>_with_s132_3.xx
(только для микросхем серии nRF52)
SoftDevice s132 API версии 5: connectivity_<version>_<1m|*usb>_with_s132_5.xx
(только для микросхем серии nRF52)
SoftDevice s132 API версии 6: connectivity_<version>_<1m|*usb>_with_s132_6.xx
(только для микросхем серии nRF52)
SoftDevice s140 API версии 6: connectivity_<version>_<1m|*usb>_with_s140_6.xx
(только для микросхем серии nRF52)
*usb) только для микросхем серии nRF52 с периферийным устройством USBD
СПС | Официальное название | Номер артикула | Примечания |
---|---|---|---|
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). Для использования версии последовательного порта Nordic USB CDC на PCA10056 необходимо соединить контакты P0.18 и P0.24. Выводы чипа QSPI также должны быть на месте (они есть по умолчанию). Алгоритм определения того, является ли это PCA10056 или PCA10059, заключается в проверке возможности связи с чипом QSPI. PCA10059 не имеет чипа QSPI. Обнаружение используется триггером nRF Connect DFU, чтобы определить, какой контакт использовать для сброса устройства при переключении между DFU и режимом приложения.
Эта коммуникационная библиотека работает через любой последовательный порт (UART), но чаще всего она используется через Segger J-Link USB CDC UART. Чтобы настроить необходимые драйверы J-Link, просто загрузите и установите версию, соответствующую вашей операционной системе:
SEGGER 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 Diaout <имя пользователя>
Чтобы служба модемманагера не пыталась подключиться к последовательному порту CDC ACM:
$ systemctl остановить ModemManager.service $ systemctl отключить ModemManager.service
Последовательный порт будет выглядеть как /dev/tty.usbmodemXXXX
.
Существует известная проблема. Если у вас возникли какие-либо проблемы, проверьте ее здесь.
Для программирования прошивки подключения вам понадобится nrfjprog
, который входит в комплект инструментов командной строки nRF5x, которые можно загрузить по адресу:
Инструменты командной строки nRF5x для Windows
Инструменты командной строки nRF5x для 32-разрядной версии Linux
Инструменты командной строки nRF5x для 64-разрядной версии Linux
Инструменты командной строки nRF5x для macOS
Добавьте nrfjprog
и mergehex
в PATH
в Linux и macOS.
Кроме того, nRF Connect Programmer
может помочь вам запрограммировать прошивку Connectivty с поддержкой пользовательского интерфейса.
Загрузите nRF Connect Desktop и установите туда nRF Connect Programmer
.
Для компиляции pc-ble-driver
вам понадобятся следующие инструменты:
Набор инструментов AC/C++
Гит (>=2,19)
CMake (>=3.11)
vcpkg
pc-ble-driver
из исходного кода. Для компиляции HEX-файлов connectivity
вам потребуются дополнительные инструменты:
Шоколадный
Ниндзя
Встроенная цепочка инструментов GNU для Arm
Питон
пункт
нрфутил
connectivity
.Следуйте инструкциям по установке зависимостей на конкретной платформе:
Загрузите 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 clone https://github.com/Microsoft/vcpkg.git $ компакт-диск vcpkg $ git checkout tags/2020.04 $ .bootstrap-vcpkg.bat
Затем добавьте местоположение vcpkg в PATH
и установите его как переменную среды VCPKG_ROOT
.
Следующие шаги необходимы только в том случае, если вы хотите скомпилировать свои собственные HEX-файлы connectivity
.
Установите ninja
.
$ choco install -y ниндзя
Загрузите и установите GNU Embedded Toolchain for Arm
версии 7-2018q2.
Загрузите из этого места.
Следуйте инструкциям по установке.
Установите путь установки как GNUARMEMB_TOOLCHAIN_PATH
в переменных среды. Например:
$ set 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 install cmake
Установите CMake
из исходного кода, если версия ниже требуемой.
Установите vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git $ компакт-диск vcpkg $ git checkout tags/2020.04 $ ./bootstrap-vcpkg.sh
Затем добавьте местоположение vcpkg в переменную среды PATH
и VCPKG_ROOT
.
Установите Ninja
.
$ sudo apt-get установить ниндзя-сборку
Следующие шаги необходимы только в том случае, если вы хотите скомпилировать свои собственные HEX-файлы connectivity
.
Установите GNU Embedded Toolchain for Arm
версии 7-2018q2.
Скачать отсюда
Извлекать
Установите его местоположение как GNUARMEMB_TOOLCHAIN_PATH
в переменных среды.
Установите Python
и pip
, а затем установите nrfutil
.
$ pip install nrfutil# Перезагрузитесь, если установка прошла успешно, но проверка не удалась# Если ошибки не исчезнут, попробуйте обновить сам pip.
Установите Xcode (>=10.1)
.
Установите gcc6
с помощью HomeBrew.
$ варить установку gcc6
Установите CMake
с помощью HomeBrew.
$ Brew установить cmake $ варить обновление cmake
Установите CMake
из исходного кода, если версия ниже требуемой.
Установите vcpkg.
$ git clone https://github.com/Microsoft/vcpkg/ $ компакт-диск vcpkg $ git checkout tags/2020.04 $ ./bootstrap-vcpkg.sh
Затем добавьте местоположение vcpkg в переменную среды PATH
и VCPKG_ROOT
.
Следующие шаги необходимы только в том случае, если вы хотите скомпилировать свои собственные HEX-файлы connectivity
.
Установите GNU Embedded Toolchain for Arm
версии 7-2018q2.
Скачать отсюда
Извлекать
Установите его местоположение как GNUARMEMB_TOOLCHAIN_PATH
в переменных среды.
Установите Python
и pip
, а затем установите nrfutil
$ pip install nrfutil# Перезагрузитесь, если установка прошла успешно, но проверка не удалась.
Установите зависимости vcpkg.
# cd <корневая папка-pc-ble-driver># Убедитесь, что %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. --config Отладка
Установите зависимости vcpkg.
# cd <корневая папка-pc-ble-driver># Убедитесь, что $VCPKG_ROOT установлен и добавлен в $PATH$ mkdir build && cd build $ vcpkg установить asio catch2 spdlog
CMake
$ cmake -G Ниндзя ..
При необходимости выберите конфигурацию сборки с параметром -DCMAKE_BUILD_TYPE
. Обычно доступны Debug
, Release
, MinSizeRel
и RelWithDebInfo
.
При желании выберите целевую архитектуру (32 или 64-разрядную), используя опцию -DARCH
. Значения могут быть x86_32
, x86_64
, x86_32,x86_64
. Например:
$ cmake -G Ниндзя -DCMAKE_BUILD_TYPE=Отладка -ДАРЧ=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# Modify -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
установлено значение 1, чтобы включить компиляцию прошивки для подключения.
CONNECTIVITY_VERSION
определяет версию скомпилированной прошивки для подключения.
Проверьте дополнительные параметры при компиляции pc-ble-driver в Windows.
Скомпилировать
$ cmake --build. --target compile_connectivity
Файлы HEX доступны в папке hex/sd_api_v<x>
после компиляции. Они включают SoftDevice и приложение для подключения.
Установить среду
# cd <pc-ble-driver-root-folder>$ Export TMP=/tmp# Убедитесь, что переменные среды установлены#, как описано в начале этого раздела.
CMake
$ mkdir build && cd build# Modify -DCONNECTIVITY_VERSION=abc$ cmake -G Ниндзя -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
установлено значение 1, чтобы включить компиляцию прошивки для подключения.
CONNECTIVITY_VERSION
определяет версию скомпилированной прошивки для подключения.
Проверьте дополнительные параметры при компиляции pc-ble-driver в Ubuntu Linux или macOS.
Скомпилировать
$ cmake --build. --target compile_connectivity
Файлы HEX доступны в папке hex/sd_api_v<x>
после компиляции. Они включают в себя SoftDevice и приложение для подключения.
Перейдите к установке инструментов, если инструменты командной строки nRF5x еще не установлены.
Чтобы использовать эту библиотеку, вам необходимо запрограммировать прошивку подключения на микросхеме nRF5x.
Используйте инструменты командной строки nRF5x для стирания и программирования микросхемы:
$ 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 для стирания и программирования микросхемы.
Некоторые комплекты, такие как ключ pca10059 nRF52, не имеют встроенного отладчика, и их придется программировать через последовательный DFU. В Windows для правильного обнаружения комплектов операционной системой требуются драйверы устройств. Чтобы установить необходимые драйверы, убедитесь, что у вас установлена последняя версия nRF Connect for Desktop.
Программирование прошивки для подключения через последовательный DFU можно выполнить из командной строки или из nRF Connect for Desktop.
Обновление прошивки устройства с помощью nrfutil обычно выполняется в два этапа: 1: создание zip-пакета DFU и 2: выполнение процедуры DFU. ZIP-пакет DFU уже создан и включен в этот репозиторий. Чтобы запустить процедуру DFU с помощью nrfutil с готовым пакетом 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
.
Чтобы быстро приступить к работе с примерами, см. example/README.md.
Если у вас возникли проблемы во время установки pc-ble-driver, пожалуйста, посетите Issues.md.
Не стесняйтесь предлагать изменения, создав запрос на включение.
Если вы планируете внести какие-либо нетривиальные изменения, начните с малого и попросите договориться, прежде чем прикладывать к этому слишком много усилий. Запрос на включение может быть отклонен, если он не соответствует текущей дорожной карте продукта.
Чтобы принять ваш запрос на включение, нам нужно, чтобы вы подписали наше Лицензионное соглашение для участников (CLA). Вы увидите инструкции по этому поводу после отправки первого запроса на включение.
Если вы обнаружите какие-либо ошибки или у вас возникнут вопросы или другие отзывы, отправьте сообщение на портале Nordic DevZone. Обратите внимание, что отчеты об ошибках должны достаточно подробно описывать, как воспроизвести ошибку.
Подробности смотрите в файле лицензии.