Optiboot önyükleyicisine alternatifler nelerdir?


12

Neredeyse tüm modern Arduino kartları Optiboot önyükleyici kullanır . Daha önce kullanılan ATmegaboot ile karşılaştırıldığında, bu flaş açısından daha küçüktür (yaklaşık 1.5KB) ve yükleme hızında daha hızlıdır (115.2k'ye karşı 57.6k) ve çiziminizi daha hızlı başlatır (sıfırlamadan sonra beklerken gecikme daha kısadır).

Optiboot önyükleyicisine alternatif var mı? Özellikle, daha küçük (flash olarak) önyükleme yükleyicileri var mı? Ne farkları var?

Yanıtlar:


8

Optiboot, mevcut en küçük önyükleyici hakkındadır.

Ancak, avrdude ve AVR bootloader arasında daha gelişmiş ve sağlam bir stk500v2 iletişim protokolüne sahip çok daha güçlü (donanım testi için dahili konsol, RAM ve Flash içerik kontrolü vb.) Önyükleyici vardır.

ATmega2560 ve ATmega1284p'de kullandım. Hem 3 bayt hem de 2 bayt program sayacı MCU için çalışır.

Sourceforge üzerinde bir STK500v2 Bootloader sürümüm var .

Bu bootloader, Mark Sproul tarafından güncellenen Peter Fleury STK500v2 bootloader'ı temel almaktadır. Goldilocks (ATmega1284p) kartı ile destekleyecek düzenlemeler yaptım.

Temel özellik, Flash görüntüsünü Arduino'ya yüklemek için STK500v2 protokolünü kullanmaktır . Bu protokol daha sağlamdır ve avr109 protokolünden daha iyi hata özellikleri sağlar . Bir yana, Arduino dünyasında avr109 protokolü "Arduino" olarak adlandırılır, çünkü DTR'yi değiştirir (kartı sıfırlamak ve otomatik olarak bootloader'a girmek için) ve aynı nedenle STK500v2 protokolüne Arduino dünyasında "Kablolama" denir sebep.

Fleury / Sproul STK500v2 önyükleyici, daha büyük Flash boyutu nedeniyle 3 baytlık program kaydına sahip ATmega2560 ile çalışacak şekilde tasarlanmıştır. Ancak, normal 2 baytlık kartları da destekler (her şey gerçekten).

Bol Flash'a sahip kartlar için (Goldilocks 1284p gibi), Flash, SRAM ve donanımı sorgulamak için kullanılabilen bir donanım monitörü vardır; ek kod olmadan bağlantıları kontrol edebilir ve Flash ve EEPROM'un gerçek içeriğini kontrol edebilirsiniz. 1284p 2 USART'ı desteklediğinden, USART1 üzerinde hata ayıklama yeteneğini ekledim , böylece USART0 üzerinden yükleme işlemi rahatsız edilmedi.


Bu FreeRTOS'un bir parçası gibi görünüyor, bu bootloader FreeRTOS'tan tamamen bağımsız mı?
jfpoilpret

1
Tamamen bağımsız. Bootloader herhangi bir şeyle flaş yazmak için kullanılır. FreeRTOS, main () başladıktan sonra gelir. Sadece aynı depoda saklıyorum. Yazmadım, sadece amacım için değiştirdim.
feilipu

Bu ilginç görünüyor; cevabınızda bootloader'ınızın önemli özelliklerini özetleyebilmeniz yararlı olacaktır: Flash'ta boyut, maksimum hız yükleme, çalışabileceği Arduino domuzları ve donanım testi hakkında daha fazla ayrıntı).
jfpoilpret

Mark Sproul tarafından güncellenen Peter Fleury STK500v2 önyükleyicisidir. Goldilocks (ATmega1284p) kartı ile destekleyecek düzenlemeler yaptım. Temel özellik, flash görüntüyü Arduino'ya yüklemek için STK500v2 protokolünü kullanmaktır. Bu protokol daha sağlamdır ve avr109 protokolünden daha iyi hata özellikleri sağlar. Bir yana, Arduino dünyasında avr109 protokolü "Arduino" olarak adlandırılır, çünkü DTR'yi değiştirir (kartı sıfırlamak ve otomatik olarak bootloader'a girmek için) ve aynı nedenle STK500v2 protokolüne Arduino dünyasında "Kablolama" denir sebep.
feilipu

1
Bilgi için teşekkürler, bu bilgilerin doğrudan cevabınızın bir parçası olması gerektiğini düşündüğüm için yayınınızı güncelledim. Uygun görürseniz daha fazla bilgi eklemekten çekinmeyin!
jfpoilpret

3

TinySafeBoot , ATtiny ve ATmega cihazları için bir alternatiftir.

  • Bol miktarda ATtinys ve ATmegas ile uyumlu (aşağıya bakınız)

  • Flash ve EEPROM'a Okuma / Yazma erişimi.

  • Seri iletişim için mevcut tüm ES'ler

  • Tek hat üzerinde birden fazla AVR bulunan tek telli

  • Otomatik bauding, sağlam protokol.

  • Reset + Parola ile etkinleştirildi (isteğe bağlı)

  • Parola ve Zaman Aşımı kullanıcısı her zaman değiştirilebilir.

  • Kayıp Parola'nın üstesinden gelmek için "Acil Durum Silme" - tüm verileri öldürür ancak önyükleyiciyi olduğu gibi bırakır.

  • ATtinys: ~ 550 bayt,

  • ATmegas: <512 bayt (!)

  • ATtiny için TSB kendini güncelleyebilir.

  • Sourcecode ücretsiz bir yazılımdır (GPL)


TSB'nin Optiboot ile karşılaştırmasını bilen var mı? Son güncelleme en az 2 yıl önce görünüyor ...
johny neden

1

Optiboot önyükleyicisine alternatif var mı?

Hata ... pek değil. Yükleme sırasında daha hızlı hale getirmek için aslında Optiboot'ta [resmi olmayan] bir değişiklik var .

Yüksek baud hızı varyasyonlarını kurmak için…

  • Arduino IDE'nin çalışmadığından emin olun
  • Yukarıdaki bağlantıyı kullanarak 7-Zip arşivini indirin
  • Üç dosyayı aşağıdaki dizine çıkarın: {Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
  • Aşağıdaki dizinde bulunan boards.txt dosyasını açın: {Arduino Installation Root}\hardware\arduino\

İçindeki Bu bölümü bul:

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

Aşağıdaki bölümü ekleyin…

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
  • Vurgulanan iki değeri kullanmayı planladığınız baud hızıyla değiştirin: 250000, 500000 veya 1000000 boards.txt dosyasını kaydedin ve kapatın
  • En sevdiğiniz ISS programlayıcısını kullanarak yeni önyükleyiciyi yükleyin. Unutmayın: Arduino Uno / Upload Fast panosunun seçili olduğundan emin olun (Tools / Board) , Uygunsa, programlayıcının Seri Portunun seçildiğinden emin olun (Tools / Serial Port) , Programlayıcının seçildiğinden emin olun (Tools / Programmer ) , Önyükleyiciyi kurduktan sonra, Seri Portu Arduino Uno'nuzun seri portuna değiştirin .

Yukarıdaki metin, siteyle uyumluluk için biraz değiştirilmiştir. Orijinal yayın


Bunun yanı sıra ve ATmegaboot önyükleyici de gerçekten bir alternatif bulamıyorsunuz. Arduino'nun şimdiye kadar üretilen tüm Unos'a yüklerse oldukça optimize edildiğini hayal edebiliyorum. Yukarıdaki saldırı yükleme süresini hızlandırır, ancak önyükleyicinin boyutunu azaltmaz. Daha hızlı başlatma için önyükleyicideki bekleme süresini de kaldırabilirsiniz .

Flaşı en üst düzeye çıkarma konusunda endişeleriniz varsa bkz: Bir taslağı gerçekten küçültmek ve bu yanıtı [açık Açık Flash bellek veya SRAM bittiğinde ne yapabilirim? ].

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.