machine-archive 2025. 2. 24. 23:50

1. 전반적인 개요

  • 전자 장치의 제어:
    오늘날 대부분의 전자 제품은 소프트웨어에 의해 제어됩니다. 이 소프트웨어는 제품마다 고유의 기능만을 수행하도록 설계되어 있으며, 그 실행은 MCU(마이크로 컨트롤러 유닛)가 담당합니다.

  • MCU의 역할:
    MCU 내부의 CPU는 실제로 소프트웨어(명령어)를 한 줄씩 읽고 실행합니다. 다만, CPU는 고급 언어(C 등)를 바로 이해하지 못하고 오직 어셈블리어(또는 기계어)만 해석할 수 있습니다.

2. 소프트웨어와 빌드 프로세스

  • 소스 코드와 명령어:
    소프트웨어는 개발자가 C 같은 고급 언어로 작성한 코드로 구성되며, 이는 "컴퓨터에게 동작을 지시하는 명령어 모음"입니다.

  • 빌드(Build) 과정:
    • 컴파일: C 코드가 CPU가 이해할 수 없는 고급 언어에서 어셈블리어로 변환됩니다.
    • 어셈블: 어셈블리어를 기계어로 변환하는 단계입니다.
    • 링크(Link): 여러 개의 기계어 코드들을 하나의 실행 파일(주로 .hex 또는 .elf 파일)로 결합합니다.
      최종 산출물은 MCU가 실행할 수 있는 형태의 기계 코드입니다.


3. 메모리와 코드 다운로드

  • 메모리 구성:
    • Flash 메모리:
      비휘발성으로, 한 번 저장되면 전원이 꺼져도 내용이 유지됩니다. MCU의 실행 코드(빌드 결과물)가 저장됩니다.
    • RAM:
      휘발성으로 전원 차단 시 내용이 사라지며, 주로 임시 데이터 저장에 사용됩니다.
      MCU_SW_Deveopment_2강, 교안02_MCU SW에 대하여_워터마크
  • 코드 다운로드:
    개발자의 PC에서 빌드된 .hex 또는 .elf 파일을 MCU의 Flash 메모리로 옮기는 작업이 필요합니다. 이 작업은 별도의 하드웨어 장치(디버거)를 통해 수행됩니다.


4. 디버깅과 개발 도구

  • 디버거의 역할:
    • 코드 다운로드: PC에서 생성된 파일을 MCU에 전송합니다.
    • 실시간 디버깅: MCU 내부에서 소프트웨어가 어떻게 실행되고 있는지, 변수의 값은 얼마인지 등 실행 상태를 모니터링하여 오류를 찾아내고 수정할 수 있도록 도와줍니다.

  • 주요 디버거 예시:
    • TI의 XDS110
    • ST의 ST-Link
    • Trace32
      각 디버거는 지원하는 MCU 종류와 제공 기능에 차이가 있으므로, 사용하는 MCU에 맞게 선택해야 합니다.

  • 개발 환경 구성:
    MCU 소프트웨어 개발에는 PC에 설치된 **컴파일러(빌드 도구)**와 디버깅 소프트웨어가 필요합니다. 회사나 MCU 제조사가 권장하는 도구를 사용하는 경우가 많습니다.


5. 핵심 키워드 정리

  • 소스코드: 개발자가 작성한 명령어 집합.
  • 빌드(컴파일): 소스코드를 CPU가 이해할 수 있는 기계어로 변환하는 과정.
  • .hex / .elf 파일: 빌드 결과물로, MCU에서 실행 가능한 파일.
  • Flash 메모리: 비휘발성 메모리로, 코드 저장용.
  • RAM: 휘발성 메모리로, 임시 데이터 저장용.
  • 디버거: 코드 다운로드 및 디버깅을 위한 하드웨어/소프트웨어 도구.
  • 컴파일러: 빌드 과정을 담당하는 소프트웨어.