거의 모든 최신 Arduino 보드는 Optiboot 부트 로더를 사용합니다 . 이전에 사용 된 ATmegaboot와 비교할 때 플래시 용어 (약 1.5KB)가 작고 업로드 속도가 빠르며 (115.2k 대 57.6k) 스케치가 더 빨리 시작됩니다 (재설정 후 대기 시간이 짧아짐).
Optiboot 부트 로더에 대한 대안이 있습니까? 특히, 더 작은 (플래시 용어로) 부트 로더가 있습니까? 그들은 어떤 차이점이 있습니까?
거의 모든 최신 Arduino 보드는 Optiboot 부트 로더를 사용합니다 . 이전에 사용 된 ATmegaboot와 비교할 때 플래시 용어 (약 1.5KB)가 작고 업로드 속도가 빠르며 (115.2k 대 57.6k) 스케치가 더 빨리 시작됩니다 (재설정 후 대기 시간이 짧아짐).
Optiboot 부트 로더에 대한 대안이 있습니까? 특히, 더 작은 (플래시 용어로) 부트 로더가 있습니까? 그들은 어떤 차이점이 있습니까?
답변:
Optiboot는 사용 가능한 가장 작은 부트 로더입니다.
그러나 avrdude와 AVR 부트 로더 사이에보다 발전되고 강력한 stk500v2 통신 프로토콜을 갖춘 훨씬 강력한 (하드웨어 테스트를위한 내장 콘솔, RAM 및 플래시 컨텐츠 검사 등) 부트 로더가 있습니다.
ATmega2560 및 ATmega1284p에서 사용했습니다. 3 바이트 및 2 바이트 프로그램 카운터 MCU 모두에서 작동합니다.
나는이 STK500v2 부트 로더 의 버전 소스 포지를 .
이 부트 로더는 Peter Sleul이 업데이트 한 Peter Fleury STK500v2 부트 로더를 기반으로합니다. Goldilocks (ATmega1284p) 보드를 지원하도록 편집했습니다.
주요 기능은 STK500v2 프로토콜 을 사용 하여 플래시 이미지를 Arduino에 업로드하는 것입니다. 이 프로토콜은 avr109 프로토콜 보다 더 강력하고 더 나은 오류 기능을 제공 합니다. 또한 avr109 프로토콜은 Arduino 세계에서 "아두 이노"라고하며, DTR을 전환하고 (보드를 재설정하고 자동으로 부트 로더에 들어가기 위해) STK500v2 프로토콜은 Arduino 세계에서 "배선"이라고합니다. 이유.
Fleury / Sproul STK500v2 부트 로더는 더 큰 플래시 크기로 인해 3 바이트 프로그램 레지스터가있는 ATmega2560과 작동하도록 설계되었습니다. 그러나 일반 2 바이트 보드도 지원합니다 (다른 모든 것).
Goldilocks 1284p와 같이 플래시가 많은 보드의 경우 플래시, SRAM 및 하드웨어를 쿼리하는 데 사용할 수 있는 하드웨어 모니터 가 있습니다. 추가 코드없이 연결을 확인하고 Flash 및 EEPROM의 실제 내용을 확인할 수 있습니다. 1284p는 2 USART를 지원하기 때문에 USART1 에 대한 디버깅 기능을 추가하여 USART0을 통한 업로드 프로세스 가 방해받지 않도록했습니다.
TinySafeBoot 는 ATtiny 및 ATmega 장치의 대안입니다.
많은 ATtinys 및 ATmegas와 호환 가능 (아래 참조)
Flash 및 EEPROM에 대한 읽기 / 쓰기 액세스
직렬 통신에 사용 가능한 모든 IO
단일 회선에 여러 AVR이있는 단선
자동 전송, 견고한 프로토콜.
재설정 + 비밀번호로 활성화 (선택 사항)
비밀번호 및 시간 초과 사용자는 언제든지 변경할 수 있습니다.
비밀번호 분실을 극복하기위한 "비상 소거"-모든 데이터를 제거하지만 부트 로더는 손상되지 않습니다.
ATtinys : ~ 550 바이트,
ATmegas : <512 바이트 (!)
ATtiny 용 TSB는 자체적으로 업데이트 할 수 있습니다.
소스 코드는 자유 소프트웨어 (GPL)
Optiboot 부트 로더에 대한 대안이 있습니까?
어 ... 정말. 실제로 업로드 할 때 더 빠르게하기 위해 Optiboot에 대한 비공식적 인 수정이 있습니다.
높은 전송 속도 변화를 설치하려면…
- Arduino IDE가 실행되고 있지 않은지 확인하십시오
- 위의 링크를 사용하여 7-Zip 아카이브를 다운로드하십시오
- 세 개의 파일을 다음 디렉토리로 추출하십시오.
{Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
- 다음 디렉토리에있는 boards.txt 파일을여십시오.
{Arduino Installation Root}\hardware\arduino\
내부에서이 섹션을 찾으십시오.
uno.name=Arduino Uno uno.upload.protocol=arduino uno.upload.maximum_size=32256 uno.upload.speed=115200 uno.bootloader.low_fuses=0xff uno.bootloader.high_fuses=0xde uno.bootloader.extended_fuses=0x05 uno.bootloader.path=optiboot uno.bootloader.file=optiboot_atmega328.hex uno.bootloader.unlock_bits=0x3F uno.bootloader.lock_bits=0x0F uno.build.mcu=atmega328p uno.build.f_cpu=16000000L uno.build.core=arduino uno.build.variant=standard
다음 섹션을 추가하십시오…
uno_uf.name=Arduino Uno / Upload Fast uno_uf.upload.protocol=arduino uno_uf.upload.maximum_size=32256 uno_uf.upload.speed=250000 uno_uf.bootloader.low_fuses=0xff uno_uf.bootloader.high_fuses=0xde uno_uf.bootloader.extended_fuses=0x05 uno_uf.bootloader.path=optiboot uno_uf.bootloader.file=optiboot_atmega328_250000.hex uno_uf.bootloader.unlock_bits=0x3F uno_uf.bootloader.lock_bits=0x0F uno_uf.build.mcu=atmega328p uno_uf.build.f_cpu=16000000L uno_uf.build.core=arduino uno_uf.build.variant=standard
- 강조 표시된 두 값을 사용하려는 전송 속도 (250000, 500000 또는 1000000)로 변경하십시오. boards.txt 파일을 저장하고 닫으십시오.
- 자주 사용하는 ISP 프로그래머를 사용하여 새 부트 로더를 설치하십시오. 다음을 잊지 마십시오 : Arduino Uno / Up Fast Board가 선택되었는지 확인하십시오 (도구 / 보드) , 필요한 경우 프로그래머의 직렬 포트가 선택 되었는지 (도구 / 직렬 포트) , 프로그래머가 선택되어 있는지 확인하십시오 (도구 / 프로그래머) ) , 부트 로더를 설치 한 후 시리얼 포트를 Arduino Uno의 시리얼 포트로 변경하십시오 .
위의 텍스트는 사이트와의 호환성을 위해 약간 수정되었습니다. 원본 게시물
그 외에 ATmegaboot 부트 로더 외에는 다른 대안을 찾을 수 없습니다. Arduino가 생성 한 모든 Unos에로드하면 꽤 최적화 된 것으로 생각합니다. 위의 해킹은 업로드 시간을 단축 시키지만 부트 로더의 크기를 줄이지 않습니다. 당신은 또한 수 부트 로더에 대기 시간을 제거 는 빠른 시작을 갖도록.
당신이 플래시를 참조 극대화에 대해 관심이라면 : 어떻게 정말 스케치 축소하는 방법 과 이 답변 에의 [ I 플래시 메모리 또는 SRAM이 부족하면 내가 무엇을 할 수 있습니까? ].