문제상황 개요
nRF5 SDK 에서 제공하는 NRF_LOG_INFO() 류들의 함수는 디버거 터미널에서 보여야 정상인데 NORDIC 사에서 배포한 예제 실행 시 이거 안 보이는 경우 허다함. 이렇게 완성도 부족한 걸 배포하고도 ... 명확하고도 일관된 해결책 제시도 안 하고 있음. 개발자가 알아서 해결해야 함.
해결책.
- 아래 사항들 조합해서 수정하여 정상 표시되면 됨. 단, 본인이 작성한 코드에 오류 없다는 전제하에..
1. sdk_config.h 의 NRF_LOG_DEFERRED 비활성화 한다.
#define NRF_LOG_DEFERRED 0//1
- 보통은 이것만 해도 로그 표현 됨. 이걸로 안되면 아래 다른 것도 시도.
2. NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 를 비활성화 한다.
2021년 3월 30일 추가.
- 디버그터미널에 보이기 위한 설정 전체
#define NRF_LOG_ENABLED 1
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
#define NRF_LOG_BACKEND_RTT_ENABLED 1
#define NRF_LOG_BACKEND_UART_ENABLED 0
#define NRF_LOG_DEFERRED 0
기타 아래 개발자 포럼 검색해서 조치사항 확인해 본다.
https://devzone.nordicsemi.com/
아래 영상에서는 nRF5 SDK 15.3.0 에서 배포된 예제 중 ble_app_uart 에서 NRF_LOG_INFO 출력 안 보이는 문제를 sdk_config.h 의 NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 를 비활성 하여 해결한 사례
- 어떤 경우에는 NRF_LOG_DEFERRED 를 disable 해야 정상 표현되는 경우도 있었기 때문에 확인해 봤는데 이번 상황에서는 NRF_LOG_DEFERRED 설정 무관하게 NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 비활성화 해야 정상 표현됨.
한편, 본인의 sdk_config.h 에 없다면 NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 구문(아래 코드블럭)을 추가하여 0으로 한다. 추가할 위치 는 상기 동영상 0분 55초 에 보이는 위치.
#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
#endif
from : https://devzone.nordicsemi.com/f/nordic-q-a/53337/nrf_log_info-help
2023.01.26 추가.
PC 하이퍼 터미널로 NRF_LOG_ 출력 위한 설정.
sdk_config.h 에서
#define NRF_LOG_BACKEND_UART_ENABLED 1// 0
즉, 이 값을 1로 설정하면 NRF_LOG_ 출력은 UART 로도 출력되면서 아래 오른쪽 화면처럼 PC 의 하이퍼 터미널에도 출력된다. 단, 대상보드가 PC 로 USB CDC 통신 경로 지원되는 PCA10056 같은 보드여야 한다.
제조사 배포 라이브러리에서의 오류 관련 의견.
nRF5 SDK에서의 로그 기능 같은 것에서 오류 좀 있어도 허용가능하다만 주요 기능에서 SDK 완성도 부족하다면 nRF5 도입하는 정식 개발자에게 요구되는 능력은 그들이 만들어낸 SDK 로레벨에서 오류 발견가능하고 해결가능한 능력 필요하다. 이런 오류는 nordic 사만의 문제는 아니다 타 칩 제조사에서도 심각한 버그 있는 것이 배포되고 있음을 자주 경험하게 된다. 웃기게도 취미생활로 대충 만들어 볼 때는 아무 문제를 눈치 채지 못하지만 품질요소가 매우 중요한 것을 구현하다 보면 칩제조사에서 배포된 라이브러리에서 오류 발견하게 되는 경우 꼭 있다. 그 정도가 심각한 것은 SDK 를 수정해야만 정상 작동하는 결과를 만들어낼 수 있다. 이런 문제 해결할 때 큰 도움 받는 곳은 해당칩의 사용자 포럼에서 활동하는 초특급 내공을 가진 개발자들의 해결책 제시이다. 예로 STM32 포럼에서는 천재인가? 싶은 사람들이 해결책을 제시해 주는 글의 도움을 많이 받았다. 한편, nRF52 포럼에서는... STM32 포럼 수준의 고급 개발자들의 답변 제시가 극히 빈약함. 아마도 혼자만 알고 싶든지 혹은 내공 높은 사람이 없든지...
연관
NRF_LOG_INFO 고속 출력 시 표현 누락됨. 해결책.
상위 정리
https://igotit.tistory.com/244 의 nRF52
첫 등록 : 2019.10.07
최종 수정 : 2023.08.24
단축 주소 : https://igotit.tistory.com/2328
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52. 본인 만든 범용 소스들 재활용 가능 구성 (0) | 2019.10.17 |
---|---|
nRF52. 예제프로젝트 기반 내 프로젝트 정리하기. (0) | 2019.10.17 |
nRF52840. SDK기반 코딩. step by step 2. GPIOTE (0) | 2019.10.06 |
nRF52840. SDK기반 코딩. step by step 1. 시간지연함수 (0) | 2019.10.05 |
nRF52. GPIOTE. GPIO tasks and events. (0) | 2019.10.05 |
댓글