이 라이브러리는 더 이상 유지 관리되지 않으며 이 라이브러리의 후속 버전에 대한 계획도 없습니다. 기존 nRF5 SDK 사용자는 계속 액세스할 수 있지만 추가 업데이트나 지원은 받을 수 없습니다. 사용 가능한 펌웨어(.hex 파일)가 오래된 SoftDevice 바이너리를 사용하므로 이 라이브러리를 사용하여 새 프로젝트를 시작하지 않는 것이 좋습니다.
pc-ble-driver
Bluetooth Low Energy nRF5 SoftDevice 직렬화를 위한 C/C++ 라이브러리를 제공합니다.
pc-ble-driver
여기에 단일 .hex 파일로 포함된 SoftDevice 및 연결 소프트웨어를 실행하는 nRF5 연결 칩과의 직렬 포트 통신을 통해 애플리케이션에 SoftDevice 기능을 제공하는 정적 및 공유 라이브러리 세트로 구성됩니다. SoftDevice 직렬화에 대한 자세한 내용은 직렬화를 참조하세요.
C/C++ 라이브러리는 직접 인터페이스할 수 있지만 제어를 줄여 개발을 용이하게 하는 상위 수준 바인딩으로도 제공됩니다(대부분의 경우 허용됨).
'애플리케이션 칩'은 단지 일반 하드웨어(예: Windows, Linux 또는 macOS 장치)이지만 예를 들어 Arduino 또는 Raspberry Pi일 수도 있습니다.
pc-ble-driver를 사용하려면 개발 키트에 올바른 펌웨어가 있어야 합니다. 필요한 펌웨어는 hex/sd_api_v
폴더에 있으며 pc-ble-driver
와 통신하는 데 필요한 SoftDevice 및 연결 펌웨어가 포함되어 있습니다.
생성된 라이브러리는 다음 SoftDevice API 버전 및 nRF5x IC와 호환됩니다.
connectivity__1m_with_s130_2.xx
(nRF51 및 nRF52 시리즈 IC)connectivity__<1m|*usb>_with_s132_3.xx
(nRF52 시리즈 IC에만 해당)connectivity__<1m|*usb>_with_s132_5.xx
(nRF52 시리즈 IC에만 해당)connectivity__<1m|*usb>_with_s132_6.xx
(nRF52 시리즈 IC에만 해당)connectivity__<1m|*usb>_with_s140_6.xx
(nRF52 시리즈 IC에만 해당)*usb) USBD 주변 장치가 있는 nRF52 시리즈 IC에만 해당
PCA | 공식 명칭 | 품번 | 메모 |
---|---|---|---|
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 지원 보드(예: Nordic Development Kits)를 연결한 후에는 포트를 사용할 수 있습니다.
또한 pc-ble-driver
사용하여 장치와 통신하려면 Mass Storage Device
비활성화해야 합니다. data corruption or drops issue
참조하십시오.
직렬 포트는 COMxx
로 나타납니다. 장치 관리자에서 "포트(COM 및 LPT)" 섹션을 확인하면 됩니다.
직렬 포트는 /dev/ttyACMx
로 나타납니다.
기본적으로 이 포트는 모든 사용자가 접근할 수 없습니다. 아래 명령을 입력하여 사용자를 dialout
그룹에 추가하고 직렬 포트에 대한 액세스 권한을 부여하십시오. 이 내용을 적용하려면 다시 로그인해야 합니다.
$ sudo usermod -a -G dialout < username >
modemmanager 서비스가 CDC ACM 직렬 포트에 연결을 시도하지 못하도록 하려면 다음을 수행하십시오.
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
직렬 포트는 /dev/tty.usbmodemXXXX
로 나타납니다.
알려진 문제가 있습니다. 문제가 발생하면 여기에서 확인하세요.
연결 펌웨어를 프로그래밍하려면 nRF5x 명령줄 도구와 함께 번들로 제공되는 nrfjprog
필요합니다. 이 도구는 다음에서 다운로드할 수 있습니다.
Linux 및 macOS의 PATH
에 nrfjprog
및 mergehex
추가합니다.
또는 nRF Connect Programmer
하면 UI 지원을 통해 연결 펌웨어를 프로그래밍하는 데 도움을 줄 수 있습니다.
nRF Connect Desktop을 다운로드하고 거기에 nRF Connect Programmer
설치하세요.
pc-ble-driver
컴파일하려면 다음 도구가 필요합니다:
pc-ble-driver
컴파일로 이동 connectivity
HEX 파일을 컴파일하려면 추가 도구가 필요합니다.
connectivity
HEX 파일 컴파일로 이동특정 플랫폼에 종속성을 설치하려면 다음 단계를 따르세요.
Visual Studio 15
이상 버전을 다운로드하여 설치하세요.
초콜릿티를 설치하세요. cmd.exe
로 설치(관리자 권한으로 실행)
# 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 "
위에서 설명한 대로 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
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-vcpkg.bat
그런 다음 vcpkg 위치를 PATH
에 추가하고 VCPKG_ROOT
환경 변수로 설정합니다.
다음 단계는 자체 connectivity
HEX 파일을 컴파일하려는 경우에만 필요합니다.
ninja
설치합니다.
$ choco install -y ninja
GNU Embedded Toolchain for Arm
다운로드하고 설치합니다.
이 위치에서 다운로드하세요.
설치 지침을 따르십시오.
환경 변수에서 설치 경로를 GNUARMEMB_TOOLCHAIN_PATH
로 설정합니다. 예를 들어:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
Python
과 pip
설치한 다음 nrfutil
설치합니다.
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
build-essential
설치합니다.
$ sudo apt-get -y install build-essential
Git
설치
$ sudo apt-get -y install git
설치된 Git
버전이 필요한 것보다 낮은 경우:
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update
$ sudo apt install git
CMake
설치합니다.
$ sudo apt-get -y install cmake
버전이 필요한 것보다 낮은 경우 소스에서 CMake
설치합니다.
vcpkg를 설치합니다.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/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
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
Xcode (>=10.1)
설치합니다.
HomeBrew를 사용하여 gcc6
설치합니다.
$ brew install gcc6
HomeBrew를 사용하여 CMake
설치합니다.
$ brew install cmake
$ brew upgrade cmake
버전이 필요한 것보다 낮은 경우 소스에서 CMake
설치합니다.
vcpkg를 설치합니다.
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/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
# Reboot if installation succeeds but validation fails
vcpkg 종속성을 설치합니다.
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake 이 문서에 따라 사용할 Visual Studio 컴파일러를 선택하십시오. 명령줄에서 C/C++ 코드 빌드
$ cmake -G Ninja ..
엮다
$ cmake --build .
선택적으로 --config
옵션을 사용하여 빌드 구성을 선택합니다. 일반적으로 Debug
, Release
, MinSizeRel
및 RelWithDebInfo
사용할 수 있습니다. 예를 들어:
$ cmake --build . --config Debug
vcpkg 종속성을 설치합니다.
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake
$ cmake
-G Ninja
..
선택적으로 -DCMAKE_BUILD_TYPE
옵션을 사용하여 빌드 구성을 선택합니다. 일반적으로 Debug
, Release
, MinSizeRel
및 RelWithDebInfo
사용할 수 있습니다.
선택적으로 -DARCH
옵션을 사용하여 대상 아키텍처(32 또는 64비트)를 선택합니다. 값은 x86_32
, x86_64
, x86_32,x86_64
일 수 있습니다. 예를 들어:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-DARCH=x86_32,x86_64
..
엮다
$ cmake --build .
pc-ble-driver
컴파일로 이동하십시오.다음 환경 변수가 설정되어 있는지 확인하세요.
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
PATH에 다음 경로가 추가되었는지 확인하세요.
VCPKG_ROOT
mergehex
특정 플랫폼에 종속성을 설치하려면 다음 단계를 따르세요.
환경 설정
# 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
는 연결 펌웨어 컴파일을 활성화하려면 1로 설정됩니다.
CONNECTIVITY_VERSION
컴파일된 연결 펌웨어의 버전을 정의합니다.
Windows에서 pc-ble-driver 컴파일 시 추가 옵션을 확인하세요.
엮다
$ cmake --build . --target compile_connectivity
HEX 파일은 컴파일 후 hex/sd_api_v
폴더에서 사용할 수 있습니다. 여기에는 SoftDevice 및 연결 애플리케이션이 포함됩니다.
환경 설정
# 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
는 연결 펌웨어 컴파일을 활성화하려면 1로 설정됩니다.
CONNECTIVITY_VERSION
컴파일된 연결 펌웨어의 버전을 정의합니다.
Ubuntu Linux 또는 macOS에서 pc-ble-driver 컴파일 시 추가 옵션을 확인하세요.
엮다
$ cmake --build . --target compile_connectivity
HEX 파일은 컴파일 후 hex/sd_api_v
폴더에서 사용할 수 있습니다. 여기에는 SoftDevice 및 연결 애플리케이션이 포함됩니다.
nRF5x 명령줄 도구가 아직 설치되지 않은 경우 도구 설치로 이동하세요.
이 라이브러리를 사용하려면 nRF5x IC에서 연결 펌웨어를 프로그래밍해야 합니다.
nRF5x 명령줄 도구를 사용하여 IC를 삭제하고 프로그래밍하세요.
$ nrfjprog -f NRF5 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...hex
또는 nRF Connect Programmer를 사용하여 IC를 지우고 프로그래밍할 수 있습니다.
pca10059 nRF52 동글과 같은 일부 키트에는 온보드 디버거가 없으며 직렬 DFU를 통해 프로그래밍해야 합니다. Windows의 경우 운영 체제에서 키트를 올바르게 감지하려면 장치 드라이버가 필요합니다. 필요한 드라이버를 설치하려면 최신 nRF Connect for Desktop이 설치되어 있는지 확인하십시오.
직렬 DFU를 통한 연결 펌웨어 프로그래밍은 명령줄이나 데스크탑용 nRF Connect에서 수행할 수 있습니다.
nrfutil을 사용한 장치 펌웨어 업그레이드는 일반적으로 1: DFU zip 패키지 생성, 2: DFU 절차 수행의 두 단계로 수행됩니다. DFU zip 패키지가 미리 만들어져 이 저장소에 포함되어 있습니다. 미리 만들어진 DFU 패키지를 사용하여 nrfutil을 사용하여 DFU 절차를 실행하려면 다음을 수행하십시오.
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s_.._dfu_pkg.zip -p
이 예제는 pc-ble-driver
사용한 개발을 위한 훌륭한 출발점이 됩니다. 예에는 심박수 모니터(BLE 주변 장치) 및 심박수 수집기(BLE 마스터)가 포함되며 pc-ble-driver
에 구축된 애플리케이션의 기본 구조를 보여줍니다.
예제를 빠르게 시작하고 실행하려면 example/README.md를 참조하세요.
pc-ble-driver 설치 중에 문제가 발생하면 Issues.md를 참조하십시오.
끌어오기 요청을 생성하여 자유롭게 변경 사항을 제안하세요.
사소한 변경을 할 계획이라면 작은 것부터 시작하여 너무 많은 작업을 하기 전에 합의를 구하십시오. 현재 제품 로드맵에 잘 맞지 않으면 풀 요청이 거부될 수 있습니다.
귀하의 끌어오기 요청을 수락하려면 기여자 라이선스 계약(CLA)에 서명해야 합니다. 첫 번째 풀 요청을 제출한 후 이를 수행하기 위한 지침을 볼 수 있습니다.
버그를 발견하거나 질문 또는 기타 일반적인 피드백이 있는 경우 Nordic DevZone 포털에 게시물을 제출하세요. 버그 보고서에는 버그를 재현하는 방법이 충분히 자세히 설명되어 있어야 합니다.
자세한 내용은 라이센스 파일을 참조하십시오.