İnternette makaleleri gezinirken şöyle bir yazıya rastladım: (Türkçesi) ARM mimarisinde geliştirme yapmak diğerlerine göre zor mu?* . Ben de sık sık ARM programlama ile ilgili sorular alıyorum. Açıkçası geçmişte 8 bit mikrodenetleyiciler (PIC, AVR vs..) ile çalışmış olanlar veya sıfırdan başlayanlar için ARM mimarisindeki mikrodenetleyicilerle programlama yapmak biraz karışık gelebiliyor. Bunun da çeşitli sebepleri var. Birçok ARM tabanlı mikrodenetleyicinin sadece tek bir kullanım kılavuzu 1000 sayfaları aşabiliyor. Üstelik bu dökümanlar ARM çekirdeği ile ilgili bilgileri içermezken bile. Sadece ARM – Cortex – M3 çekirdeğini anlatan döküman 384 sayfa! Benim de elimde olan Joseph -Yiu’nun yazdığı “Definitive Guide to ARM Cortex – M3 – M4 Processors” kitabı 800 sayfa ve kitapta herhangi bir mikrodenetleyicinin çevrebirimleri anlatılmıyor. Hal böyle olunca ARM tabanlı mikrodenetleyicilere geçenler zorluk yaşayabiliyorlar. Tabi bir de İngilizce problemi varsa zorluk daha da katlanıyor. Dikkat ederseniz yukarıda örneğini verdiğim hiç bir döküman Türkçe değil!
ARM programlamadaki bir diğer zorlukta linkte verdiğim yazıda da anlatıldığı gibi programlama araçlarının çok dağınık olması. ARM programlama için önerilen ve önde gelen geliştirme araçları çoğunlukla ücretli. Ücretsiz olarak Eclipse + GCC derleyicisi + OpenOCD gibi araçlarla çalışmak mümkün olsa da bu araçları çalışır hale getirmek büyük zorluklar içeriyor. Kimi firmalar bu araçları kullanarak ticari ürünler de piyasaya sürebiliyorlar.
Aslında ARM programlama diye özel bir konu yok. Temelde mikrodenetleyici programlama hangi ürünle çalışıyor olursanız olun farketmiyor. Gözlemlediğim kadarıyla mikrodenetleyici programlama (hatta dijital devreler) konusunda temeli olmayanlar bu alanda daha da zorlanıyorlar. Bugün mikroişlemci programlama derslerinin seçmeli olduğu elektronik mühendisliği bölümleri var. Öğrenci arkadaşlar da biraz zor olduğundan bu dersleri seçmeyebiliyorlar. Açıkçası elektronik alanında çalışmayı düşünen bir mühendislik öğrencisinin mikroişlemci dersi almadan mezun olmasını, araba kullanmayı öğrenmeden ehliyet almaya benzetiyorum. Tabi mikroişlemci derslerinden önce temel elektronik derslerinde de temelin sağlam olması gerekiyor. Elektronik konuları da aynı matematikte olduğu gibi üst üste eklenerek gidiyor. Dolayısıyla alt seviyedeki konulardaki bilgi eksikliği daha üst seviyedeki konuları anlamayı güçleştiriyor.
Gömülü sistemler alanındaki bir diğer olumsuz durum ise içerdiği konular itibariyle ne bilgisayar mühendisliğinin ne de elektronik mühendisliği müfredatlarının bu alanı tam olarak karşılamaması. Önümüzdeki yıllarda “gömülü sistemler mühendisliği” veya farklı adlarda bölümlerin ortaya çıkacağını ve bu bölümlerde yazılım ve elektronik konularının okutulacağını düşünüyorum. Aynen mekatronik mühendisliğinde olduğu gibi…
Kısacası ARM programlamaya gelene kadar temel dijital elektronik, programlama, C dili, az da olsa Assembly dili mikrodenetleyici mimarisi çalışmakta fayda var. Bu bilgilere hakim olunca hangi mimaride çalıştığınızın çok da önemi kalmıyor aslında.
*Bahsettiğim yazı: https://dzone.com/articles/is-developing-for-arm-more-difficult-than-for-othe-1
yazının özü şu “Aslında ARM programlama diye özel bir konu yok. Temelde mikrodenetleyici programlama hangi ürünle çalışıyor olursanız olun farketmiyor.” ve “mikrodenetleyici mimarisi çalışmakta fayda var. Bu bilgilere hakim olunca hangi mimaride çalıştığınızın çok da önemi kalmıyor”
Özet güzel olmuş abi teşekkürler 🙂
Hocam ben uzun süreler pic 8 bit ile çalıştım. Kullandığım işlemcileri genelde max. seviyede ve register seviyesine yazıyorum .Asm temelini üniversiteye geçtikten sonra iyi aldım. Çoğunlukla programlarımı C ile yazıyorum. Asm’de temel düzeyde programlar yazdım ve pic,arm,atmel gibi işlemciler için yazılan programları okuyabiliyorum.
Aslında anlatmak istediğime gelirsem, dediğim gibi 9-10 ay öncesine kadar piclerle uğraşıyordum. Bir hışımla biraz da korktuğum ARM’a geçiş yaptım ve register seviyesinde yazıyorum şimdilik(Registerlerini iyi anlamak bakımından). Biraz kafa şişiyor tabi ama hiçte korkulacak gibi değilmiş :)) Bununla uğraşırken bir kaç kere ATMEL’e işim düştü ve bir kaç örneğe baktıktan sonra sadece datasheet’ini açarak bazı basit işleri yapabilecek seviyeye gelebildim(1 gün içerisinde ve gerçekten gördüğüm en güzel datasheet ATMEL’de, çok kolay anlaşılıyor. Umarım Microchip bozmaz).
Coşkun hocamın’da dediği gibi Elektronik,Mimari ve özellikle İngilizce. Benim İngilizcem berbattır teknik terimlerden, ve datasheet’i genel okuma mantığını öğrendiğimden, biraz zorluk çeksem de
şimdilik iş görebiliyorum.
Korkmayın, çalışmak istediğiniz işlemciye ağız burun girin 😉
Hocam çok güzel bir yazı teşekkür ederim bilgiler için.
yazının özü şu “Aslında ARM programlama diye özel bir konu yok. Temelde mikrodenetleyici programlama hangi ürünle çalışıyor olursanız olun farketmiyor.” ve “mikrodenetleyici mimarisi çalışmakta fayda var. Bu bilgilere hakim olunca hangi mimaride çalıştığınızın çok da önemi kalmıyor”
Özet güzel olmuş abi teşekkürler 🙂
Hocam çok güzel bir yazı teşekkür ederim bilgiler için.
Hocam ben uzun süreler pic 8 bit ile çalıştım. Kullandığım işlemcileri genelde max. seviyede ve register seviyesine yazıyorum .Asm temelini üniversiteye geçtikten sonra iyi aldım. Çoğunlukla programlarımı C ile yazıyorum. Asm’de temel düzeyde programlar yazdım ve pic,arm,atmel gibi işlemciler için yazılan programları okuyabiliyorum.
Aslında anlatmak istediğime gelirsem, dediğim gibi 9-10 ay öncesine kadar piclerle uğraşıyordum. Bir hışımla biraz da korktuğum ARM’a geçiş yaptım ve register seviyesinde yazıyorum şimdilik(Registerlerini iyi anlamak bakımından). Biraz kafa şişiyor tabi ama hiçte korkulacak gibi değilmiş :)) Bununla uğraşırken bir kaç kere ATMEL’e işim düştü ve bir kaç örneğe baktıktan sonra sadece datasheet’ini açarak bazı basit işleri yapabilecek seviyeye gelebildim(1 gün içerisinde ve gerçekten gördüğüm en güzel datasheet ATMEL’de, çok kolay anlaşılıyor. Umarım Microchip bozmaz).
Coşkun hocamın’da dediği gibi Elektronik,Mimari ve özellikle İngilizce. Benim İngilizcem berbattır teknik terimlerden, ve datasheet’i genel okuma mantığını öğrendiğimden, biraz zorluk çeksem de
şimdilik iş görebiliyorum.
Korkmayın, çalışmak istediğiniz işlemciye ağız burun girin 😉