- 개인용 컴퓨터(PC)와 교육용 임베디드 보오드 (ATmega128)를 사용 한 개발 환경
- Embedded Microcomputer
- Uploader
- Boot Loader
- VS Code를 이용한 ATmega128 개발 환경
- 이 예에서 사용 하는 ATmega128 Microcontroller( 이 칩이 Computer로 이용 되기 보다는 장치의 제어에 이용 되기 때문에 이 칩의 제조사인 Atmel 사에서는 이 칩을 Microcontroller 라고 한다.)의 중요 Spec.은 아래와 같다.
- 32개의 8 Bits Registers
- 128K Bytes Flash Memory
- 4K Bytes Internal SRAM
- 53 개의 Programmable I/O Line
- 기타 통신과 제어에 사용되는 IP( Timer, UART 등)를 내장 하고 있다.
- 임베디드 컴퓨터 시스템 페이지를 참고 바람.
- PC에 설치된 개발용 Tool(IDE)을 사용 하여 개발된 실행 File(Embedded Computer에서 실행 됨)을 Embedded Computer로 Up Load 하는 Software Tool.
- Uploader가 실행 코드를 Embedded Computer로 Up Load 하기 위하여는 Uploader 와 Embedded Computer 사이에 통신이 가능 하게 하는 Boot Loader 프로그램이 Embedded Computer에 설치 되어 있어야 한다.
- "Hex File Upload Tool과 Bootloader" 페이지를 참고 바람.
- Embedded Computer의 Boot 메모리 영역에 설치되어 PC에 설치된 Uploader와 통신 하며 실행 코드를 Embedded Computer로 Up Load 할 수 있게 하는 프로그램.
기존에는 Microchip Studio 기반으로 개발하는 경우가 많았지만, Microchip에서 Microchip Studio를 더이상 개선하지 않기 때문에 최근에는 Visual Studio Code(VS Code) 를 이용하여 보다 가볍운 개발 환경을 구축하는 방법이 많이 사용된다.
- Visual Studio와 VS Code 비교
- Visual Studio와 VS Code 비교
- VS Code 환경의 장점
- 빠른 실행 속도
- 가벼운 개발 환경
- 강력한 코드 자동완성(IntelliSense)
- 다양한 확장 기능 지원
- Git 연동 편리
- PlatformIO 기반 자동 빌드 환경 제공
- Windows / Linux / MacOS 모두 사용 가능
- 결론: ATmega128 개발 환경에는 VS Code + PlatformIO 조합이 매우 적합하다.
- VS Code 설치
- 다운로드
- Visual Studio Code사이트에서 다운로드하여 기본 옵션으로 설치한다.
- 설치 도중 권장하는 체크: PATH 등록
- VS Code 실행하면 아래 예와 같은 창이 열린다
- 한글 언어팩 설치: 초보자의 편의를 위해 한글화 권장
- Extensions (Ctrl+Shift+X)을 실행하고 검색창에 "korean" 입력한다.
- 설치 항목 "Korean Language Pack for Visual Studio"를 선택하여 설치한다.
- VS Code C/C++ 확장팩(ms-vscode.cpptools) 설치
- Extensions (Ctrl+Shift+X)을 실행하고 검색창에 "C/C++" 입력한다.
- 설치 항목 "C/C++ IntelliSense, debugging, and code browsing"를 선택하여 설치한다.
- 제공 기능
- 코드 자동 완성, 구문 강조
- 디버깅(중단점, 변수 확인)
- 코드 탐색(함수 정의로 이동) 기능
- 오류 표시
- PlatformIO 설치
- PlatformIO 설치 시 함께 설치되는 개발 도구
- AVR-GCC
- AVRDUDE
- Build System
- Upload Toolchain
- Library Manager
- PlatformIO 설치 하기
- Extensions (Ctrl+Shift+X)을 실행하고 검색창에 "PlatformIO" 입력한다.
- 설치 항목 "PlatformIO IDE"를 선택하여 설치한다.
- 설치를 완료하면 아래 환경이 자동으로 생성된다.
- avr-gcc
- avr-libc
- make system
- upload tool
- ATmega128 프로젝트 생성
- PlatformIO Home 열기: 왼쪽 사이드바의 외계인 로고(PlatformIO 아이콘)를 클릭한 후, PIO Home -> Open을 클릭한다.
- 새 프로젝트 생성: "Welcome to PlatformIO" 창의 "Quick Access" 항목중 "New Project" 버튼을 클릭한다.
- 프로젝트 구성 설정
- Name: 프로젝트 이름을 입력 한다(예: ATmega128_Test).
- Board: "ATmega128/A(MicroChip)"를 검색하여 선택한다.
- Framework: 기본적으로 "Arduino" 로 설정되어 있기 때문에 Arduino 환경을 사용하지 않는 경우, platformio.ini 설정 시 "None" (순수 AVR-GCC C/C++ 사용 시) 또는 Framework 설정을 삭제하여야 한다.
- Location: 기본값 사용 또는 체크 해제 하고 아래에 열리는 탐색창에서 Project 위치를 검색하여 선택한다.
- Project 설정이 완료되면 Project가 생성되고 새로 설정한 폴더의 사용을 확인하는 질의 창이 열린다. 이 창에서 "Yes" 버튼을 클릭하면 새로운 Project 가 생성되고 Project 환경을 설정하는 "platformio.ini" 창이 열린다.
- 기본으로 생성되는 Source code(main.cpp)는 좌측 Explorer 창 "src" 폴더에서 확인할 수 있다.:
- platformio.ini 설정
- Cross C/C++ Compiler 를 포함하고 있기 때문에 C와 C++언어로 작성된 프로그램을 Cross Compiler 하여 AVR에서 실행되는 파일로 만들 수 있다.
- 코드 작성 예
- PORTF 에 연결된 LED를 0.5초 간격으로 반복하여 ON → OFF 하는 프로그램 예.
- 빌드 및 업로드
- 빌드: 하단 상태 표시줄의 체크 표시(✓) 아이콘을 클릭한다.
- 업로드: 하단 상태 표시줄의 화살표(→) 아이콘을 클릭하여 보드에 실행 파일을 업로드한다. 업로드가 성공적으로 실행되면 프로그램이 자동으로 실행된다.
- AVRDUDE 업데이트 (선택 사항)
- 개발 보드에 optiboot Bootloader 설치 하기
- avrdude 업데이트
- "Atmel Studio7 환경에서 ATmega128에 Hex File을 Load 하기"를 참고하여 avrdude를 다운로드 한다.
- 다운로드한 avrdude(avrdude.exe 와 avrdude.conf)를 PlatformIO avrdude 설치 폴더(C:\Users\chowk\.platformio\packages\tool-avrdude)에 복사한다.
- package.json를 복사하여 Backup 하고, 편집기로 package.json를 열어 버전을 새로 복사한 avrdude 버전으로 변경한다.
Microchip Studio 이외에 일반적인 개발환경으로 Visual Studio 또는 VS Code를 사용할 수 있지만 이 페이지에서는 아래와 같은 이유로 VS Code를 개발 환경으로 사용한다.
| 항목 | Visual Studio | VS Code |
|---|---|---|
| 설치 용량 | 큼 | 작음 |
| 실행 속도 | 상대적으로 느림 | 빠름 |
| 확장성 | 높음 | 매우 높음 |
| 임베디드 개발 | 복잡 | 쉬움 |
| AVR Toolchain 구성 | 수동 설정 많음 | 자동 설정 가능 |
| 초보자 접근성 | 중간 | 높음 |
주: 설치 후 VS Code를 재 시작하여야 한다.
주: 한국에서 설치하는 경우 기본으로 언어팩이 설치되어 있을 수 있다.
주: 설치 후 VS Code를 재 시작하여야 한다.
PlatformIO는 임베디드 개발을 쉽게 만들어주는 통합 개발 환경이기 때문에 AVR 개발 도구를 각각 설치하는 것 보다 임베디드 개발 통합 환경인 PlatformIO를 설치하는 것을 권장한다.
주: 설치 후 VS Code를 재 시작하여야 한다.
"Project name -> src" 폴더에 있는 main.cpp 파일을 열고 아래 예제 프로그램을 main.cpp에 복사 한다.
Cross C/C++ Compiler 를 포함하고 있기 때문에 C와 C++언어로 작성된 프로그램을 Cross Compile(AVR에서 실행되는 파일로 빌드)하여 바로 업로드 할 수 있다.
참고: 아두이노 프레임워크가 필요 없는 순수 AVR-GCC C 프로젝트를 원할 경우, platformio.ini에서 framework = arduino 줄을 삭제하고, main.cpp를 main.c로 변경한 다음 프로그램을 작성한다.
main.cpp rename 하기: Explorer 창에서 main.cpp 위에 커서를 위치하고, 마우스 오른쪽 버튼을 클릭하면 명령 선택창이 열린다. 이 창에서 rename... 명령을 선택하여 main.c로 변경 한다.
PlatformIO 설치 시 avrdude 버전이 개발보드에 설치된 optiboot Bootloader 보다 버전이 낮은 경우 에러가 발생할 수 있다.
주: 기존 avrdude는 avrdude-old.exe , avrdude-old.conf 와 같이 이름을 변경한다.

