Optiboot 부트 로더에는 어떤 대안이 있습니까?


12

거의 모든 최신 Arduino 보드는 Optiboot 부트 로더를 사용합니다 . 이전에 사용 된 ATmegaboot와 비교할 때 플래시 용어 (약 1.5KB)가 작고 업로드 속도가 빠르며 (115.2k 대 57.6k) 스케치가 더 빨리 시작됩니다 (재설정 후 대기 시간이 짧아짐).

Optiboot 부트 로더에 대한 대안이 있습니까? 특히, 더 작은 (플래시 용어로) 부트 로더가 있습니까? 그들은 어떤 차이점이 있습니까?

답변:


8

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을 통한 업로드 프로세스 가 방해받지 않도록했습니다.


이것은 FreeRTOS의 일부인 것 같습니다. 부트 로더가 FreeRTOS와 완전히 독립적입니까?
jfpoilpret

1
완전히 독립적입니다. 부트 로더는 무엇이든 플래시를 쓰는 데 사용됩니다. FreeRTOS는 main ()이 시작된 후 나중에 제공됩니다. 방금 같은 저장소에 보관합니다. 나는 그것을 쓰지 않고 단지 내 목적을 위해 수정했습니다.
feilipu

이것은 흥미로운 것 같습니다. 부트 로더의 중요한 기능을 플래시 크기, 최대 업로드 속도, 작동 가능한 Arduino 멧돼지 및 하드웨어 테스트에 대한 자세한 내용)으로 요약 할 수 있다면 유용 할 것입니다.
jfpoilpret

Mark Sproul이 업데이트 한 Peter Fleury STK500v2 부트 로더입니다. Goldilocks (ATmega1284p) 보드를 지원하도록 편집했습니다. 핵심 기능은 플래시 이미지를 Arduino에 업로드하기 위해 STK500v2 프로토콜을 사용하는 것입니다. 이 프로토콜은 avr109 프로토콜보다 더 강력하고 더 나은 오류 기능을 제공합니다. 또한 avr109 프로토콜은 Arduino 세계에서 "아두 이노"라고하며, DTR을 전환하고 (보드를 재설정하고 자동으로 부트 로더에 들어가기 위해) STK500v2 프로토콜은 Arduino 세계에서 "배선"이라고합니다. 이유.
feilipu

1
정보를 보내 주셔서 감사합니다.이 정보가 귀하의 답변에 직접 포함되어야한다고 생각하여 게시물을 업데이트했습니다. 적합하다고 생각되면 더 많은 정보를 추가하십시오!
jfpoilpret

3

TinySafeBoot 는 ATtiny 및 ATmega 장치의 대안입니다.

  • 많은 ATtinys 및 ATmegas와 호환 가능 (아래 참조)

  • Flash 및 EEPROM에 대한 읽기 / 쓰기 액세스

  • 직렬 통신에 사용 가능한 모든 IO

  • 단일 회선에 여러 AVR이있는 단선

  • 자동 전송, 견고한 프로토콜.

  • 재설정 + 비밀번호로 활성화 (선택 사항)

  • 비밀번호 및 시간 초과 사용자는 언제든지 변경할 수 있습니다.

  • 비밀번호 분실을 극복하기위한 "비상 소거"-모든 데이터를 제거하지만 부트 로더는 손상되지 않습니다.

  • ATtinys : ~ 550 바이트,

  • ATmegas : <512 바이트 (!)

  • ATtiny 용 TSB는 자체적으로 업데이트 할 수 있습니다.

  • 소스 코드는 자유 소프트웨어 (GPL)


TSB가 Optiboot와 어떻게 비교되는지 아는 사람이 있습니까? 마지막 업데이트는 적어도 2 년 전에 보였습니다 ...
johny 왜

1

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이 부족하면 내가 무엇을 할 수 있습니까? ].

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.