Bu yazı mikrodenetleyiciler için yazılan programlarda heap alanının verimsiz kullanım sonucu heap parçalanması sorunu, nedenleri ve bu sorunun çözümü için uygulanabilir stratejileri ele almaktadır.
Etiket: mikrodenetleyiciler
Merhaba sevgili ziyaretçiler. Bu yazımın konusu C ve C++’ta bit düzeyinde yaptığımız bazı işlemler olacak. C’de veriler üzerinde bit düzeyinde işlemler yapabilmemizi sağlayan ve, veya, değil, özel veya, sola kaydır, sağa kaydır operatörleri vardır. Bu yazıda bitleri sağa ve sola kaydırma işini yapan, iki küçüktür “<<” ve iki büyüktür “>>” işaretleri ile gösterilen bit kaydırma operatörlerinden bahsedeceğiz.
Merhaba sevgili ziyaretçiler. Bu yazım bir önceki yazımın devamı niteliğinde olacak. Önceki yazımda Eclipse IDE’sine ARM mikrodenetleyicileri için gömülü yazılım geliştirmeye olanak sağlayacak eklentileri (GNU ARM Eclipse, GNU ARM Eclipse QEMU, GNU ARM Eclipse OpenOCD, GNU ARM Embedded Toolchain) yükleyerek Eclipse’i bir gömülü yazılım geliştirme ortamına dönüştürmüştük.
Bu yazımda ise NUCLEO-F103RB board emülatörü üzerinde ufak bir led blink örneği üzerinde hata ayıklama (debug) yapmak için eklentileri yüklenmiş bir Eclipse IDE ortamını nasıl hazırlayacağımızı göreceğiz.
Merhaba sevgili ziyaretçiler. Bu yazımızın konusu Microchip firmasının 8-bit mikrodenetleyicileri için piyasaya sunduğu C derleyicisi olan xc8 üzerine olacak. Uygulamamızda denetleyici olarak Pic18f2550’yi kullanacağız. Bir mikrodenetleyici için program yazmaya geçmeden önce o denetleyicinin iç yapısı iyi incelenmelidir. Bunun için en bilindik ve geçerli yol ilgili denetleyicinin (bütün elektronik devre elemanlarının olduğu gibi) datasheetinden faydalanmaktır.
Merhabalar sevgili ziyaretçiler, bu yazımızın konusu ARM mimarisindeki istisna ve kesme mekanizması olacak. İstisna ve kesmeler gelişmiş mikroişlemcili sistemlerin olmazsa olmazıdır. Farklı sistemlerde farklı yapılarda olsa da temelde amacı sistemi ayakta tutmak ve sistemin sürekliliğini sağlamaktır. Bir istisna veya kesme olduğunda işlemci bulunduğu noktadaki işini bırakır ve bellekteki bu istisna veya kesmeyle ilgili bellek adresine dallanır (bu bellek adresleri önceden belirlenmiş bir vektör tablosunda tutulur). İşlemci burada önceden belirlenen işlemleri yaptıktan sonra kaldığı yerden devam eder. Evet mikroişlemcili sistemlerde istisnalar ve kesmeler özetle böyle. Şimdi bu yapıya ARM mimarisi açısından bakmaya başlayabiliriz. Hadi başlayalım.
Merhaba sevgili ziyaretçiler bu yazımızın konusu ARM işlemcilerde boru hattı. Boru hattı bir işlemcinin komutları işleme sürecini ifade eder. Bir komutun bellekten getirilmesi, tanımlanması ve yürütülmesi belli bir süreç ve sıra içerisinde gerçekleşir. Bu süreç ne kadar kısa olursa işlemci o kadar hızlı çalışır. Bu yüzden boru hattının çalışma mekanizması işlemci performansına dolayısıyla bu işlemciye bağlı sistemin performansına doğrudan etki eder.
Elektronikte özellikle mikrodenetleyicili sistemlerde mikrodenetleyici I/O uçlarının kararlı bir seviyede kalması istenir. Mikrodenetleyicinin I/O uçlarının giriş olmadığında sabit bir durumu benimsemesi (+ veya GND durumu) için bu uçların bir pull-up veya pull-down direnci ile vcc veya gnd hattına çekilmesi gerekir.
Merhaba sevgili ziyaretçiler ARM mimarisini incelemeye kaldığımız yerden devam ediyoruz. Bu yazımızın konusu ARM işlemcilerinde yazmaçlar. Burada yazmaçları genel özellikleriyle inceledik detaylarına ileriki yazılarda değineceğiz. Öyleyse başlayalım…
Merhabalar sevgili ziyaretçiler. Uzun zamandır ilgimi çeken ve üzerinde araştırmalar yaptığım ARM çekirdeği ile ilgili notlarımı bu ARM Mimarisi yazı serisinde sizlerle paylaşmak istiyorum. Şüphesiz bu mimari birkaç sayfa yazıya sığmayacak kadar büyük ve kapsamlı ancak en azından belli bir seviyeye gelmek ve bu gelişmeyi sizlerle paylaşmak yegane amacımdır.
ARM mimariye sahip işlemciler cep telefonları, cep bilgisayarları, el terminalleri, vb. mobil cihazlarda yoğun olarak kullanılmakta. ARM serisinin ilk ürünü ARM1, 1985 yılında piyasaya sürülmüş ve 2001 sonlarında bir milyonun üzerinde satış rakamlarına ulaşmıştır. Bu durumun arkasında yatan ana sebep ise düşük güç tüketimine karşılık yüksek işlem kapasitesidir. ARM çekirdekleri bugün aynı çekirdek içinde 8-bit, 16-bit ve 32-bit modda çalışabilecek kapasitede üretilmektedir. Ayrıca ARM çekirdekleri tek bir çekirdek tipinde olmamasına karşın tüm ARM ailesi aynı tasarım ilkesiyle üretilmekte ve aynı komut setini kullanmaktadır.