Arduino Bootloader Nedir, Nasıl Yüklenir?
Kısa cevap Arduino bootloader nedir?
Bootloader, mikrodenetleyicinin flash belleğinin sonunda duran ve kart resetlendiğinde seri porttan yeni program gelip gelmediğini dinleyen küçük bir programdır. Arduino'ya USB kablosuyla programlayıcı olmadan kod yüklenebilmesini sağlar. Bozulduğunda veya boş bir ATmega328P kullanıldığında, başka bir Arduino'yu ISP programlayıcı yaparak yeniden yazılır.
Arduino'ya USB kablosuyla program yükleyebilmenizi sağlayan şey, mikrodenetleyicinin belleğinin en sonunda duran küçük bir programdır: bootloader. Bootloader bozulduğunda kart normal çalışır gibi görünse de yeni kod kabul etmez; boş bir ATmega328P çipine ise Arduino ile program yüklemek için önce bootloader yazmak gerekir. Bu rehberde bootloader'ın ne yaptığını, ne zaman yeniden yüklenmesi gerektiğini ve ikinci bir Arduino'yu ISP programlayıcı olarak kullanarak bootloader'ın nasıl yazıldığını adım adım anlatıyoruz.
Bootloader ne yapar?
ATmega328P normalde yalnızca özel bir programlayıcıyla (ISP) programlanabilir. Bootloader, çipin flash belleğinin sonundaki 512 baytlık bölümde çalışan bir programdır. Kart resetlendiğinde önce bootloader çalışır ve kısa bir süre seri porttan (USB–seri dönüştürücü üzerinden) yeni program gelip gelmediğini dinler. Program gelirse onu flash belleğe yazar; gelmezse zaten yüklü olan programınızı başlatır. Arduino IDE yükleme sırasında DTR hattıyla kartı resetler; bu yüzden reset düğmesine basmanız gerekmez.
| Kart | Bootloader | Yükleme hızı |
|---|---|---|
| Arduino Uno (güncel) | Optiboot (512 bayt) | 115200 baud |
| Arduino Nano (yeni) | Optiboot | 115200 baud |
| Arduino Nano (eski / çoğu klon) | ATmegaBOOT (2 KB) | 57600 baud — IDE'de "Old Bootloader" |
| Arduino Mega 2560 | STK500v2 (8 KB) | 115200 baud |
Bootloader'ı ne zaman yeniden yüklemek gerekir?
- Kart USB'den tanınıyor ama her yüklemede "not in sync" hatası veriyorsa ve kart/port ayarları doğruysa.
- Boş (yeni) bir ATmega328P çipini kendi devrenizde Arduino gibi kullanmak istiyorsanız.
- Eski bootloader'lı bir Nano'yu daha hızlı Optiboot'a geçirmek istiyorsanız.
- Sigorta bitlerini (fuse) değiştirdiyseniz, örneğin dahili 8 MHz osilatöre geçtiyseniz.
Arduino ile bootloader yazmak (Arduino as ISP)
İhtiyacınız olanlar: çalışan bir Arduino Uno (programlayıcı), bootloader yazılacak kart veya çip, 6 jumper kablo ve isteğe bağlı 10 µF kondansatör.
- Programlayıcıyı hazırlayın: Çalışan Uno'yu bağlayın, Dosya → Örnekler → 11.ArduinoISP → ArduinoISP örneğini açıp bu karta yükleyin.
- Bağlantıları yapın: Programlayıcı Uno'nun D13 → hedefin D13 (SCK), D12 → D12 (MISO), D11 → D11 (MOSI), D10 → hedefin RESET pini; 5 V → 5 V, GND → GND. Hedef bir Nano ise aynı bağlantılar ICSP başlığı veya pin başlıklarıyla yapılır.
- Otomatik reseti engelleyin: Programlayıcı Uno'nun RESET ile GND pinleri arasına 10 µF kondansatör bağlayın (eksi ucu GND'ye). Bu, IDE'nin programlayıcıyı resetlemesini önler.
- IDE ayarları: Araçlar → Kart → hedef kart (ör. Arduino Uno veya Nano), Araçlar → Programlayıcı → Arduino as ISP, Port → programlayıcı Uno'nun portu.
- Yazın: Araçlar → Önyükleyiciyi Yaz (Burn Bootloader). İşlem birkaç saniye sürer ve "Done burning bootloader" mesajıyla biter.
Bu işlem hedef çipteki programı siler ve sigorta bitlerini seçilen karta göre ayarlar. Sonrasında hedef kart USB'den normal şekilde programlanabilir.
Bootloader olmadan program yüklemek
Seri üretimde veya bellekte her baytın önemli olduğu projelerde bootloader hiç kullanılmayabilir. IDE'de Taslak → Programlayıcı Kullanarak Yükle seçildiğinde kod doğrudan ISP üzerinden yazılır; bootloader silinir ve 512 bayt kazanılır, ancak kart artık USB'den programlanamaz. Kendi kartınızı tasarlıyorsanız, çipin yanına 2×3 pinlik bir ICSP başlığı koymak ileride bu esnekliği sağlar.
Kendi kartınızda ATmega328P kullanmak
Minimum devre: 5 V besleme ve her VCC/AVCC pinine 100 nF dekuplaj, 16 MHz kristal ve iki adet 22 pF kondansatör, RESET pininde 10 kΩ pull-up ve USB–seri dönüştürücü kullanacaksanız DTR hattından RESET'e 100 nF kondansatör. Böyle bir kartı tasarlayıp PCB olarak sipariş vermek, breadboard'a göre çok daha güvenilir bir sonuç verir.
Bu yazıda kullanılan ürünler
Sıkça sorulan sorular
Bootloader bozulur mu?
Nadiren; en sık neden yanlış sigorta ayarları, ISP ile yanlışlıkla yükleme veya güç kesintisi sırasında yapılan yazma işlemidir. Belirti genellikle kartın USB'den program kabul etmemesidir.
USBasp ile de bootloader yazılabilir mi?
Evet. Programlayıcı olarak USBasp seçilip "Önyükleyiciyi Yaz" komutu kullanılır; bağlantı 6 pinlik ICSP başlığı üzerinden yapılır.
Bootloader yazdıktan sonra kartın LED'i yanıp sönüyor, normal mi?
Evet. Yeni bootloader, kart açılınca 13 numaralı LED'i birkaç kez yakıp söndürür; ardından yüklü program yoksa bekler.
Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.
Arduino ve Geliştirici Kartları