먼저 알아둘 용어
MCUViewer: 마이크로컨트롤러 내부의 변수값을 관찰하는 도구입니다. 이 글은 목표 펌웨어가 직렬 드라이버를 통해 값을 주고받는 경로를 다룹니다.
UART와 baud: UART는 별도의 공통 클록선 없이 데이터를 직렬로 주고받는 통신 장치입니다. baud는 초당 심볼 수를 나타내며 송수신 양쪽 설정을 맞춰야 합니다.
직렬 드라이버: 목표 펌웨어에서 수신 데이터를 처리하고 응답을 보내는 코드입니다. 직렬 포트가 나타나는 것만으로 이 코드까지 동작한다고 볼 수는 없습니다.
ELF와 관측 간격: ELF 파일에는 빌드한 프로그램과 변수 등의 심볼 정보가 담길 수 있습니다. 실제 실행 중인 빌드와 맞춰야 하며, 화면 갱신 간격과 목표 장치에서 값을 읽는 간격도 구분해야 합니다.
프로브 대신 펌웨어가 값을 전달합니다
MCUViewer 직렬 드라이버는 지원되는 디버그 프로브를 쓰기 어렵거나 절연·잡음 조건 때문에 다른 전송 경로가 필요할 때의 선택지입니다. 목표 펌웨어에 처리 코드가 들어가므로 UART 트래픽과 CPU 시간을 사용합니다. UART를 쓴다고 해서 전기적 절연이나 실시간 성능이 보장되지는 않습니다.
UART 왕복 확인 → 목표 펌웨어의 드라이버 통합
포트·baud·드라이버 확인 → 같은 빌드의 ELF 변수
CPU 시간·샘플 간격·유실 확인 → 관측 판정
UART 시험과 드라이버 검출을 구분합니다
먼저 일반 터미널에서 목표 UART의 송수신을 확인합니다. 드라이버를 빌드에 포함하고 serialDriverDefines.h를 시스템에 맞춥니다. 받은 바이트를 serialDriverReceiveByte()에 넘기고 serialDriverSendData() 송신 구현을 연결합니다. 함수의 버퍼 타입과 인터럽트·DMA 처리 방식은 대상 플랫폼의 실제 헤더와 구현으로 확인합니다.
터미널의 포트 점유를 해제한 뒤 acquisition에서 SERIAL, 실제 포트와 목표와 같은 baud를 고릅니다. Detect serial은 드라이버 버전과 설정을 확인하는 단계이지 파형 정확도 시험은 아닙니다. 잘못된 baud 검출 뒤에는 제작자 문서에 따라 목표 리셋이 필요한 경우도 구분합니다.
C2000 예시는 무선 성능 시험이 아닙니다
C2000 예시는 먼저 SCI/UART 루프백을 확인한 뒤 드라이버와 ELF 변수를 연결합니다. PC에서 고르는 ELF가 실제 목표에 기록된 빌드와 맞는지 확인해야 주소와 타입을 해석하는 출발점이 맞습니다. 예시의 내장 USB–UART와 USB 절연기 경로를 무선 링크라고 부르지 않습니다.
현재 문서에는 TI DWARF 확장에 따른 const·volatile 변수 해석 문제가 적혀 있습니다. 그래프 표시를 위해 실제 제어 변수의 volatile을 무작정 제거하면 프로그램 의미가 바뀔 수 있습니다. 도구·컴파일러 버전을 기록하고, 필요하면 원래 제어 의미를 유지한 별도 관측 변수와 동기화·복사 비용을 검토합니다.
표시 속도는 샘플링 주파수가 아닙니다
부드러운 파형도 빠른 변화를 놓칠 수 있습니다. C2000 예시는 느린 변수 조회에서 빠른 카운터가 다른 모양으로 보이는 앨리어싱을 설명합니다. UART baud를 올렸다고 해서 샘플 시간이 균일하거나 모든 값이 보존된다고 보지 않습니다.
Recorder는 목표에서 일정 주기로 값을 수집하는 별도 기능입니다. 문서는 고주파 인터럽트 끝의 recorderStep() 호출과 해당 실행의 비선점 조건을 요구합니다. 이 조건을 맞추려고 전체 인터럽트를 무조건 막지 말고 제어 마감 시간·버퍼·실행 비용을 함께 검토합니다. 다운샘플링은 표시 시간 범위를 늘리지만 관측 가능한 대역을 바꿉니다.
시연과 실제 계측 결과를 분리합니다
약 36초 분량의 시연 영상에는 보드를 움직이는 손과 갱신되는 그래프가 나옵니다. 이는 전달받은 시각 관찰 기록에 따른 설명이며, 영상을 다시 재생하거나 오디오 트랙을 확인하지는 않았습니다. 무선 경로, 유실률, 지연, 프로브와의 성능 동등성을 입증하지 않습니다. 1.2.5 beta는 당시 발표 문구이지 현재 권장 버전이 아닙니다.
실제 적용 때는 변수 수·자료형, UART 설정, 드라이버 활성 전후의 최악 실행 시간, 수집 간격과 누락을 같은 부하에서 비교합니다. 연결을 끊거나 그래프를 닫아도 목표의 관측 코드가 계속 실행되는지는 따로 확인합니다. 이 글에서는 설치·보드 실행·성능 측정을 수행하지 않았습니다.