Control Engineering/Embedded SW Development
MCU SW Development 2
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에 대하여_워터마크
- Flash 메모리:
- 코드 다운로드:
개발자의 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: 휘발성 메모리로, 임시 데이터 저장용.
- 디버거: 코드 다운로드 및 디버깅을 위한 하드웨어/소프트웨어 도구.
- 컴파일러: 빌드 과정을 담당하는 소프트웨어.