임베디드 면접 용어 사전
학습노트에서 용어를 누르면 여기로 옵니다. 각 용어의 동작 방식·장단점·면접 함정을 정리했습니다.
114개 용어 · 상세 정리 114개
C 언어10
- volatile
컴파일러 최적화로 접근을 생략하지 못하게 막는 한정자. 레지스터·ISR 공유 변수·멀티스레드 플래그에 붙인다. 원자성은 보장하지 않는다.
- const
값을 바꿀 수 없음을 컴파일러에 알리는 한정자. 포인터에서는 붙는 위치에 따라 대상과 포인터 중 무엇이 상수인지 달라진다.
- static
전역에 쓰면 파일 내부로 링키지를 제한하고, 지역에 쓰면 함수가 끝나도 값이 유지되게 한다.
- extern
다른 파일에 정의된 심볼을 참조한다는 선언. 정의가 아니라 선언이라는 점이 핵심이다.
- 구조체 패딩padding · 정렬
멤버를 정렬 경계에 맞추려 컴파일러가 끼워 넣는 빈 바이트.
sizeof가 멤버 합보다 커지는 이유다. - 함수 포인터
함수의 주소를 담는 포인터. 콜백·상태 머신·벡터 테이블 구현의 기본 도구다.
- 비트 마스킹비트 연산
|로 세우고&~로 지우고^로 토글해 레지스터의 특정 비트만 다루는 기법. - 엔디안endian · 리틀 엔디안
다바이트 값을 메모리에 놓는 순서. 통신·파일 포맷에서 바이트 순서를 맞추지 않으면 값이 뒤집힌다.
- 정수 승격integer promotion
연산 전 작은 정수형이 int로 확장되는 규칙. 부호 있는/없는 타입이 섞이면 숨은 버그의 원인이 된다.
- 재진입 함수reentrant
여러 실행 흐름이 동시에 들어와도 안전한 함수. 전역·정적 상태를 쓰지 않아야 한다.
메모리·아키텍처10
- 메모리 맵memory map
주소 공간에 플래시·SRAM·주변장치 레지스터를 배치한 지도. 임베디드에서는 주변장치도 주소로 접근한다.
- SRAM
리프레시가 필요 없는 빠른 휘발성 메모리. 셀이 커서 용량당 비용이 높아 MCU 내부 소량 탑재된다.
- DRAM
커패시터에 저장해 주기적 리프레시가 필요한 휘발성 메모리. 밀도가 높아 대용량에 쓰인다.
- write-back 캐시write-back · Write-Back
쓰기를 캐시에만 반영하고 나중에 메모리에 내리는 방식. DMA와 함께 쓰면 일관성 문제가 생긴다.
- DMA
CPU를 거치지 않고 주변장치와 메모리가 직접 데이터를 옮기는 기능. 전송 전후 캐시 유지·무효화가 필수다.
- 캐시 일관성cache coherency
캐시와 실제 메모리 내용이 어긋나지 않게 유지하는 문제. DMA 버퍼에서 clean/invalidate로 다룬다.
- MMU
가상 주소를 물리 주소로 변환하는 유닛. 프로세스별 주소 공간 분리를 가능하게 한다.
- MPU
영역별 접근 권한만 검사하는 보호 유닛. 주소 변환은 하지 않아 Cortex-M 계열에 쓰인다.
- 메모리 단편화fragmentation
빈 공간이 조각나 총량은 충분한데 할당이 실패하는 현상. 임베디드에서 동적 할당을 피하는 주된 이유다.
- 하버드 구조폰노이만
명령과 데이터 버스를 분리한 구조. 동시 접근이 가능해 파이프라인 효율이 높다.
MCU·ARM7
- Cortex-M
ARM의 마이크로컨트롤러용 코어 계열. Thumb-2 명령, NVIC 내장, MPU 옵션이 특징이다.
- MSP / PSP스택 포인터
메인 스택 포인터와 프로세스 스택 포인터. RTOS는 커널에 MSP, 태스크에 PSP를 쓴다.
- 부팅 시퀀스reset 벡터
리셋 후 벡터 테이블에서 초기 SP와 Reset_Handler를 읽어 startup을 거쳐 main으로 가는 과정.
- 벡터 테이블vector table
예외·인터럽트별 핸들러 주소를 모아 둔 표. VTOR로 위치를 옮길 수 있어 부트로더 구성에 쓰인다.
- AHB / APBAHB · APB · APB1 · APB2
고속 버스(AHB)와 저속 주변장치 버스(APB). 클럭 도메인이 달라 주변장치 클럭 설정이 필요하다.
- 자동 스태킹exception stacking
예외 진입 시 하드웨어가 일부 레지스터를 자동으로 스택에 밀어 넣는 동작. ISR을 일반 C 함수로 쓸 수 있게 한다.
- PLL
기준 클럭을 곱해 원하는 동작 주파수를 만드는 회로. bring-up에서 가장 먼저 확인하는 항목이다.
인터럽트8
- 인터럽트 vs 폴링
사건 발생 시 CPU가 통보받는 방식과, CPU가 계속 확인하는 방식의 대비. 응답성과 CPU 점유의 트레이드오프다.
- NVIC
Cortex-M의 중첩 벡터 인터럽트 컨트롤러. 우선순위 그룹·선점·펜딩을 관리한다.
- 인터럽트 지연latency
사건 발생부터 ISR 첫 명령까지의 시간. 임계 구역 길이와 우선순위 설정이 크게 좌우한다.
- 테일체이닝tail-chaining
연속된 인터럽트 사이에 스택 복원·재저장을 생략해 진입을 빠르게 하는 최적화.
- ISR인터럽트 서비스 루틴
인터럽트 발생 시 실행되는 짧은 처리 루틴. 긴 작업은 플래그·큐로 태스크에 미루는 것이 원칙이다.
- 임계 구역critical section
동시 접근을 막아야 하는 코드 구간. 인터럽트 비활성으로 보호하되 최대한 짧게 잡아야 한다.
- 디바운싱debouncing · 채터링
기계 접점이 튀며 생기는 중복 입력을 시간·다수결로 걸러내는 처리.
- 인터럽트
하드웨어나 소프트웨어가 CPU에게 '지금 처리할 일이 생겼다'고 알리는 신호. CPU는 하던 일을 멈추고 정해진 처리 루틴으로 점프했다가 되돌아온다.
RTOS8
- RTOS
정해진 시간 안에 응답을 보장하는 것을 목표로 하는 운영체제. 태스크·스케줄러·동기화 객체를 제공한다.
- 베어메탈bare-metal
OS 없이 main 루프와 인터럽트만으로 구성하는 방식. 단순하고 오버헤드가 없지만 규모가 커지면 관리가 어렵다.
- 선점형 스케줄링preemptive
더 높은 우선순위 태스크가 준비되면 실행 중 태스크를 빼앗는 방식. 응답성이 좋다.
- 우선순위 역전priority inversion
저순위 태스크가 쥔 락 때문에 고순위가 밀리는 현상. Mars Pathfinder 사례로 유명하며 우선순위 상속으로 완화한다.
- 우선순위 상속priority inheritance
락을 쥔 태스크의 우선순위를 대기자 수준으로 임시 올려 역전을 줄이는 기법.
- 뮤텍스 vs 세마포어 (RTOS)뮤텍스 · 세마포어
뮤텍스는 소유권과 우선순위 상속이 있어 상호 배제용, 세마포어는 카운팅·시그널링용이다.
- 스택 오버플로stack overflow
태스크 스택이 넘쳐 인접 메모리를 침범하는 오류. 워터마크 검사·MPU 가드로 탐지한다.
- deferred 처리FromISR
ISR에서 최소한만 하고 실제 작업을 태스크로 넘기는 패턴. ISR 안전 API(
…FromISR)로 알린다.
시리얼 통신6
- UART
클럭 없이 시작·정지 비트로 프레임을 맞추는 비동기 점대점 통신. 양쪽 보율이 같아야 한다.
- SPI
SCK·MOSI·MISO·CS 4선 동기 통신. 전이중이고 빨라 센서·플래시에 쓰이며 CS로 슬레이브를 고른다.
- CPOL / CPHACPOL · CPHA · SPI 모드
SPI의 클럭 유휴 레벨과 샘플링 에지를 정하는 설정. 둘의 조합이 모드 0~3이다.
- I2C
SDA·SCL 2선 멀티마스터 통신. 오픈드레인이라 풀업 저항이 필수이고 주소로 슬레이브를 고른다.
- 풀업 저항pull-up
오픈드레인 버스를 High로 끌어올리는 저항. 값이 크면 상승이 느려지고 작으면 소비 전류가 늘어난다.
- 클럭 스트레칭clock stretching
슬레이브가 SCL을 Low로 붙잡아 마스터를 기다리게 하는 I2C 기능.
필드버스7
- CAN
차량용 멀티마스터 브로드캐스트 버스. ID 기반 비트 아비트레이션으로 충돌을 비파괴적으로 해결한다.
- 비트 아비트레이션arbitration · 아비트레이션
CAN에서 ID가 작은(우성 비트가 많은) 프레임이 버스를 얻는 중재 방식. 진 노드는 데이터 손실 없이 재시도한다.
- 종단 저항termination · 종단 · 120Ω
버스 양 끝에 다는 120Ω 저항. 신호 반사를 막아 통신 오류를 줄인다.
- LIN
단일 마스터·저속의 저가 차량 버스. CAN을 보조해 도어·시트 같은 편의 장치에 쓰인다.
- RS-485
차동 신호로 장거리·다중 노드를 지원하는 물리 규격. 반이중이며 산업 현장에서 널리 쓰인다.
- Modbus
레지스터 읽기·쓰기 중심의 산업 표준 프로토콜. RTU(시리얼)와 TCP 방식이 있다.
- BLE
저전력 근거리 무선 규격. GAP로 연결을 맺고 GATT로 속성 데이터를 주고받는다.
주변장치·타이머6
- push-pull
High와 Low를 모두 능동적으로 구동하는 GPIO 출력 모드.
- open-drain
Low만 구동하고 High는 풀업에 맡기는 출력 모드. 여러 장치가 한 선을 공유하는 I2C에 쓰인다.
- PWM
일정 주기 안에서 High 비율(듀티)을 바꿔 평균 전력을 조절하는 신호. PSC·ARR·CCR로 설정한다.
- PSC / ARR / CCRPSC · ARR · CCR
타이머 분주값·자동 재적재값·비교값. 주기는 PSC와 ARR로, 듀티는 CCR로 정해진다.
- 워치독watchdog · WDT
일정 시간 안에 갱신하지 않으면 시스템을 리셋하는 타이머. 무응답 상태에서 자동 복구를 노린다.
- ADC
아날로그 전압을 디지털 값으로 바꾸는 변환기. 분해능·기준 전압·샘플링 시간이 정확도를 좌우한다.
펌웨어 빌드9
- .text 섹션.text
실행 코드와 상수가 들어가는 섹션. 플래시에 놓인다.
- .data 섹션.data
초기값이 0이 아닌 전역·정적 변수 섹션. 플래시에 초기값을 두고 startup에서 RAM으로 복사한다.
- .bss 섹션.bss
초기값이 0이거나 없는 전역·정적 변수 섹션. 이미지에 자리를 차지하지 않고 startup에서 0으로 채운다.
- VMA / LMAVMA · LMA
실행 시 주소(VMA)와 적재 시 주소(LMA).
.data처럼 둘이 다른 섹션이 startup 복사의 이유다. - 링커 스크립트.ld
섹션을 어느 메모리 영역에 어떤 주소로 배치할지 지정하는 파일.
- startup 코드
main 전에 실행되어
.data복사,.bss클리어, 클럭·스택 초기화를 수행하는 코드. - 부트로더bootloader
애플리케이션을 검증·갱신하고 실행으로 넘기는 선행 프로그램. OTA의 핵심이다.
- OTA
무선으로 펌웨어를 갱신하는 방식. 이중 뱅크와 롤백 설계가 안전성의 관건이다.
- 크로스 컴파일
개발 PC에서 다른 아키텍처용 바이너리를 만드는 빌드 방식.
임베디드 C++4
디버깅·신뢰성6
- JTAG
다수 핀을 쓰는 표준 디버그·바운더리 스캔 인터페이스. 체인 구성으로 여러 칩을 다룰 수 있다.
- SWD
2선(SWCLK·SWDIO)으로 동작하는 ARM 디버그 인터페이스. 핀이 적어 소형 보드에 유리하다.
- HardFault
처리되지 않은 오류로 진입하는 Cortex-M 예외. CFSR·HFSR과 스택 프레임의 복귀 주소로 원인을 추적한다.
- 스택 워터마크
스택을 특정 패턴으로 채워 두고 남은 흔적으로 최대 사용량을 재는 기법.
- coredump
장애 시점의 메모리·레지스터 상태를 남기는 덤프. 재현되지 않는 필드 버그 분석에 쓰인다.
- EMC / ESDEMC · ESD · EMI
전자기 적합성과 정전기 방전. 간헐적 오동작의 물리적 원인으로 배선·접지·보호 소자를 점검한다.
면접 태도·시나리오3
자동차 표준21
- AUTOSARAUTOSAR Classic
자동차 ECU 소프트웨어의 계층 구조 표준. 애플리케이션·RTE·BSW로 나누고 하드웨어 의존성을 MCAL 아래로 몰아 이식성을 만든다.
- MCAL
AUTOSAR에서 레지스터를 직접 만지는 최하위 계층. 인터페이스가 표준으로 고정돼 있어 MCU가 바뀌어도 상위 코드가 안 바뀐다.
- RTE
AUTOSAR에서 소프트웨어 컴포넌트(SWC) 사이의 통신을 중계하는 계층. 상대가 같은 ECU든 버스 너머든 호출 코드가 같아진다.
- SWCSoftware Component
AUTOSAR 애플리케이션의 기능 단위. 포트로만 외부와 통신하며, 내부 실행 단위(러너블)를 OS 태스크에 매핑해 돌린다.
- VFBVirtual Function Bus
모든 SWC가 이미 연결돼 있다고 가정하고 설계하는 논리적 통신 개념. 실제 배치(어느 ECU에 놓을지)는 나중에 정한다.
- ARXML.arxml
AUTOSAR 설정을 담는 XML 파일. 컴포넌트·포트·연결·태스크 주기가 여기에 적히고, 생성기가 이를 읽어 C 코드를 만든다.
- Adaptive AUTOSAR
POSIX 계열 OS와 C++ 위에서 도는 AUTOSAR. 서비스 지향 통신(SOME/IP)과 실행 중 구성 변경을 지원해 SDV·자율주행 영역을 맡는다.
- SOME/IP
이더넷 위에서 도는 자동차용 서비스 지향 통신 프로토콜. CAN의 신호 방송과 달리 서비스를 찾아 요청·구독하는 방식이다.
- CDDComplex Device Driver
AUTOSAR 표준 계층을 우회해 하드웨어에 직접 접근하는 드라이버. 타이밍이 급하거나 표준 모듈이 없는 기능에 쓴다.
- ISO 26262
자동차 전기·전자 시스템의 기능안전 표준. 위험도(ASIL)에 따라 개발 과정과 증거 수준을 규정한다.
- ASIL
ISO 26262의 위험도 등급(QM·A·B·C·D). 사고 시나리오의 심각도(S)·노출빈도(E)·통제가능성(C)으로 정해진다.
- ASIL 분해freedom from interference
높은 ASIL 요구를 서로 독립된 두 경로로 나눠 각각 낮은 등급으로 개발하는 기법. 간섭이 없다는 근거가 있어야 성립한다.
- FTTIFault Tolerant Time Interval
고장이 발생한 뒤 사고로 이어지기까지 허용되는 시간. 진단 주기와 안전 상태 전환 시간이 이 안에 들어와야 한다.
- 윈도우 워치독
정해진 시간 창 안에서만 리프레시를 받아들이는 워치독. 너무 늦어도, 너무 일러도 리셋시켜 폭주까지 잡는다.
- ECC
메모리 비트 뒤집힘을 검출·정정하는 회로. 보통 1비트는 자동 정정, 2비트는 검출해 예외로 올린다.
- A-SPICEAutomotive SPICE
자동차 소프트웨어 개발 프로세스 성숙도 평가 모델. V모델의 좌우를 추적성으로 잇는 것이 핵심이다.
- UDSISO 14229
차량 진단·펌웨어 갱신 표준(ISO 14229). 요청 SID에 대해 성공은 SID+0x40, 실패는 0x7F로 답한다.
- ISO-TPISO 15765-2
CAN 위에서 8바이트를 넘는 데이터를 나눠 보내는 전송 계층(ISO 15765-2). SF·FF·CF·FC 네 종류 프레임을 쓴다.
- DTC
ECU가 저장하는 고장 코드. 조건이 일정 시간 유지돼야 확정되며, 발생 당시 상태(freeze frame)를 함께 남긴다.
- Security Accessseed/key
UDS 0x27 서비스. ECU가 준 seed에 대해 진단기가 key를 계산해 보내야 보호된 기능이 열린다.
- E2E 보호E2E Protection · E2E
송수신 데이터에 CRC·순번·데이터 ID를 붙여 깨짐·정지·유실·오배선을 구분해 잡는 기법. AUTOSAR가 프로파일로 표준화했다.
자동차 MCU 실습9
- S32K144
NXP의 자동차용 범용 MCU. Cortex-M4F, 512KB 플래시, CAN FD 내장, 2.7~5.5V 동작, ISO 26262 ASIL B까지 지원한다.
- AEC-Q100
자동차용 IC의 신뢰성 인증 규격. 온도 등급별 수명·열충격·ESD 등을 통과한 부품에만 부여된다.
- SBCUJA1169
전원 레귤레이터·CAN/LIN 트랜시버·워치독을 한 칩에 담은 자동차용 시스템 관리 칩. SPI로 설정하고 MCU를 외부에서 감시한다.
- FlexCAN
NXP MCU의 CAN 컨트롤러. 메시지 버퍼 배열과 수신 필터(마스크)를 갖고 CAN FD를 지원한다.
- 입력 캡처Input Capture
타이머 채널에 들어온 신호의 에지 순간 카운터 값을 하드웨어가 저장하는 기능. ISR 지연이 측정 오차에 섞이지 않는다.
- 루프백 모드
CAN 컨트롤러가 자기 송신을 자기 수신단으로 되돌려 받는 시험 모드. 트랜시버·버스 없이 프로토콜 동작을 확인한다.
- DWTCYCCNT
Cortex-M의 디버그·트레이스 유닛. CYCCNT 레지스터로 코드 실행 사이클을 직접 셀 수 있다.
- CFSRBFAR
Cortex-M의 폴트 원인 레지스터. HardFault가 났을 때 어떤 종류의 오류였는지 비트로 알려 준다.
- RTDReal-Time Drivers
NXP가 무료로 제공하는 드라이버 묶음. AUTOSAR 4.4 규격의 상위 인터페이스와 비-AUTOSAR 저수준 인터페이스를 함께 제공한다.