Merhaba TurkHackTeam üyeleri bugün ARM Cortex-M'i inceleyeceğiz.
ARM Cortex-M ailesi, mikrodenetleyiciler, ASIC'ler, ASSP'ler, FPGA'lar ve SoC'lerde kullanılmak üzere tasarlanmış ARM mikroişlemci işlemcilerdir. Cortex-M çekirdekleri yaygın olarak özel mikro denetleyici yongaları olarak kullanılır, ancak aynı zamanda güç yönetimi denetleyicileri, G/Ç denetleyicileri, sistem denetleyicileri, dokunmatik ekran denetleyicileri, akıllı pil denetleyicileri ve sensör denetleyicileri olarak SoC yongalarının içinde "gizlidir".
Cortex-A çekirdeğinden temel farkı, bellek yönetim biriminin (MMU) olmamasıdır. Tam teşekküllü bir işletim sistemi normalde bu işlemci sınıfında çalışmaz.
Geçmişte 8-bit mikrodenetleyiciler çok popüler olmasına rağmen, Cortex-M, düşük kaliteli Cortex-M çiplerinin fiyatları aşağı doğru hareket ettiğinden, 8-bit pazarında yavaş yavaş ufalanıyor. Cortex-M, 32 bit matematik işlemlerinden yararlanan ve ARM7 ve ARM9 gibi eski ARM çekirdeklerinin yerini alan uygulamalarda 8 bit yongaların popüler bir alternatifi haline geldi.
Arm Holdings kendi tasarımlarına göre CPU cihazları üretmez veya satmaz, bunun yerine işlemci mimarisini ilgili taraflara lisanslar. Arm, maliyet ve çıktılara göre değişen çeşitli lisans koşulları sunar. Arm, tüm lisans sahiplerine ARM çekirdeğinin entegre edilebilir bir donanım açıklamasını, eksiksiz yazılım geliştirme araç setini ve ARM CPU'yu içeren üretilmiş silikonu satma hakkını sağlar.
Entegre Cihaz Üreticileri (IDM), ARM İşlemci IP'sini sentezlenebilir RTL (Verilog'da yazılmış) olarak alır. Bu formda, mimari düzeyde optimizasyon ve uzantıları gerçekleştirme yeteneğine sahiptirler. Bu, üreticinin daha yüksek saat hızı, çok düşük güç tüketimi, komut seti uzantıları (kayan nokta dahil), boyut optimizasyonları, hata ayıklama desteği vb. gibi özel tasarım hedeflerine ulaşmasını sağlar. Belirli bir ARM'de hangi bileşenlerin bulunduğunu belirlemek için CPU yongası, üretici veri sayfasına ve ilgili belgelere bakın.
Cortex-M çekirdekleri için bazı silikon seçenekleri şunlardır:
SysTick zamanlayıcı: Hem işlemcinin hem de İç İçe Vektörlü Kesme Denetleyicisinin (NVIC) işlevselliğini artıran 24 bitlik bir sistem zamanlayıcısı. Mevcut olduğunda, ayrıca yapılandırılabilir bir öncelik SysTick kesmesi sağlar. SysTick zamanlayıcı isteğe bağlı olsa da, onsuz bir Cortex-M mikro denetleyici bulmak çok nadirdir. Bir Cortex-M33 mikro denetleyicisinde Güvenlik Uzantısı seçeneği varsa, biri Güvenli ve biri Güvenli Olmayan olmak üzere iki SysTick'e sahiptir.
Bit-Band: Bit-band bölgesindeki tek bir bitin üzerine tam bir bellek kelimesini eşler. Örneğin, bir takma ad sözcüğüne yazmak, bit bandı bölgesindeki ilgili biti ayarlayacak veya temizleyecektir. Bu, bit bandı bölgesindeki her bir bitin, kelime hizalı bir adresten doğrudan erişilebilir olmasını sağlar. Özellikle, bireysel bitler, komutların okuma-değiştirme-yazma sırası gerçekleştirilmeden C/C++'dan ayarlanabilir, temizlenebilir veya değiştirilebilir. Bit bandı isteğe bağlı olsa da, onsuz bir Cortex-M3 ve Cortex-M4 mikro denetleyici bulmak daha az yaygındır. Bazı Cortex-M0 ve Cortex-M0+ mikro denetleyicilerinde bit bandı bulunur.
Bellek Koruma Birimi (MPU): Ayrıcalık ve erişim kurallarını uygulayarak bellek bölgelerinin korunması için destek sağlar. Her biri sekiz eşit boyutlu alt bölgeye ayrılabilen sekiz adede kadar farklı bölgeyi destekler.
Tightly-Coupled Memory (TCM): Kritik rutinleri, verileri tutmak için kullanılan düşük gecikme süreli RAM , yığınlar. Önbellek dışında, genellikle mikrodenetleyicideki en hızlı RAM'dir.
ARM Cortex-M ailesi, mikrodenetleyiciler, ASIC'ler, ASSP'ler, FPGA'lar ve SoC'lerde kullanılmak üzere tasarlanmış ARM mikroişlemci işlemcilerdir. Cortex-M çekirdekleri yaygın olarak özel mikro denetleyici yongaları olarak kullanılır, ancak aynı zamanda güç yönetimi denetleyicileri, G/Ç denetleyicileri, sistem denetleyicileri, dokunmatik ekran denetleyicileri, akıllı pil denetleyicileri ve sensör denetleyicileri olarak SoC yongalarının içinde "gizlidir".
Cortex-A çekirdeğinden temel farkı, bellek yönetim biriminin (MMU) olmamasıdır. Tam teşekküllü bir işletim sistemi normalde bu işlemci sınıfında çalışmaz.
Geçmişte 8-bit mikrodenetleyiciler çok popüler olmasına rağmen, Cortex-M, düşük kaliteli Cortex-M çiplerinin fiyatları aşağı doğru hareket ettiğinden, 8-bit pazarında yavaş yavaş ufalanıyor. Cortex-M, 32 bit matematik işlemlerinden yararlanan ve ARM7 ve ARM9 gibi eski ARM çekirdeklerinin yerini alan uygulamalarda 8 bit yongaların popüler bir alternatifi haline geldi.
Arm Holdings kendi tasarımlarına göre CPU cihazları üretmez veya satmaz, bunun yerine işlemci mimarisini ilgili taraflara lisanslar. Arm, maliyet ve çıktılara göre değişen çeşitli lisans koşulları sunar. Arm, tüm lisans sahiplerine ARM çekirdeğinin entegre edilebilir bir donanım açıklamasını, eksiksiz yazılım geliştirme araç setini ve ARM CPU'yu içeren üretilmiş silikonu satma hakkını sağlar.
Entegre Cihaz Üreticileri (IDM), ARM İşlemci IP'sini sentezlenebilir RTL (Verilog'da yazılmış) olarak alır. Bu formda, mimari düzeyde optimizasyon ve uzantıları gerçekleştirme yeteneğine sahiptirler. Bu, üreticinin daha yüksek saat hızı, çok düşük güç tüketimi, komut seti uzantıları (kayan nokta dahil), boyut optimizasyonları, hata ayıklama desteği vb. gibi özel tasarım hedeflerine ulaşmasını sağlar. Belirli bir ARM'de hangi bileşenlerin bulunduğunu belirlemek için CPU yongası, üretici veri sayfasına ve ilgili belgelere bakın.
Cortex-M çekirdekleri için bazı silikon seçenekleri şunlardır:
SysTick zamanlayıcı: Hem işlemcinin hem de İç İçe Vektörlü Kesme Denetleyicisinin (NVIC) işlevselliğini artıran 24 bitlik bir sistem zamanlayıcısı. Mevcut olduğunda, ayrıca yapılandırılabilir bir öncelik SysTick kesmesi sağlar. SysTick zamanlayıcı isteğe bağlı olsa da, onsuz bir Cortex-M mikro denetleyici bulmak çok nadirdir. Bir Cortex-M33 mikro denetleyicisinde Güvenlik Uzantısı seçeneği varsa, biri Güvenli ve biri Güvenli Olmayan olmak üzere iki SysTick'e sahiptir.
Bit-Band: Bit-band bölgesindeki tek bir bitin üzerine tam bir bellek kelimesini eşler. Örneğin, bir takma ad sözcüğüne yazmak, bit bandı bölgesindeki ilgili biti ayarlayacak veya temizleyecektir. Bu, bit bandı bölgesindeki her bir bitin, kelime hizalı bir adresten doğrudan erişilebilir olmasını sağlar. Özellikle, bireysel bitler, komutların okuma-değiştirme-yazma sırası gerçekleştirilmeden C/C++'dan ayarlanabilir, temizlenebilir veya değiştirilebilir. Bit bandı isteğe bağlı olsa da, onsuz bir Cortex-M3 ve Cortex-M4 mikro denetleyici bulmak daha az yaygındır. Bazı Cortex-M0 ve Cortex-M0+ mikro denetleyicilerinde bit bandı bulunur.
Bellek Koruma Birimi (MPU): Ayrıcalık ve erişim kurallarını uygulayarak bellek bölgelerinin korunması için destek sağlar. Her biri sekiz eşit boyutlu alt bölgeye ayrılabilen sekiz adede kadar farklı bölgeyi destekler.
Tightly-Coupled Memory (TCM): Kritik rutinleri, verileri tutmak için kullanılan düşük gecikme süreli RAM , yığınlar. Önbellek dışında, genellikle mikrodenetleyicideki en hızlı RAM'dir.