Aldığım bir hatayı düzeltmek için Arduino'ma "bootloader'ı yakmam" talimatı verildi. Bunu nasıl yapabilirim? (Önyükleyici tam olarak nedir?)
Aldığım bir hatayı düzeltmek için Arduino'ma "bootloader'ı yakmam" talimatı verildi. Bunu nasıl yapabilirim? (Önyükleyici tam olarak nedir?)
Yanıtlar:
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:
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.Tools ► Programmer ►
.Tools ► Burn Bootloader
ve bekleyin. Bir dakikadan fazla sürmemelidir ve genellikle sadece birkaç saniye sürer.Kaynaklar:
{line 1} or other dedicated ISP programmer.
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.
Bir bootloader programlamak için alternatif bir yöntem, bir süre önce yazdığım bir kroki üzerinde çalışan bir kroki kullanmaktır:
"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.
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