부트 로더를 어떻게 굽습니까?


15

Arduino에 "부트 로더를 태우십시오"라는 오류 메시지가 표시됩니다. 어떻게해야합니까? (부트 로더 란 정확히 무엇입니까?)


올바른 단계를 수행하면 부트 로더를 arduino에 구울 수 있습니다. 이 비디오가 도움이 될 수 있습니다. YouTube-ATMEGA328P-AU (SMD)에 부트 로더를 굽는 방법 | 홈 메이드 ARDUINO MINI
Sandesh HS

답변:


15

부트 로더는 (거의) 항상 Arduino에있는 작은 프로그램입니다. 스케치를 업로드하고 시작하는 작업을 관리하고 보드가 재설정 될 때마다 핀 13 LED를 깜박입니다.


부트 로더를 굽는 방법 :

  1. 확보 AVR ISP , USBtinyISP , ParallelProgrammer , 또는 다른 아두 이노 보드를 . 이것이 ISP가 될 것입니다.
  2. 별도의 지시가없는 한, ISP를 보드의 ICSP 핀에 연결하십시오.
  3. USB 케이블 또는 외부 전원 공급 장치로 보드에 전원을 공급하십시오.
  4. Arduino IDE를 엽니 다.
  5. Tools ► Board ►IDE 에서 굽는 올바른 보드를 선택했는지 확인하십시오 . 프로그램을 올바로 업로드 할 수 있더라도이를 다시 확인하십시오. 업로드에 항상 올바른 게시판이 필요한 것은 아닙니다.
  6. 에서 적절한 프로그래머를 선택하십시오 Tools ► Programmer ►.
  7. 를 클릭 Tools ► Burn Bootloader하고 기다리십시오. 1 분 이상 걸리지 않으며 종종 몇 초 밖에 걸리지 않습니다.

출처 :


1
이 시점에서 AVRISP는 거의 EOL (End-of-Life)입니다. 최소한 AVRISPmk2가 필요합니다. 다른 멋진 도구들도 많이 있습니다 (예 : AVR One!). 당신은 아마 말해야합니다{line 1} or other dedicated ISP programmer.
코너 울프

Arduino Yun과 같은 보드에서는 "Wi-Fi를 통해 업로드"할 때마다 스케치와 병합 된 부트 로더를 굽습니다. Linux CPU가 SPI를 통해 AVR MCU에 연결되어 있기 때문에 소프트웨어로 ISP를 모방 할 수 있습니다.
Federico Fissore

@FedericoFissore-왜 그렇게 오래 걸립니까?
TheDoctor

그렇습니다. GPIO 비트 뱅킹이 더 느리다는 사실입니다. 속도를 높이기위한 지속적인 노력이 있습니다.
Federico Fissore

8

부트 로더 란 무엇입니까?

그리고 부트 로더는 정확히 무엇입니까?

부트 로더는 프로그램 메모리의 "높은"부분에있는 작은 코드 조각입니다. 일반적으로 새 스케치를 업로드 할 때 지워지지 않습니다. 리셋 직후에 활성화하는 것이 목적입니다 (퓨즈는 주소 0x0000이 아닌 부트 로더 주소에서 코드를 시작하도록 구성되어 있습니다). 부트 로더는 "프로그래밍"데이터가 직렬 포트에 도달하는지 확인하기 위해 짧은 시간 (예 : 1 초) 동안 기다립니다.

  • 그렇다면 해당 데이터를 읽고 디코딩하여 나머지 플래시 메모리를 다시 프로그래밍합니다. 업로드 프로그램 (일반적으로 avrdude)과 함께 새 스케치는 직렬 포트를 통해 전송됩니다. 부트 로더는 플래시 메모리 페이지를 지우고 새 코드로 바꿉니다. 완료되면 새 코드를 실행합니다.

  • 명령이 도착하지 않으면 부트 로더는 보드에서 기존 스케치를 실행하기 위해 주소 0x0000으로 점프합니다.


부트 로더를 교체하는 방법

부트 로더를 프로그래밍하는 다른 방법은 내가 전에 작성한 스케치를 사용하는 것입니다.

  • 우노 (또는 Duemilanove와 같은 유사품)
  • 레오나르도
  • 메가 2560

"프로그래밍"보드는 여러 보드에 대한 부트 로더가 하드 코딩 된 스케치를 실행합니다. 그림과 같이 6 개의 훅업 와이어를 사용하여 프로그래밍 보드를 대상 보드 (부트 로더를 원하는 보드)에 연결합니다.

Uno 용 부트 로더 프로그래머

그 특정 사진은 하나의 Uno가 다른 하나를 프로그래밍하는 것을 보여줍니다.

스케치를 실행합니다 (직렬 모니터를 통해 작동하여 명령을 내림). 먼저 대상 칩을 식별합니다.

Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F 
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...

G 를 눌러 프로그래밍합니다.

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Done.
Type 'C' when ready to continue with another chip ...

우노의 경우 1 초가 걸립니다. Mega2560을 프로그래밍하는 데 3 초가 걸립니다.

Atmega bootloader programmer의 자세한 지침

코드는 Github 에서 다운로드 할 수 있습니다 : nickgammon / arduino_sketches


구울 칩 종류를 선택해야합니까 (도구-> 보드).? 독립형 칩으로 부트 로더를 구울 때 어떤 보드를 선택합니까?
Camilo

IDE 에서 부트 로더를 굽는 데 사용하는 보드 유형을 선택합니다 . 부트 로더 스케치는 대상 보드 유형을 자동 감지합니다.
Nick Gammon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.