임베디드 로드맵
기초부터 응용까지 20과목, 182개 주제. 주제를 누르면 설명과 연결된 개념이 열립니다.
지도를 불러오지 못했습니다. 아래 과목 목록에서 바로 이동할 수 있습니다.
기초
4과목 · 38개 주제
하드웨어
5과목 · 44개 주제
펌웨어
5과목 · 48개 주제
기계어와 어셈블리
하드폴트가 났을 때, 최적화가 코드를 바꿨을 때, 결국 봐야 하는 건 기계어입니다.
12개 주제MCU 펌웨어
레지스터 한 비트가 핀을 켜고, 타이머를 돌리고, 모터를 움직입니다. 임베디드 개발의 본체입니다.
12개 주제통신 프로토콜
요즘 기기 중에 혼자 동작하는 것은 거의 없습니다. 통신이 곧 시스템입니다.
8개 주제RTOS
할 일이 많아지면 무한 루프 하나로는 감당이 안 됩니다. 실시간 운영체제가 그 답입니다.
8개 주제펌웨어 설계와 품질
현업 펌웨어는 몇 년씩 여러 사람이 고칩니다. 동작하는 코드와 유지되는 코드는 다릅니다.
응용
6과목 · 52개 주제
제어공학
모터, 드론, 온도 조절기. 원하는 값을 정확히 따라가게 만드는 모든 것이 제어입니다.
8개 주제센서와 신호처리
센서 값은 늘 흔들립니다. 그대로 쓰면 제어도, 판단도 흔들립니다.
8개 주제전력전자
충전기, 인버터, 모터 드라이버. 큰 전력을 다루는 기기는 모두 전력전자입니다.
10개 주제모터 제어
로봇, 드론, 전기차. 움직이는 모든 것에는 모터와 그 모터를 제어하는 펌웨어가 있습니다.
8개 주제임베디드 리눅스
화면, 네트워크, 카메라가 필요한 기기는 MCU 대신 리눅스를 씁니다.
8개 주제자동차 소프트웨어
자동차 한 대에 제어기가 100개 가까이 들어갑니다. 임베디드 직무의 가장 큰 시장입니다.
임베디드 독학 순서, 이렇게 잡았습니다
임베디드 로드맵을 찾아보면 과목 이름만 나열된 목록이 대부분입니다. 무엇을 먼저 해야 하는지, 각 과목이 서로 어떻게 이어지는지는 잘 나오지 않습니다. 그라운드 임베디드 로드맵은 20과목 182개 주제를 기초, 하드웨어, 펌웨어, 응용 네 단계로 나누고, 주제마다 짧은 정리 노트를 붙였습니다. 위 지도에서 점을 누르면 그 주제의 설명과 연결된 개념이 열리고, 원리를 눈으로 확인할 수 있는 주제는 3D 실험실 11개로 이어집니다.
- 01
기초 코드와 칩 안쪽
임베디드 독학 순서의 출발점은 C 언어입니다. 레지스터를 읽고 쓰는 코드는 결국 포인터와 비트 연산으로 이루어지기 때문입니다. 여기에 자료구조, 디지털 논리, 컴퓨터구조를 더하면 내가 짠 코드가 칩 안에서 어떤 순서로 실행되는지 그림이 그려집니다.
- 02
하드웨어 칩 바깥의 회로
펌웨어 개발자도 회로도를 읽어야 합니다. 핀이 왜 풀업되어 있는지, 디커플링 커패시터가 왜 그 자리에 있는지 모르면 버그의 절반은 찾을 수 없습니다. 회로이론으로 계산하는 법을 익히고, 전자회로와 실무 소자, PCB, 계측 장비 순서로 손에 잡히는 쪽으로 내려갑니다.
회로이론, 전자회로, 실무 회로소자, PCB 설계, 계측과 디버깅 장비
- 03
펌웨어 MCU를 직접 다루기
리셋 직후 main()까지 무슨 일이 일어나는지부터 시작해 GPIO, 타이머, 인터럽트, ADC 같은 주변장치를 데이터시트만 보고 설정하는 연습을 합니다. 이어서 UART, I2C, SPI, CAN 같은 통신과 RTOS, 오래 가는 펌웨어를 위한 설계와 품질을 다룹니다.
- 04
공부할 때 권하는 방법
- 순서대로, 그러나 완벽하게는 말고. 한 과목을 끝까지 파고 넘어가기보다 전체를 한 바퀴 돈 뒤 필요한 곳으로 돌아오는 편이 빠릅니다.
- 읽은 것은 바로 돌려 보기. PWM 듀티, 인터럽트 타이밍, 모터 전류처럼 글로는 감이 오지 않는 주제는 3D 실험실에서 값을 바꿔 보세요.
- 마지막은 직접 만들기. 스무 과목이 한 제품 안에서 어떻게 맞물리는지는 무언가를 끝까지 만들어 봐야 보입니다.
자주 묻는 질문
임베디드는 어떤 순서로 공부해야 하나요?
C 언어로 시작해 디지털 논리와 컴퓨터구조로 칩 안쪽을 이해하고, 회로이론과 전자회로로 칩 바깥을 읽는 눈을 만든 뒤, MCU 펌웨어와 통신 프로토콜, RTOS로 넘어가는 순서를 권합니다. 제어, 모터, 임베디드 리눅스, 자동차 소프트웨어 같은 응용 과목은 그 다음에 가고 싶은 분야에 맞춰 고르면 됩니다.
비전공자도 임베디드를 독학할 수 있나요?
할 수 있습니다. 다만 소프트웨어만 보거나 회로만 봐서는 막히는 지점이 반드시 나옵니다. 코드 한 줄이 핀의 전압으로 바뀌는 과정을 양쪽에서 같이 보는 것이 중요해서, 이 로드맵은 기초와 하드웨어를 나란히 놓았습니다.
아두이노부터 시작해도 되나요?
흥미를 붙이기에는 좋습니다. 하지만 라이브러리 함수만 부르다 보면 레지스터, 타이머, 인터럽트를 직접 다뤄 볼 기회가 없습니다. LED와 버튼을 한 번 돌려 본 뒤에는 데이터시트를 보고 레지스터를 직접 설정하는 MCU 펌웨어 과목으로 넘어가는 것을 권합니다.
C 언어는 어디까지 알아야 하나요?
포인터, 비트 연산, 구조체와 비트필드, volatile과 const, 함수 포인터, 빌드 과정까지입니다. 문법을 외우는 것보다 그 코드가 메모리의 어느 주소에 무엇을 쓰는지 설명할 수 있는 수준을 목표로 잡으면 됩니다.
수학은 얼마나 필요한가요?
펌웨어까지는 고등학교 수준의 수학이면 충분합니다. 제어공학, 신호처리, 모터 제어로 가면 복소수, 미분방정식, 라플라스 변환이 나옵니다. 그 과목에 들어갈 때 필요한 만큼 같이 익히면 됩니다.
어떤 보드로 실습하면 좋은가요?
자료가 많고 디버거가 붙어 있는 Cortex-M 계열 개발 보드 하나면 펌웨어 과목 대부분을 실습할 수 있습니다. 보드가 없어도 원리부터 확인할 수 있도록 이 사이트의 3D 실험실에서 PWM, 인터럽트, 모터 구동을 브라우저로 돌려 볼 수 있습니다.