ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama TUNA AYAN www.tuna-ayan.com tunayan@gmail.com
BAŞLAMADAN ÖNCE İşlemci Nedir? İşlemci Nasıl Çalışır? Mikrodenetleyici Nedir? ARM Mimarisi Stellaris LM3S811 Stellaris LM3S811 Evaluation Kit StellarisWare(API) Keil (IDE) Programcı Modeli Demo Uygulama
Çevresel birimlerin çalışmasını sağlayan, İŞLEMCİ NEDİR? İşlemci: Çevresel birimlerin çalışmasını sağlayan, Bu birimler arasındaki veri (data) akışını kontrol eden, Veri işleme görevlerini yerine getiren, Milyonlarca transistörden(IC) oluşan bir yapıdır.
Decoder(Çözücü) 10000100 => 1 000 0100 Accumulator(Toplayıcı) İŞLEMCİ NEDİR? Temel Kavramlar: Register(Kaydedici) Instruction(Komut) Decoder(Çözücü) 10000100 => 1 000 0100 Accumulator(Toplayıcı) Memory(Hafıza) İşlemciye Ait Birimler: Komut Kaydedici(Instruction Register) Komut Çözücü (Instruction Decoder) ALU(Arithmetic Logic Unit)
Memory(Hafıza): Kodumuzun okunacağı hafıza alanıdır. İŞLEMCİ NASIL ÇALIŞIR? Memory(Hafıza): Kodumuzun okunacağı hafıza alanıdır. Program Counter Memory add #5 sub #4 STRA $10 XX XXX Program Counter(Program Sayıcı): Hafıza üzerinde hangi satırdan okuma yapacağımızı belirleyen kısımdır.
Instruction Register(Komut Kaydedici): İŞLEMCİ NASIL ÇALIŞIR? Instruction Register(Komut Kaydedici): Memory üzerinden okunan makine kodunu yorumlar. Makine kodunu ayrıştırır. Kontrol sinyallerini ayarlar ve işlemi başlatır. Program Counter Memory add #5 sub #4 STRA $10 XX XXX Instruction Register ALU ALU: İşlemcinin matematiksel ve mantıksal işlemleri yapan birimine ALU denir.
Accumulator(Toplayıcı): ALU sonuçları accumulator e kaydedilir. İŞLEMCİ NASIL ÇALIŞIR? Accumulator(Toplayıcı): ALU sonuçları accumulator e kaydedilir. Accumulator genel amaçlı kaydediciler sınıfına girmektedir. Program Counter Memory add #5 sub #4 STRA $10 XX XXX Instruction Register ALU Write Back(Geri Yazma): Bazı işlemlerde geri yazma operasyonu da kullanılır. Accumulator
İŞLEMCİ NASIL ÇALIŞIR? Program Counter Memory add #5 sub #4 STRA $10 XX XXX BUS: İşlemcinin, kendi içinde ve çevresindeki donanımlarla arasındaki bağlantıyı sağlayan iletken yollardır. Data Bus Address Bus Control Bus Instruction Register ALU Accumulator
Örnek Uygulama: Kullanılan Elemanlar: İŞLEMCİ NASIL ÇALIŞIR? Örnek Uygulama: Kullanılan Elemanlar: PC: Program Counter (Program sayıcı) IR: Instruction Register (Komut kaydedici) ACC: Accumulator (Toplayıcı) MAR: Memory Address Register(Adres kaydedici hafıza) MBR: Memory Buffer Register (Buffer kaydedici hafıza) A,B : Register (Özel kaydedicilerimiz) Kullanılan Komutlar: MOVE: Taşı komutudur. ADD : Ekleme komutudur STO : Yazma komutudur. Uygulama Linki
Birden fazla komutun aynı anda işlenmesi olayına pipeline denir İŞLEMCİ NASIL ÇALIŞIR? Pipeline: Birden fazla komutun aynı anda işlenmesi olayına pipeline denir ARM tabanlı sistemlerde 3 aşamalı(fetch,decode,execute) pipeline kullanılır. Örnek Uygulama
CISC(Complex Instruction Set Computer): İŞLEMCİ NASIL ÇALIŞIR? CISC(Complex Instruction Set Computer): İşlemci kendi üzerinde bulunan minyatür bir yazılımı kullanarak komut setlerini çalıştırır. Bu sayede komut setleri değişik uzunluklarda olabilir ve bütün adresleme modellerini kullanabilirler. Bunun dezavantajı çalışmak için daha karmaşık bir devre tasarımına ihtiyaç duyulmasıdır RISC(Reduced Instruction Set Computer): Daha az komutla çalışan, tek bir saat döngüsünde çalışacak çok hızlı komutları işleyebilecek, basit bir devre tasarımıyla gelmiştir. ARM tabanlı sistemlerde RISC kullanılır.
İŞLEMCİ NASIL ÇALIŞIR? CISC vs RISC: Hafıza üzerinde (1,1) ve (1,2) koordinatlarında bulunan 2 sayıyı çarpalım ve sonucu (1,1) adresine yazalım. CISC: MULT (1,1), (1,2) RISC: LOAD A, (1,1) LOAD B, (1,2) PROD A, B STORE (1,1), A Hangisi daha iyi ?? Referans
Mikrodenetleyici, özel amaçlı mikroişlemcidir. MİKRODENETLEYİCİ NEDİR? Mikrodenetleyici, özel amaçlı mikroişlemcidir. Üzerinde işlemci dışında RAM,ADC,I/O vs. entegre edilmiş olarak bulunabilir. Maliyeti ucuz olması ve tek bir entegrede (IC) çevresel aygıt modüllerinin bulunması mikrodenetleyicileri cazip kılmıştır. Mikrodenetleyici = Microcomputer = MCU = uC
Düşük güç tüketimi sağlar. Sadeleştirilmiş komut setine sahiptir. ARM MİMARİSİ Hakkında: ARM (Acorn Risc Machine) mimarisi 32-bit RISC işlemci mimarisine sahiptir. Düşük güç tüketimi sağlar. Sadeleştirilmiş komut setine sahiptir. Yüksek performans sağlar.
M Serisi: Cortex-M0, Cortex-M3, Cortex-M4 ARM MİMARİSİ ARMv7 Çeşitleri: M Serisi: Cortex-M0, Cortex-M3, Cortex-M4 A Serisi: Cortex-A8, Cortex-A9 R Serisi: Cortex-R4, Cortex-R5, Cortex-R7
ARM Teknolojisi: Thumb Thumb2 TrustZone Jazelle SIMD DSP Komutları ARM MİMARİSİ ARM Teknolojisi: Thumb Thumb2 TrustZone Jazelle SIMD DSP Komutları CMSIS NVIC
Cortex-M3Teknolojisi: Thumb: ARM MİMARİSİ Cortex-M3Teknolojisi: Thumb: Thumb komut seti ARM komut setinden farklı olarak 16 bit ile çalışır. Hafızada daha az yer kaplaması ve perfomans artışı sağladığı için tercih edilir. Thumb2: Komut çeşitliği, performans ve ARM komut setiyle aynı anda kullanılabilirliği açısından thumb komut setinin geliştirilmesiyle oluşmuş bir sistemdir.
Cortex-M3Teknolojisi: CMSIS: ARM MİMARİSİ Cortex-M3Teknolojisi: CMSIS: Türkçesi Cortex mikrodenetleyici yazılım ara yüzü standardıdır. Cortex çekirdeğine sahip işlemciler üzerinde, üreticiden ve çipten bağımsız olarak basit bir şekilde gerçek zamanlı işletim sistemi kullanabilmeye olanak sağlar NVIC: Kesme(interrupt) modülüdür. İşlemci üzerindeki bütün portlara harici kesme verebilme olanağı sağlamaktadır.
Düşük güç tüketimi sayesinde mobil uygulamalarda tercih edilir. STELLARIS LM3S811 Hakkında: ARM Cortex M3 mimarisine sahip olan stellaris serisi MCU’lar düşük fiyat ve yüksek performans sağlamalarından dolayı tercih edilmektedirler. Kolay programlanabilme özelliği (stellarisware) ile programcıya rahatça 32bit işlemci programlayabilme avantajı sağlamaktadır. Düşük güç tüketimi sayesinde mobil uygulamalarda tercih edilir. Ortalama fiyatı : $2.75
Genel amaçlı Timer(sayıcı) Watchdog Timer(sayıcı) I2C UART 10-bit ADC STELLARIS LM3S811 Özellikleri: 50MHz işlemci 64kB flash ve 8 kB SRAM Genel amaçlı Timer(sayıcı) Watchdog Timer(sayıcı) I2C UART 10-bit ADC PWM SPI RTC LDO
Programlanabilir kullanıcı butonu Reset buton Potansiyometre STELLARIS LM3S811 EVALUATION KIT Özellikleri: Stellaris LM3S811 işlemci 96x16 OLED display Programlanabilir kullanıcı butonu Reset buton Potansiyometre 20-pin JTAG debug konnektörü (ICDI) UART0 üzerinden sanal USB haberleşme portu USB üzerinden güç seçeneği
Stellaris MCU’ları kolayca programlamamızı sağlar STELLARISWARE Hakkında: Ücretsiz lisanslı Stellaris MCU’larda kullanılmak üzere geliştirilmiş açık kaynaklı kütüphaneler topluluğudur. Stellaris MCU’ları kolayca programlamamızı sağlar C tabanlı yazılsa da arka planda Thumb-2 komut setini kullandığı için performans konusunda oldukça iddialıdır. uKeil, CCS, IAR, Code Red givi derleyicilerle derlenebilmektedir.
Cortex-M, Cortex-R4, ARM7 ve ARM9 cihazlarının tamamını destekliyor KEIL Hakkında: Cortex-M, Cortex-R4, ARM7 ve ARM9 cihazlarının tamamını destekliyor Üzerinde IDE, debugger ve simülasyon desteği vardır CMSIS özelliğini destekliyor TCP/IP ve UDP protokollerini destekliyor. 32 KB ücretsiz kullanım özelliği vardır.
PROGRAMCI MODELİ Kodumuz derlenir ve hafızaya gönderilir İşlemci daha sonra kodumuzu çalıştırır
DİNLEDİĞİNİZ İÇİN TEŞEKKÜRLER