SW란?
컴퓨터에게 동작 방법을 지시하는 명령어 집합의 모음
MCU가 SW를 실행하는 과정
MCU는 C언어(or Java 등)을 실행할 수 없으며, MCU가 이해할 수 있는 명령어인 어셈블리어 혹은 기계어로 변환해주어야 합니다.
따라서, (컴파일러 + 어셈블러 + 링커)를 사용하여 어센블리어 or 기계어로 변환해 주어 이 언어로 변환된 코드가 담겨있는 .hex 파일 or .elf 파일 생성되며 이 과정을 빌드라고 합니다.
CPU는 비휘발성의 특징을 가지는 Flash 메모리와 휘발성의 특징을 가지는 RAM 메모리에 Data를 저장할 수 있는데, 코드를 실행시키기 위해서는 .hex 파일과 .elf 파일을 Flash 메모리로 옮겨야 한다.
PC에 있는 파일을 MCU로 옮기기 위해서 디버거라는 장치를 이용하며 파일을 옮기는 것 이외에도 디버깅 기능을 위한 기능을 제공한다.

Debugging이란 개발자가 의도하지 않은 결과나 오류를 해결하는 작업을 의미한다.
PC에서는 디버깅하는 과정이 간편하지만, MCU에는 사용자가 볼 수 있는 화면이 없기 때문에 디버깅이 힘듦.
따라서, 디버거와 PC에 설치된 디버깅 SW를 이용해서 현재 실행되는 코드가 어떤 명령어를 처리하고 있는지, 현재 메모리에는 어떤 값들이 담겨있는 지를 확인할 수 있습니다.

MCU에 따라 지원하는 컴파일러와 디버거가 상이할 수 있기 때문에, 타겟 MCU에 따라서 적절한 컴파일러와 디버거를 선정할 줄 알아야 합니다.