본문으로 바로가기

[nRF52 ] NRF_LOG 출력 UART 에서 RTT 로 변경하기

category Nordic_nRF52 2022. 3. 25. 11:36

 :  기존 UART 로 Log 가 출력되고 있는 상태에서 UART를 다른 용도로 사용하기 위해 RTT로 LOG를

   변경해 보았습니다. 아래 내용은 ble_app_hids_keyboard 프로젝트에서 테스트를 진행 했습니다.

 

  0> 기본지식 

    0-1>  RTT (Real Time Transfer) 링크

      https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/

       

      SES : Segger Embedded Studio

    0-2> 준비물 

      : nRF52 DK 보드  , USB cable (micro <--> PC )

 

1> UART 로그 disable 및 RTT 로그 Enable 하기  ()

      : sdk_config.h 파일만 고치면 되고 세부내용은 아래 git diff  참고하세요.

@@ -7567,7 +7567,7 @@
 // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
 //==========================================================
 #ifndef NRF_LOG_BACKEND_RTT_ENABLED
-#define NRF_LOG_BACKEND_RTT_ENABLED 0
+#define NRF_LOG_BACKEND_RTT_ENABLED 1
 #endif
 // <o> NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. 
 // <i> Size of the buffer is a trade-off between RAM usage and processing.
@@ -7600,7 +7600,7 @@
 // <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
 //==========================================================
 #ifndef NRF_LOG_BACKEND_UART_ENABLED
-#define NRF_LOG_BACKEND_UART_ENABLED 1
+#define NRF_LOG_BACKEND_UART_ENABLED 0
 #endif
 // <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin 
 #ifndef NRF_LOG_BACKEND_UART_TX_PIN

 

 

2> J-Link RTT Viewer V7.00  이용해 Log 보기

  2-1> J-Link RTT Viewer V7.00  실행

    LOG 가 아래처럼 출력되야 정상입니다.

 

 2-2> RTTViewer 위치

 

3> SES 를 이용해 Log 보기

  : 저는 SES 를 더 많이 사용합니다.

 

SES 실행후 F5  또는 Debug --> Go 를 클릭해 줍니다.

 

SES 아래쪽  Output 창 --> Debug Terminal로 변경해 줍니다.

 

--> 이후 아래처럼 Log 출력되면 OK

 

 

< 기타>

a> ble_app_interactive 프로젝트의 경우 위수정만으로 동작을 안하고 

     log_init() 함수에도 수정이 필요합니다.

static void log_init(void)
{
    ret_code_t err_code = NRF_LOG_INIT(app_timer_cnt_get);

    APP_ERROR_CHECK(err_code);
    NRF_LOG_DEFAULT_BACKENDS_INIT();   <-- 요부분 추가
}

  --> RTT 가 되긴 하는데 UART 로도 NRF_LOG 메시지 출력이 나오네요.

 

   UART 로 NRF_LOG 안나오게 하기 위한 수정사항  sdk_config.h 파일의 다음을 0으로 변경해야 합니다.

   #define NRF_CLI_LOG_BACKEND 0

 

 

그럼 수고하세요.

반응형