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

Boot Loader

Boot loader
Hex File Upload Tool과 Bootloader




  • AVR에 사용 하는 Hex File Upload Tool과 Bootloader
    • AVRISP mkII
    • MicroChip사에서 제공 하는 Tool로 Atmel Studio 개발 환경에서 Hex File을 개발 보오드에 Upload 하는 별도의 장치이다.

      ISP, PDI, TPI Interface 단자를 갖고 있기 때문에 다양한 종류의 AVR MCU 개발에 사용 할 수 있고, 국내에서 여러 종류의 값 싼 호환 보오드를 구매 할 수 있다.

      개발 보오드와 다른 별도의 장치를 구매 하여야 하기 때문에 이 페이지에서는 별도로 설명 하지 않는다.

    • chip45 Hex File Upload Tool과 Bootloader
    • 별도의 Upload Tool을 설치 하여야 하지만, 무료로 사용 할 수 있고, 비교적 신뢰성 있는 Tool 이다.

    • AVRDUDE Upload Tool과 optiboot Bootloader
    • AVR MCU를 사용 하는 Arduino 보오드에서 사용 하는 Tool로 크기가 작아 Flash Memory를 효과 적으로 사용 할 수 있다.

      개발 보오드에 optiboot Bootloader를 설치 하면 별도의 장치 없이 Arduino 개발 환경에서 "업로드" 명령으로 Hex File을 개발 보오드에 업로드 할 수 있다.

      Microchip Studio 7(Atmel Studio 7)에서도 AVRDUDE(Download Tool)을 외부 Tool로 설정 하면 쉽게 Hex File을 개발 보오드에 Load 할 수 있다.

      "Microchip Studio 7에서 AVRDUDE를 이용하여 ATmega128에 Hex File을 Upload 하기"를 참고 바람.

  • chip45boot2 Hex File Upload Tool과 Bootloader의 설치
    • Hex File Upload Tool
    • PC에 설치된 개발 환경(IDE)을 이용 하여 개발된 실행 File(Hex Format)을 개발 보오드로 Upload 하기 위하여는, PC에 설치되어 PC의 Hex Format File(IDE를 이용 하여 개발한 실행 File)을 개발 보오드로 Upload 해 주기 위한 한 Hex File Upload Tool과 개발 보오드에 설치되어 Hex File을 개발 보오드로 Upload 할 수 있게 하는 Software(Bootloader)가 필요 하다. 이 페이지에서는 무료로 사용 할 수 있고, 비교적 신뢰성 있는 chip45boot2 GUI과 chip45boot2 Bootloader의 설치와 사용에 대하여 설명 한다.

      chip45boot2 GUI를 Upload Tool로 사용 하기 위하여는 개발 보오드에 chip45boot2 Bootloader 가 설치되어 있어야 한다. 아래 chip45boot2 Bootloader 설치 항을 참고 할 것.

    • PC에 Hex File Upload Tool(chip45boot2 GUI V1.6) 설치 하기
      • Hex File Upload Tool(chip45boot2 GUI V1.6)을 Upload 하여 개발용 PC에 설치 한다.
      • chip45boot2 GUI는 개발 시스템(PC)에 위치 하여 개발 시스템(PC)과 AVR Embedded System 사이에 통신 기능을 수행 하고 개발 시스템(PC)에서 개발된 프로그램(HEX file)을 Upload 하는 역할을 수행 한다.

    • AVR Board에 Bootloader 설치 하기
      • Bootloader는 AVR Processor의 Boot Memory 영역에 위치하며, 개발 시스템에서 개발한 응용 프로그램을 AVR Processor에 Upload하기 위하여 개발 시스템(PC)과 AVR Embedded System 사이에 통신 기능을 수행 하고, 개발된 응용 프로그램을 AVR Embedded System 의 Program Memory (Flash Memory)에 Write 하는 기능을 갖는다.
      • chip45boot2 Bootloader : AVR Processor의 Boot Memory 영역에 위치하며, 직렬통신(RC232)을 이용 하여 개발된 응용 프로그램(Hex File)을 Upload 하는 통신 프로그램으로 위에서 설치한 Hex File Upload Tool(chip45boot2 GUI V1.13)과 연동 하여 실행 File을 AVR Processor에 Upload 한다.
        • Bootloader(chip45boot2_v2.9Q_pre.zip)를 다운로드 하여 압축을 해제 한다.
        • AVR In-System Programmer(아래 AVRISP mkii 등 를 이용 한다.  Bootloader 설치 참고)를 이용 하여 Embedded System 의 Boot Memory에 Bootloader를 설치 한다.
          • ATmega128 인경우에는 chip45boot2_atmega128_uart0_v2.9Q.hex 를 설치하고,
          • ATxmega128A4U 인경우에는 chip45boot2_atxmega128a4u_uartD0_v2.9Q.hex를 설치 한다.
        • AVRISP mkII(AVRISP mkII는 여러 회사의 제품이 있기 때문에 해당 회사의 자료를 참고 바람)를 이용 한 Bootloader 설치
          • AVRISP mkII 는 ISP Mode 와 PDI Mode 를 모두 지원 한다.
            • ISP Mode : ATmega 에 이용
            • PDI Mode: ATXmega 에 이용
          • AVRISP mkII Driver 설치: AVRISP mkII를 USB Port에 연결 하고 자동으로 Driver가 설치 될 때 까지 기다린다.( 처음 PC에 연결 하는 경우 한번 만 설치 하면 됨)
          • AVR Studio를 실행 한다.
            • ATmega 128: AVRStudio 4.18
            • ATxmega 128 A4U: Atmel Studio 7.X
          • AVRISP mkII를 연결 하고 전원을 On 한다.
          • PC 장치관리자 -> Jungo -> AVRISP mkII 설치 여부를 확인 한다.
          • AvrStudio --> Tool --> Program AVR Select AVR Programmer 창에서 AVRISP mkII, USB를 선택 하고 Connect 명령 Click
          • 통신이 정상으로 연결 되면 AVR 프로그램을 위한 Window가 열린다.
          • AVR 프로그램을 위한 Window에서
            • ATmega 128A인 경우: Main --> Device에서 ATmega128A 선택, Programming Mode에서 ISP mode을 선택 한다.
            • Fuses 설정
              • ATmega 인 경우 Studio 4.18을 사용(ISP Mode) 아래와 같이 Fuse를 설정 한다.
              • Boot Loader를 사용 하는 개발 단계: BOOTRST를 BOOTLDR 로 설정, 기타 항목은 기본 설정을 유지 한다.
              • Fuses 설정 예 : Fuses --> SPIEN, BOOTSZ : 1024, address=$FC00, BOOTRST, SUT_CKSEL: Start-up time 16K CK+4 가 선택(Fuse Value : 0xFF, 0xDC, 0xEF) 되었는지 확인 하고 Program 명령을 실행 한다.
              • 개발을 완료 하여 Boot Loader가 필요 없는 경우에는 BOOTRST를 APPLICATION 으로 설정 한다.
            • ATxmega 인 경우 Studio 7.x을 사용(PDI Mode) 하여 Fuse를 설정 한다.
          • Boot Loader를 Flash의 Boot 영역에 쓰기
            • ATmega 128 인 경우
              • Flash --> Input HEX File( chip45boot2_atmega128_uart0_v2.9Q.hex)을 선택하고 Flash Program 명령을 실행 한다.
            • ATxmega128a4u 인 경우
              • Flash --> Input HEX File( chip45boot2_atxmega128a4u_uartD0_v2.9Q.hex)을 선택하고 Flash Program 명령을 실행 한다.
          • 이제 Bootloader가 설치 되였기 때문에 chip45boot2 GUI V1.12를 이용 하여 개발 시스템(PC)에서 AVR System으로 .HEX File을 Upload 하는 것 가능 하다. 아래에 있는 Bootloader를 이용 한 프로그램 Upload를 참고 할 것
  • LockBits 설정 및 Clear
    • Lock을 잘못 설정하는 경우 AVR에 새로운 프로그램을 쓸 수 없는 상태가 되기 때문에 주의를 요 한다.
    • 설정된 LockBits를 Clear 하기 위하여는 Device의 프로그램을 모두 지고 LockBits를 Clear 하여야 한다.
    • 이 경우 Bootloader 까지 지워 지기 때문에 AVR In-System Programmer (AVRISP mkII, ISP AD-USBISP 등)를 이용하여 Bootloader를 다시 설치 하여야 한다.
    • Boot Section 에 설치한 Bootloader가 프로그램의 오동작으로 손상되는 것을 예방 하기 위하여 SPM Prohibited in Boot Section 을 선택 할 수 있다. 이 경우 LOOKBIT 값은 0xEF 가 된다.

 
  • AvrStudio4의 환경 설정과 개발한 프로그램(Hex Format)을 Target Board에 Upload 하기

    • USB -> Serial 변환 카드의 Driver 설치
      • 이 Blogger에서 사용 하는 개발 보오드는 PC의 USB Port를 이용 하여 5V 전원 전압을 공급 받고 PC와 Serial 통신을 가능 하도록 한다. 그러나 ATmega128는 USB를 지원 하지 않기 때문에 별도의 USB - Serial 모듈(cp210x Chip 사용)을 사용 하였다. ( 이 Blogger의 자료실에서 "USB - UART 변환 모듈" 참고)
      • cp210x Chip을 구동 하기 위한 Driver 설치 하기
        • cp210x Chip을 사용한 USB -> Serial 변환 카드의 Driver를 다운로드 하여 설치 : CP210x_Windows_Drivers
        • Driver 설치 시에는 개발 보드를 USB 포트에 연결 하여서는 안된다.
        • Driver를 설치 한 다음 개발 보오드를 USB - Mini USB 케이블을 이용 하여 PC의 USB Port에 연결 한다. 잠시 후 Driver 설치 메세지가 PC 모니터 우축 아래에 표시 된다.
        • cp210x-driver 설치 후 장치 관리자에서 cp210x-driver의 COM Port 번호를 확인 하여 RS232 통신 포트 설정에 이용 한다.
    • AvrStudio4의 Project Option 설정
      • AvrStudio 4 에서 c Source File을 Build 할 때 AVR Processor에 Upload 할 .HEX File 이 만들어 지도록 아래와 같이 Configuration Options을 설정 하여야 한다. 대부분의 경우는 기본 설정을 그대로 사용 하여도 됨.
      • Project -> Configuration Options 선택
        • Use External Makefile 상자를 Clear 한다.( 자동으로 생성되는 Make file 사용)
        • Create Hex File 상자를 체크 한다.
        • Build 된 결과는 Output File : 에서 지정된 폴더에 출력 된다.
        • 특별한 Build Options를 사용 하기 위하여는 Use External Makefile 상자를 체크 하고 자신이 별도의 make file를 작성 하여 주어야 한다.
    • chip45boot2 GUI를 이용 하여 GCC 출력(.HEX) 파일을 Target Board에 Upload 하기
      • 위에서 설명한 "AVR Board에 Bootloader 설치 하기" 과정에서 개발 보오드(ATmega128 보오드)에 chip45boot2 Bootloader 가 설치되어 있어야 한다.
      • PC의 UBS Port와 AVR Embedded System의 Mini USB Port 을 통신 케이블(전원 포함)로 연결 한다.
      • 실험 보오드 상에 전원 LED 가 켜져 있는지 확인 한다.
      • chip45boot2 GUI 프로그램을 실행 한다.
      • CommPort, BaudRate(19200bps) 등의 설정을 확인 한다.
      • Flash HexFile Box에서 Select Flash Hexfile 탭을 이용 하여 "개발된_응용_프로그램.hex"를 선택 한다.
      • Connect to Bootloader 탭을 누른다.
        • 현재 Port가 Disconnect 되었으면 Connect to Bootloader이 표시 되고,
        • 현재 Port가 Connect 되었으면 Disconnect to Bootloader 가 표시 됨.
      • 3초 이내에 AVR Embedded System의 Reset SW를 누른다.
      • Connection 상태를 확인 한다.(정상으로 Connect 되면 Status 창이 겅은 색에서 녹색으로 바꾼다.)
      • Connection이 정상으로 이루어 진 것을 확인한 다음, Program Flash 탭을 누른다.
      • 개발된_응용_프로그램 .hex이 정상으로 Write 된 것을 확인 한 다음(Program 진행 상태 창을 확인), Disconnect to Bootloader 탭을 눌러서 AVR Embedded System 과 chip45boot2 GUI 프로그램의 통신 상태를 종료 한다.
      • AVR Embedded System의 Reset SW를 누루면 약 3초후에 프로그램이 실행 된다.
        • UART0를 사용하는 응용 프로그램인 경우 Bootloader 와 중복되어 COM port를 사용 하게 되기 때문에 Bootloader 연결을 Disable 상태로 하고, 응용 프로그램용 모니터 프로그램을 이용 하여야 한다.
        • Bootloader를 Enable 상태로 할 경우에는 응용 프로그램과 동일한 UART Port를 사용 하는 모니터 프로그램이 있는 경우 이 프로그램 연결을 종료 하여야 한다.
    • AVR In-System Programmer (ISP AD-USBISP)을 이용 하여 GCC 출력(.HEX) 파일을 Target Board에 Upload 하기
      • AvrStudio -> Tools -> Program AVR -> Connect 를 선택하면 Select AVR Programmer 윈도우가 열린다.
      • Platform : STK500(AVR In-System Programmer), Port : COM6(ISP AD-USBISP V03 드라이버 설치시 확인한 COM 포트 번호)를 선택 하고,(ISP AD-USBISP V03 는 Atmel의 STK500과 호환성을 갖는다.)
      • "Connect" 탭을 클릭 한다.
      • 정상적으로 연결이 완료되면 "STK500 with top module ---  " 윈도우가 열린다.
      • Main 메뉴의 설정을 확인 한다.
        • Device : ATmega128,   Programming Mode : ISP mode
      • Program 메뉴 -> Flash 에서 filename.HEX 화일을 선택 하고 "Programm" 탭을 클릭 한다.
      • 윈도 아래 부분의 출력 윈도에서 실행 결과를 확인 한다.
    • AVRISP mkII를 이용 하여 GCC 출력(.HEX) 파일을 Target Board에 Upload 하기
      • AVRISP mkII은 Microchip(Atmel)에서 제공하는 AVR Device의 Programming Tool 이다.
      • AVRISP mkII는 Atmel Studio 환경에서 사용 할 수 있다.
      • ISP, PDI, TPI interface 가 가능 하여 모든 AVR Device를 Proram 할 수 있다.
      • Flash 와 EEPROM Memory 프로그램이 가능 하다.
      • Fuses 와 Lock bit 프로그램이 가능 하다.
      • AVR Device를 이용한 개발에 필요한 기본 장치이기 때문에 여러 회사에서 호환 제품을 만들어 판매 하여 낮은 가격에 구매 할 수 있다.
      • AVRISP mkII을 이용한 Programming 방법은 각 화사의 제품 메뉴얼을 참고 하기 바람.
  • Arduino 개발 환경에서 chip45boot2 GUI를 이용 하여 출력(.HEX) 파일을 Target Board에 Upload하기
    • 위에서 설명한 "AVR Board에 Bootloader 설치 하기" 과정에서 개발 보오드(ATmega128 보오드)에 chip45boot2 Bootloader 가 설치되어 있어야 한다.
    • Arduino 개발 환경에서 "스케치 -> 컴파일된 바이너리 내보내기" 명령을 실행 하면 프로그램이 컴파일 되고 .Hex File 이 출력 된다.
    • PC의 UBS Port와 AVR Embedded System의 Mini USB Port 을 통신 케이블(전원 포함)로 연결 한다.
    • 실험 보오드 상에 전원 LED 가 켜져 있는지 확인 한다.
    • chip45boot2 GUI 프로그램을 실행 한다.
    • CommPort, BaudRate(19200bps) 등의 설정을 확인 한다.
    • Flash HexFile Box에서 Select Flash Hexfile 탭을 이용 하여 Arduino sketchbook에서 "개발된_응용_프로그램.hex"를 선택 한다.
    • Connect to Bootloader 탭을 누른다.
      • 현재 Port가 Disconnect 되었으면 Connect to Bootloader이 표시 되고,
      • 현재 Port가 Connect 되었으면 Disconnect to Bootloader 가 표시 됨.
    • 3초 이내에 AVR Embedded System의 Reset SW를 누른다.
    • Connection 상태를 확인 한다.(정상으로 Connect 되면 Status 창이 겅은 색에서 녹색으로 바꾼다.)
    • Connection이 정상으로 이루어 진 것을 확인한 다음, Program Flash 탭을 누른다.
    • 개발된_응용_프로그램 .hex이 정상으로 Write 된 것을 확인 한 다음(Program 진행 상태 창을 확인), Disconnect to Bootloader 탭을 눌러서 AVR Embedded System 과 chip45boot2 GUI 프로그램의 통신 상태를 종료 한다.
    • AVR Embedded System의 Reset SW를 누루면 약 3초후에 프로그램이 실행 된다.
      • UART0를 사용하는 응용 프로그램인 경우 Bootloader 와 중복되어 COM port를 사용 하게 되기 때문에 Bootloader 연결을 Disable 상태로 하고, 응용 프로그램용 모니터 프로그램을 이용 하여야 한다.
      • Bootloader를 Enable 상태로 할 경우에는 응용 프로그램과 동일한 UART Port를 사용 하는 모니터 프로그램이 있는 경우 이 프로그램 연결을 종료 하여야 한다.

  • Hex File Upload Tool과 Bootloader 관련 페이지 보기