Bootloader'ı nasıl yakarım?


Yanıtlar:


15

Bootloader (neredeyse) her zaman bir Arduino'da olan küçük bir programdır. Yaptığınız çizimleri yüklemeyi ve başlatmayı yönetir ve kart her sıfırlandığında pim 13 LED'ini yanıp söner.


Önyükleyiciyi yazmak için:

  1. Bir AVR ISS , USBtinyISP , ParallelProgrammer veya başka bir Arduino kartı edinin . Bu ISS'niz olacak.
  2. Aksi belirtilmedikçe, ISP'yi kartınızdaki ICSP pinlerine bağlayın.
  3. Kartınıza bir USB kablosu veya harici bir güç kaynağı ile güç sağlayın.
  4. Arduino IDE'yi açın.
  5. Tools ► Board ►IDE'de yanmakta olduğunuz doğru kartı seçtiğinizden emin olun . Programları doğru şekilde yükleyebilseniz bile bunu iki kez kontrol edin; yükleme her zaman doğru kartı gerektirmez.
  6. Adresinden uygun programlayıcıyı seçin Tools ► Programmer ►.
  7. Tıklayın Tools ► Burn Bootloaderve bekleyin. Bir dakikadan fazla sürmemelidir ve genellikle sadece birkaç saniye sürer.

Kaynaklar:


1
Bu noktada AVRISP hemen hemen EOL'dir (kullanım ömrü sonu). En azından bir AVRISPmk2 istiyorsunuz. Ayrıca çok sayıda başka meraklı araç da var (örneğin AVR One!). Muhtemelen söylemelisin{line 1} or other dedicated ISP programmer.
Connor Wolf

Arduino Yun gibi kartlarda, her "wifi üzerinden yükleme" yaptığınızda, eskizinizle birleştirilen bootloader'ı yakıyorsunuz. Bu, Linux CPU'nun AVR MCU'ya SPI aracılığıyla bağlı olması sayesinde, bir ISS'yi yazılımla taklit edebilmeniz için.
Federico Fissore

@FedericoFissore - bu yüzden bu kadar uzun sürüyor mu?
TheDoctor

Evet, bu ve GPIO bitbanging'in daha yavaş olması. Hızlandırmak için süregelen bir çaba var.
Federico Fissore

8

Önyükleyici nedir?

Ve bootloader tam olarak nedir?

Önyükleyici, program belleğinin "yüksek" kısmında bulunan küçük bir kod parçasıdır. Normalde yeni çizimler yüklediğinizde silinmez. Amacı sıfırlamadan hemen sonra etkinleştirilmelidir (sigortalar 0x0000 adresi yerine bootloader adresinde kod başlatacak şekilde yapılandırılmıştır). Önyükleyici, "programlama" verilerinin seri bağlantı noktasına ulaşıp ulaşmadığını görmek için kısa bir süre (bir saniye gibi) bekleyecektir.

  • Öyleyse, bu verileri okur ve flash belleğin geri kalanını yeniden programlamak için kodunu çözer. Yükleme programı (normalde ortalama) ile birlikte çalışarak yeni çizim seri port üzerinden gönderilir. Önyükleyici flash bellek sayfalarını siler ve bunları yeni kodla değiştirir. Tamamlandığında, yeni kodu yürütür.

  • Hiçbir yönerge gelmezse, önyükleyici tahtadaki mevcut çizimi yürütmek için 0x0000 adresine atlar.


Bootloader nasıl değiştirilir?

Bir bootloader programlamak için alternatif bir yöntem, bir süre önce yazdığım bir kroki üzerinde çalışan bir kroki kullanmaktır:

  • Uno (veya Duemilanove gibi benzeri)
  • Leonardo
  • Mega2560

"Programlama" panosu, içine kodlanmış bir dizi tahta için önyükleyicileri olan çizimi çalıştırır. Programlama kartını, gösterildiği gibi 6 bağlantı kablosu ile hedef karta (önyükleyiciyi isteyen kart) bağlarsınız.

Uno için Bootloader programcısı

Bu fotoğraf bir Uno'nun diğerini programladığını gösterir.

Çizimi çalıştırırsınız (komutlar vermek için Seri Monitör üzerinden çalışır). İlk olarak hedef çipi tanımlar:

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 ...

Programlamak için G tuşuna basarsınız .

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 ...

Bir Uno için bu bir saniye sürer. Mega2560'ı programlamak 3 saniye sürer.

Atmega bootloader programlayıcısında ayrıntılı talimatlar

Kod Github'dan indirilebilir : nickgammon / arduino_sketches


Yakmakta olduğunuz yonga türünü seçmeniz gerekiyor mu (Araçlar-> Pano ..)? Tek başına çip olması için önyükleyiciyi yakarken hangi kartı seçerim?
Camilo

IDE'de önyükleyiciyi yazmak için kullandığınız kart türünü seçersiniz . Önyükleyici çizimi, hedef kart türünü otomatik olarak algılar.
Nick Gammon
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.