답변:
부트 로더는 (거의) 항상 Arduino에있는 작은 프로그램입니다. 스케치를 업로드하고 시작하는 작업을 관리하고 보드가 재설정 될 때마다 핀 13 LED를 깜박입니다.
부트 로더를 굽는 방법 :
Tools ► Board ►
IDE 에서 굽는 올바른 보드를 선택했는지 확인하십시오 . 프로그램을 올바로 업로드 할 수 있더라도이를 다시 확인하십시오. 업로드에 항상 올바른 게시판이 필요한 것은 아닙니다.Tools ► Programmer ►
.Tools ► Burn Bootloader
하고 기다리십시오. 1 분 이상 걸리지 않으며 종종 몇 초 밖에 걸리지 않습니다.출처 :
{line 1} or other dedicated ISP programmer.
그리고 부트 로더는 정확히 무엇입니까?
부트 로더는 프로그램 메모리의 "높은"부분에있는 작은 코드 조각입니다. 일반적으로 새 스케치를 업로드 할 때 지워지지 않습니다. 리셋 직후에 활성화하는 것이 목적입니다 (퓨즈는 주소 0x0000이 아닌 부트 로더 주소에서 코드를 시작하도록 구성되어 있습니다). 부트 로더는 "프로그래밍"데이터가 직렬 포트에 도달하는지 확인하기 위해 짧은 시간 (예 : 1 초) 동안 기다립니다.
그렇다면 해당 데이터를 읽고 디코딩하여 나머지 플래시 메모리를 다시 프로그래밍합니다. 업로드 프로그램 (일반적으로 avrdude)과 함께 새 스케치는 직렬 포트를 통해 전송됩니다. 부트 로더는 플래시 메모리 페이지를 지우고 새 코드로 바꿉니다. 완료되면 새 코드를 실행합니다.
명령이 도착하지 않으면 부트 로더는 보드에서 기존 스케치를 실행하기 위해 주소 0x0000으로 점프합니다.
부트 로더를 프로그래밍하는 다른 방법은 내가 전에 작성한 스케치를 사용하는 것입니다.
"프로그래밍"보드는 여러 보드에 대한 부트 로더가 하드 코딩 된 스케치를 실행합니다. 그림과 같이 6 개의 훅업 와이어를 사용하여 프로그래밍 보드를 대상 보드 (부트 로더를 원하는 보드)에 연결합니다.
그 특정 사진은 하나의 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