USB HID Bootloader- Mikrodenetleyicilere Program Yüklemenin Kolay Yolu.

Yayınlandı: 23 Kasım 2013 / İncelemeler
Etiketler:, , , , , , , , , ,

800px-SuperSpeed_USB.svg Uzun bir aradan sonra tekrar merhaba. Bir süredir MikroC for ARM derleyicisi  ile ilgili bir kitap yazma uğraşı içerisinde bulunduğumdan blog ile fazla ilgilenemedim. Yoğunluğu atlatır gibi olduğum şu günlerde fırsat bulmuşken araya bir yazı sıkıştırayım dedim. Umarım faydalı olur.

Günümüzde üretilen gömülü sistemlerin çoğu firmware güncellemesi yapabilmek adına bir bootloader yazılımına sahiptirler. Bootloader kavramını kısaca özetleyelim. Bootloader cihaz üzerinde asıl çalışacak programın , cihaza yüklenmesini sağlayan ve aynı cihazın içerisine daha önce yüklenmiş küçük bir programcıktır. Biz bu uygulamamızda bir PIC18f2550 mikrodenetleyicisini kullanacağız. Bu durumda USB HID Bootloader yazılımını PIC18f2550 işlemci içerisine önceden bir programlayıcı vasıtası ile yüklüyoruz. (Ben programlayıcı olarak kendi yaptığım  Brenner8p5 klonunu kullanmaktayım. ) Bootloader yazılımı PIC18f2550 mikrodenetleyicisine yüklendikten sonra artık bundan sonra bu PIC programlanırken bir programlayıcıya ihtiyaç duyulmayacaktır. Bundan sonra mikrodenetleyici üzerinde çalışacak programlar doğrudan bir USB kablosu üzerinden mikrodenetleyicimize aktarılacaktır. Burada hatırlatmamız gereken önemli bir nokta bulunmakta. O  da USB Hid Bootloader’ın kullanılabilmesi için mikrodenetleyicinin kesinlikle USB HID özelliğinin bulunması gerektiğidir. Günümüzde pekçok PIC mikrodenetleyicide bu özellik bulunmaktadır.  Bootloader sayesinde, kutulanmış cihazların içleri açılmadan, aynı zamanda haberleşme için de kullanılan USB portları aracılığı ile cihazlara program yüklenebilmekte ve mikrodenetleyicilere program yüklemenin zahmetleri ortadan kalkmaktadır.

Bootlader ile alakalı bu kadar açıklamadan sonra gelelim işlemlerin MikroC ile nasıl yürüdüğüne. Devre şemamızı vererek işe  başlayalım.

Resmi büyük görmek için tıklayın...

Resmi büyük görmek için tıklayın…

Devre şemamızda en dikkat edilecek olan nokta mikrodenetleyicinin 14. pini olan Vusb pinine bağlı olan paralel 100nF değerindeki kondansatörlerdir. Bu kondansatörler PIC içerisinde dahili olarak bulunan USB voltaj regülatörü için gereklidir. Devrede kullanılan kristal ise 20MHz değerindedir. USB donanımı çalışabilmek için 48MHz saat kaynağına ihtiyaç duyar. Bunu sağlamak için PIC içerisindeki PLL donanımı kullanılmaktadır. 20MHZ kristalden gelen sinyal 5’e bölünür ve PLL donanımına girer. Daha sonra PLL çıkışından 96MHz’lik bir sinyal alınır ve bu 2’ye bölünerek 48MHz değeri elde edilir. USB HID Bootloader programı PIC18 serisi işlemciler için mikroC derleyicisinin examples klasörünün altındaki “others” klasöründen ulaşılabilir vaziyettedir.  Proje dosyasının yolu şu şekildedir: “\….\Mikroelektronika\mikroC PRO for PIC\Examples\Other\USB HID Bootloader\Projects\PIC18F”. Biz burada bulunan PIC18 serisi için yazılmış programı düzenleyerek kendi devremize uygun hale getirebiliriz. Ben de aynen bu şekilde yaptım. USB HID bootloader klasörünü masaüstüne kopyaladım ve üzerinde gerekli değişiklikleri yaparak mikrodenetleyicimin içerisine, oluşan “hex” dosyasını brenner8p5 vasıtası ile yükledim. Mikrodenetleyicimize bootloadera ait hex dosyası yüklendikten sonraki adım ise MikroC derleyicisinin tools menüsündeki USB HID Bootloader programının çalıştırılmasıdır.  Aşağıdaki resimde bu programın çalıştırılması görülmektedir.

Resmi büyük görmek için tıklayın...

Resmi büyük görmek için tıklayın…

Programı çalıştırdıktan sonra mikrodenetleyicimizi bir usb kablosu aracılığı ile bilgisayara bağlarız  ve aşağıdaki ekran görüntüsü gelir karşımıza.

AdsızBu pencerede kare içerisine alınan kısım , mikrodenetleyicimiz bilgisayara bağlandıktan sonra eğer hiç bir problem yok ise, kırmızı olmaktadır. Bu kısım kırmızı olduktan sonra “Connect” butonuna tıklanır ve mikrodenetleyiciye bağlanılmış olur. Mikrodenetleyici bilgisayara bağlandıktan sonra 5 saniye içerisinde “connect” butonuna tıklanmalıdır. aksi halde mikrodenetleyici bootloader programını terkedecek ve üzerinde yüklü olan asıl programını çalıştırmaya başlayacaktır.  Mikrodenetleyiciye bağlandıktan sonra “Browse for HEX” butonuna tıklanarak , mikrodenetleyiciye yüklenecek “hex” dosyası seçilir ve “Begin uploading” butonuna tıklanarak programın yüklenmesi tamamlanır.

İşlemler görüldüğü üzere son derece kolay. Bu şekilde hazırladığımız programları denerken, yaptığımız her değişiklikte mikrodenetleyiciyi devre üzerinden söküp takma derdinden kurtulmuş oluyoruz.

Bu yazıylailgili bütün dosyaları burada bulabilirsiniz.

“May the force be with you!” diyerek yazımı sonlandırıyorum.

