개요
NORDIC 사에서 배포하는 nRF5 SDK 의 폴더 구성은 사용자(개발자) 입장에서는 지속 관리 하기 좋은 구조 아니다.
본 글에서는 nRF5 SDK 기반으로 코드 구현 및 프로젝트 관리 용이한 프로젝트 작업 폴더 구축 방법 정리.
참고 : 본 템플릿3과 이전 작업된 템플릿2 차이점
- 이전에 제작된 프로젝트 템플릿2의 구성은 1개의 프로젝트 폴더마다 nRF5 SDK 폴더를 모두 보유하고 있는 형식이었기에 프로젝트가 많이 만들어진 경우 중복된 파일들이 누적되게 된다. 이번 템플릿3은 모든 프로젝트에서 동일한 1개의 nRF5 SDK 활용하는 방식이므로 프로젝트수가 많아져도 단일 SDK 파일들을 공유하여 사용하므로 용량 증가 없이 컴팩트한 관리 가능.
- 템플릿3 구조의 장점 : 프로젝트에서 nRF5 SDK 버전을 쉽게 변경하여 적용가능하므로 융통성 있는 대응 가능. 예 ; nRF5 SDK 중에 간혹 버그 있는 경우도 있고 특정 프로젝트에서는 SDK 에서 제공되는 소스를 수정하여 사용해야 하는 경우도 있다. 이런경우 수정된 SDK 폴더를 별도로 생성하여 프로젝트에서 해당 SDK 사용하도록 설정하기 편리한 구조이다.
폴더셋팅. 프로젝트 작업용 메인폴더생성 및 nRF5 SDK 파일들 배치.
메인 폴더명 예 : WORK_MULTI_NRF5SDK
- 위와같은 폴더 구조를 만들어두고, 이 폴더 속에 신규 프로젝트 1개마다 신규 폴더 1개 만들게되며 모든 프로젝트에서는 공통의 nRF5 SDK 를 활용하게 된다. 위 그림의 붉은박스의 것이 nRF5 SDK 2개 버전 모두 배치된 상태. 본인이 사용하는 SDK 버전들을 배치한다. 이후 신규 버전이 배포된것을 활용하는 경우 해당 SDK 폴더를 배치한다.
한편, nRF5 SDK 에는 프로젝트에서 활용하지 않는 example 폴더등은 필요없다. 불필요한 폴더들 삭제한다. 아래 동영상에 삭제하는 과정 및 SDK_15.2.0 폴더를 그대로 복사하여 이름에 MyModify 라고 수정된것을 추가하는 것도 보이고 있다. 제조사에서 배포한 SDK 에 간혹 버그가 있다든지 혹은 SDK의 일부 기능을 수정하는 경우 SDK 원본은 유지하고 이 폴더속의 것을 수정하여 활용하기 위하여 미리 만들어둔것임.
프로젝트 작업 폴더 전체 Git 설정
- 깃사용하지 않는 경우 이 설정 하지 않고 다음 단계 진행하해도 됨.
- 요즘 코더에게 깃은 필수, 폴더 전체를 git 관리대상으로 하고, 아래 첨부된 .gitignore_gcc_keil 파일 다운로드 받아서 파일명을 .gitignore 로 수정해서 배치
gitignore 파일 다운로드
깃설정방법 전체 동영상. 깃 관리툴로는 소스트리 이용하고 있기에 소스트리에 깃설정된 폴더 관리등록함.
활용 1. SDK 예제중 SES 프로젝트 blinky 재구성
상기 nRF5 프로젝트 작업 폴더구성에 nRF5 SDK 에서 제공하는 SES 예제프로젝트 가져와서 재구성하는 방법.
- 동영상 중에서 Visual Studio 는 ses 프로젝트 파일인 .*.emProject 오픈하여 텍스트편집용도로 사용하는 것이며 Visual Studio 아닌 다른 편집기 이용해도됨.
활용 2. SDK 예제중 KEIL 프로젝트 blinky 재구성
상기 nRF5 프로젝트 작업 폴더구성에 nRF5 SDK 에서 제공하는 KEIL 예제프로젝트 가져와서 재구성 하는 방법.
-SES 에서의 설정과 차이점 : SES 에서는 프로젝트에서 파일 경로 지정시 $() 과 같은 사용자 마크로 정의 가능하고 이를 경로 설정시 사용가능했기에 심플한 설정이 이뤄졌지만 KEIL 인 경우 프로젝트의 경로 설정시 사용자 마크로 정의되지 않는다. 따라서 경로지정시 마크로없이 실제 폴더 이름을 기록하고 있다. 이런설정방식에서는 해당 SDK를 다른 버전으로 사용하려는 경우에는 본 동영상에서 보이는 방식으로 경로명을 수정해야 한다.
프로젝트 템플릿3 blinky_PCA10056
상기 활용1, 활용2의 작업과정 모두 완료된 프로젝트 폴더 압축한 파일 다운로드 하여 본인 PC에서 상기 폴더셋팅과 동일하게 한 폴더하위에 압축풀어 본인 프로젝트 작업의 시작점으로 사용가능.
파일명 : nRF5SDK_template3_blinky_pca10056_igotit.zip 다운로드 클릭
프로젝트 템플릿3 활용 예.
프로젝트 템플릿3 다운로드 받고 압축풀고 프로젝트명 본인에 맞게 변경하여 활용과정 전체.
- 위 동영상 마지막 부분에 KEIL 에서 플래시 다운로드 할때 에러는 keil 프로젝트 파일명을 수정하고 오픈한 경우 rebuild 하고 플래시 라이팅해서 발생한 오류임. 리빌드하고 기록하면 정상적으로 펌웨어 기록됨.
- 다른 이유로 keil 에서의 j-link 오류 발생시 해결방법 상세보기 : https://igotit.tistory.com/2304
SES 프로젝트에서 nRF5 SDK 버전 변경 방법.
처음에 프로젝트 진행시에는 nRF5 SDK 버전 15.2.0 으로 진행하다가 새버전의 SDK가 배포되어 이를 적용해야 하는 경우 SES 의 Project Macro 에 설정한 경로만 변경하면 적용된다.
아래 동영상 예에서는 nRF5 SDK 버전 15.2.0 에서 버전 15.3.0 으로 변경하는 사례를 보여준다.
예제 ble_app_uart 프로젝트 폴더 재구성
아래예는 예제중 BLE NUS 기능 있는 프로젝트인 ble_app_uart 를 재구성하는 예
SES 에서 ble_app_uart 재구성 예
KEIL 에서 ble_app_uart 재구성 예
예제 ble_app_template 프로젝트 폴더 재구성
아래 예는 nRF5 SDK 제공예제중 그나마 지저분 하지 않은 ble_app_template 를 복사하여 프로젝트 폴더 재구성하는 예.
SES 에서 ble_app_template 재구성 예
KEIL 에서 ble_app_template 재구성 예
ex_ble_app_template 기반 내프로젝트 만들기.
위와 같이 만들어진 ex_ble_app_template 폴더 내의 프로젝트는 수정하지 않고 신규프로젝트 시작시 이를 복사하여 폴더명 프로젝트 이름 변경하여 활용한다.
아래영상에서는 ex_ble_app_template 를 복사하여 D1F137 이라는 이름의 프로젝트 로 수정하는 과정 전체.
nRF5 SDK 버전 변경 적용예
상황 : 기존 작업중이었던 프로젝트에서는 nRF5 SDK 버전 15.3.0 을 적용중에 있었는데 SDK 버전 16.0.0 이 배포(2019년 10월 21일)되고 있다. 신규 SDK 로 적용하는 전체 과정을 아래 영상에 보인다.
결론
본 글에서의 프로젝트 폴더 재구성하면, SDK 에서 제공되는 어떤 예제 프로젝트이든지 쉽고 빠르게 재구성가능하며, 이후 유지관리 측면에서도 매우 편리한 작업 환경 구축된다.
다음단계
기초 학습 자료.
- 본 프로젝트 폴더 재구성 이후 초기 학습용 자료들.
GPIO 제어 레지스터 직접 접근 코딩하기 : https://igotit.tistory.com/2314
SDK 시간지연함수 구현 : https://igotit.tistory.com/2323
SDK GPIOTE 구현 : https://igotit.tistory.com/2326
타겟보드 관련 소스 재구성 .
본 글에서 마지막 과정에서 ble_app_template 기반 재구성한 프로젝트 코드 소스에는 대상보드가 nRF52840 DK 인 것에 해당하는 GPIO 초기화 및 스위치제어등의 코드들이 있다. 본인 개발보드가 nRF52840 DK 가 아니고 별도 자체 제작된 보드인 경우 에는 이들 코드들은 모두 필요없고 이를 본인 보드에 맞도록 재구성 처리한다.
별도정리됨. -> https://igotit.tistory.com/2339
본 글 포함된 상위 정리글
https://igotit.tistory.com/244 의 nRF5
첫등록 : 2019년 10월 3일
최종수정 : 2019년 10월 24일
본 글 단축주소 : https://igotit.tistory.com/2308
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52. BLE Central Multilink. Nordic UART Service(NUS) Client 구현. (3) | 2019.11.10 |
---|---|
nRF52. SPI (0) | 2019.10.25 |
nRF5 SDK 16.0.0 버그들 . KEIL DeviceFamilyPack 등 (0) | 2019.10.24 |
nRF52840 project template 2. nRF5 SDK 15.2.0, SEGGER Embedded Studio (3) | 2019.10.24 |
nRF52. 본인 제작 SDK 의 설정 헤더 파일 및 SES CMSIS Config Wizard 설정 (0) | 2019.10.21 |
댓글