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

ATmega128-optiboot-install

ATmega128에 optiboot 설치 하기

Microchip Studio 7에서 AVRDUDE를 이용하여 ATmega128에 Hex File을 Upload 하기

Microchip Studio 7(Atmel Studio 7) 환경 또는 아두이노(Arduino) 개발 환경에서 ATmega128 보오드를 개발 보오드로 사용 하기 위하여는 개발한 프로그램의 실행 File(Hex Format File)을 ATmega128에 Upload 하는 Tool(Bootloader)이 필요하다.

여기서는 Atmel Studio 7 환경과 아두이노(Arduino) 개발 환경에서 함께 사용 할 수 있는 optiboot Bootloader를 ATmega128에 설치 하고 사용 하는 방법에 대하여 설명 한다.

  • AVRDUDE를 이용 하기 위한 Reset 회로
  • optiboot Bootloader를 이용 하여 Hex File를 load 하는 Tool인 AVRDUDE는 UART 통신의 DTR 신호을 개발 보오드의 Reset 신호 제어에 사용 하기 때문에 개발 보오드의 Reset 회로가 아래 그림과 같이 구성 되어 있어야 한다. KHUEE Board는 Reset 회로가 다르기 때문에 필요한 경우 회로를 변경 하여야 한다.

    • AVRDUDE를 사용 하기 위한 Reset 회로 예

    • AVRDUDE를 사용 하기 위한 USB - UART 변환 모듈과 개발보드의 회로 구성
      • 컴퓨터(USB --> UART(RS232) 변환 모듈)의 RXD와 Atmega128 개발보드의 TXD0(PE1)를 연결한다.
      • 컴퓨터(USB --> UART(RS232) 변환 모듈)의 TXD와 Atmega128 개발보드의 RXD0(PE0)를 연결한다.
      • 컴퓨터(USB --> UART(RS232) 변환 모듈)의 DTR과 Atmega128 개발보드의 DTR을 연결한다.
      • 컴퓨터(USB --> UART(RS232)의 GND와 Atmega128의 GND를 연결한다.
      • Atmega128 개발 보드에서 컴퓨터(USB --> UART(RS232)의 전원(5V)을 사용하는 경우 USB --> UART(RS232)의 Vdd와 Atmega128의 Vdd를 연결한다.
      • 주: Arduino Mega 2560 보오드는 USB - UART 변환 모듈을 내장하고 있기 때문에 별도의 회로 구성이 필요 없다.

  • AVRISP mkII를 사용 하여 ATmega128에 optiboot Bootloader 설치 하기
    • optiboot_atmega128_16MHz.hex를 다운로드 하여 적당한 위치에 저장 한다.
    • 참고자료: https://github.com/Optiboot/optiboot

    • AVRISP mkII와 개발 보오드의 ISP Port를 연결 한다.
    • AVRISP mkII를 Atmel Studio 7이 설치된 컴퓨터의 USB 포트에 연결 한다.
    • Atmel Studio 7을 실행 하고 "Tools -> Device Programming" 실행 하면 아래와 같이 Device Programming 창이 열린다.
    • Device Programming 창 예


      • Tool 목록상자에서 AVRISP mkII을 선택 한다.
      • Device 목록상자에서 ATmega128을 선택 한다.
      • Interface 목록상자에서 ISP을 선택 선택 하고,
      • Apply 버튼을 Click.
      • Device signature "Read" 버튼을 Click.
      • Fuses 창 선택을 Click 하면 아래와 같이 Fuses 설정 창이 열린다.
        • Fuse Register 설정 창에서 다음과 같이 설정 한다.
          • EXTENDED: 0xFF
          • HIGH: oxC6
          • LOW: oxBF
          • "Program" 버튼을 Click 하고, 메세지 창에서 아래 그림과 같이 "OK" 메세지가 출력 되었는지 확인 한다.
        • Fuse Register 설정 창 예


      • Memories 창 선택을 Click 하면 아래와 같이 Flash 메모리에 Program을 Load 하는 창이 열린다.
        • Flash (128KB) 아래 창에 위에서 Down Load하여 저장한 optiboot_atmega128_16MHz.hex File을 선택 한다.
        • "Program" 버튼을 Click.
        • "Program" 버튼을 Click 하고, 메세지 창에서 아래 그림과 같이 "OK" 메세지가 출력 되었는지 확인 한다.
      • 위 과정이 정상으로 진행 되면 ATmega128의 Boot Memory 영역에 Bootloader 가 정상적으로 설치 되었기 때문에 아래와 같이 Atmel Studio7 환경과 Arduino 환경에서 ATmega128에 Hex File을 Load 할 수 있다.
      • Flash 메모리에 Program을 Loading 하기 위한 설정 예



  • Atmel Studio7 환경에서 ATmega128에 Hex File을 Load 하기
    • Atmel Studio 7 환경에서 ATmega128 보오드(또는 아두이노(Arduino) 보드)를 개발 보오드로 사용 하기 위한 준비
      • Atmel Studio 7을 설치 한다.
      • Arduino 개발 환경 Tool(Arduino IDE)을 설치 한다.
      • Arduino IDE를 설치하지 않는 경우에는 별도로 avrdude를 다운로드 하여 설치 하여야 한다.
        • "avrdude(Arduino IDE)"를 다운로드 하여 적당한 위치에 저장 한다.
        • 참고자료: https://github.com/avrdudes/avrdude

        • 다운로드한 File에는 avrdude.exe과 avrdude.conf File이 포함되어 있다.
        • c:\ 에 적당한 이름의 폴더를 만들고 다운로드한 avrdude.exe 과 avrdude.conf FIle의 복사 한다.
        • C:\avrdude\ 폴더에 복사한 경우 예: C:\avrdude\avrdude.exe C:\avrdude\avrdude.conf

      • ATmega 128 보오드를 연결 하고 장치 관리자에서 COM Port 번호를 확인 한다.
      • 아래 그림의 예에서 COM Port 번호는 12 번 임.


    • Atmel Studio 7에 실행 파일(Hex Format File)을 다운로드 하는 Tool(avrdude)을 사용 할 수 있게 설정 하기
      • Atmel Studio 7을 실행 하고, "Tools > External Tools" 을 Click 하면 Exernal tool 창이 열린다.
      • Exernal tool 창에서 "Add"를 Click 하고
      • Title Box에 Tool 이름(예: "ATmega 128 Programmer")를 입력 한다.
      • Command Box에 avrdude.exe File의 경로를 입력 한다.
        • Arduino를 C:\Program Files (x86)에 설치한 경우 avrdude.exe File의 경로는
        • C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe 이다.

        • Arduino를 설치 하지 않은 경우 avrdude.exe File의 경로 예는 아래와 같다.
        • C:\avrdude\avrdude.exe

      • Arguments Box에 avrdude Configuration File의 경로와 설정 옵션 입력 한다.
        • Arduino를 C:\Program Files (x86)에 설치한 경우 avrdude.conf File의 경로는
        • C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf 이고,

          Arguments Box에 입력 되는 Arguments의 예는 아래와 같다.

          -v -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p atmega128 -c arduino -P COM12 -D -U flash:w:$(TargetDir)\$(TargetName).hex:i

        • Arduino를 설치 하지 않은 경우 avrdude.conf File의 경로 설정 예
        • C:\avrdude\avrdude.conf

          이 경우 Arguments Box에 입력 되는 Arguments의 예는 아래와 같다.

          -v -C "C:\avrdude\avrdude.conf" -p atmega128 -c arduino -P COM12 -D -U flash:w:$(TargetDir)\$(TargetName).hex:i

          아래 그림은 External Tool로 avrdude를 사용 하기 위한 설정 예 이다.


    • ATmega128에 Upload 하기
      • 위와 같은 설정으로 이제 Tool 메뉴에 ATmega 128 Programmer 명령이 포함 되었기 때문에
      • Tool -> ATmega 128 Programmer 명령으로
      • Studio 7에서 개발된 프로그램의 실행 파일(.Hex)을 ATmega 128에 Upload 할 수 있다.
      • 만약 .Hex File은 정상으로 Upload 되고 프로그램이 자동으로 실행 되지 않는 경우(Reset 신호 전달 문제로 가끔 이런 문제가 발생 될 수 있다.)는 보오드의 Reset 스윗치를 누르면 프로그램이 실행 된다.

  • Arduino 환경에서 ATmega128에 Hex File을 Load 하기
  • Arduino IDE에서 ATmega128 보오드에 "스케치 -> 업로드" 명령으로 Hex File을 Load 하기 위하여는 ATmega128 보오드에 optiboot Bootloader를 설치 하고, ATmega128의 Hardware 정보(Clock 등 보오드 정보와 Pin 정보)를 Arduino IDE에 설정 하여야 한다.

    • optiboot Bootloader 설치
    • 이 페이지 위에 있는 "AVRISP mkII를 사용 하여 optiboot Bootloader 설치 하기"를 참고하기 바람.

    • Arduino IDE 환경에서 KHU-EE Board를 사용 하기 위한 설정
      • Arduino IDE을 실행 하고 Arduino IDE에서 "툴 -> 보드 -> 보드 메니저..." 명령을 실행 하면 보드 메니저 창이 열린다.
      • 보드 메니저 창의 "검색에 필터 하기... " 에 "MegaCore" 를 입력 하면 ATmega128 이 포함된 패키지가 표시된다. 이 패키지를 선택 하여 설치 한다.

    • ATmega128에 Hex File을 Load 하기
      • 툴 메뉴에서 보오드 정보를 다음과 같이 선택 한다.
        • 보드: "ATmega128"
        • BOD: "2.7V"
        • Clock: "16MHz external"
        • Compiler LTO: "Disabled"
        • 포트: USB-Seral 변환 장치의 COM 포트 번호로 맞춘다. (윈도우 [장치 관리자]에서 확인)
        • 프로그래머: "Atmel STK500 developement board"
      • ATmega128 보오드에서 실행 할 Progarm을 작성 하고 "스케치 -> 업로드" 명령을 실행 한다.
      • 위 과정이 성공적이 경우 Arduino의 메세지 창에 "스케치를 컴파일 중..." 메세지 가 표시되고 이어서 "업로드 완료." 메세지가 표시 된다.