Microsoftun pratikdeki ilk önerileri şunlar
 
-Harici Ekranlar
-Sensör kullanılan uygulamalar
-Saglık Görüntüleme Cihazları
-Robotics
-Giyilebilen cihazlar
-DataLogger lar 
-Ev Otomasyonları
-Endüstriyel Controller
-Para veya jetonla çalışan cihazlar gibi kullanım alanları önermekte.
 
.Net Compact framework min. 12 MB RAM ihtiyacı duyarken, Micro Framework içinse 300 KB RAM yeterli oluyor. 27 MHz lik ARM7 işlemcili 384 KB RAM ve 1 MB flash memory e sahip akıllı saatler .Net Microframework ile çalışmakta. .Net Micro Framework için önerilen minimum donanım gereksinimi
-ARM 7  ailesi  işlemci
-55 MHz
-8 MB RAM
-1 MB Flash Memory.

.Net  Microframe work için 32 bitlik işlemci şart. Piyasada 16 bit veya çift 8 bitlik işlemcilerde C veya assembly ile geliştirilen uygulamaların yerini, üretim maliyeti düşük ve çok az enerji harcayan 32 bitlik işlemciler almakta.

Micro Framework ne yapamaz?
.Net Micro Framework real-time bir sistem degil. Bir çok uygulama için oldukça hızlı ve yeterli olsa da, onu real-time sistem performansı beklememek lazım. 

Yazılımınız içinde kullanıdıgınız bir timer eger her 250 ms de tetiklenmesi gerekiyorsa, ISR (interrupt service routine) kesme işlemini gerçekleştirip istediginiz kodu çalıştırmakta birkaç milisaniye geç kalabilir.
Veya Garbage Collector çalışıp hafızada kullanılan alanlarını boşaltırken sizin kodunuzdaki threadler birkaç milisaniye bloke olabilir. Bunla beraber yazdığınız managed kod, native koda göre elbette bir miktar daha yavaş çalışacaktır. Güçlü donanımlarla bir nebze bunun önüne geçilebilir. Yazmış olduğunuz managed kodlar her an bir kesme istemiyse kesile bilir. Compiler  Just-in-time derleyemediği için kod ilk çalışmaya başladığında tamamıyla derlenmekte ve hafızaya atılmakta.


Gömülü cihazlarda programlama için C, C++ ve assembly dilleri kullanılıyor. Uygulama geliştiriciler kodlarını direk donanımların kendi ara yüzlerine yazmaktalar. Bir cihaz için yazdığınız çalışan kodunuz  diger sistemde çalışmıyor. İşlemciler aynı bile olsa, veri yolları, interruptlar, hafıza ve I/O arabirimleri farklılık gösteriyor.

Her işlemci üreticisi kendi devkiti, simülatörini ve debug aracını kendi geliştirmekte. Uygulama geliştiriciler için zor bir durum.

İşte .Net MF deki farklılık burada başlıyor, .NET Micro Framework yüklü boardlar, kullanıma hazır single-board-computer lar. Tabi hepsi kendi hafıza, ekran, GPIO ve seri portlarını barındırmakta. Framework deki class ve nesneler, cihaz ile yazacağınız kod arasında bir ara katman oluyor.
Böyle olunca, donanımın özellikli kodlarına değil siz yapmak istediğiniz .Net koduna odaklanıyorsunuz.

.Net Micro framework içerisinde mevcut donanıma erişmek için temek sınıf kütüphanelerini sanki bir nesne gibi kullanıyorsunuz. Yazılımınızdan donanımlara nesne yönelimi kodları yazarak erişiyorsunuz.

Bu şekilde donanımdan bağımsız managed kod yazabiliyorsunuz. Ve yazmış olduğunuz kodun standart kütüphanedekilerini farklı cihazlarda çalıştırabiliyorsunuz.
Ve bu kodu yazarken Visual Studio gibi gelmiş geçmiş en iyi IDE yi ve popüler C# dilini kullanıyorsunuz. İşlemciden hatta single-board-computer dan bagımsız kod yazabiliyorunuz.

.Net MF sayesinde bütün cihazlar aynı dili konuşmuş oluyor, yani C#...
 
