Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriProjeArduino-Atmel AVR-Bootloader Hakkında
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Arduino-Atmel AVR-Bootloader Hakkında  (Okunma Sayısı 367 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
malik
Üye
****
Mesaj Sayısı: 467



Üyelik Bilgileri
« : Ocak 10, 2019, 12:58:44 ÖS »

Bootloader olayını biraz araştırayım dedim bişe anlamadım.
Hep bootloader'in nasıl yüklendiği anlatılıyor. Üzümünü Ye Bağını Sorma gibisinden.


Arduino aslında nedir ?
AVR Hafıza yapısı nasıl, hangi adreste ne başlıyor ? (C64 Memory Map gibi düiünün)
AVR'yi probramlayıcıları zaten programlıyor, bootloader'a ne gerek var olmadan programlanamazmı ?
Bootloader nereye yazılıyor amacı ne ?

Gibi soruları konuya hakim bir arkadaş açıklayabilirmi  ?

Ayrıntılı olmasına gerek yok. Biraz zahmet olacak ama, bu konuda benim gibi acemi olan arkadaşlar için çok yararlı olacak.

Şimdiden teşekkür ederim.
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.778



Üyelik Bilgileri WWW
« Yanıtla #1 : Ocak 10, 2019, 13:20:01 ÖS »

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

AVR'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)
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
malik
Üye
****
Mesaj Sayısı: 467



Üyelik Bilgileri
« Yanıtla #2 : Ocak 10, 2019, 18:19:28 ÖS »

Teşekkürler iron.
Logged
amenofis
Üye
**
Mesaj Sayısı: 35


Üyelik Bilgileri
« Yanıtla #3 : Ocak 24, 2019, 17:18:53 ÖS »

Bir ara assembly ile bootloader yazmıştım. Atmel işlemcilerde bootloader flash hafızanın en sonuna yazılır. Bir fuse biti programlanarak resetten sonra bootloader kısmından başlaması sağlanır. Bootloader SPM ve LPM komutlarını kullanarak flash hafızaya yazar. Bootloader flash'ın en sonuna konumlandığı için üzerine yazıp bozma gibi bir durum olmaz çünkü kendisi en baştan yazmaya başlar.
Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: