Optiboot bootloader มีทางเลือกอะไรบ้าง?


12

เกือบทุกบอร์ด Arduino ที่ทันสมัยใช้bootloader Optiboot เมื่อเปรียบเทียบกับ ATmegaboot ที่ใช้ก่อนหน้านี้จะมีขนาดเล็กในแง่ของแฟลช (ประมาณ 1.5KB) และเร็วกว่าในความเร็วในการอัปโหลด (115.2k เทียบกับ 57.6k) และเริ่มร่างของคุณเร็วขึ้น (ความล่าช้าขณะรอหลังจากรีเซ็ตจะสั้นกว่า)

มีทางเลือกอื่น ๆ สำหรับ Optiboot bootloader หรือไม่ โดยเฉพาะมีตัวตักสำหรับบูตขนาดเล็ก (ในแง่แฟลช) หรือไม่? พวกเขามีความแตกต่างอะไรบ้าง

คำตอบ:


8

Optiboot เป็นเรื่องเกี่ยวกับ bootloader ที่เล็กที่สุด

แต่มีประสิทธิภาพมากกว่า (ด้วยคอนโซล inbuilt สำหรับการทดสอบฮาร์ดแวร์การตรวจสอบเนื้อหา RAM และ Flash เป็นต้น) bootloader พร้อมโปรโตคอลการสื่อสาร stk500v2 ที่พัฒนาและมีประสิทธิภาพมากขึ้นระหว่าง avrdude และ AVR bootloader

ฉันใช้มันกับ ATmega2560 และบน ATmega1284p ใช้งานได้ทั้ง 3 ไบต์และ 2 ไบต์โปรแกรมตัวนับ MCU

ฉันมีSTK500v2 Bootloaderรุ่นในSourceforge

bootloader นี้ใช้ bootloader ของ Peter Fleury STK500v2 ซึ่งอัพเดตโดย Mark Sproul ฉันได้ทำการแก้ไขเพื่อให้รองรับกับบอร์ด Goldilocks (ATmega1284p)

คุณสมบัติที่สำคัญคือการใช้โปรโตคอลSTK500v2สำหรับอัพโหลดภาพ Flash ไปยัง Arduino โปรโตคอลนี้แข็งแกร่งและให้ข้อผิดพลาดที่ดีกว่าโปรโตคอลavr109 นอกเหนือจากโปรโตคอล avr109 เรียกว่า "Arduino" ในโลก Arduino เพราะมันสลับ DTR (เพื่อรีเซ็ตบอร์ดและเข้าสู่ bootloader โดยอัตโนมัติ) และโปรโตคอล STK500v2 เรียกว่า "Wiring" ในโลก Arduino เพราะเหมือนกัน เหตุผล.

bootloader Fleury / Sproul STK500v2 ออกแบบมาเพื่อทำงานกับ ATmega2560 ซึ่งมีการลงทะเบียนโปรแกรม 3 ไบต์เนื่องจากมีขนาด Flash ที่ใหญ่กว่า แต่มันก็รองรับบอร์ดขนาด 2 ไบท์ปกติด้วย

สำหรับบอร์ดที่มี Flash จำนวนมาก (เช่น Goldilocks 1284p) จะมีจอภาพฮาร์ดแวร์ที่สามารถใช้ในการสืบค้น Flash, SRAM และฮาร์ดแวร์ คุณสามารถตรวจสอบการเชื่อมต่อโดยไม่ต้องใช้รหัสเพิ่มเติมและตรวจสอบเนื้อหาจริงของ Flash และ EEPROM เนื่องจาก 1284p รองรับ 2 USART ฉันจึงเพิ่มความสามารถในการดีบักบนUSART1เพื่อให้กระบวนการอัปโหลดผ่านUSART0ไม่ถูกรบกวน


นี่ดูเหมือนจะเป็นส่วนหนึ่งของ FreeRTOS bootloader นั้นเป็นอิสระจาก FreeRTOS หรือไม่?
jfpoilpret

1
มันเป็นอิสระอย่างสมบูรณ์ bootloader ใช้เพื่อเขียนแฟลชด้วยอะไรก็ได้ FreeRTOS มาในภายหลังหลังจาก main () เริ่มขึ้นแล้ว ฉันแค่เก็บไว้ในที่เก็บเดียวกัน ฉันไม่ได้เขียนแค่ปรับเปลี่ยนเพื่อจุดประสงค์ของฉัน
feilipu

ดูเหมือนว่าน่าสนใจ มันจะมีประโยชน์ถ้าคุณสามารถสรุปคุณสมบัติที่สำคัญของ bootloader ในคำตอบของคุณ: ขนาดใน Flash, อัพโหลดความเร็วสูงสุด, Arduino boars สามารถทำงานได้และรายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบฮาร์ดแวร์)
jfpoilpret

มันเป็น (ขึ้นอยู่กับ) bootloader Peter Fleury STK500v2, ปรับปรุงโดย Mark Sproul ฉันได้ทำการแก้ไขเพื่อให้รองรับกับบอร์ด Goldilocks (ATmega1284p) คุณสมบัติที่สำคัญคือการใช้โปรโตคอล STK500v2 สำหรับอัพโหลดภาพแฟลชไปยัง Arduino โปรโตคอลนี้แข็งแกร่งและให้ข้อผิดพลาดที่ดีกว่าโปรโตคอล avr109 นอกเหนือจากโปรโตคอล avr109 เรียกว่า "Arduino" ในโลก Arduino เพราะมันสลับ DTR (เพื่อรีเซ็ตบอร์ดและเข้าสู่ bootloader โดยอัตโนมัติ) และโปรโตคอล STK500v2 เรียกว่า "Wiring" ในโลก Arduino เพราะเหมือนกัน เหตุผล.
feilipu

1
ขอบคุณสำหรับข้อมูลฉันได้อัปเดตโพสต์ของคุณเนื่องจากฉันคิดว่าข้อมูลนี้ควรเป็นส่วนหนึ่งของคำตอบของคุณโดยตรง อย่าลังเลที่จะเพิ่มข้อมูลเพิ่มเติมถ้าคุณเห็นสมควร!
jfpoilpret

3

TinySafeBootเป็นทางเลือกสำหรับอุปกรณ์ ATtiny และ ATmega

  • เข้ากันได้กับ ATtinys และ ATmegas มากมาย (ดูด้านล่าง)

  • สิทธิ์เข้าถึงแบบอ่าน / เขียนไปยัง Flash และ EEPROM

  • IOs ทั้งหมดพร้อมใช้งานสำหรับการสื่อสารแบบอนุกรม

  • สายเดียวพร้อมด้วย AVR หลายตัวในบรรทัดเดียว

  • Autobauding โปรโตคอลที่ทนทาน

  • เปิดใช้งานโดยรีเซ็ต + รหัสผ่าน (ไม่บังคับ)

  • ผู้ใช้รหัสผ่านและหมดเวลาสามารถเปลี่ยนแปลงได้ตลอดเวลา

  • "การลบฉุกเฉิน" เพื่อเอาชนะรหัสผ่านที่หายไป - ฆ่าข้อมูลทั้งหมด แต่จะทำให้ bootloader ไม่เสียหาย

  • ATtinys: ~ 550 ไบต์

  • ATmegas: <512 ไบต์ (!)

  • TSB สำหรับ ATtiny สามารถอัปเดตตัวเองได้

  • Sourcecode เป็นซอฟต์แวร์ฟรี (GPL)


มีใครรู้บ้างว่า TSB เปรียบเทียบกับ Optiboot อย่างไร อัพเดทล่าสุดดูเหมือนว่าอย่างน้อย 2 ปีที่ผ่านมา ...
johny ทำไม

1

มีทางเลือกอื่น ๆ สำหรับ Optiboot bootloader หรือไม่

เอ่อ ... ไม่ได้จริงๆ มีจริงa [ทางการ] การปรับเปลี่ยน 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
  • เปลี่ยนค่าที่เน้นสองค่าเป็นอัตรา baud ที่คุณวางแผนจะใช้: 250000, 500000 หรือ 1000000 บันทึกและปิดไฟล์ boards.txt
  • ใช้โปรแกรมเมอร์ ISP ที่คุณชื่นชอบติดตั้ง bootloader ใหม่ อย่าลืมให้: ตรวจสอบให้แน่ใจ Arduino Uno / อัพโหลดกระดานที่รวดเร็วถูกเลือก (เครื่องมือ / กรรมการ) , หากเหมาะสมให้แน่ใจว่า Serial Port ของโปรแกรมเมอร์คุณจะถูกเลือก (เครื่องมือ / Serial Port) , ตรวจสอบให้แน่ใจโปรแกรมเมอร์ที่ถูกเลือก (เครื่องมือ / โปรแกรมเมอร์ ) , หลังจากติดตั้ง bootloader ให้เปลี่ยน Serial Port กับพอร์ตอนุกรมของ Arduino Uno

ข้อความด้านบนได้รับการแก้ไขเล็กน้อยเพื่อความเข้ากันได้กับเว็บไซต์ โพสต์ต้นฉบับ


นอกจากนั้นและ ATmegaboot bootloader คุณไม่สามารถหาทางเลือกอื่นได้ ฉันคิดว่าถ้า Arduino โหลดมันลงบน Unos ทั้งหมดที่เคยผลิตมามันจะได้รับการปรับปรุง แฮ็กข้างต้นเพิ่มความเร็วในการอัพโหลด แต่มันจะไม่ลดขนาดของ bootloader คุณสามารถลบเวลารอบน bootloaderเพื่อให้มีการเริ่มต้นที่เร็วขึ้น

หากคุณกังวลเกี่ยวกับการเพิ่มขนาดแฟลชให้มากที่สุด : ทำอย่างไรให้หดร่างและคำตอบนี้ [เปิดฉันจะทำอย่างไรถ้าฉันใช้หน่วยความจำแฟลชหรือ SRAM หมด? ]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.