yorum
  1. Fethi Candan dedi ki:

    ARM ile ilgili kitabınızı sabırsızlıkla bekliyorum.Bunun yanı sıra bir kompenent için driver nasıl yazılır onuda kitabınızda açıklarsanız kafadan 3 tane okuyucu bulursunuz 😀

    • mikrodunya dedi ki:

      Komponentden kastınız nedir?

      • Fethi Candan dedi ki:

        Örneğin bir TFT LCD ekran Bir GLC veya bir ivme sensörü için nasıl Header dosyası yazılır gibi.

      • mikrodunya dedi ki:

        Kitapta header dosyalarından ziyade, arm işlemcilere yeni başlayacaklar için kütüphaneler tanıtıldı çoğunlukla. Header dosyaları ile ilgili bir yazı yayınlayabilirim yakında burada.

      • Fethi Candan dedi ki:

        Hocam sabırsızlıkla kitabınızı ve yayınınızı bekliyorum.

  2. Onur dedi ki:

    Merhaba,
    18F4550 ve 18F2550 arasında herhangi bir konfigürasyon değişikliği gibi birşeye ihtiyaç duyuluyormu ?

    Kolay gelsin.

    • mikrodunya dedi ki:

      Bahsettiğim bootloader proje dosyasını, siz hangi mikrodenetleyiciyi kullanıyorsanız ona adapte etmeniz gerekiyor. Yazının sonunda verdiğim proje dosasını indirip 18f2550’ye nasıl uyarladığımı inceleyebilirsiniz.

      • Onur dedi ki:

        Ben 3 saattir uğraşıyorum, bir türlü Windows görmedi.
        Ayarlarla ilgili video yapsanız sanırım çok daha faydalı olur.

      • mikrodunya dedi ki:

        Benim verdiğim proje dosyasını indirdiniz mi? Verdiğim şemaya göre bağlantı yaptınız mı? Osilatör değeri çok önemli. Verdiğim proje dosyasındaki HEX’i yükleyip dener misiniz eğer osilatörünüz 20MHz ise? D+ ve D- uçlarına çok dikkat edin.
        USB bağlantınızı soket kullanmıyorsanız ve doğrudan kablo ile yapıyorsanız şu resime bakarak yapın.

  3. Onur dedi ki:

    ALTAŞ’ın Pic programlayıcısı var. Onunla PIC’e hex dosyasını atmaya çalıştığımda FUSE hatası veriyor. FixHex diye bir programla FUSE ayarlarını uygun hale getirip PIC programlayıcı ile programlıyorum. Bunu 18F4620 ile de çalışırken yapıyorum ve hiçbir sıkıntı çıkartmıyor PORT denemelerinde.

    Kristal değeri 20 MHz ve 2x22pF kondansatör kullanıyorum. 18.pini 2×100 nF ‘ ile şaseye bağladım.

    USB soket kullanıyorum.

    Windows hata veriyor : “aygıt çalışmadığından aygıt bağlantısını kontrol ediniz !” manasında ve Aygıt Yöneticisinde “Unknown device” olaak ünlem işareti ile beliriyor.

    Ayrıca USB Data + ve Data – uçlarını da ters çevirdim USB kablosu çıkıkken, hiçbir şekilde sonuç alamadım.

  4. Onur dedi ki:

    Deneme için aşağıdaki linkteki HEX dosyasını, resimdeki FUSE ayarları ile kaydettiğimde bilgisayar, UDB HID olarak görmeye başladı. Fakat sizin HEX dosyasını programladığımda görmüyor.
    http://www.microchip.com/TechDoc.aspx?type=Firmware&ctl00_MainContent_DocListGridChangePage=7_15

    Fuse ayarları : http://tinypic.com/r/30sitfc/5

    • mikrodunya dedi ki:

      Sizin programlayıcınızla alakalı bir durum sanırım. Ben kendi hex dosyamı devre üzerinde deneyerek burada paylaştığım gibi, simülasyonda bile çalıştırabiliyorum…
      Aşağıda PIC18f2550’nin clock diyagramını paylaştım. Bu diyagrama bakarsanız CPU DIV ayarının /2 olması gerektiğini anlarsınız. Sizin ayarlarınızda PIC 96 MHz de çalışıyormuş gibi görülüyor ki bu da imkansız. Ben fuse ayarlarını zaten derleyici ile yapıyorum. Sizin tekrardan fuse ayarlamanıza gerek yok. Hex dosyasını doğrudan atın işlemci içerisine.

      Saygılar.

  5. murat dedi ki:

    hocam merhabalar, ben bu projeyi 18f4550 için uyarlayıp derlemeye çalıştım ancak mikroc demo limit hatası veriyor… bu dosyaları derlemek için mikroc’nin full sürümünü kullanmak şartmı yoksa benm bir seyi yanlıs mı yapıyorum… teşekürler

    • mikrodunya dedi ki:

      Full sürüm şart

      • murat dedi ki:

        hocam tekrar merhaba, projeyi 18f4550 ye uyarlamak için project>edit project kısmındaki ayarlar dısında program dosyalarında bir değişiklik yapmamız gereken yer var mı? dosyaları inceledim (büyük ihtimal yeterli bilgim olmadıgından) gözüme çarpan bir fark bulamadım…. yardımcı olursanız cok sevinirim.. saygılar

      • mikrodunya dedi ki:

        “Edit project” menüsünden gerekli ayarlamaları yaptıysanız çalışması kazım.

  6. emrah daşik dedi ki:

    Merhaba devreyi kurdum hex dosyasınıda pıc kıt2 ile attım usb konnektör bağlantılarıda doğru tekrar tekrar kontrol ettim fakat bir türlü iletişim kuramadım kontrolörle şemada mclr bağlantısı boşta görünüyor ben vcc verdim yine olmadı sonra ayırdım boşta bıraktım yine olmadı sebebi ne olabilir teşekkür ederim şimdiden.

  7. Hasan dedi ki:

    Merhaba
    MikroC bootloader kullanarak USB IO Cihaz yaptım ve birçok yerde çalışıyor.
    Ancak bazı cihazlar belirli bir süre sonunda bozuluyor ve çalışmaz hale geliyor.
    Bootloader’ı tekrar yükleyip, kendi hex kodumu attıktan sonra cihaz tekrar çalışıyor.
    Tespitime göre PIC içindeki kodlar bozuluyor. Galibe MikroC Bootloader stabil çalışmıyor.
    Fikri olan var mı?

  8. Güler dedi ki:

    Merhabalar…
    18F4450 20Mhz kristal için hex dosyası paylaşmanız mümkünmü?

  9. Ender dedi ki:

    Hocam bootloader lcd ile ilgili projelerde düzgün çalışmıyor hex dosyasını bootloader ile yüklüyorum ekrana abuk sabuk şeyler geliyor ama lcd olmayan projelerde hicbir sıkıntı yok bunun çözümü varmı?

    • mikrodunya dedi ki:

      Ben pek çok lcd’li projede hiç sıkıntı yaşamadan kullandım bootloader’ı. Konfigürasyon ayarlarınızı bootloaderın ayarlarıyla aynı şekilde yapın.

  10. ee dedi ki:

    “20MHZ kristalden gelen sinyal 4’e bölünür” demişsin. pll e girmesi için 5 e bölünmesi gerekiyor yalnız.

  11. Gökhan Çetinkaya dedi ki:

    Merhabalar, microC kullanmıyorum. CCS compiler kullanıyorum. bundan dolayı Tools / usb hid bootloader yapamıyorum. SAnırım bundan dolayı mikroelektronika nın programında görmüyor. Ne yapabilirim. yardımcı olabilir misiniz?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s