Devin.KR

임베디드·펌웨어 부트캠프

PC 시뮬레이션 HAL로 센서 기록기와 상태 표시 장치를 만들며 C·입출력·통신·복구·자원 검증을 익힙니다.

대상
국비 웹 과정 수료생과 비전공 입문자를 위한 과정입니다.
시작 전
변수·조건·반복과 터미널 실행부터 시작합니다. C·전자회로 경험은 요구하지 않습니다. 로컬 단계에는 gcc 명령으로 실행 가능한 C 컴파일러·make·Python 3·LLDB가 필요하며 맥의 gcc가 Apple Clang인지 기록합니다. 외부 Python 패키지·실물 장치·ROS 2는 사용하지 않습니다.
학습 시간
140시간 안팎

트랙 프로젝트

센서 기록기와 상태 표시 장치

버튼으로 기록을 시작하고 주기적으로 센서를 읽어 UART 전송·SPI 저장·LED 표시를 수행합니다. 분리·시간 초과·과부하를 복구하고 조건별 측정 근거를 남깁니다.

수료하면 할 수 있는 일

  • C 배열·포인터·객체 수명과 빌드 오류를 직접 추적합니다.
  • PC HAL에서 GPIO·타이머·인터럽트·센서 통신을 구현합니다.
  • 상태 전이·큐·경쟁 조건·오류 복구를 반복 시험합니다.
  • 호스트 응답 시간과 메모리 사용을 측정하고 전력 모델의 추정값 및 실물 검증 한계를 설명합니다.
진도 0%

모듈

  1. PC에서 시작하는 센서 기록기

    터미널·변수·조건·반복을 익히고 가짜 센서 입력을 읽는 첫 C 프로그램을 만듭니다.

    10시간 안팎

    표준 입력의 정수 샘플을 검사하는 C CLI와 Makefile을 작성하고 실행 환경·빌드 단계·링크 오류 원인을 README.md에 남깁니다.

  2. 배열·포인터와 안전한 샘플 버퍼

    고정 크기 기록 버퍼를 만들고 경계·객체 수명·메모리 오류를 추적합니다.

    14시간 안팎

    앞 모듈의 샘플을 timestamp_ms·raw 구조체 16개 버퍼에 보관하고 길이·소유권 계약 및 디버거 관찰 기록을 추가합니다.

  3. 비트 연산과 시뮬레이션 HAL

    하드웨어 의존 부분을 분리하고 가짜 레지스터로 필요한 비트만 변경합니다.

    12시간 안팎

    기록기에 hal_gpio_read·hal_gpio_write·hal_now_ms 인터페이스를 붙이고 핀·가짜 레지스터·시간 입력 구성을 문서화합니다.

  4. GPIO와 버튼 상태 표시

    입력 튐을 제거하고 기록 시작·정지와 LED 표시를 연결합니다.

    12시간 안팎

    앞 모듈 HAL과 버퍼에 버튼 토글 및 LED 상태 표시를 추가하고 튐 이벤트 fixture를 보관합니다.

  5. 타이머·인터럽트와 주기 수집

    가상 시간으로 주기 작업을 만들고 인터럽트의 긴 처리를 메인 루프로 옮깁니다.

    14시간 안팎

    버튼 기록기에 100ms 타이머·가상 ISR·용량 8 이벤트 큐를 추가하고 출력 작업을 인터럽트 밖에 둡니다.

  6. 데이터시트와 센서 통신

    전압·주소·형식을 읽어 I2C 센서와 UART·SPI 시뮬레이터를 연결합니다.

    16시간 안팎

    100ms 수집 경로에 가상 I2C 온도 센서·ADC 보조 입력·UART 전송·SPI 저장 HAL을 붙이고 연결 및 통신 규격을 작성합니다.

  7. 상태 머신과 오류 복구

    대기·측정·전송·복구 흐름을 정의하고 오래된 센서 값의 사용을 막습니다.

    14시간 안팎

    통신 기록기를 IDLE·MEASURE·TRANSMIT·RECOVER·ERROR 상태로 구성하고 재시도·오래된 값·오류 LED 정책을 추가합니다.

  8. RTOS 사고법과 공유 데이터 검증

    태스크·큐·동기화 개념을 PC 모델에 적용하고 경쟁 조건을 재현합니다.

    14시간 안팎

    상태 머신 수집·전송을 용량 16 생산자·소비자 큐로 분리하고 PC pthread 검사 및 결정적 태스크 모델을 추가합니다.

  9. 응답 시간·메모리와 전력 모델

    조건을 고정해 PC 실행을 측정하고 모델에서 자원·절전의 한계를 계산합니다.

    16시간 안팎

    앞 모듈 기록기에 지연·큐 최고점·정적 메모리·가상 에너지 보고서를 추가하고 PC 실측과 장치 모델 추정을 분리합니다.

  10. 통합 검증과 신입 포트폴리오

    센서 기록기 전체를 반복 검증하고 구성·통신·오류·측정 근거를 인계합니다.

    18시간 안팎

    전체 누적 소스를 통합하여 make test 한 번으로 검증하고 구성도·통신 규격·오류 재현 기록·측정 보고서·면접 근거를 evidence/에 정리합니다.

신입 기본기 대응표

영역완료 기준모듈
C와 메모리
  • 포인터, 배열, 구조체와 객체의 수명을 코드로 설명합니다.
  • 비트 연산으로 레지스터의 필요한 비트만 읽거나 변경합니다.
m02-memory-recordsm03-register-hal
빌드와 디버깅
  • 컴파일과 링크의 역할을 구분하고 오류 메시지를 확인합니다.
  • 디버거의 중단점과 변수 관찰로 메모리 접근 오류를 추적합니다.
m01-pc-workbenchm02-memory-records
장치 입출력
  • GPIO 입력과 출력을 구성하고 버튼 입력의 튐 현상을 확인합니다.
  • 타이머와 인터럽트로 주기 작업을 구현하고 처리 시간을 짧게 유지합니다.
m04-gpio-buttonm05-timer-events
센서와 통신
  • 데이터시트에서 전압 조건, 주소와 데이터 형식을 찾습니다.
  • UART, I2C, SPI 중 사용한 통신의 연결과 오류 확인 방법을 설명합니다.
m06-sensor-busesm07-state-recovery
상태와 동시성
  • 대기, 측정, 전송과 오류 복구를 상태 머신으로 표현합니다.
  • 인터럽트나 RTOS 태스크가 공유하는 데이터의 경쟁 조건을 설명합니다.
m07-state-recoverym08-concurrency-queues
측정과 검증
  • 응답 시간, 메모리 사용과 전력 소비를 조건과 함께 측정합니다.
  • 장치 연결 해제와 통신 시간 초과를 시험하고 복구 동작을 기록합니다.
m09-resource-measurementm10-release-evidence

면접 질문 대응

  • 배열과 포인터를 사용할 때 메모리 오류를 확인하는 방법을 설명해 주시면 됩니다. m02-memory-records
  • 특정 레지스터 비트만 바꾸는 코드를 설명해 주시면 됩니다. m03-register-hal
  • 컴파일은 성공했지만 링크가 실패한 상황을 설명해 주시면 됩니다. m01-pc-workbench
  • 버튼을 한 번 눌렀는데 여러 번 감지되는 이유를 설명해 주시면 됩니다. m04-gpio-button
  • 센서가 응답하지 않을 때 점검할 순서를 설명해 주시면 됩니다. m06-sensor-busesm07-state-recovery
  • 센서 기록기의 상태 머신을 설명해 주시면 됩니다. m07-state-recovery