이 라이브러리는 더 이상 유지 관리되지 않으며 이 라이브러리의 후속 버전에 대한 계획도 없습니다. 기존 nRF5 SDK 사용자는 계속 액세스할 수 있지만 추가 업데이트나 지원은 받을 수 없습니다. 사용 가능한 펌웨어(.hex 파일)가 오래된 SoftDevice 바이너리를 사용하므로 이 라이브러리를 사용하여 새 프로젝트를 시작하지 않는 것이 좋습니다.
pc-ble-driver
Bluetooth Low Energy nRF5 SoftDevice 직렬화를 위한 C/C++ 라이브러리를 제공합니다.
개요
건축학
지원되는 환경
운영 체제
SoftDevice 및 IC
장치 드라이버 설치
드라이버 설치
드라이버 검증
도구 설치
종속성 설치
Windows에 설치
우분투 리눅스에 설치
macOS에 설치
소스에서 pc-ble-driver 컴파일하기
Windows에서 컴파일하기
Ubuntu Linux 또는 macOS에서 컴파일
연결성 HEX 파일 컴파일
Windows에서 컴파일하기
Ubuntu Linux 또는 macOS에서 컴파일
프로그래밍 연결 HEX 파일
예
알려진 문제
특허
pc-ble-driver
여기에 단일 .hex 파일로 포함된 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에서 테스트됨)
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에만 해당
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 드라이버를 설정하려면 운영 체제와 일치하는 버전을 다운로드하여 설치하기만 하면 됩니다.
SEGGER J-링크
필요한 드라이버를 설치하고 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 다이얼아웃 <사용자 이름>
modemmanager 서비스가 CDC ACM 직렬 포트에 연결을 시도하지 못하도록 하려면 다음을 수행하십시오.
$ systemctl stop ModemManager.service $ systemctl 비활성화 ModemManager.service
직렬 포트는 /dev/tty.usbmodemXXXX
로 나타납니다.
알려진 문제가 있습니다. 문제가 발생하면 여기에서 확인하세요.
연결 펌웨어를 프로그래밍하려면 nRF5x 명령줄 도구와 함께 번들로 제공되는 nrfjprog
필요합니다. 이 도구는 다음에서 다운로드할 수 있습니다.
Windows용 nRF5x 명령줄 도구
Linux 32비트용 nRF5x 명령줄 도구
Linux 64비트용 nRF5x 명령줄 도구
macOS용 nRF5x 명령줄 도구
Linux 및 macOS의 PATH
에 nrfjprog
및 mergehex
추가합니다.
또는 nRF Connect Programmer
UI 지원을 통해 연결 펌웨어를 프로그래밍하는 데 도움을 줄 수 있습니다.
nRF Connect Desktop을 다운로드하고 거기에 nRF Connect Programmer
설치하세요.
pc-ble-driver
컴파일하려면 다음 도구가 필요합니다:
AC/C++ 툴체인
힘내 (>=2.19)
CMake(>=3.11)
vcpkg
pc-ble-driver
컴파일로 이동 connectivity
HEX 파일을 컴파일하려면 추가 도구가 필요합니다.
초콜릿 같은
닌자
Arm용 GNU 임베디드 툴체인
파이썬
씨
nrfutil
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%;%ALLUSERSPROFILE%chocolateybin"
Git
설치합니다.
$ 초코 설치 -y git
CMake
설치합니다.
$ 초코 설치 -y cmake
vcpkg를 설치합니다.
$ 자식 클론 https://github.com/Microsoft/vcpkg.git $ CD vcpkg $ git checkout 태그/2020.04 $ .bootstrap-vcpkg.bat
그런 다음 vcpkg 위치를 PATH
에 추가하고 VCPKG_ROOT
환경 변수로 설정합니다.
다음 단계는 자체 connectivity
HEX 파일을 컴파일하려는 경우에만 필요합니다.
ninja
설치합니다.
$ 초코 설치 -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 설치 빌드 필수
Git
설치
$ sudo apt-get -y 설치 git
설치된 Git
버전이 필요한 것보다 낮은 경우:
$ sudo add-apt-repository ppa:git-core/ppa $ sudo 적절한 업데이트 $ sudo apt 설치 자식
CMake
설치합니다.
$ sudo apt-get -y 설치 cmake
버전이 필요한 것보다 낮은 경우 소스에서 CMake
설치합니다.
vcpkg를 설치합니다.
$ 자식 클론 https://github.com/Microsoft/vcpkg.git $ CD vcpkg $ git checkout 태그/2020.04 $ ./bootstrap-vcpkg.sh
그런 다음 vcpkg 위치를 PATH
및 VCPKG_ROOT
환경 변수에 추가합니다.
Ninja
설치합니다.
$ sudo apt-get 설치 닌자 빌드
다음 단계는 자체 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 $ 양조 업그레이드 cmake
버전이 필요한 것보다 낮은 경우 소스에서 CMake
설치합니다.
vcpkg를 설치합니다.
$ 자식 클론 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># %VCKG_ROOT%가 설정되어 있고 %PATH%$에 추가되었는지 확인하세요 mkdir build && cd build $ vcpkg 설치 asio catch2 spdlog
CMake 이 문서에 따라 사용할 Visual Studio 컴파일러를 선택하십시오. 명령줄에서 C/C++ 코드 빌드
$ cmake -G 닌자 ..
엮다
$ cmake --빌드 .
선택적으로 --config
옵션을 사용하여 빌드 구성을 선택합니다. 일반적으로 Debug
, Release
, MinSizeRel
및 RelWithDebInfo
사용할 수 있습니다. 예를 들어:
$ cmake --빌드 . --config 디버그
vcpkg 종속성을 설치합니다.
# cd <pc-ble-driver-root-folder># $VCKG_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 --빌드 .
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 --빌드 . --대상 compile_connectivity
HEX 파일은 컴파일 후 hex/sd_api_v<x>
폴더에서 사용할 수 있습니다. 여기에는 SoftDevice 및 연결 애플리케이션이 포함됩니다.
환경 설정
# cd <pc-ble-driver-root-folder>$ import 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 --빌드 . --대상 compile_connectivity
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이 설치되어 있는지 확인하십시오.
직렬 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<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 포털에 게시물을 제출하세요. 버그 보고서에는 버그를 재현하는 방법이 충분히 자세히 설명되어 있어야 합니다.
자세한 내용은 라이센스 파일을 참조하십시오.