Managed Kod ile yazmanın diger ajantajları 
- Otomatik hafıza yönetimi (Garbage Collection sayesinde
- Thread yönetimi ve senkronizasyonu
- Exception handling (istisnai durum yakalayıcısı)
- Veri tipi güvenligi
- Debug hizmeti
 

 

Daha önceki yazımda Micro framework e bir giriş yapmıştık ama sanırım olayın backgroundunu pek incelemedik.
Jens Kühner kitabında çok güzel bir şekilde .Net Microframework ün tanımını yapmıştı:

"The Microsoft .NET Micro Framework is a small and efficient .NET runtime environment used to run managed code on devices that are too small and resource constrained for Windows CE and the .NET Compact Framework.

The .NET Micro Framework enables you to write embedded applications for small, connected, embedded devices with Visual Studio and C#. That means you can now use the same development tools and language that you use to build desktop and smart device (PDA and smartphone) applications to develop applications for microcontrollers. The .NET Micro Framework also provides an extensible hardware emulator for rapid prototyping and debugging.

The .NET Micro Framework requires no underlying operating system. A scaled-down version of the Common Language Runtime (TinyCLR) sits directly on the hardware, so the framework is often called a bootable runtime. The runtime has a small footprint; it uses only a few hundred kilobytes of RAM and does not require the processor to have a memory management unit (MMU). Therefore, the .NET Micro Framework can run on small and inexpensive 32-bit processors without consuming a lot of power."

Platformu biraz daha tanıyalım istedim, bildiginiz gibi yanlızca yazılım yönü yoktur platformun birde donanım kısmı var. 
Dünyada bir çok CPU üreticisi olmasına ragmen, şu an için işlemcisini MF boardına port eden çok az firma var. Donanım üreticileri kendi işlemcilerini veya piyasada ki başka ARM işlemci üreticilerinden aldıkları işlemciyi, RAM, ROM ve besleme elemanlarını bir araya getirip kendi board larını oluşturuyorlar.

MF de yazılan kodların çalışması için 32 bitlik ARM bir işlemci ve 64K den az RAM yeterli oluyor. MMU olmaması, CE cihazlarından daha ucuza gelmesini saglıyor.
Bu yüzden MF yüklü cihazlar düşük maliyetli, yüksek beceri gerektiren, yanlızca bir fonksiyona atanmış ve baglanabilir sistemler için iyi bir tercih.

Potansiyel uygulama alanları çok. POS cihazlarından tutun da, medikal cihazlar, ev veya endüstriyel otomasyonlar, otomotiv ve PC baglantılı görev verebileceginizi her yerde kullanılabilir. Akıllı, baglantı halinde ve kolay yönetilebilen bir cihaza ihtiyacınız varsa ve buna uygulama geliştirmek te kolay olsunsa buyurun size MF yüklü cihazlar.

Üzerinde ARM işlemci bulunan bütün Single-Board-Computer lara uygulanma imkanı var. Şu an board olarak satılan ve içine MF port edilmiş cihazlardan bir kaçı üreten firmalar şunlar :
 
  • Aug-electronics  (ATMEL AT91SAM9261 üzerinde)
  • Crossbow  (Marvell PXA271 XScale ARM tabanlı)
  • Device Solutions  (Meridian 100 Mhz, 4 Mb flash, 8 Mb RAM, 16 GPIO, SPI, I2C, 2xUART. üzerinde)
  • Digi  (NS7520, NS9215, NS9210 işlemcileri üzerine)
  • emtrion  (Atmel AT91RM9200 üzerinde)
  • GHI  (ARM 7 işlemciler üzerine <75 Mhz)
  • SJJ Micro (Cirrus Logic EP9302 ARM9 200MHz)

    Neredeyse hepsinin developer kitleri var. Bazılarının yanlızca single-boardlarıda var. Developer kitler $200 ile $500 arasında degişiyor. Üzerinde sundukları donanımlara göre fiyatlar çeşitli. Single-Boardlar ile 50$ civarlarında.
  • Uzun zamandır bekledigim gün gerçekleşti. Uzun bir araştırma sonucu en iyi MF developer kit olarak düşündügüm Tahoe kartı bugun elime geçti.
    10 ayda Tahoe-I için niyetlenmiştim ama bekledigime degdi, Tahoe-II framework 3.0 ile geldi.

    Tahoe nin en büyük özelligi diger dev-kit lerde sınırlı sayıda olan giriş-çıkış sayısının fazla olması. Üzerinde bir çok ek donanımı barındırması, ilk başlayanlar için güzel bir nokta.
    Hem ihtiyacınız olan ek donanımları takarken mevcut I/O ları kullanmamış olmuyorsunuz, hemde toplu satın alındıgı için tek tek  almaktan daha hesaplıya geliyor.

    Eger kartı endüstri otomasyonlarında kullanmayı düşünüyorsanız Taheo sizin işinizi fevkalade görecektir. Connected uygulamalarda o portlara çok ihtiyacımız olacak.
    Kartın MF çekirdeginde (core) olarak Meridian işlemci kullanılmış. Meridian, ARM9 serisi bir CPU, 100Mhzde çalışır. Port edilmiş kartın üzerine 4Mbyte Flash ve  8Mbyte da SDRAM yerleştirilmiş. MSIL kodlarımız  burada derlenecek.

    Taheo-II nin diger genel özellikleri şunlar :

    • 3.5” Yatay Dokunmatik TFT LCD Ekran
    • 9 buton, kullanıcının erişebilecegi
    • RS232 seri port (DB9)
    • USB 
    • Ethernet (RJ45)
    • Accelerometer (serbest düşme eventi olan) Nokia N95 ve iPhone da bulunan hareket (ivme) sensoru
    • SD Card 
    • Sıcaklık Sensörü
    • 2x ADC (Analogdan digitale cevirici)
    • XBee wireless module (XBee standartı kablosuz iletişim protokolu- RF modullü)
    • GPIO, I2C, SPI veUART sinyalleri için genişletme connector leri
    • PWM çıkışı

    Kartla ilgili yaptıgım uygulamaları buradan paylaşıcam, 
    görüşmek dilegiyle.



    Kartın resimleri burada 1 , 2 , 3

    Ve nihayet .NET Micro Framework v3.0 geliyor ve bu sefer native code desteğide var. 2.0 ve 2.5 sürümlerindeki real-timeda yaşanan sıkıntılarını aşmak için native code dan event callback oluşturabilecegiz.

    Yanlızca managed code kullanmanın bazı yerlerde eksik kaldığını anlayınca  ekip bu büyük değişikliği yapmış. Maalesef henüz beta aşamasında.

    İşte yenilikler şunlar; 

    -Interop 
    -Dokunmatik Ekran(Touchscreen )
    -Dosya Sistemi (Filesystem) 
    -VS2008 
    -DPWS Araçları
    -Wi-Fi 
    -SSL 
    -Serial enhancements 
    -USB Device 
    -Fonts 
    -daha fazla çekirdek
    -Emulator ve ölçüm gereçleri

    .Net Micro Framework nedir?

    22 Tem 2008 In: .Net Micro Framework
    2003 yılında Microsoft un .Net adı ile geliştirdigi yazılım framework ü 5 yıl içerisinde hatırı sayılır bir yol aldı. Piyasaya sürüldügünü zamandaki rakiplerinin gerek sürekli kan kaybetmesi, gerek Microsoftun üstün gayretleri ve destegi sayesinde zamanımızın en popüler uygulama geliştirme platformu olmuştur.

    Masaüstü, web, mobil e derken şimdi .Net platformu ile gömülü sistemlerede uygulama geliştirilebilecek. Üstelik Visual Studio gibi yeryüzünün en gelişmiş IDE si ile.

    Micro Framework ün PORT edildigi donanımlar çok az enerji ile çalışan, MMU u olamayan 32 bitlik ARM işlemcilere sahip cihazlar. Ve cihazlar kendinden bootable. Yani her hangi bir işletim sistemine gerek duymuyor( on-the-metal ).  640 kb RAM, 512 kb ROM çalışması için yeterli. Mevcut Windows CE ve windows XP embedded tan oldukca az sistem kaynagına ihtiyaç duyuyor.

    Sahip oldugu baglantı zenginligi cihazı oldukca güçlü kılıyor, neler yokki:
    - flash memory
    - EEPROM
    - GPIO
    - I2C
    - SPI
    - USB  
    - Ethernet

    Bu platforma direk C# ile kod yazmak cihazı daha degerli kılıyor. Bir çok sensör baglana biliyor. Sensorlerden alınan veriler tıpkı bir PIC de çalışır gibi kodlanıp işlene biliyor.
     

    Mevcut PLC lerin yerine kullanılmamasının tek nedeni real-time olayı. Kodun ne kadar sürede cevap verebilecigini MF garanti edemiyor. Kod çalışması gerektiginde 100 ms veya 20 ms demi tepki verecegi bilemiyorsunuz. Sabit bir süre olmadıgı için gerçek real-time olmuyor.

    Ama geliştirdiginiz uygulamada 1 saniyeden daha az sürede tepki vermekte gecikmesinin bir önemi yoksa, Micro Framework tam size göre. Mesela kritik bir uygulamada Garbage Collection çalışmaya başlarsa, tepki süresi elbette geçikiyor, belki 150 ms de interrupt a cevap veriyor.

    Dolayısıyla real-time uygulamalar için native kod destegi olması gerekiyor.

    Bekliyelim hep beraber görelim...

    Ben Kimim ?

    Celiker BahceciMerhabalar, ben Çeliker BAHÇECİ. 2004 den beri özel sektörde bilgisayar mühendisligi ve egitmenlik yapıyorum. Yine aynı yılın Ekim ayından beri sitemde .Net ile programlama ve hayat görüşüm ile ilgili makalelerimi yayınlıyorum. Blogum dışında Yazgelistir.com, mobilnedir.com gibi ineta kapsamındaki bir çok siteye Microsoft teknolojileri ile ilgili yazılar yazmaktayım.
    Bu site ile sizinde hayatınızı anlamlandırmanızda bir parça katkımın olması dilegiyle...