티스토리 뷰

반응형

노르딕 블루투스 칩을 선택했다면 이제 개발을 하기 위한 SDK를 다운받아야합니다.

노르딕 SDK

https://www.nordicsemi.com/Products/Development-software/nrf5-sdk/download

 

nRF5 SDK

Nordic Semiconductor

www.nordicsemi.com

노르딕 칩을 사용하기 때문에 노르딕에서 제공하는 SDK 먼저 다운 받아야합니다. 다운 받는 곳은 위 링크와 같고 접속해보면 nrf5 시리즈에 대한 SDK를 받을 수 있습니다. 저는 nrf52 시리즈를 사용할 계획임으로 오른쪽 Download 버튼을 눌러봅니다.

아래 그림을 보면 SDK 버전별로 나와있네요, 17.1.0이 가장 최신 SDK 임을 알 수 있습니다.

Changelog 를 보니 nrf52832 revision 된 보드들을 지원 하는 것과 nrf_oberon, mbed 를 위한 것들이 업데이트 되어 있네요 저랑 큰 관련은 없지만 미미한 버그들도 수정되었을 가능성이 높으므로 17.1.0을 골라서 다운 받도록 합니다.

노르딕 SDK에서 핵심은 SoftDevices 인데요, 용량을 많이 차지하는 반면 SDK화는 하드웨어를 제어하는 것임에도 굉장히 잘되어 있는 편입니다. SoftDevice의 버전은 7.2.0이고 S112, S113, S132 등 다양한 종류별로 나열되어 있는데 자신이 실제 사용할 목적과 부합하는 종류의 SoftDevice를 받으시면 됩니다. 주로 후보가 될 만한 것은 S112와 S132 일 것인데 이유는 Peripheral only 이냐 Central 까지 지원하느냐의 차이입니다. 아무래도 Central 까지 지원한다면 SoftDeivce 사이즈가 커져서 프로그래밍 하는 공간의 압박을 받을 수 있을 것 같으니, 어떤 칩 위에 어떤 수준의 기능 개발을 할지, 물론 확장가능성을 염두해야하겠지만 잘 고려해서 선택해야합니다. 저는 우선 Peripheral 위주의 IoT 시나리오를 개발 할 것이고, 칩도 가낭 Low한 nrf52810을 사용할 예정이라, 해당 칩에 적합한 S112가 포함된 SDK를 다운 받도록 하겠습니다.

자, Download files 버튼을 눌러서 다운을 받아서 압축을 풀어서 확인해봅니다. 압축 파일 사이즈는 총 126MB 정도 됩니다.

우선 SDK를 열어보니 위와 같이 파일들이 구성되어 있습니다. 이름만 봐도 어떤 구성인지 확 와닿네요, examples 폴더가 있으니 여기 위주로 보면 될 것 같습니다.

예제들이 많은 편입니다. ble_peripheral 로 샘플을 한번 돌려봐야 겠네요. S112는 Central을 지원하진 않지만 예제안에는 ble_central도 포함되어 있음을 알 수 있습니다. 

ble_peripheral 중에서도 ble_app_blinky를 사용하도록 하겠습니다.

두 번째 압축파일을 열어보면 S112 nrf52 7.2.0 이 빌드된 hex 파일들과 문서들을 볼 수 있습니다. 아마 칩에 올릴때 넣어야하 하는 원본 파일이겠지요? 

아 중요한 것을 하나 빠뜨렸네요. 노르딕 칩은 DFU를 지원합니다. Download Firmware Upgrade 라는 뜻인데요. OTA 건, jtag이건 어떤 방식을 통해 업그레이드할 일이 있을때 지원하게 하기위해선 칩 자체에 부트로더라는 것이 깔려져 있어야 합니다. 여기에서 부트로더란 무엇인지에 대해서까지는 다루지 않겠습니다. 다만, 부트로더는 어플리케이션이 뜨기전에 가장 먼저 시작하는 것이고, 어플리케이션을 띄워주는 역할을 하는 걸로 보면 됩니다.

예제를 보니 dfu라는 폴더가 보이네요, key 파일도 있고, open bootloader도 있고, secure bootloader도 있고 test image도 있고 멀 써야할지 조금 복잡하긴 한데. 이왕 한깁에 secure_bootloader를 써보도록 하기로 합니다. 그럼 종합하면 아래와 같습니다.

  • Application : ble_peripheral_blinky
  • Bootloader : secure_bootloader

두가지의 예제를 각각 빌드해서 칩에 올려 확인해보는 것으로 목표를 잡고 하나씩 진행해 보겠습니다. 

반응형
댓글