그라운드 임베디드 유튜브 구독

로드맵

기초 · 과목 01

C 언어

임베디드 펌웨어의 대부분은 아직도 C로 짭니다. 포인터와 비트 연산이 손에 익어야 그다음이 열립니다.

목표: 레지스터를 직접 읽고 쓰는 코드를 스스로 짤 수 있다.

다음 과목 자료구조와 알고리즘컴퓨터구조

지도에서 보기 →
  1. 변수와 자료형

    int 대신 uint8_t, int16_t처럼 크기가 정해진 자료형을 쓰는 이유와 부호, 오버플로를 봅니다.

  2. 연산자와 형변환

    정수 나눗셈, 암묵적 형변환, 연산자 우선순위처럼 버그가 잘 숨는 곳을 짚습니다.

  3. 제어문

    if, switch, for, while로 흐름을 만들고, 무한 루프가 펌웨어의 기본 골격인 이유를 봅니다.

  4. 함수와 스코프

    값이 복사되어 전달된다는 점, 지역·전역 변수의 수명, 재귀가 MCU에서 위험한 이유.

  5. 배열과 문자열

    메모리에 연속으로 놓인 데이터와 널 문자로 끝나는 문자열. 버퍼 넘침이 생기는 원리.

  6. 포인터

    주소를 담는 변수입니다. 특정 주소를 직접 읽고 쓰는 것이 레지스터 제어의 전부입니다.

  7. 포인터 심화와 함수 포인터

    포인터 연산, 이중 포인터, 콜백과 상태 머신에 쓰는 함수 포인터.

  8. 구조체, 공용체, 비트필드

    레지스터 묶음과 통신 패킷을 구조체로 표현하고, 메모리 정렬과 패딩을 확인합니다.

  9. 비트 연산

    AND로 지우고, OR로 켜고, XOR로 뒤집고, 시프트로 자리를 옮깁니다.

  10. volatile, const, static

    최적화를 막는 volatile, 값을 고정하는 const, 범위와 수명을 바꾸는 static.

  11. 전처리기와 매크로

    #define, 조건부 컴파일, 헤더 가드, 매크로가 만드는 함정.

  12. 빌드 과정

    전처리, 컴파일, 어셈블, 링크를 거쳐 실행 파일이 되는 흐름과 링크 오류 읽는 법.