15

TMZ

2010

LPC2000 işlemcilerini, dahili bootloaderlarını kullanarak Flash Magic aracı ile programlayalım

Yazan: Barış Samancı
Kategoriler:ARM

Genelde ARM işlemciler ile yeni çalışmaya başlayanlar yada merak edenler yazdıkları programları işlemciye PIC lerde olduğu gibi programlayıcı bir devre ile yükleyebileceklerini düşünürler.Buda bir çok kişiye zahmetli gözüküp vazgeçmelerine neden olmaktadır.Evet PIC lerde olduğu gibi programlayıcı devreler vardır, hatta bunlar debug imkanıda vermektedir fakat bu yazıda en basit şekiliyle herhangi bir ek donanım kullanmadan yazdığımız programları LPC işlemcilerine nasıl atabileceğimizi inceleyeceğiz.Bunun için flashmagic isimli bir aracı kullanacağız. Bu araç ile Philipsin NXP ürünlerinden bir çoğunu programlayabilmekteyiz.Bu araç ile LPC2000 işlemcilerinin dahili bootloaderını kullaranak, derlediğimiz kodu seri port üzerinden (RS232) her hangi bir kompleks programlayıcı donanıma ihtiyaç duymadan çok rahat bir şekilde işlemciye atabilmekteyiz. Programı resmi sitesi olan http://www.flashmagictool.com/ adresinden indirebilirsiniz. Ekran görüntüsü aşağıdaki gibidir.

flash magic screenshot

Şekilden görüldüğü gibi 5 adımda kodumuzu işlemciye RS232 üzerinden çok kolay bir şekilde atabilmekteyiz. Bazı işlemci modelleri ethernet bootloader a sahiptir ve RJ45 üzerindende program atmamıza izin vermektedirler.RS232 için işlemcilerin bootloader kodu sadece UART0 üzerinden gelen verileri işlemektedir.Bu yüzden RS232 ile işlemcinin bağlantılarını yaparken RS232 pinleri ile UART0 ın RXD, TXD ve GND pinlerini birbirine bağlamamız gerekmektedir.Tabi araya 12V-3.3V voltaj çevirici bir entegre koymamız gerekmektedir.Bunun için MAX3232/MAX3222 kullanabilirsiniz.Bu entegrelerin pin bağlantıları datasheetinde aşağıdaki gibi gösterilmiştir.

max3232 max3222

Şimdi yukarıda programın arayüzünü gösteren şekildeki adımları inceleyelim.Birinci adımda işlemcimizi, haberleşme arayüzümüzü ve portunu, baud rate i ve kristalimizin frekansını belirliyoruz. İşlemcilerin otomatik baud rate algılayıcısı olduğu için burada gireceğiniz baud rate i işlemci otomatik olarak algılayabilir. İkinci adımda programlamadan önce hangi kod bloklarının silineceğini belirtiyoruz. Burada ikinci seçeneği seçip sadece programımızın kullandığı blokların silinmesini sağlayabiliriz.Yada şekildeki gibi tüm blokların silinmesini sağlayabiliriz. Üçüncü adımda derlediğimiz hex dosyasının yerini programa bildiriyoruz. Dördüncü adımdaki seçenekleri seçmemiz şart değildir. Bu seçenekler, yazımdan sonra doğrula, kod okuma koruması, kullanılmayan flash ı doldurdur.

Beşinci adıma kadar herşeyi ayarlamış bulunmaktayız.Start butonuna bastığımızda programlama işlemi başlayacaktır.Fakat bu anda işlemciyi bootloader moduna sokmamız gerekmektedir.Bunun için işlemciyi resetleyip işlemciyi bootloader moduna sokan pini (ISP pini) toprağa çekmeliyiz.Bu pin çoğu LPC2000 işlemcisi için P0.14 tür fakat bazı işlemcilerde değişebilir. Örneğin LPC2368 işlemcisi için bu pin P2.10 dur.Kullandığınız işlemcinin datasheetinden bu pini bulabilirsiniz.Programlama işlemi için şu adımları izlemeliyiz.

  • İşlemciyi resetle
  • İşlemci resetteyken bootloader pinini (ISP) toprağa çek
  • Bootloader pini topraktayken işlemciyi resetten çıkar
  • İşlemci bootloader moduna girmiştir.Beşinci adımdaki start butonuna bas.
  • Program başarı ile yüklendikten sonra işlemciyi tekrar resetle ve güncel programını çalıştır.

Bu işlemler arkaplanda şöyle gerçekleşmektedir.Reset butonuna bastığımızda işlemci resetlenir ve hard resetmi yoksa watchdog timer tarafından soft resetmi atıldığına bakar.Eğer hard reset atılmışsa bootloader pini kontrol edilir.Eğer bu pin düşük seviyede ise program 0x00000014 vektör adresine dallanır ve bu adresteki bootloader kodu çalışmaya başlar.Bu kod çalışıyorken flashmagic programı aracılığıyla gönderdiğimiz programımız işlemciye yazılır.Yazım işlemi bittikten sonra işlemciye reset atarsak yeni programımız çalışmaya başlar (tabi reset atma esnasında bootloader pini yüksek seviyede olmalıdır). Eğer reset anında bootloader pini yüksek seviyede ise veya soft reset atılmış ise bootloader kodu çalışmayacaktır.

Eğer manuel olarak yukarıdaki gibi butonlara basarak işlemciyi resetleme, işlemciyi bootloader moduna sokma gibi işlemler ile uğraşmak istemeyip bu işlemleri yazılım ile otomatik olarak kullanmak istiyorsanız flashmagic in önerdiği devreyi kullanabilirsiniz.Aşağıdaki şekilde şeması gösterilmiştir.

arm7 lpc2000 işlemcileri flashmagic reset devresi

Yorumlar
Emre
25 Eyl 2011 Pazar, 17:47 tarihinde yazmış.

Sayın hocam, ARM işlemcler ile ilgilnmeye henüz başlakış biri olarak, siteniz ve yazılarınızın ne kadar yardımcı olduğunu söylemek isterim. Aynı zamanda şu anda LPC 2000 programlama kitabınızı okuyorum. Verdiğiniz bilgiler çoğu yerde bulunamayan cinsinden. Tüm çaba ve emekleriniz için çok teşekkür ederim.

Adınız *:
e-Mail Adresiniz *:  ??
Web Siteniz:
Yorumunuz *:
Kalan karakter sayısı: 500
 
 

Tasarım ve Programlama Barış SAMANCI
Her hakkı saklıdır.
barissamanci.net  ©  2010-2024