Yazan: Barış Samancı

LPC2000

Bu işe başladığımda takvimler 2009 u gösteriyordu. Kendime çalışmak için not çıkartıyordum. Daha sonra notları bir araya getirerek kitap formatına sokmayı düşündüm ve çalışmalara başladım. Aldığım notların üzerine yeni bilgilerde ekleyerek bu çalışmayı tamamlamış oldum.Aslında çoktan bitirmiştim fakat yayınlamak bugüne kısmetmiş :)   Bu e-kitapta kaynak olarak hitex'in kitaplarını, nxp'nin dahasheetlerini ağırlıklı olarak kullandım. Hitex'in konu anlatımının üzerine saklayıcı bilgilerinin eklenmesi sonucu daha kullanışlı olduğunu düşünüyorum. Şimdiye kadar basılı veya elektronik formatta bir Türkçe arm kitabı görmedim. Sanırım ilkini ben oluşturdum :) İçerik hakkında fazla söyleyebileğim bir şey yok.Kitap 106 sayfadan oluşmaktadır. İndirip okumalısınız :) Aşağıya önsözü ekliyorum. Devamında da download linkini bulabilirsiniz.Ek olarak içeriğinde I2C, SPI ve CAN bus kullanımını da detaylıca anlattım. Platform bağımsız olarak bilgi edinmek isterseniz konuları okuyabilirsiniz.

"Bu kitapta LPC2000 ARM7 işlemcileri üzerine aldığım notların toparlanmış halini bulacaksınız.Başlıklar uzun zaman aralığında farklı zamanlarda yazıldığından, farklı bölümler arasında konu anlatımı bakımından farklılıklar olabilir.Kaynak olarak Hitex firmasının kitaplarını ve NXP işlemci datasheetlerini kullandım. Bu kitabın herhangi bir resmiyeti yoktur, tamamen toparlanmış ders notlarından ve çevirilerden oluşmaktadır. Kitapta anlatılanlar ve verilen örnek programların kullanımı tamamen okuyan kullanıcının sorumluluğundadır. Örnek olarak verilen programların büyük bir çoğunluğu Keil uVision IDE sinde simüle edilmiştir.Aksi belirtilmedikçe anlatımlar LPC2104 işlemcisi için yapılmıştır. Kitapta kullandığım işlemciler LPC2101, LPC2104, LPC2148 ve LPC2368 dir.

Yazan: Barış Samancı
Kategoriler:ARM

LPC2368 SD kart

Bu uygulama notunda LPC23XX mikrodenetleyicileri ile mikrodenetleyicinin MCI adaptörü üzerinden SD karta veri yazılıp okunmaktadır. FatFs modülü ile yazılan veriler FAT'a uyumlu olarak yazılmakta ve FAT uyumlu tüm sistemler üzerinde taşınabilmektedir.

Uygulamada LPC2368 işlemcisi kullanılarak SD karta veri yazma ve FAT dosyalama sistemi kullanılması anlatılmıştır. NXP nin lpc23xx işlemcileri için yayınladığı codebundle paketi içerisindeki MCI örneği temel alınarak üzerine ChaN in FatFs kodları eklenmiştir. Bu uygulama 2GB SD kart ile denenmiş ve çalışmaktadır. Herhangi bir hata ile karşılaşılmamıştır. Diğer boyuttaki SD kartlar, SDHC ve MMC kartlar denenmemiştir. Kullanılan kaynakların lisansı serbesttir fakat kodların ve bu uygulamanın sorumluluğu uygulamaya yapana aittir. Olası bir zararda kimse sorumlu tutulamaz.

Uygulamada sadece temel f_read, fwrite gibi fonksiyonları kullanarak, diskte var olan bir dosyadan bilgisayara terminal çıktısı alınacak ve diske yeni dizin içerisinde yeni dosya açıp ilk dosyadan okunan veri yazılacaktır. 

Konuları önceki e-kitaplarımda ve bu uygulama notunda yeterince anlattığım için buraya fazladan anlatılacak bir şey kalmadı :) Sadece dosyaları indirip okumalısınız. Aşağıdaki linklerden konu ile alakalı daha önce yazmış olduğum dökümanlara ulaşabilir, altında uygulamadan ekran görüntülerini görebilirsiniz.

Yazan: Barış Samancı

sd programlama klavuzu kapak

