ipli jeton

Uzman
Katılım
23 Ağustos 2024
Mesajlar
33
Çözümler
1
Beğeniler
23
Merhaba.

Anakart BIOS'larında da kullanılan SPI Flash çiplerini PICkit 2 ve PICkit 3 ile okuyabilir ve yazabilirsiniz. PICkit minus yazılımına 3.21.00 sürümünden itibaren 3.3V, 3.26. 04 sürümünden itibaren 1.8V SPI flash desteği eklendi. (Yazılım linkleri yazının sonundadır.) Yazılımın geliştirme aşamasında, çiplerin test edilmesi işlerini büyük oranda ben yürüttüm. Bir kısmını sıfır satın aldığım, bir kısmını hurda kartlardan temin ettiğim çipleri test ederek yazılıma ekledim. Birkaç tanesini de yazılımı yazan arkadaş ekledi. Bu nedenle programda ön tanımlı çip sayısı biraz sınırlı. Bu nedenle programda olmayan çipin nasıl tanıtılacağını anlatayım.

Önce şu birkaç uyarıyı yapayım: Birçok klon programlayıcıda voltaj kontrolü bulunmamaktadır. Bu nedenle klon programlayıcı kullanıyorsanız ekstra dikkatli olun ve programlayıcının doğru voltaj ayarında olduğundan emin olmadan çipe bağlamayın. PICkit2 kullanacaksanız, 1.8V çiplerde 1.8V adaptör kullanmanızı öneririm. Yaptığımız testlerde 1.8V çipler PICkit2'de adaptör kullanmadan da sorunsuz çalıştı ama sizinkinde çalışacağını garanti edemiyoruz.

Programda tanımlı olmayan çipi okutmaya çalıştığınızda ekranda "Unsupported part (ID: XXXXXXX)" yazar. Bu değer çipin JEDEC ID'sidir. Bunun ilk iki hanesi üretici kodudur. Winbond çiplerde bu hane EF, Macronix(MXIC) çiplerde C2'dir. Anakartlarda genelde bu ikisi çok yaygın kullanılır. Diğer üreticilerin kodlarını internette bulabilirsiniz. En yaygını bu ikisi olduğu için bunu verdim. Son iki hane çipin kapasitesini gösterir:

Kod:
Kapasite(Mbit) Kapasite(Byte) ID.
256        32M         19
128         16M         18
64         8M         17
32         4M         16
16         2M         15
8         1M         14
4         512K         13
2         256K         12
1         128K         11

Buna göre çipin marka ve kapasitesi ile okunan ID tutuyorsa çiple iletişim kurulabiliyor demektir. Çip programda tanımlı ise çipi tanıtma aşamasını atlayabilirsiniz.

Winbond çiplerde genellikle kapasite gösteren sayıdan sonra gelen ikinci harf V ise 3.3V, W ise 1.8V'dur. Örneğin: W25Q64JV 3.3V iken W25Q64JW 1.8V'tur. Macronix çiplerde genellikle 25 ile kapasite gösteren sayı arasındaki harf L ise 3.3V, U ise 1.8V'tur. Örneğin: MX25L12845E 3.3V iken, MX25U12832F 1.8V'tur.

Tanımlı olmayan çipi eklemek için PICkit Plus device file editor programını indirip çalıştırıyoruz.
Çipin datasheetini bulup şu parametrelere bakıyoruz:
1- Çipin adı.
2. Çipin kapasitesi
3- JEDEC ID. Datasheet içerisinde JEDEC ID ya da 9F olarak aratıp ilgili sayfaya gidebiliriz. 0x9F kodu ile okunan ID'ye o JEDEC ID oluyor, biz ona bakacağız. Bu çiplerde bir de 0x90 ile okunan ayrı bir ID daha var o bizi ilgilendirmiyor.
4- Tipik chip(bulk) erase süresi.
5- Maksimum chip(bulk) erase süresi. Bu iki değeri Winbond'larda datasheet içerisindeki AC Characteristics, Macronix'lerde Erase and Programing Characteristics bölümünde bulabilirsiniz.

Device file editor programında pickit minus yazılımının olduğu klasörde yer alan PK2devicefile.dat dosyasını açıyoruz. Sol panelden parts list kısmına gelip ekleyeceğimiz aygıta benzer bir aygıtın üzerine sağ tıklayıp duplicate yapıyoruz. Bu işlem aygıtın bir kopyasını oluşturacak. Bu kopya aygıtın üzerine tıklıyoruz. Sağ tarafta aygıtın bilgileri ekrana geldi. Şimdi şu adımlarla devam ediyoruz:

A. PartName bölümüne çipin modelini yazıyoruz.

B. ChipFamily kısmını 3.3V çipler için 24 yapın. 1.8V çipler için (1.8V adaptörü kullanmayacaksanız) 29 yapın.

C. ConfigMasks kısmında [0] yazan yer 0x0005 olmalı. Doğruysa devam ediyoruz. Yanlış ise yanlış çipi kopyaladınız, başka bir çipi kopyalayarak devam edin.
ConfigMasks kısmında [4] yazan yere tipik bulk erase süresini, [5] yazan yere maksiumum bulk erase süresini hex tabanına çevirerek yazıyoruz. (Onluk sayıları Hex'e dönüştürmek için Windows hesap makinesinin programcı modunu kullanabilirsiniz.)

D. DeviceID kısmına çipin JEDEC ID değerini yazıyoruz.

E. ProgMem (Words) kısmına çipin kapasitesini byte cinsinden hex tabanında yazıyoruz.

F. VddErase - VddMax ve VddMin değerlerini 3.3V çipler için 2.7, 3.6 ve 2.7 olarak yazın. 1.8V çipler için (1.8V adaptörü kullanmayacaksanız) 1.7, 1.95 ve 1.7 yazın. 1.8V adaptörü kullanacaksanız 2.7, 3.6 ve 2.7 girin.

device file editor.webp

device file editor_2.webp

device file editor_3.webp

Tüm bu işlemleri tamamladıktan sonra dosya menüsünden yapılan değişiklikleri kaydedin ve programı kapatın. Pickitminus yazılımını çalıştırın. Flash çipini PICkit2/PICkit3'e bağlayın. Önce yazılımı çalıştırıp, sonra çipi bağlamanızı öneririm.

spi_flash_icsp_connection_diagram.webp

Menu > Device Family > EEPROM > SPIFLASH veya SPIFLASH 1V8 seçeneğini seçin. Otomatik bulma aktifse, program hemen çipi tespit edecektir. (Otomatik bulmayı Programmer menüsünden Manual Device Select seçeneği ile açıp kapatabilirsiniz.) Değilse açılır listeden sizin seçmenizi isteyecek. Manuel moddayken, seçtiğiniz çiple tespit edilen çip farklı ise ekranda sarı uyarı gösterilir ve devam etmenize izin verilmez.

pk2_spi.webp

pk2_spi_2.webp

Burada butonları kısaca açıklayalım.

Read: Çip içeriğini okumak için kullanılır.

Write: Programa yüklenen dosyayı çipe yazmak için kullanılır. Tıkladığınızda çip içeriği silinir!
Verify: Çip içeriğini doğrulamak için kullanılır.
Erase: Çipi silmek için kullanılır.
Blank Check: Çipin boş olduğunu teyit etmek için kullanılır.
"
"... de aktif edebilirsiniz." ile biten cümlenin hemen ardına "Programa yüklenen dosyayı çipe yazmak için write butonuna tıklayın.

Çip içeriğini yedeklemek isterseniz read butonuna tıklayın. Okuma tamamlanınca File menüsünden Export Hex/Bin seçeneği ile okunan içeriği bir dosyaya kaydedin.

pk2_spi_3.webp

Sonra çipe yazacağınız dosyayı Import Hex/Bin seçeneği ile programa yükleyin. Programmer menüsündeki Verify on Write ve Tools menüsündeki Skip Blank Sections seçeneklerini aktif yapmanızı öneririm. Skip Blank Sections özelliği yazma ve doğrulama sırasında boş (0xFF) olan bölümlerin atlanmasını sağlayarak yazma ve doğrulama süresini oldukça kısaltır. Çipin hızlı yazılmasını istiyorsanız Fast Programming seçeneğini de aktif edebilirsiniz.

Orijinal PICkit aygıtları bağladığınız çipte voltaj olup olmadığını otomatik tespit eder ve harici besleme olduğunu ekranda belirterek, kendi beslemesini kapatıp, çipin kendi beslemesini kullanır. Bu özelliği Tools menüsündeki Target VDD Source kısmından değiştirebilirsiniz.

Bu ekranı görüyorsanız işlem başarılı bir şekilde tamamlanmış demektir. Çipi artık kullanabilirsiniz. PICkit2 ve PICkit3 ile SPI flash okuma ve yazma işlemleri oldukça yavaştır. Bu nedenle elinizde başka programlayıcı yoksa veya yeni programlayıcı için masraf yapmak istemiyorsanız kullanmanızı öneririm. Linux kullanıyorsanız alternatif olarak flashrom yazılımını da kullanabilirsiniz.

pk2_spi_4.webp


Pickitminus yazılımı:

Device File Editor yazılımı:
 
Son düzenleyen: Moderatör: