인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

솔솔님의 프로필 이미지

작성한 질문수

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

UART로 printf()를 구현해보자! 5

디버깅할 때 코드가 동작하지 않아요

해결된 질문

작성

·

57

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 자주 묻는 질문에 혹시 답이 있을 수 있어요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

led 제어까지는 잘 동작했는데, uart 통신을 하려고 보니 시리얼 통신 테스트가 출력되지 않아요.

그래서 uart 모듈이 잘못됐나 하고 툴에서 통신을 확인하려고 i를 따라해봤는데도 동작하지 않아요..

image.png

디버깅을 하면 여기서 멈추고 계속 실행을 하면

image.png

이렇게 바뀝니다ㅜㅜ expression 창을 보면 코드나 보드에 뭔가 이상이 있는 것 같은데 알 수 있는 방법이 있을까요.. 참고로 오실로스코프는 없습니다ㅜ

답변 3

0

ojtube5님의 프로필 이미지
ojtube5
지식공유자

안녕하세요.

우선 경험상 하드웨어 문제일 가능성은 1% 미만입니다.

정말 드물게 발생하기는 하지만, 현재 보드가 동작 중이며 디버깅까지 가능한 상태라면 하드웨어 문제일 가능성은 더욱 희박합니다.

아래 AI가 언급한 내용들이 대부분 맞습니다.

먼저, 기본적으로 printf가 콘솔에 출력되는 동작인데, 해당 동작을 대체하도록 코드가 변경된 상황입니다.

이 과정이 올바르게 수행되었는지 먼저 확인해봐야 합니다.

디버거로 printf 함수 내부에 진입했을 때, UART 통신하는 코드로 진입하는지 확인해보세요.

이 부분까지 정상적으로 동작한다면 소스 코드는 문제없이 작동하고 있다고 볼 수 있습니다.

그다음부터는 설정값을 꼼꼼히 점검해야 합니다.

특히 UART 관련 설정, 예를 들어 Baud rate, Stop bit 등의 설정을 정확히 확인하세요.

이 설정은 MCU(마이크로컨트롤러) 핀 설정 과정에서도 적용해야 하지만, 데이터를 송수신하는 프로그램(XShell)에서도 동일하게 설정해야 합니다.

이러한 설정을 모두 정확하게 적용했음에도 문제가 발생한다면, 마지막 단계로 오실로스코프(Oscilloscope)를 사용해 신호를 확인하세요.

요즘 2만 원대의 저렴한 오실로스코프 제품도 있으므로 이를 활용해 전송 신호를 점검해보는 것을 추천합니다.

오실로스코프로도 전압 신호가 전혀 확인되지 않는다면 이는 실제 하드웨어 고장이거나 핀 설정 오류일 가능성이 높습니다.

하지만, 이러한 경우는 실제로 매우 드뭅니다.

제가 10년 넘게 임베디드 개발을 하면서 물리적으로 전송 전압이 전혀 출력되지 않는 경우는 거의 본 적이 없었어요.

일단 조치 진행 후에 다시 문의 남겨주세요 ㅇㅇ/

0

솔솔님의 프로필 이미지
솔솔
질문자

image.png

제가 브레이크포인트를 걸어준줄 알았는데 안걸었었네요..!

그런데 여전히 통신은 되지 않는 것 같습니다ㅜㅜ

image.png

원인을 어떻게 찾을 수 있을까요..

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 솔솔님.

UART 통신 문제로 어려움을 겪고 계시는군요. UART 문제는 일반적으로 하드웨어 설정, 소프트웨어 설정, 그리고 툴 설정과 관련이 있을 수 있습니다. 우선, 아래와 같은 해결 방법을 확인해 보시길 권장드립니다.

  1. 하드웨어 연결 확인:

    • UART 핀 연결이 제대로 되어 있는지 확인해 보세요. 특히, TX와 RX 핀이 제대로 교차 연결되어 있는지 검사해주시기 바랍니다.
  2. 보드 설정 점검:

    • 보드가 정확한 전원 공급을 받고 있는지, 그리고 디버깅 상태를 방해할만한 다른 연결이 없는지 점검해 주세요.
  3. UART 설정 확인:

    • 코딩 당시 UART 설정(보레이트, 패리티, 스톱 비트 등)이 개발 환경과 일치하는지 확인해보세요. 잘못된 설정으로 인해 통신 에러가 발생할 수 있습니다.
  4. 소프트웨어 환경 점검:

    • 프로젝트 설정(특히, GPIO 및 Peripheral 초기화 설정)이 올바른지 다시 확인해보세요.

아래 비슷한 문제를 겪으신 분들의 게시물도 참고하면 도움이 될 수 있습니다:
- GPIO 설정과 초기화 문제: 유사한 오류 해결에 도움이 될 만한 다른 경험이 공유된 게시물입니다.
- UART 통신 관련 해결 사례: UART 통신 설정과 관련된 문제를 해결한 사례입니다.

이 외에도, 문제 해결을 위해 오실로스코프 없이 UART 통신을 디버깅하는 방법은 보통 다른 시리얼 터미널을 이용한 교차 검증 방법이 있습니다. 개발용으로 사용하는 PC에 다양한 시리얼 통신 프로그램(Tera Term 등)을 설치하고, 코드로 인코딩된 메시지를 확인할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

솔솔님의 프로필 이미지

작성한 질문수

질문하기