nRF52로 BLE 디바이스 개발 (3) nRF52840의 RTT로 로그 출력
소개
nRF52840-DK에 Feather nRF52840을 SWD 케이블로 연결하면, Feather의 UART는 DK의 디버그 마이크로컴퓨터에는 접속되지 않기 때문에, UART로의 로그취할 수 없습니다. SWD의 RTT(Real Time Terminal) 기능으로 로그를 출력해야 합니다.
SDK 설정
nRF52 SDK의 다양한 설정을 위해 각 프로젝트는 sdk_config.h를 포함하도록 설정되어 있습니다.
각 모듈의 설정값을 변경할 때는 이 안을 다시 쓰게 됩니다.
RTT 로그 설정
RTT 로그를 사용하려면 sdk_config.h의 다음 부분을 변경하십시오.
sdk_config.h// ログ機能の有効化
#ifndef NRF_LOG_ENABLED
#define NRF_LOG_ENABLED 1
#endif
// RTT ログの有効化
#ifndef NRF_LOG_BACKEND_RTT_ENABLED
#define NRF_LOG_BACKEND_RTT_ENABLED 1
#endif
// UARTログの有効化
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
여기의 설정값에 1을 정의하는 것으로, 각 기능이 유효하게 됩니다.
nRF52832에서는, 여기의 설정만으로 ses의 터미널 윈도우에 로그가 출력되게 됩니다.
nRF52840
하지만 nRF52840에서는 위의 설정만으로는 로그가 나오지 않습니다. 조금 전 SDK에서 버그처럼 보입니다.
#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
#endif
위의 정의를 0으로 하는 것으로, nRF52840에서도 로그가 나오게 됩니다.
로깅 기능 초기화
이하의 코드로 로그 기능의 초기화를 실시합니다. 일반적으로 main.c의 시작 부분에서 호출됩니다.
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
로그 출력은 이하의 매크로로.
NRF_LOG_INFO("Application started.");
nrf_log.h에 다양한 매크로가 정의되어 있습니다.
- NRF_LOG_XXXX() 시스템은 printf 함수로 작동합니다.
- NRF_LOG_HEXDUMP_XXXX() 시스템은 포인터 끝을 덤프합니다.
- NRF_LOG_FLOAT() 로 float의 고정 포맷 출력을 할 수 있습니다.
이상입니다.
Reference
이 문제에 관하여(nRF52로 BLE 디바이스 개발 (3) nRF52840의 RTT로 로그 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jiro-aqua/items/80e29b32702c7ebe3981
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
nRF52 SDK의 다양한 설정을 위해 각 프로젝트는 sdk_config.h를 포함하도록 설정되어 있습니다.
각 모듈의 설정값을 변경할 때는 이 안을 다시 쓰게 됩니다.
RTT 로그 설정
RTT 로그를 사용하려면 sdk_config.h의 다음 부분을 변경하십시오.
sdk_config.h// ログ機能の有効化
#ifndef NRF_LOG_ENABLED
#define NRF_LOG_ENABLED 1
#endif
// RTT ログの有効化
#ifndef NRF_LOG_BACKEND_RTT_ENABLED
#define NRF_LOG_BACKEND_RTT_ENABLED 1
#endif
// UARTログの有効化
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
여기의 설정값에 1을 정의하는 것으로, 각 기능이 유효하게 됩니다.
nRF52832에서는, 여기의 설정만으로 ses의 터미널 윈도우에 로그가 출력되게 됩니다.
nRF52840
하지만 nRF52840에서는 위의 설정만으로는 로그가 나오지 않습니다. 조금 전 SDK에서 버그처럼 보입니다.
#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
#endif
위의 정의를 0으로 하는 것으로, nRF52840에서도 로그가 나오게 됩니다.
로깅 기능 초기화
이하의 코드로 로그 기능의 초기화를 실시합니다. 일반적으로 main.c의 시작 부분에서 호출됩니다.
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
로그 출력은 이하의 매크로로.
NRF_LOG_INFO("Application started.");
nrf_log.h에 다양한 매크로가 정의되어 있습니다.
- NRF_LOG_XXXX() 시스템은 printf 함수로 작동합니다.
- NRF_LOG_HEXDUMP_XXXX() 시스템은 포인터 끝을 덤프합니다.
- NRF_LOG_FLOAT() 로 float의 고정 포맷 출력을 할 수 있습니다.
이상입니다.
Reference
이 문제에 관하여(nRF52로 BLE 디바이스 개발 (3) nRF52840의 RTT로 로그 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jiro-aqua/items/80e29b32702c7ebe3981
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// ログ機能の有効化
#ifndef NRF_LOG_ENABLED
#define NRF_LOG_ENABLED 1
#endif
// RTT ログの有効化
#ifndef NRF_LOG_BACKEND_RTT_ENABLED
#define NRF_LOG_BACKEND_RTT_ENABLED 1
#endif
// UARTログの有効化
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
하지만 nRF52840에서는 위의 설정만으로는 로그가 나오지 않습니다. 조금 전 SDK에서 버그처럼 보입니다.
#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED
#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
#endif
위의 정의를 0으로 하는 것으로, nRF52840에서도 로그가 나오게 됩니다.
로깅 기능 초기화
이하의 코드로 로그 기능의 초기화를 실시합니다. 일반적으로 main.c의 시작 부분에서 호출됩니다.
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
로그 출력은 이하의 매크로로.
NRF_LOG_INFO("Application started.");
nrf_log.h에 다양한 매크로가 정의되어 있습니다.
- NRF_LOG_XXXX() 시스템은 printf 함수로 작동합니다.
- NRF_LOG_HEXDUMP_XXXX() 시스템은 포인터 끝을 덤프합니다.
- NRF_LOG_FLOAT() 로 float의 고정 포맷 출력을 할 수 있습니다.
이상입니다.
Reference
이 문제에 관하여(nRF52로 BLE 디바이스 개발 (3) nRF52840의 RTT로 로그 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jiro-aqua/items/80e29b32702c7ebe3981
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
NRF_LOG_INFO("Application started.");
Reference
이 문제에 관하여(nRF52로 BLE 디바이스 개발 (3) nRF52840의 RTT로 로그 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jiro-aqua/items/80e29b32702c7ebe3981텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)