Hedef büyütelim : Bir mass-storage device tasarlayalım


01.02.2013
 

Evet bildiğiniz TAŞINABİLİR DİSK.

Adının çok kalın olmasına aldırmayın. Bir HID device yaptıysanız, Doğru Dürüst çalıştırmayı becerdi iseniz, zaten USB nin temel konularına hakim olsunuz yolun %60 ını kat ettiniz demektir. (Tabi hazır kodu işlemciye yükleyip, hazır kit üzerinde LED’i yakıp söndürmüş olmayı kasdetmiyorum. Konunun biraz daha detayına girmiş arkadaşlardan bahsediyorum)

Şimdi bir %20 lik emek daha harcayıp MASS STORAGE yapısını öğrenme zamanı gelmiştir.

MASSTORAGE yani IZONKRON TRANSFER bir sonraki adım olan BULK transferden kameralar, yüksek hızlı modemler vs. bir önceki duraktır. (Aslında o durağa ben de gelmedim hala.)

Mass Storage için de yapmanız gereken ilk şey yine bir device descriptor tanımlamaktır. Bereket versin konu mass strorage olunca tek bir sınıf oluyor. Dolayısı ile device descriptor son derece kolaylaşıyor. Hatta internette bulacağınız descriptor örnekler üzerinde sadece marka model textlerini değiştirmeniz yetiyor.

İkinci öğrenmeniz gereken ise SCSI komutları. Çünkü bilgisayar tüm emirleri scsi komutları ile gönderiyor. Ama korkmayın. Öğrenmeniz ve kodlamanız gereken sadece 8-10 SCSI komutu var. Dosya sisteminin ayrıntılarını sizin bilmenize gerek yok. İşletim sistemi bunu tamamen kendisi yönetiyor.

Yani “bana 15. sektörü oku”, “3. sektörü yaz “ gibi basit komutlar size ulaşıyor, FAT nerede, bir dosya nerede başlayıp nerede bitiyor, directory nerede bunlar sizin ilgilenmeniz gereken konular değil.

Descriptor da bilgisayara diyorsunuz ki, kapasitemde her biri şu kadar byte olan, bu kadar sektör var. Bunları istediğin gibi düzenle. Olay sadece bundan ibaret.

Ama evet üzgünüm bu noktada artık MicroBasic MikroC size yetmeyecek yavaş yavaş MPLAB’ a geçiş yapmanız gerekecek.

Tabi bir de kullandığınız işlemciye en azından bir flash bellek bağlamanız ve bu yönetmeniz gerekiyor. Yani bilgisayar size SCSI komutuyla “23 numaralı sektörü gönder” dediğinde flash diskten 23 numaralı sektörü nasıl okuyacağınızı bilmeniz gerekiyor.

Size bir ipucu vereyim. Ben ilk geliştirdiğim mass storage uygulamasında flash disk kullanmadım ? Yani flasdisk olarak hem yazılımsal hem de donanımsal interface hazırlamakla uğraşmak istemedim. Amaç sadece USB nin mass storage protokolünü öğrenmek olduğundan PIC18F2550 nin program belleğinden kalan kısmı kullandım.

PIC ‘in flash program bellekli LVP (Low Voltage Programmable-Güşük gerilimle programlanabilir) işlemcilerinde kendi program belleklerine erişim (okuma/yazma) için komutlar mevcut. Cihazların on-line programlanmasını sağlayan boot-strap kodları bu şekilde çalışıyor.

Sonuçta kalan program belleği 8K lık bir flash disk olarak kullandım ve denemeleri o şekilde yaptım. Yani 8K / 64 sektörlük bir mass storage yaptım. Küçük bir text dosyasını bir 2550 üzerindeki diske sürükleyip bırakmanın sonra başka bir bilgisayardan almanın zevki ise tartışılmazdı.

Neticede amaç hasıl oldu. Artık gerekirse bir katı hal (solid state) diski de sürersiniz, bir hard diski de. Geriye kodunuza o protokolleri eklemek kalır.

 

AN1003 Microchip Application Note : USB MAss Storage Device Using PIC

Yorum Bırakın...







Kybele Yazılım / Kybele Teknoloji
Ar-Ge - Yazılım Geliştirme - Donanım Tasarımı
www.kybelesoft.com - kybele@kybelesoft.com - +90 312 343 42 62