Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

LPCXPRESSO Kit (LPC1343) USB Boot Loader Denemesi

Sponsorlu Bağlantılar

Merhabalar..

Bu yazımda LPC1343 denetleyicisinin USB Bootloader özelliğinden bahsedeceğim. LPC1343 NXP firmasının üretmiş olduğu Cortex-M3 işlemci çekirdeğine sahip 32 bit denetleyicidir.

Denetleyicinin başlıca özellikleri;

  • ARM Cortex-M3 işlemci 72 MHz’e kadar çalışma hızı
  • 32 KB Flash 8 KB SRAM bellek
  • Dahili USB 2.0 Full Speed Device birimi
  • 8 Kanal 10 bit ADC
  • UART, SPI, I2C iletişim birimleri
  • 40GPIO Pini
  • 4 zamanlayıcı artı programlanabilir WDT
  • Dahili güç yönetim modları
  • Dahili saat sinyali üretimi

LPC1343 orta sınıfta 32bitlik bir denetleyicidir. Gerek kılıf yapısı gerekse çok karmaşık olmayan yapısı ile 8 bitlik denetleyiciler ile yapılan uygulamalar yerine kullanılabilir. Gerek 72mhz çalışma hızı gerekse gelişmiş modülleri ile de 32 bitlik uygulamalarında hakkını verir. LPC1343’ü öne çıkaran en önemli özelliği ise USB modülüdür. Denetleyici üzerinde USB modülünü HID ve MSC cihaz olarak kullanmak için gerekli sürücü yazılımı dahili olarak denetleyici ROM hafızasında bulunmaktadır.

Bu sayede kendiniz sürücü yazılımı yazmadan daha kolay USB uygulamaları geliştirebilirsiniz. Ayrıca LPC1343 USB üzerinden çalışan Bootloader ile programlanabilmektedir. Bu sayede geliştirdiğiniz uygulamaları harici programlayıcıya ihtiyaç duymadan USB üzerinden LPC1343′e atabilirsiniz. Bu gerçekten çok önemli ve kullanımı da basit olan bir özellik. Şimdi bu özelliği nasıl kullanacağımızı inceleyelim.

USB Bootloader’i aktif hale getirmek için LPC1343’ü resetledikten sonra P0.1 pini düşük, P0.3 pini yüksek seviyeye çekilmelidir. Ayrıca LPC1343’ün UART Bootloader özelliği de bulunmaktadır. P0.1 pini düşük seviyeye çekildiğinde denetleyici bootloader moduna geçer ve P0.3 pininin durumuna bakar. P0.3 düşük seviyede ise denetleyici UART Bootloader moduna geçer ve UART üzerinden program atılabilir. P0.3 pini yüksek seviyede ise bahsettiğim gibi USB Bootloader moduna geçer. Denetleyici USB Bootloader modunda bilgisayara takıldığında bilgisayar denetleyiciyi otomatik olarak 32KB’lık bellek olarak tanır.

Bellek içerisinde 32 KB’lık firmware.bin adlı dosya bulunuyor. Kendi oluşturduğunuz bin dosyasını bu dosya ile değiştirip denetleyiciyi resetledikten sonra programı yüklemiş oluyoruz.

usb-bootloader-lpc1343-uart-32-kb-keil-arm-bin40-fromelf

USB Bootloader üzerinden program atmak için 32 KB’lık bin uzantılı dosya gerekir. Derleyici programları genelde axf, hex uzantılı dosyalar üretirler ayrıca yazdığımız kodlar genelde 32 KB olmaz. Bu nedenle ürettiğimiz axf uzantılı dosyayı 32 KB bin uzantılı dosya haline getirmek için yardımcı programlar kullanmak gerekli. Keil programı üzerinden örnek verecek olursak öncelikle ürettiğimiz dosyayı bin uzantılı hale getirmek için Keil’in sağladığı fromelf programı kullanılabilir. Fromelf programına C:\Keil\ARM\BIN40\fromelf.exe dizininden ulaşabilirsiniz. Oluşturduğumuz bin uzantılı dosya her seferinde 32 KB olmayabilir bu yüzden oluşturduğumuz dosyayı 32KB hale getirmek gerekiyor.

Yani dosya içinde program kodlarından sonra gelen kısımlara 32Kb dolduracak şekilde FF değerinin yazılması gerekiyor. Bunun için Serdar Akkan arkadaşımızın hazırladığı CScalc.exe programını kullanabilirsiniz. Ayrıca Serdar Akkanın konuyla ilgili yazısına (LPC 1343 USB Bootloader) buradan ulaşabilirsiniz. Bu iki programı kullanarak 32 KB’lık bin dosyamızı elde ederiz. Herseferinde bu işlemler ile uğraşmak yerine Keil programının özelliğini kullanarak bu işlemi otomatik olarak yapabiliriz.

usb-bootloader-lpc1343-cscalc-keil-arm-lpc1342

Bunun için CSCalc.exe programını C:\Keil\ARM\BIN40\ dizinine atmamız gerekli. Sonrasında Keilde oluşturduğumuz projede Project options bölümünde user kısmında resimde görülen değişiklikler yapılmalıdır. Resimde görüldüğü gibi örnek projenin üreteceği dosya led_blink.axf olduğundan o şekilde yazılmıştır. Farklı dosya isimleri için o kısım değiştirilmelidir. led_blink.bin ismi ise kendi verdiğimiz isimdir. Karışıklık olmasın diye axf uzantılı dosya ile aynı ismi verebilirsiniz. Fakat üretilen bin dosyanın ismi ikinci kısımda yazılan ile aynı olmalıdır.

İkinci kısımda görüldüğü gibi CSCalc programı argüman olarak bin uzantılı dosyanın ismini (bu projede led_blink.bin) ve 32 sayısını almıştır. Burada bin uzantılı dosya fromelf programının ürettiği dosyadır. 32 ise üretilecek dosyanın kaç KB olacağını belirtir. LPC1343’ün hafızası 32 KB olduğu için 32 yazılmıştır. Örneğin 16 KB hafızalı LPC1342 için 16 olarak değiştirilmelidir.

Bilgisayar kısmında yapılacaklar bu kadar. Şimdi LPCxpresso’da yapılması gereken değişikliklere gelelim. LPCxpresso üzerinde LPC1343’ün USB bootloader özelliğini kullanabilmek için aşağıda görülen devrenin LPCxpresso’ya eklenmesi gerekmektedir.

proteus-isis-arm-usb-lpc1343

Devreyi kurmak için ayrı bir plaket veya baskı devre yapmak yerine LPCxpresso üzerinde bulunana delikli pertinaks kısmı kullanılabilir. Bu şekilde gerçekleştirdiğim devreyi aşağıdaki resimlerden inceleyebilirsiniz.

lpcxpresso-kit-arm-usb-pertinaks-circuit-led-blink-bin

Bu şekilde LPCxpressoyu modifiye ederek USB bootloader ve USB uygulamalarınızda kullanabilirsiniz. Uygulamanın tüm dosyaları ve örnek Keil projesi: lpcxpresso-kit-lpc1343-usb-boot-loader-denemesi.rar

Bir sonraki uygulamada görüşmek üzere..