임베디드기사 실기 04 — 주변장치 분석 (DMA·워치독·I2C·SPI·JTAG·레지스터 제어)
출제기준 1-3: 임베디드 시스템 주변장치 분석하기
DMA는 11회차 중 3번, 워치독·JTAG·I2C/SPI는 2~3번씩 나온 단골이에요.
정의 + 핀 이름을 정확히 쓰는 게 핵심입니다!
📎 필기 시리즈의 주변장치 편과 함께 보면 좋아요. (링크 추가 예정)
실기 출제 포인트 ⭐⭐⭐
| 키워드 | 핵심 내용 | 빈도 | 기출 |
| DMA | CPU 개입 없이 주변장치↔메모리 전송, 사이클 스틸링/버스트 |
⭐⭐⭐ | 2018 Q10, 2020 Q15, 2022 Q2 |
| 워치독 타이머 | 멈춘 프로그램을 강제 리셋, 주기적 kick | ⭐⭐ | 2022 Q13, 2025 Q5, (2024 Q8 레지스터) |
| I2C / SPI | 2선 vs 4선 직렬 통신 | ⭐⭐ | 2016 Q14, 2025 Q15 |
| JTAG / Boundary Scan | 하드웨어 디버깅·IC 불량 판별 | ⭐⭐ | 2017 Q17, 2023 Q12 |
| 인터럽트 방식 입출력 | 장치가 CPU에 요청 → 핸들러 처리 | ⭐⭐ | 2019 Q7, 2022 Q6 (3편에서 정리) |
| 풀업 저항 | 입력 핀을 H로 고정 | ⭐ | 2024 Q20 (2편에서 정리) |
| UART / 표준 입출력 | stdin/stdout/stderr, 시리얼 포트 | ⭐ | 2021 Q18 |
| 센서·ADC 프로그램 | 아날로그 입력, 분해능 | 기출 없음 | 보강 |
키워드 박스 — 답안에 반드시 들어가야 할 단어
DMA : CPU 미개입 / 주변장치 ↔ 주기억장치 직접 전송 / DMA 제어기
워치독 : 무한루프·멈춤 감지 / 타임아웃 시 강제 리셋 / 주기적 kick
I2C : SCL(클록) + SDA(데이터) / 풀업 저항 필수
SPI : SCLK, MOSI, MISO, CS(SS) 4선
JTAG : TCK, TMS, TDI, TDO (+TRST) / Boundary Scan / 온칩 디버깅
입출력 제어 방식 ⭐⭐
주변장치와 CPU가 데이터를 주고받는 방식은 크게 4가지예요.
| 방식 | CPU 개입 | 특징 |
| 프로그램에 의한 I/O (폴링) | 개입 O | CPU가 일정 간격으로 장치 상태를 확인 |
| 인터럽트에 의한 I/O | 개입 O | 장치가 인터럽트로 요청 → CPU가 핸들러 실행 |
| DMA에 의한 I/O | 개입 X | DMA 제어기가 직접 전송 |
| 채널에 의한 I/O | 개입 X | 입출력 전용 프로세서가 처리 |
DMA (Direct Memory Access) ⭐⭐⭐
기출 (2018 Q10) 주변장치가 CPU를 경유하지 않고 직접 주기억장치에 접근하는 입출력 방식은?
기출 (2020 Q15) 입출력 장치 제어기가 CPU에 의한 프로그램 실행 없이 자료를 이동할 수 있도록 하는 것은?
기출 (2022 Q2) CPU의 직접적인 개입 없이 I/O와 메모리 사이의 데이터 전송을 담당하는 것은?
→ 세 문제 모두 정답은 DMA (Direct Memory Access, 직접 메모리 접근)
DMA 동작 과정
1. CPU가 DMA 제어기에 전송 명령 설정 (메모리 주소, 전송 크기, 방향)
2. DMA 제어기가 메모리 ↔ I/O 장치 사이 데이터를 자동 전송
3. 전송이 끝나면 DMA 제어기가 CPU에 인터럽트 발생
4. 그동안 CPU는 다른 작업 수행 가능
DMA 동작 모드 2가지 (반드시 구분!)
| 구분 | 사이클 스틸링 (Cycle Stealing) | 버스트 모드 (Burst Mode) |
| 전송 방식 | 한 워드씩 전송할 때마다 버스 사이클을 하나씩 빌려 사용 | 버스 사용권을 얻으면 전송이 끝날 때까지 점유 |
| CPU 영향 | CPU 방해가 적음 | CPU가 그동안 버스를 못 씀 |
| 속도 | 상대적으로 느림 | 빠름 (대용량 블록 전송) |
| 예시 | 키보드, 프린터 같은 저속 장치 | 디스크, 네트워크 카드 같은 고속 장치 |
DMA 제어기 구성 요소
| 요소 | 역할 |
| 메모리 주소 레지스터 | 전송할 메모리 위치 |
| 워드 카운트 레지스터 | 전송할 데이터 크기 |
| 제어 레지스터 | 전송 방향·모드 설정 |
| 상태 레지스터 | DMA 동작 상태 |
⚠️ 함정
- "인터럽트 방식"도 CPU 개입이 있어요 → DMA만 CPU 미개입 (채널 제외)
- 답안에는 반드시 "CPU 개입 없이(경유하지 않고)" + "주변장치와 메모리 직접 전송" 두 요소를 넣기
- 사이클 스틸링/버스트 정의를 서로 바꿔 쓰지 않기
워치독 (Watchdog) 타이머 ⭐⭐
기출 (2022 Q13 = 2025 Q5 동일) 프로그램 및 프로세스가 멈췄을 때 강제로 리셋시키는 기능은?
→ Watchdog (Watchdog Timer)
정상 동작: 주기적으로 kick(타이머 리셋) → 시스템 계속 실행
비정상 동작: 무한루프·데드락 → kick 없음 → 타이머 만료(타임아웃) → 자동 강제 리셋
| 항목 | 설명 |
| 목적 | 무한루프·데드락을 자동 감지하고 복구 |
| 구현 | 주로 하드웨어 타이머 + 소프트웨어 kick |
| 타임아웃 | 설정 가능 (예: 1초, 5초) |
| 용도 | 임베디드 시스템 안정성 향상 |
레지스터 제어 문제 (2024 Q8 — 기억 기반 복원)
Watchdog 레지스터 주소가 0xEA20_0000이고, 1이면 ON, 0이면 OFF.
워치독을 끄는 어셈블리 코드의 빈칸을 채우시오.
원문 정답이 정리본에 없어서, 원리에 맞춰 직접 작성한 예시를 적어둘게요.
ldr r0, =0xEA200000 ; 워치독 레지스터 주소를 r0에 적재
mov r1, #0 ; 0 = OFF
str r1, [r0] ; 레지스터에 0을 기록 → 워치독 정지
특정 비트만 끄고 싶다면 읽기 → 비트 클리어 → 쓰기 순서로 해요.
ldr r1, [r0] ; 현재 값 읽기
bic r1, r1, #1 ; bit0만 0으로 (bic = 비트 클리어)
str r1, [r0] ; 다시 쓰기
⚠️ 레지스터 제어 문제는 "주소 적재 → 값 준비 → str로 기록" 3단계만 기억하면 대부분 풀려요.
데이터시트의 비트 정의(1=ON, 0=OFF)를 문제에서 먼저 확인하세요.
I2C와 SPI ⭐⭐
I2C (Inter-Integrated Circuit)
기출 (2016 Q14) I2C 통신에서 마스터·슬레이브 동기화와 데이터 통신을 하는 2개의 라인은?
→ SCL (Serial Clock), SDA (Serial Data)
SCL : 마스터가 생성하는 클록 → 통신 속도·동기화
SDA : 마스터 ↔ 슬레이브 양방향 데이터
두 라인 모두 오픈 드레인 구조 → 풀업 저항 필수
SPI (Serial Peripheral Interface)
기출 (2025 Q15) SPI 통신에 사용되는 핀 4개를 적으시오.
→ SCLK, MOSI, MISO, CS (또는 SS)
| 핀 | 풀네임 | 방향 | 역할 |
| SCLK | Serial Clock | 마스터 → 슬레이브 | 클록 |
| MOSI | Master Out Slave In | 마스터 → 슬레이브 | 데이터 송신 |
| MISO | Master In Slave Out | 슬레이브 → 마스터 | 데이터 수신 |
| CS (SS) | Chip/Slave Select | 마스터 → 슬레이브 | 통신할 슬레이브 선택 (보통 Low가 선택) |
I2C vs SPI 비교
| 구분 | I2C | SPI |
| 신호선 | 2선 (SCL, SDA) | 4선 (SCLK, MOSI, MISO, CS) |
| 슬레이브 선택 | 주소로 선택 | CS 핀으로 선택 |
| 통신 | 반이중 | 전이중 (송수신 동시) |
| 풀업 저항 | 필수 | 일반적으로 불필요 |
⚠️ 함정: MOSI와 MISO의 방향을 반대로 쓰기 쉬워요.
"Master Out" = 마스터가 내보내는 선이라고 영어 그대로 읽으면 헷갈리지 않아요.
JTAG와 Boundary Scan ⭐⭐
기출 (2017 Q17) TCK, TMS, TDI, TDO 신호선으로 프로세서 내부 레지스터에 접근하고 경계주사(Boundary Scan)를 수행하는 표준 인터페이스는?
→ JTAG (Joint Test Action Group, IEEE 1149.1)
기출 (2023 Q12) JTAG에서 사용하는 기술로 IC의 불량 여부를 판별하고 개발 시 디버깅에 쓰는 것은?
→ Boundary Scan (경계 스캔)
| 신호 | 의미 | 역할 |
| TCK | Test Clock | 클록 공급 |
| TMS | Test Mode Select | TAP 컨트롤러 상태 제어 |
| TDI | Test Data In | 시리얼 데이터 입력 |
| TDO | Test Data Out | 시리얼 데이터 출력 |
| TRST | Test Reset | 리셋 (선택 신호) |
JTAG 역할:
- 기판에서 칩을 떼지 않고 내부 연결 상태 테스트 (Boundary Scan)
- 프로세서 정지(Halt), 레지스터·메모리 읽기/쓰기
- 플래시 메모리 라이팅 등 온칩 디버깅
⚠️ 일부 정리본에는 JTAG 핀이 TCO로 오타가 있어요.
정확한 이름은 TRST 입니다. (4핀 + 선택 TRST = 5개로 세는 경우가 많아요)
UART와 표준 입출력 ⭐
기출 (2021 Q18) 임베디드 시스템의 표준 입출력에 대해 묻는 문제 (두 가지 버전)
1안) C 언어의 표준 입출력 3가지 → stdin / stdout / stderr
2안) 임베디드에서 표준 입출력을 구현하는 방식 → UART (시리얼 포트)
임베디드 보드에서 printf가 터미널에 찍히는 건 보통 UART 시리얼 콘솔로 출력을 내보내기 때문이에요.
센서·ADC (기출 없음 — 보강) 📌
출제기준에는 있지만 11회차 기출에는 없었어요. 필기 키워드 수준으로만 챙기세요.
ADC 분해능: LSB = Vref ÷ 2ⁿ (n = 비트 수)
예) Vref 3.3V, 10bit ADC → 3.3 ÷ 1024 ≈ 3.2mV
기출 문제 모음
Q. 주변장치가 CPU를 경유하지 않고 직접 주기억장치에 접근하는 입출력 방식은? (2018 Q10)
A. DMA (Direct Memory Access)
Q. DMA의 동작 모드 2가지는?
A. 사이클 스틸링(Cycle Stealing), 버스트 모드(Burst Mode)
Q. 프로그램이 멈췄을 때 강제로 리셋시키는 기능은? (2022 Q13, 2025 Q5)
A. Watchdog (Watchdog Timer)
Q. I2C의 두 신호선은? (2016 Q14)
A. SCL, SDA
Q. SPI의 4개 핀은? (2025 Q15)
A. SCLK, MOSI, MISO, CS(SS)
Q. IC 불량 판별과 디버깅에 쓰이는 JTAG 기술은? (2023 Q12)
A. Boundary Scan
💡 실무에서는?
- DMA — 서버의 NIC, 스토리지 컨트롤러는 DMA로 메모리에 직접 데이터를 써요. 네트워크 카드 성능이나 인터럽트 부하를 따질 때 DMA 개념이 그대로 쓰입니다.
- 워치독 — 서버 BMC나 하드웨어 워치독은 OS가 멈췄을 때 자동 재부팅을 시켜주는 장애 복구 장치예요. 무인 운영 장비에서 특히 중요하죠.
- I2C/SPI — 서버 보드의 온도·전압 센서와 BMC 사이 통신, 펌웨어 SPI 플래시 등에서 만날 수 있어요.
- JTAG — 보드 bring-up과 펌웨어 복구 때 마지막 수단으로 쓰이는 디버그 포트입니다. 보안 점검 시에는 JTAG 포트가 열려 있는지도 확인 대상이에요.
핵심 정리
✅ DMA = CPU 미개입 직접 전송 / 모드: 사이클 스틸링(한 워드씩) vs 버스트(연속 점유)
✅ I/O 방식: 폴링·인터럽트(CPU 개입 O) / DMA·채널(CPU 개입 X)
✅ 워치독 = 멈춤 감지 → 타임아웃 시 강제 리셋 / 정상이면 주기적 kick
✅ 레지스터 제어: 주소 적재(ldr) → 값 준비(mov) → 기록(str), 비트 클리어는 bic
✅ I2C = SCL + SDA (풀업 필수) / SPI = SCLK, MOSI, MISO, CS
✅ JTAG = TCK, TMS, TDI, TDO (+TRST) / Boundary Scan = IC 불량 판별·디버깅
✅ 표준 입출력 = stdin/stdout/stderr, 구현은 UART
다음 편에서는 펌웨어 설계·구현·테스팅(출제기준 2-1)으로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!
'자격증 정복 > 임베디드기사(기능사)' 카테고리의 다른 글
| 임베디드기사 실기 03 — 시스템 성능·구조 분석 (ARM 어셈블리·엔디안·캐시·페이징·인터럽트) (0) | 2026.10.25 |
|---|---|
| 임베디드기사 실기 02 — 하드웨어 및 회로 분석 (논리회로·플립플롭·카르노맵·SRAM/DRAM) (0) | 2026.10.24 |
| 임베디드기사 실기 01 — 시리즈 소개와 실기 출제 맵 (출제기준·기출 분석·답안 작성 전략) (0) | 2026.10.23 |
| 임베디드기능사 필기 09 — 최종 예상 기출문제 풀이 (전 범위 핵심 총정리) (0) | 2026.09.17 |
| 임베디드기능사 필기 08 — 시스템소프트웨어·펌웨어·개발도구 (MCU·RTOS·JTAG) (0) | 2026.09.17 |