이 블로그는 임베디드 컴퓨터를 이용한 장치(시스템) 개발과 원격제어에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Microchip 사의 ATmega128를 사용한 보드와 Arduino Mega 보드(ATmega2560), Raspberry Pi, Raspberry Pi Pico, WiFi 모듈을 사용 합니다.

ATmega128-develop-vs-code-env

ATmega128 develop Environment
  VS Code를 이용한 ATmega128 개발 환경



  • 개인용 컴퓨터(PC)와 교육용 임베디드 보오드 (ATmega128)를 사용 한 개발 환경
  • Embedded Microcomputer
    • 이 예에서 사용 하는 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 등)를 내장 하고 있다.
    • 임베디드 컴퓨터 시스템 페이지를 참고 바람.
  • Uploader
    • 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" 페이지를 참고 바람.
  • Boot Loader
    • Embedded Computer의 Boot 메모리 영역에 설치되어 PC에 설치된 Uploader와 통신 하며 실행 코드를 Embedded Computer로 Up Load 할 수 있게 하는 프로그램.

  • VS Code를 이용한 ATmega128 개발 환경
  • 기존에는 Microchip Studio 기반으로 개발하는 경우가 많았지만, Microchip에서 Microchip Studio를 더이상 개선하지 않기 때문에 최근에는 Visual Studio Code(VS Code) 를 이용하여 보다 가볍운 개발 환경을 구축하는 방법이 많이 사용된다.

    • Visual Studio와 VS Code 비교
    • Microchip Studio 이외에 일반적인 개발환경으로 Visual Studio 또는 VS Code를 사용할 수 있지만 이 페이지에서는 아래와 같은 이유로 VS Code를 개발 환경으로 사용한다.

      • Visual Studio와 VS Code 비교
        • 항목 Visual Studio VS Code
          설치 용량 작음
          실행 속도 상대적으로 느림 빠름
          확장성 높음 매우 높음
          임베디드 개발 복잡 쉬움
          AVR Toolchain 구성 수동 설정 많음 자동 설정 가능
          초보자 접근성 중간 높음
      • 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를 재 시작하여야 한다.

          주: 한국에서 설치하는 경우 기본으로 언어팩이 설치되어 있을 수 있다.


    • VS Code C/C++ 확장팩(ms-vscode.cpptools) 설치
      • Extensions (Ctrl+Shift+X)을 실행하고 검색창에 "C/C++" 입력한다.
      • 설치 항목 "C/C++ IntelliSense, debugging, and code browsing"를 선택하여 설치한다.
      • 주: 설치 후 VS Code를 재 시작하여야 한다.

      • 제공 기능
        • 코드 자동 완성, 구문 강조
        • 디버깅(중단점, 변수 확인)
        • 코드 탐색(함수 정의로 이동) 기능
        • 오류 표시
    • PlatformIO 설치
      • PlatformIO는 임베디드 개발을 쉽게 만들어주는 통합 개발 환경이기 때문에 AVR 개발 도구를 각각 설치하는 것 보다 임베디드 개발 통합 환경인 PlatformIO를 설치하는 것을 권장한다.

      • PlatformIO 설치 시 함께 설치되는 개발 도구
        • AVR-GCC
        • AVRDUDE
        • Build System
        • Upload Toolchain
        • Library Manager
      • PlatformIO 설치 하기
        • Extensions (Ctrl+Shift+X)을 실행하고 검색창에 "PlatformIO" 입력한다.
        • 설치 항목 "PlatformIO IDE"를 선택하여 설치한다.
        • 주: 설치 후 VS Code를 재 시작하여야 한다.

      • 설치를 완료하면 아래 환경이 자동으로 생성된다.
        • 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 하는 프로그램 예.
          • "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로 변경 한다.


    • AVRDUDE 업데이트 (선택 사항)
      • PlatformIO 설치 시 avrdude 버전이 개발보드에 설치된 optiboot Bootloader 보다 버전이 낮은 경우 에러가 발생할 수 있다.

      • 개발 보드에 optiboot Bootloader 설치 하기
      • AVRISP mkII를 사용 하여 ATmega128에 optiboot Bootloader 설치 하기를 참고하여 개발 보드에 optiboot Bootloader 설치한다. 이미 개발 보드에 optiboot Bootloader가 설치되어 있는 경우에는 다시 설치할 필요가 없음.

      • avrdude 업데이트
        • "Atmel Studio7 환경에서 ATmega128에 Hex File을 Load 하기"를 참고하여 avrdude를 다운로드 한다.
        • 다운로드한 avrdude(avrdude.exe 와 avrdude.conf)를 PlatformIO avrdude 설치 폴더(C:\Users\chowk\.platformio\packages\tool-avrdude)에 복사한다.
        • 주: 기존 avrdude는 avrdude-old.exe , avrdude-old.conf 와 같이 이름을 변경한다.

        • package.json를 복사하여 Backup 하고, 편집기로 package.json를 열어 버전을 새로 복사한 avrdude 버전으로 변경한다.