임베디드 시스템이란?
임베디드 시스템은 특정 기능을 수행하기 위해 설계된 컴퓨팅 시스템입니다. 일반적인 컴퓨터와 달리, 임베디드 시스템은 특정 작업을 수행하는 데 최적화되어 있습니다.
예시:
- 스마트폰
- 가전 제품 (전자레인지, 세탁기)
- 자동차 (엔진 제어 시스템, 인포테인먼트 시스템)
- 의료 기기 (심장 박동기, MRI 장비)
- 산업용 기기 (로봇 팔, PLC)
임베디드 시스템의 주요 특징
- 특정 용도: 범용 컴퓨팅이 아닌 특정 기능을 수행하도록 설계됨.
- 제한된 자원: 메모리, 저장 공간, 전력 등이 제한적임.
- 실시간 작동: 실시간으로 작업을 수행해야 하는 경우가 많음.
- MCU 칩 사용 : 컴퓨터 기본 동작에 필요한 CPU, 메모리, 저장장치를 하나에 모아둔 칩
- 공간 절약, 비용 절감, 전력 효율성 등을 위함
- 대표적인 MCU 제조사
- STMicroelectronics
- NXP Semiconductors
- Texas Instruments
- Microchip Technology
- Renesas Electronics
임베디드 프로그래밍이란?
- 특수한 목적을 위해 만들어진 보드에서 동작하는 프로그램. C/C++,Python, Rust 등으로 프로그래밍을 많이 하고 있음
- 일반 프로그래밍과 다른점
- 컴파일을 통해서 나온 Output을 보드의 특정 경로로 이동(업데이트)시켜서 파일을 실행한다
- 보통 리눅스 시스템을 많이 사용한다. OS가 없는 경우도 있다.
임베디드 시스템 개발자가 하는 일
하드웨어 개발자
→ 하드웨어 개발자 --> 칩을 선정하고, 특수한 목적을 위해서 필요한 부품을 통해서 PCB 보드를 만든다
a. 마이크로컨트롤러 또는 마이크로프로세서
임베디드 시스템의 핵심 처리 장치입니다. 선택 기준은 성능, 전력 소비, 주변 장치 인터페이스 등을 포함합니다.
예시:
- ARM Cortex-M 시리즈 (마이크로컨트롤러)
- ARM Cortex-A 시리즈 (마이크로프로세서)
- AVR, PIC 시리즈
b. 메모리
- 프로그램과 데이터를 저장하는 데 필요한 메모리입니다. RAM, 플래시 메모리 등이 사용됩니다
- NAND / NOR / EEPROM 등등
c. 주변 장치
임베디드 시스템이 특정 작업을 수행하기 위해 필요한 센서, 액추에이터, 통신 모듈 등의 주변 장치입니다.
예시:
- 온도 센서, 압력 센서
- 모터, LED
- Wi-Fi, Bluetooth 모듈
소프트웨어 개자
→ 만들어진 장비(보드)에 프로그래밍을 하고, 보드의 주변 장치를 이용하여(serial port / 이더넷 포트, 디버그 포트 등) 동작을 시킨다. 보드가 목표로 하는 기능을 동작 시킨다.
a. 운영체제
임베디드 시스템에서 사용하는 운영체제는 주로 리얼타임 운영체제(RTOS) 또는 임베디드 리눅스입니다.
예시:
- FreeRTOS, Zephyr (RTOS)
- Yocto 프로젝트 기반 리눅스 배포판
b. 개발 도구
임베디드 소프트웨어 개발을 위해 필요한 컴파일러, 디버거, 등이 포함됩니다.
예시:
- GCC (GNU Compiler Collection)
- GDB (GNU Debugger)
c. 드라이버 및 미들웨어
하드웨어와 소프트웨어를 연결하는 드라이버와 다양한 기능을 제공하는 미들웨어가 필요합니다.
예시:
- 디바이스 드라이버 (GPIO, UART, I2C, SPI 등)
- 프로토콜 스택 (TCP/IP, USB, BLE 등)
임베디드 시스템을 개발할 때는 다음 사항들을 고려해야 합니다:
- 커널 소스 및 빌드: 커널을 선택, 구성, 빌드, 설치.
- 부트로더: 부트로더를 선택, 구성, 빌드, 설치.
- 파일 시스템: 파일 시스템을 선택, 생성, 구성.
- 패키지 관리: 패키지를 선택, 빌드, 설치.
- 크로스 컴파일 툴체인: 툴체인을 다운로드, 설정.
- 디바이스 드라이버: 드라이버를 작성, 빌드, 설치, 로드.
- 네트워크 구성: 네트워크 인터페이스 및 서비스를 설정.
다음글에서는 Yocto에 대해서 알
아보도록 하겠습니다.
'개발자 면접' 카테고리의 다른 글
[C++ 기술 면접 질문]프로세스와 스레드가 무엇일까? (0) | 2023.07.25 |
---|---|
IT 대기업에 합격 후기 코딩테스트 준비 과정과 파이썬 공부에 대하여 (4) | 2022.07.18 |