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:
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.
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.
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.
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.
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.
Pickitminus yazılımı:
Device File Editor yazılımı:
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.
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.
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.
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.
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.
Pickitminus yazılımı:
Device File Editor yazılımı:
Son düzenleyen: Moderatör: