guclusat

Tanınmış Üye
Süper Moderatör
NAND Flash'lar, standart BIOS entegreleri gibi "tertemiz" hafıza birimleri değildir. İçlerinde üretimden gelen hatalar ve karmaşık bir dosya sistemi barındırırlar. Elnec bu dökümanda işi şu 4 ana başlıkta topluyor:

1. Bad Block (Bozuk Blok) Gerçeği

NAND yongaları fabrikadan çıktığında bile %100 sağlam değildir. İçinde mutlaka birkaç tane "Bozuk Blok" (Bad Block) bulunur.
  • Kritik Bilgi: Eğer bir blok bozuksa, Elnec bunu işaretler. Sen dosyayı yazarken Elnec o bloğu atlar (Skip) ve bir sonrakine yazar.
  • Sorun nerede? Eğer senin elindeki "Dump" dosyası (yedeğin), bozuk blokları hesaba katmadan alınmışsa (Raw Image), adresler kayar ve cihaz açılmaz.

2. Spare Area (Yedek Alan) ve ECC Karışıklığı

NAND'da her 2048 byte'lık verinin yanında bir de 64 byte'lık "Yedek Alan" (Spare Area) vardır. Burası, verinin hatasız okunmasını sağlayan ECC (Error Correction Code) bilgilerini tutar.
  • Dosya Formatı Önemli: * Eğer dosyan 2048 byte ise: Sadece veri vardır. Elnec'e "ECC'yi sen hesapla ve yedek alana yaz" demelisin.
    • Eğer dosyan 2112 byte (2048+64) ise: İçinde zaten ECC bilgisi vardır. Elnec'e "Benim dosyamı olduğu gibi yaz, ECC hesaplama" demelisin.

3. Partitioning (Bölümlendirme)

Yeni nesil akıllı TV ve uydu alıcılarında NAND tek bir parça değildir. İçinde Boot, Kernel, RootFS gibi bölümler (Partition) vardır.
  • Elnec Çözümü: Dökümanda, Elnec yazılımındaki "NAND Flash Partition Table" özelliğinden bahsediliyor. Eğer yedeğin sadece belirli bir bölümü kapsıyorsa, başlangıç ve bitiş adreslerini manuel girmelisin.

4. Neden "Verify Error" (Doğrulama Hatası) Alıyoruz?

Elnec diyor ki: "NAND'da yazma işlemi bitince hemen doğrulama yapmayın."
  • Bazı yongalar yazıldıktan sonra ilk okumada küçük hatalar verebilir (Bit Flip). Elnec'in ayarlarında "Ignore Bit Flips" (Küçük bit hatalarını görmezden gel) seçeneğini işaretlemek, programlamanın başarıyla tamamlanmasını sağlar.

Atölye İçin Pratik Ayar Listesi (Checklist):

Eğer BeeProg2'de NAND yazarken zorlanıyorsan şu adımları izle:

  1. Device Options -> NAND Flash Settings: Buradan "Bad Block Management" kısmını kontrol et. Genellikle "Skip Bad Blocks" seçili olmalıdır.
  2. Spare Area: Eğer dump dosyanın boyutu standarttan büyükse (2112, 4224 vb.), "Include Spare Area" kutucuğunu işaretle.
  3. Vcc Ölçümü: NAND yazarken cihaz çok akım çeker. Adaptörün yanındaki voltajın stabil olduğundan emin ol. Elnec bazen voltajı %5 artırmanı (örneğin 3.3V yerine 3.45V) önerir.
  4. Chip ID: Eğer "ID Not Found" alıyorsan, TSOP48 ayaklarını tinerle/alkolle temizle. NAND pinleri çok hassastır.
 
Merhaba
Ignore Bit Flips"
Seçeneğini bulamıyorum yardımcı olurmudunuz
Beeprog2 gibi profesyonel bir cihazda doğrulama (verification) hatası alıyorsan, bu genellikle çipin içindeki çok küçük bir bit sapmasından veya yazılımın "aşırı titiz" davranmasından kaynaklanır.

Ancak bir noktayı düzeltelim: BeeHive veya Beeprog serisinin kullandığı PG4UW yazılımında "Ignore Bit Flips" seçeneği, bazı ucuz Çin malı programlayıcılarda (RT809H veya CH341 gibi) olduğu gibi ana ekranda kabak gibi görünmez.

Bu ayarı bulman ve hatayı aşman için şu adımları takip edelim:

1. "Ignore Bit Flips" Seçeneği Nerede?

BeeProg yazılımında bu özellik genellikle "Device Options" (Cihaz Seçenekleri) altındaki spesifik algoritma ayarlarında gizlidir.

  • Programlayıcı yazılımını (PG4UW) aç.
  • Üst menüden Device -> Device Options (veya klavyeden Alt + O) kısmına gir.
  • Açılan pencerede "Operation Options" sekmesine tıkla.
  • Burada sağ tarafta veya alt kısımda "Verify Options" (Doğrulama Seçenekleri) bölümünü göreceksin.
  • Eğer kullandığın çip (özellikle NAND flashlar) bu özelliği destekliyorsa, "Ignore Bad Blocks" veya doğrulama toleransı ile ilgili bir kutucuk göreceksin.
Not: Eğer standart bir EEPROM (24C, 25Q serisi gibi) yazıyorsan, BeeProg yazılımı genellikle "bit flip" görmezden gelmene izin vermez; çünkü bu çiplerde 1 bit bile hatalıysa veri bozulmuş demektir. Bu seçenek daha çok NAND Flash ve Bad Block içeren çipler için geçerlidir.

2. Doğrulama Hatası İçin Diğer Çözümler

Eğer ayarı bulamazsan veya seçmene rağmen hata devam ediyorsa şu "usta işi" yöntemleri dene:
  • Vcc Voltajını Düşür/Artır: Device Options -> Operation Options altından Verify Vcc değerini kontrol et. Bazen çip 3.3V ile yazılır ama 3.5V ile doğrulanmaya çalışılırsa hata verir. "Typical" seçeneğini işaretle.
  • Hızı Düşür: Bazı çipler (özellikle eski veya kalitesiz üretim olanlar) yüksek hızda veri transferini kaldıramaz. "Communication Speed" ayarını "Normal" veya "Slow" konumuna getir.
  • Çipi ve Soketi Temizle: BeeProg çok hassas bir cihazdır. Çipin bacaklarındaki en ufak bir oksitlenme veya soketteki toz, doğrulama sırasında veri kaybına sebep olur. İzopropil alkol ile temizleyip tekrar dene.
  • "Blank Check" Yap: Yazma işleminden önce çipin tamamen boş olduğundan emin ol. Eğer "Erase" işlemi başarılı görünüp "Verify" hata veriyorsa, çip ömrünü tamamlamış olabilir.

Tavsiye:

Eğer yazdığın dosya bir NAND Flash ise ve birkaç bitlik hata alıyorsan, cihazın çalışmasına engel olmayabilir. Ama bir BIOS veya EPROM yazıyorsan, hata aldığın sürece o cihaz muhtemelen "boot" etmeyecektir.
 
Çok teşekkürler gerçekten deneyip haber verecegigim
29f64g08cbaba flash nand entegresi yazmaya çalışıyorum
 

1. Geçersiz Blok (Invalid Block) Yönetimi

NAND Flash üretim teknolojisi gereği, sıfır bir cihazda dahi bozuk bloklar bulunabilir. Elnec programlayıcılar bu blokları yönetmek için birkaç temel teknik sunar:
  • Skip IB (Blok Atlatma): En yaygın yöntemdir; programlayıcı bir geçersiz blokla karşılaştığında onu atlar ve veriyi bir sonraki sağlam bloğa yazar. Bu durum, veri adreslerinde kaymaya (shift) neden olur.

  • Treat All Blocks (Tüm Blokları İşle): Blokların sağlamlık durumuna bakılmaksızın tümüne işlem yapılır. Genellikle arızalı cihazlardan veri kurtarma (dump alma) amacıyla kullanılır. Dikkat: Geçersiz bloklara yazma veya silme işlemi yapmak, blok geçerlilik bilgisinin (BI byte) kalıcı olarak kaybolmasına neden olabilir.

  • Discard Invalid Block Data: Geçersiz blokla karşılaşıldığında hem cihazda hem de tampon bellekte (buffer) bir blok ileri gidilir; yani o bloğa denk gelen veri yazılmaz, çöpe atılır. Genellikle çoklu kopyası olan bootloader veya veri tabloları için uygundur.

2. ECC (Hata Düzeltme Kodları) ve Spare Area

NAND Flash'larda bit hataları kaçınılmazdır ve bu hataları düzeltmek için ECC algoritmaları kullanılır.
  • ECC Hamming (Samsung): Sayfa verisini 512 byte'lık çerçevelere böler ve her çerçeve için 3 byte'lık kontrol toplamı (checksum) hesaplayıp "Spare Area" (Yedek Alan) kısmına yazar. Bu yöntem 1 bitlik hataları düzeltebilir.

  • Linux MTD Uyumluluğu: 256 byte'lık çerçeveler kullanılır ve Linux MTD sürücüleriyle uyumlu Variant 1 veya SmartMedia uyumlu Variant 2 düzenlerinde veri saklanabilir.

  • Dahili ECC (Internal ECC): Bazı modern NAND'larda donanımsal ECC kontrolcüsü bulunur. Bu özellik aktifse, tampon bellekteki yedek alan verileriyle çakışma yaşanabileceği için dikkatli olunmalıdır.

3. Kritik Programlama İpuçları

  • Adresleme Farkı: Cihaz normalde sadece veri alanını adreslerken, programlayıcı tampon belleği (buffer) doğrusal (linear) adresleme yapar. Yedek alan (Spare Area) kullanılıyorsa, tampon bellekteki adresleme cihazdakinden farklı bir ofsete sahip olur; bu durum partition (bölümleme) ayarlarında hata yapılmasına yol açabilir.

  • Boş Kontrol (Blank Check): Cihazın dahili kontrolcüsü, silme işleminden sonra blokların tamamen boşaldığını doğrularsa, programlayıcı zaman kazanmak için ayrıca bir "Blank Check" yapmaz.

  • Doğrulama (Tolerant Verify): Eğer kullanılan ECC algoritması programlayıcı tarafından bilinmiyorsa, "Tolerant Verify" özelliği ile belirli bir hata sayısı (örneğin 4 bit hatası) normal kabul edilerek doğrulama işlemi hata vermeden tamamlanabilir.
 

1. Okutma (Read) Prosedürü

  • Hazırlık: NAND Flash entegresini programlayıcıya yerleştirin ve PG4UW yazılımını çalıştırın.

  • Proje Yükleme: Yazılım arayüzündeki "Load prj" (1 numaralı ikon) butonuna tıklayarak önceden hazırlanmış "nand okuma" proje dosyasını yükleyin.

  • Okuma İşlemi: Arayüzdeki "Read" (2 numaralı ikon) butonuna tıklayarak okuma işlemini başlatın.

  • Kaydetme: Okunan verileri daha sonra kullanmak üzere "Save" butonu ile bilgisayarınıza kaydedin.

2. Yazma (Program) Prosedürü

  • Proje Hazırlığı: Başka bir NAND entegresine yazmak için yine "Load prj" (1 numaralı işlem) butonunu kullanarak yazma proje dosyasını yükleyin.

  • Dosya Seçimi: Daha önce okuyup kaydettiğiniz dosyayı "Load" (2 numaralı işlem) butonuyla tampon belleğe (buffer) yükleyin.

  • Yazma ve Doğrulama: "Program" (3 numaralı işlem) butonuna tıklayarak işlemi başlatın. Yazma bittikten sonra yazılım otomatik olarak "Verify" (doğrulama) işlemini gerçekleştirecektir.

3. Kritik Teknik Notlar ve Uyarılar

  • Bad Block (Hatalı Blok) Kontrolü: Programlama sırasında yazılım ekranında kaç adet geçersiz blok (invalid block) olduğu görünecektir. Belgede, eğer bir entegrede 10 ve üzeri bad block çıkarsa o entegrenin kullanılmaması tavsiye edilmektedir.

  • Yazılım Güncelliği: En sağlıklı sonuçlar için www.elnec.com adresinden en son yazılım sürümünün kullanılması önerilir.

  • Hata Düzeltme (ECC): Görsellerde ECC çerçeve boyutunun 512 byte ve kabul edilebilir hata sayısının 12 olarak yapılandırıldığı görülmektedir.
 
Geri
Yukarı