Bu yazıda SD kartların kullanımı üzerine yazdığım e-kitabımın özetini bulacaksınız. SD (Secure Digital) kartlar MMC (Multi Media Card) kartlar temel alınarak Panasonic (Matsushita), SanDisk ve Toshiba tarafından geliştirilmeye başlanmış ve 2000 yılının başında ilk SD kartlar piyasaya sürülmeye başlanmıştır. Bu üç firma aynı zamanda 2000 yılının başında ortak karar alıp "SD Card Association" adında bir topluluk kurmuş ve SD kart teknolojisini standarta bağlamıştırlar. Bu yüzden MMC kartlar geri planda kalırken SD kartlar ön plana çıkıp gelecek vaat etmeye başlamıştırlar. İlk çıkan SD kartlar 32MB-64MB hafıza kapasitesine sahiptiler. Daha sonra bu kapasite limit 2GB a kadar çıkmış ve yetersiz kalması sonucu SDHC kartlar üretilmeye başlanmıştır. SDHC (SD High Capacity) kartlar daha hızlı çalışmakta ve daha fazla hafıza bölgesini adreslemektedirler. 4-8-16-32GB gibi hafıza kapasitelerine çıkmıştırlar. SD kartlar daha çok cep telefonu, cep bilgisayarı, dijital kamera ve fotoğraf makinalarında kullanılmaktadırlar. Bu yüzden gelişen high defination görüntü teknolojileri ve zamanla artan dosya boyutları yüzünden SDHC kartlarda yetersiz gelmeye başlamış ve 2TB'a kadar adresleme yapabilen SDXC (SD Extended Capacity) kartlar geçtiğimiz aylarda duyurulmuş ve ilk örnekleri piyasaya sürülmüştür. Şuan daha üretilmesede 2TB lık micro SD kart baya ilgi çekici durumda :) Şimdi işin hikaye kısmını bırakıp teknik kısmına geçelim :) Bu yazıda e-kitabımın özetini bulacaksınız. İlginizi çekerse yazının sonundaki linkten indirebilirsiniz.

Yazan: Barış Samancı
Kategoriler:ARM

ARM işlemcisinde iki farklı komut seti vardır. Bunlar 32 bitlik ARM komut seti ve 16 bitlik THUMB komut setidir. Hafızanın yetersiz kaldığı gibi bazı durumlarda bu iki komut seti arasında geçiş yapmamız gerekebilir.THUMB komut setini seçmemiz bize hafızadan kazanç sağlayacaktır.Bu komut setinde komutlar 16 bitlik formatta saklanırken çalışma esnasında 32 bitlik ARM komutlarına dönüştürülürler.Bu mekanizma bize düşük hafızalı işlemcilerde bellek kazancı sağlar.THUMB komut seti ile %30 hafıza kazancımız olur fakat çalışma esnasında THUMB komutlarının ARM komutlarına genişletilmesi esnasında %40 lık bir performans kaybı söz konusu olur.Yani ARM komut seti %40 daha hızlı çalışmaktadır.

ARM modunda derleme

Örneğin yandaki şekilde yazdığım bir kodun hafıza kullanımını görüyorsunuz. Kod hafızanın %5.71 lik bir alanını kullanmaktadır ve boyutu 28.80Kbyte tır.Bu kod 32bitlik ARM modunda derlenmiştir. Şimdi derlemeyi THUMB modunya yapalım ve yukarda anlattığımız değişikliği gözlemleyelim.

Aşağıdaki şekilde kodun thumb modunda derlenmiş halini görüyorsunuz. Gördüğünüz gibi hafıza kullanımı %5.71 den %4.04'e inmiş, kod boyutu ise 28.80KByte tan 20.35Kb a düşmüştür.

Yazan: Barış Samancı
Kategoriler:ARM

lpc2368

Şu sıralar network ve TCP/IP sistemleri üzerinde fazlaca çalışıyorum. PIC ile yapmış olduğum TCP/IP uygulamasından sonra bir uygulamada ARM mikrodenetleyicileri ile yapmaya karar verdim :) Ayrıca bundan sonra yapacağım çalışmaları kitap formatında değilde uygulama notu formatında yayınlamaya karar verdim böylece daha az zamanda daha çok çalışma yapmış olacağız.001 den başlayarak zamanla gidebildiğimiz yere kadar gideceğiz :) Yapmış olduğum bu çalışmayıda linkten indirebilirsiniz. LPC2368_ve_uIP_TCP/IP_Stack.zip (740Kb)   

