자격증 정복/임베디드기사(기능사)
임베디드기능사 필기 08 — 시스템소프트웨어·펌웨어·개발도구 (MCU·RTOS·JTAG)
올드 IT직장인
2026. 9. 17. 06:00
임베디드기능사 필기 08 — 시스템소프트웨어·펌웨어·개발도구 (MCU·RTOS·JTAG)
출제기준 대단원 7: 시스템소프트웨어 펌웨어 구현
2026년 신규 추가 파트! MCU, RTOS, 개발도구 개념 중심이에요.
운영체제 종류 ⭐
범용 OS
Windows, Linux, macOS
대형 컴퓨터·서버 운용
RTOS (Real-Time OS)
정해진 시간 안에 작업 처리 보장
VxWorks, QNX, FreeRTOS, uC/OS
항공·의료·자동차 등 임베디드에 필수
임베디드 Linux
Linux를 임베디드에 맞게 경량화
라즈베리파이, 스마트 기기 등
마이크로프로세서 구조 ⭐⭐
CPU vs MCU
CPU (Central Processing Unit)
→ 연산·제어만 담당
→ 외부에 메모리·I/O 필요
MCU (Micro Controller Unit)
→ CPU + 메모리(ROM/RAM) + I/O가 하나의 칩
→ 임베디드 시스템의 핵심
→ Arduino의 핵심이 MCU (ATmega328P 등)
MCU 구성요소
CPU 코어 — 연산·제어
Flash ROM — 프로그램 저장 (비휘발성)
SRAM — 데이터 저장 (휘발성)
GPIO — 디지털 입출력
Timer/Counter— 시간 측정·PWM 생성
UART/SPI/I2C — 직렬 통신 인터페이스
ADC — 아날로그→디지털 변환
Interrupt — 인터럽트 처리
대표 MCU
AVR 계열 — ATmega328P (아두이노 우노)
ARM 계열 — STM32, Cortex-M 시리즈
PIC 계열 — Microchip Technology
8051 — Intel, 교육용으로 많이 사용
아두이노 (Arduino) ⭐⭐
임베디드기능사 실기에서 핵심 플랫폼!
아두이노 우노 (Arduino UNO)
MCU: ATmega328P
디지털 I/O: 14개 핀
아날로그 입력: 6개 핀
동작 전압: 5V
클록: 16MHz
기본 구조
void setup() {
// 초기화 코드 (한 번만 실행)
pinMode(13, OUTPUT); // 13번 핀을 출력으로 설정
}
void loop() {
// 반복 실행 코드
digitalWrite(13, HIGH); // LED ON
delay(1000); // 1초 대기
digitalWrite(13, LOW); // LED OFF
delay(1000);
}
주요 함수
pinMode(pin, mode) — 핀 모드 설정 (INPUT/OUTPUT)
digitalWrite(pin, val) — 디지털 출력 (HIGH/LOW)
digitalRead(pin) — 디지털 입력 읽기
analogWrite(pin, val) — PWM 출력 (0~255)
analogRead(pin) — 아날로그 입력 (0~1023)
delay(ms) — ms 단위 지연
Serial.begin(9600) — 시리얼 통신 시작
Serial.println(data) — 시리얼 출력
펌웨어 개발 과정 ⭐
요구사항 분석
↓
설계 (하드웨어 + 소프트웨어)
↓
코딩 (C/C++/어셈블리)
↓
컴파일·빌드
↓
다운로드(플래싱)
↓
테스트·디버깅
↓
출시
크로스 컴파일 ⭐
호스트 PC에서 타겟 MCU용 코드를 컴파일
→ 크로스 컴파일러 (Cross Compiler)
→ 예: ARM용 gcc (arm-none-eabi-gcc)
개발도구 ⭐⭐
IDE (통합 개발 환경)
Arduino IDE — 아두이노 전용
STM32CubeIDE — STM32 전용
Keil MDK — ARM MCU 전용
Eclipse — 범용 (플러그인으로 임베디드 지원)
VS Code — 범용, 확장 플러그인 활용
디버깅 도구
JTAG ⭐⭐⭐
5신호: TCK / TMS / TDI / TDO / TRST
직렬 방식
TCK는 시스템 클록과 별개
Boundary-Scan 기능으로 칩 내부 테스트
SWD (Serial Wire Debug)
2선(SWDCLK, SWDIO)으로 디버깅
ARM Cortex-M 전용
JTAG보다 핀 수 적음
테스트 방법 ⭐
단위 테스트 (Unit Test)
→ 개별 함수·모듈 단위 검증
기능 테스트 (Functional Test)
→ 요구 기능 충족 여부 확인
통합 테스트 (Integration Test)
→ 여러 모듈 결합 후 동작 확인
시스템 테스트
→ 전체 시스템 최종 확인
하드웨어-인-더-루프 (HIL)
→ 실제 하드웨어와 시뮬레이션 결합 테스트
임베디드 통신 인터페이스 ⭐⭐
UART (Universal Asynchronous Receiver Transmitter)
→ 비동기 직렬 통신
→ TX(송신), RX(수신) 2선
→ 시작비트(0), 정지비트(1)
SPI (Serial Peripheral Interface)
→ 동기 직렬 통신
→ SCK, MOSI, MISO, CS 4선
→ 고속 통신에 적합
I2C (Inter-Integrated Circuit)
→ 동기 직렬 통신
→ SDA, SCL 2선
→ 여러 장치를 버스로 연결 (주소로 구분)
기출 문제
Q. JTAG의 5가지 신호를 나열하시오.
A. TCK / TMS / TDI / TDO / TRST
Q. JTAG에 대한 설명으로 틀린 것은?
A. "TCK는 시스템 클록과 동일하다" → 오답! (별개의 클록 사용)
Q. MCU와 CPU의 차이는?
A. MCU는 CPU + 메모리 + I/O가 하나의 칩에 통합된 것
핵심 정리
✅ RTOS: 시간 보장 (VxWorks, QNX, FreeRTOS)
✅ MCU = CPU + ROM + RAM + I/O 하나의 칩
✅ 아두이노: setup()=초기화 / loop()=반복
✅ JTAG 5신호: TCK/TMS/TDI/TDO/TRST
✅ TCK ≠ 시스템클록 (별개!)
✅ JTAG = 직렬 방식
✅ UART: 비동기(시작·정지비트) / SPI: 4선 / I2C: 2선
✅ 크로스 컴파일 = PC에서 MCU용 코드 컴파일
다음 편에서는 최종 예상 기출문제 풀이로 마무리합니다!
반응형