Facebook RSS Feed
 
.NET Micro Framework: USBizi Internal Flash Storage Erişimi
Tarih: 04.06.2012, Platform: .NET MF 4.2, IDE: Visual Studio 2010, Level: 200



Mikrodenetleyici uygulamalarında, uygulama parametrelerini EEPROM yada flash hafıza üzerinde tutarız. Kaydedeceğimiz parametreler, byte dizisi halinde saklanır ve gerektiğinde çağrılır. Üzerinde duracağımız uygulamada .NET Micro Framework ile dahili flash hafızaya parametre yazıp okuyacağız...

Adım 1: Öngereksinimler

Internal Flash Storage sınıfı GHIElectronics tarafından USBizi chipseti için yazılmıştır. Dolayısıyla geliştireceğimiz uygulama USBizi çipseti ile çalışacaktır. Diğer modellerde aynı işlem için farklı yöntemler uygulanır.

Dahili flash hafıza uygulaması geliştirmek için USBizi chipsetine sahip FEZ Rhino, Panda, Panda II veya Mini kitlerinden birini kullanıyor olmanız gerekir. Ayrıca bilgisayarınızda .NET Micro Framework SDK'sı ve GHI Electronics SDK'sı yüklü olmalıdır.

Visual Studio'dan yeni bir .NET Micro Framework Console Application oluşturalım. Proje referansları içerisine "GHIElectronics.NETMF.Hardware.dll" dosyasını ekleyelim. Program.cs dosyamızın using statement'ları arasına da "GHIElectronics.NETMF.Hardware;" satırını ekleyelim.

Adım 2: Kullanılabilir Hafıza Boyutu

Parametre saklamak için kullanabileceğimiz byte dizisi boyutunu, InternalFlashStorage.Size özelliği ile sorguluyoruz. Aşağıdaki kod bloğunu yazdığımızda, Visual Studio Immediate Window'da kullanılabilir byte kapasitesini göreceğiz.

[C#] Program.cs

using System;
using Microsoft.SPOT;
using GHIElectronics.NETMF.Hardware;
 
namespace MFInternalFlashStorage
{
    public class Program
    {
        public static void Main()
        {
            Debug.Print("Kapasite: " + InternalFlashStorage.Size);
 
            System.Threading.Thread.Sleep(-1);
        }
    }
}

Bu uygulama bize veri saklamak için 4096 elemanlı bir byte dizisi kullanabiliriz anlamına gelen "Kapasite: 4096" sonucunu verecek.

Adım 3: Parametre Eklemek

Dahili flash hafızaya parametre yazmak için InternalFlashStorage.Write(byte[] veri) metodunu kullanacağız. Sıradaki kod bloğu ile flash hafızaya sırasıyla 0x10, 0x20 ve 0x30 değerlerini yazacağız.

[C#] Program.cs

using System;
using Microsoft.SPOT;
using GHIElectronics.NETMF.Hardware;
 
namespace MFInternalFlashStorage
{
    public class Program
    {
        public static void Main()
        {
            // Dahili flash hafıza boyutunda bir byte dizisi oluştur:
            byte[] veri = new byte[InternalFlashStorage.Size];
 
            // İstenilen parametreleri diziye ekle:
            veri[0] = 0x10;
            veri[1] = 0x20;
            veri[2] = 0x30;
 
            // Tüm veriyi flash hafızaya yaz:
            InternalFlashStorage.Write(veri);
 
            // İşlem tamamlandığında onay mesajı göster:
            Debug.Print("Yazma islemi tamamlandi.");
 
            // Uygulamayı uyut:
            System.Threading.Thread.Sleep(-1);
        }
    }
}

Geliştirdiğimiz uygulama, mikrodenetleyicimizin flash hafızasına belirttiğimiz değerleri yazacak ve ardından Immediate Window'da onay mesajı gösterecek.

Adım 4: Parametre Okumak

Önceden flash hafızaya yazdığımız parametreleri okumak için kullanacağımız metod ise InternalFlashStorage.Read(byte[] veri). Bu metod, hafızadaki 4096 byte'lık değeri okuyarak, belirlediğimiz byte dizisine kopyalar. Bu diziden istediğimiz elemanın değerine ulaşabiliriz.

[C#] Program.cs

using System;
using Microsoft.SPOT;
using GHIElectronics.NETMF.Hardware;
 
namespace MFInternalFlashStorage
{
    public class Program
    {
        public static void Main()
        {
            // Dahili flash hafıza boyutunda bir byte dizisi oluştur:
            byte[] veri = new byte[InternalFlashStorage.Size];
 
            // Flash hafızadaki tüm veriyi oku:
            InternalFlashStorage.Read(veri);
 
            // Okunan ilk 3 elemanı göster:
            for (int i = 0; i < 3; i++)
            {
                Debug.Print(veri[i].ToString());
            }
 
            // Uygulamayı uyut:
            System.Threading.Thread.Sleep(-1);
        }
    }
}

Bu uygulamayı çalıştırdığımızda ise, önceden kaydettiğimiz 3 veriyi Immediate Window'da göreceğiz.

Bilmenizde Fayda Var...

InternalFlashStorage metodları, saklanan tüm veriyi tek seferde okur ve yazar. Örneğin, dizinin 20 ile 30. elemanları arasında yazma işlemi yapmak isterseniz, önce read metoduyla tüm diziyi okuyup, bunun üzerinde istediğiniz elemanlarda değişiklik yaparak 4096 byte'lık diziyi tekrar yazmanız gerekir. Bu okuma / yazma işlemi yaklaşık yarım saniye sürer.

Dahili flash hafızaya yazdığımız parametreler, mikrodenetleyicinin flash kod hafızasında tutulur ve biz üzerine yazmadıkça değişmez. Çipe yeni yazılım yüklediğimizde dahi bu veriler korunur. (Firmware güncellerken sıfırlanır.)

Flash hafızanın yazma ömrü sınırlıdır. Cihazımızın ömrünün uzun olabilmesi için sürekli yazma işlemi yapılmaması gerekir. Bu yüzden ideal kullanım alanı, kullanıcının değiştirebileceği uygulama parametrelerini saklamak olmalıdır. Data logger uygulamaları için SD kart gibi depolama birimleri tercih edilmelidir.


Ek Dosya: Belirtilmemiş.
Okunma Sayısı: 1957

comments powered by Disqus
 
Hoşgeldiniz!
Son güncelleme: 25.12.2016
-
Yeni Teknik Yazılar
Latte Panda İncelemesi
Turta IoT HAT İncelemesi
USB Gamepad Kullanımı
GPIO Kullanımı
VEML6075 UV Sensör Kullan...
-
İlgili Gruplar
.NET MF ve Gadgeteer FB Grubu
İst. IoT & Wearables Meet-up
-
 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Copyright © 1999 - 2017, Umut Erkal. Bu materyal, "Creative Commons Public Licence" ile sunulmuştur.
Kaynak göstererek ve ücretsiz olarak, aynı şartlar altında paylaşabilir ve kullanabilirsiniz. | Kullanım Sözleşmesi