Sözü uzatmadan uygulamaya dönelim. LPC23XX ve LPC24XX ailelerinin hemen hemen hepsinde ethernet donanımı bulunmaktadır. Bende bu uygulamamda LPC2368 boardumu kullandım. Uygulamada Keil firmasının uVision IDE sini kullandım. TCP/IP arayüzü içinse uIP stack'ini kullandım. uIP stack Adam Dunkels tarafından geliştirilmiştir. Hedeflediği işlemcilerin genelde düşük hafızalı 8 ve 16 bitlik işlemciler olduğunu söylesede bazı koşul ve fonksiyonları sağladıktan sonra hemen hemen tüm sistemlerde çalışabilmektedir. Yaptığım uygulamalarda da kod boyutunu kontrol ettiğimde 32 bitlik 512k hafızanın  %2 ila %4 ünü kullandığını gördüm. Benim yaptığım uygulamalar gayet iyi çalıştı fakat Dunkels sistemi yeteri kadar iyi test etmediğini yazmış. Dolayısıyla profesyonel ve güvenli uygulamalar yapmak istiyorsanız arkasında firma olan  daha profesyonel stack leri kullanmanızı tavsiye ederim.

17

TMZ

2010

Yazan: Barış Samancı
Kategoriler:ARM

ARM Logo

ARM nedir? ARM bir mimaridir ve adını icat eden firmadan alır.Bu mimari 1983 yılında “Acorn Computers Ltd” isimli bir şirket tarafından ARM1 adıyla (Acorn RISC Machine 1) ismiyle tasarlanmaya başlanmış ve 1985 yılında piyasaya sürülmüştür.Takip eden sene 32 bitlik ARM2 modeli piyasaya sürülmüş, basit ve kullanışlı yapısıyla baya ses getirmiştir. 1990 yılında firma ismi Advanced RISC Machines Ltd olarak değiştirilmiştir.1998 yılında firma ismini tekrar değiştirerek günümüzde de kullanılan ARM Ltd yapmıştır.

ARM firması 32 bitlik işlemci çekirdekleri üretmektedir ve NXP(Philips), Samsung, NEC, Atmel gibi diğer firmalara lisanslı olarak bu çekirdekleri satmaktadır.ARM şirketinin verdiği bilgilere göre şuanda 200 üzerinde firmaya 600 ün üzerinde işlemci mimarisi ve çekirdeği lisanslanmış durumdadır. ARM işlemciler 32 bitlik yapısı, düşük güç tüketimi, yüksek performansı gibi özelliklerinden dolayı sektörde açık ara lider durumdadırlar.2009 yılı verilerine göre tüm dünyadaki 32 bitlik gömülü sistemlerde kullanılan işlemcilerin %90ı ARM mimarisini kullanmaktadır.Düşük güç tüketimi sayesinde cep telefonları, PDA lar ve taşınabilir cihazlarda tercih edilmektedir. Aşağıdaki şekilde ARM işlemciler kullanılan bazı ürünleri görüyorsunuz.

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.

Yazan: Barış Samancı
Kategoriler:ARM

ARM işlemcileri öğrenmek isteyenler için ilk başta geliştirme kartı satın almak pahalıya mal olabilir. İlk etapta yazdıkları kodları bilgisayar ortamında hızlıca deneyebilecekleri simülatörler vardır.Bu yazımda yeni başlayanların Proteusta simülasyon yapabilmeleri için gereken minimum bağlantı ve ayarların nasıl yapılacağına değineceğim.

Genelde kod yazmak için kullanılan IDE lerin kendi simülatörleri vardır fakat görsel simülasyon yapması, işlemcinin çeşitli sensörler ve çeşitli entegre ve işlemcilerle etkileşime girebilmesi nedeniyle Proteus Isis simülasyon için güzel bir ortam sunmaktadır.İşlemci çeşitliliği azdır fakat bahsettiğim gibi yeni başlayanların güçlü işlemcilerle gelişmiş uygulamalar yapmayacağını düşünürsek simülasyon için mevcut işlemciler gayet yeterlidir.Proteus ARM7 çekirdeği için ve Philips in LPC2000 serisi işlemcilerinden giriş seviyesi olanlar için simülasyon desteği vermektedir. Örnek olarak göstermek için ben rasgele LPC2104 işlemcisini seçtim. Bu işlemcinin simülasyonu için yapılması gereken minimum bağlantı aşağıdaki şekilde görüldüğü gibi besleme pinleri, toprak pinleri, reset pini ve debug pinidir.

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