Arduino aslında nedir ?
Arduino modüler bir geliştirme kartıdır. Değişik geliştirme kartlarında da genelde Atmel üretimi mikrokontrolcüler olmak üzere aynı yahut farklı mikrokontrolcüler kullanır. (Örn. Arduino uno üstünde Atmega328 gibi)
AVR Hafıza yapısı nasıl, hangi adreste ne başlıyor ? (C64 Memory Map gibi düiünün)
Atmel'in 8-bit mimarisinin adı dediğin gibi AVR, Uno'nun kullandığı Atmega328 de örn. aynı tanıma giriyor.
Hafıza yapısı C64'e benziyor, memory mapped (belleğe map edilmiş) io kullanır bu mikrokontrolcüler. Ancak çok belirgin bir fark var, bizim alışık olduğumuz çoğu işlemci Von Neumann mimarisi kullanırken PIC / AVR de Harward mimarisi kullanılır. Yani ; Kodun saklandığı bellek ile, çalışma belleğine (RAM) ayrı veriyolları ile erişilir. Rom/Flash'a sakladığın bir bilgiyi kullanabilmek için önce Ram'e aktarman gerekir. Ram'de kod çalıştırmak gibi bir mevhum yoktur (Self modifying code diye bir şey yok yani) Flash / Ram'in bellekte map'lendiği ana aralık ise aynı, belirli bank'larda IO, belirli banklarda Flash belirli banklarda da Ram'e erişilir.
Nerede ne var görmek için her bir çipin datasheet'ine bakmalısın.
Atmega328 için :
http://www.alldatasheet.com/datasheet-pdf/pdf/392243/ATMEL/ATMEGA328.htmlAVR'yi probramlayıcıları zaten programlıyor, bootloader'a ne gerek var olmadan programlanamazmı ?
Bootloader nereye yazılıyor amacı ne ?
Bootloader olmadan programlanır. Bunun için ICSP programlaması yahut high voltage programming kullanılabiliyor. İlkini bir arduino ile yapabilirsin, ikincisi için de destekleyen eprom programcısı veya benzeri bir şey lazım.
Bootloader'ın bir sürü amacı var,
1. Senin de bahsettiğin, alternatif yöntemlerle (seri programlama mesela) programlamayı kolaylaştırma.
2. 1 no'nun yan getirisi olarak esas uygulamayı daha zor olan programlama seçeneklerine gerek kalmaksızın tekrar tekrar programlamaya imkan vermesi. (Bootloader ile beraber yahut sadece uygulama flash'ını programlayabiliyorsun)
3. Mikrokontrolcünün güvenliğini sağlama (bazı part'larda bootloader'a yönelik daha esnek programlama/koruma seçenekleri söz konusu)