Selamlar arkadaşlar…
Bu aralar iş seyahatlerim sebebiyle evden uzak kalmıştım. Eve dönünce uğraşmakta olduğum retro projelere yeniden el atmaya başladım. Bu ufak proje için aldığım malzemeler masamda duruyordu, ben de bir el atayım dedim…
Konu aslında yeni değil. PC'ye Commodore 1541 floppy sürücü bağlama olayı yıllardır mevcut ancak paralel port üzerinden “x” kodlu basit kablolarla sağlanmaktaydı. Paralel portun güncel PC'lerden kaybolmasıyla birlikte daha modern ve stabil yöntemler ortaya çıkmaya başladı. Bunlara en iyi örnek ZoomFloppy…
Bu yazımda Atmega tabanlı sıfırdan bir proje yapmak zahmetli veya ZoomFloppy gibi ticari bir çözüme para harcamak istemeyenleriniz için Arduino Pro Micro tabanlı bir xum1541 kablosu yapımını anlatmaya çalışacağım…
Konudan Özay'ın (@Simon) cgtr'nin facebook sayfasında paylaştığı bir yazıdan sonra haberim oldu;
https://www.facebook.com/groups/commodore.gen.tr/permalink/1516092741851322/
Bu yazıda bahsi geçen proje sayfası ise şöyle;
http://myoldcomputer.nl/commodore-64/xum1541-promicro/
Bu yazımda bu bahsi geçen kabloyu yaparken …
Konuyu basitçe özetlemek gerekirse, xum1541 kablosu bir ucu USB diğer ucu Commodore seri portu soketi olan bir kablo. Amacı PC'ye Commodore 1541 sürücüsünü güvenli bir şekilde bağlamamızı ve her türlü disk işlemini gerçekleştirmemizi sağlıyor. Elbette ki PC'ye Commodore 1541 bağlama sebebimiz PC'de bir veri depolama cihazı olarak kullanmak değil, internetten indireceğiniz D64 disk imaj dosyalarını gerçek 5.25“ Commodore floppy'lerine yazmak. Bu sayede retro deneyimini maksimumda yaşayabilmeniz için Commodore 64 ve 1541 sürücünüzü 1541 emulasyonu yerine gerçek floppy ler ile kullanabilmeniz mümkün oluyor…
Bu projeyi yapan arkadaş Arduino pro micro adı verilen ucuz Arduino'lardan birisini seçmiş kendine. Aslında Arduino ile aram pek iyi değildir, hatta Arduino konusunda cahilim. Ben genellikle Atmel micro denetleyicisine direk C ile kod yazarak proje yapmayı daha çok seviyorum ancak bu kullanılan modelin ucuzluğu ve doğal USB desteği bu projeyi basitleştiriyor ki bu Arduino modeli de aslından o kadar basit ki aldığım fiyata sıfırdan Atmega çipiyle bir devre yapmak neredeyse imkansız…
Neyse, yazıyı ilk okuduğumda bu Arduino Pro Micro nedir diye araştırdım. Bu modele dair bilgiyi Arduino web sitesinde bulamayınca (Orada sadece Arduino Micro var ve bu yazıda fotoğrafını gördüğüm devre değil) biraz daha araştırdım. Anladım ki bu model Sparkfun tarafından lisanlanlı olarak üretilmiş.
Yerli piyasada Sparkfun versiyonunun fiyatına baktım 80 TL civarındaydı. Zaten eski bir model olduğundan da tükenmiş durumdaydı. Sonra biraz daha araştırınca 30-40 TL arasında çakmalarını buldum. Ben benim Arduino'yu bir kaç diğer malzeme almak için gittiğim Konya Sokak'taki “Maker Anakara” dükkanından aldım.
Elbette ki aliexpress'den yarı fiyatına getirtilebiliyor. Gördüğünüz üzere bu model alışık olduğumuz Arduino'larla kıyaslandığında oldukça küçük ve bir projeye gömülecek nitelikte ucuz.
Bu kabloyu yapmak için ihtiyacınız olan malzemeler şöyle; - Arduino Pro Micro (Çakmasını alın daha ucuz) - USB kablo (bir ucu PC'Ye girebilecek şekilde büyük diğer ucu micro USB formunda olursa daha iyi) - 6 pin erkek DIN soketi - içinden 6 kablo geçen bir kablo (ben UTP network kablosu kullandım) - bir minik kutu (opsiyonel)
Gördüğünüz gibi bende bir ucu Micro USB olan USB kablo yoktu. Ben de ucunda üzüm salkımı gibi çeşitli kablolar olan (genelde kırmızı ışıkta durunca arabanıza yaklaşan işportacıların sattığı ) çakma cep telefonu şarjının ucundaki micro USB soketi söktüm. Ben elimdeki USB kabloyu micro USB'ye çevirmek için biraz uğraştım. Sizin böyle bir uğraşıya girmenize gerek yok. Direk micro USB kablo alabilirsiniz. Ancak dikkat edin sadece şarj özelliği olan ucuz kablolardan değil data hatları da olanından almanız lazım
Hatta micro USB kabloya bile ihtiyacınız yok. Ucunu sıyırdığını USB kablonun ince kablolarını direk Pro micro'nun ilgili yerlerine lehimleyedebilirsiniz zira ben kabloyu küçük kutuya sığdırmaya çalışırken çakma Arduino'nun micro USB soketi kopyu elimde kaldı Kahkaha
Neyse, micro USB kablo yapacak olanlar için gelsin bu adımlar diyelim ve devam edelim. önce USB kablonun bir ucunu kestim ve kabloları sıyırıp uçlarını lehimledim…
Sonra çakma şarj çıhazından söktüğüm micro USB soketini lehimledim…
Son olarak hepsinin dışına bir makaron geçirince micro USB kablomuz hazırlandı…
Eveeet, micro USB kablom hazırlanınca ilk olarak Arduino Pro micro'yu PC'ye bağlayayım dedim bakalım ne olacak, PC tanıyacak mı bu cihazı…
Üzerindeki ışıklar yanınca sevindim, çakma Arduino en azından çalıştı…
USB cihaz olarak da PC algıladı, oh oh her şey yolunda.
… dedik ve erken konuştumuzu anladık.
PC Arduino Pro Micro cihazımızı tanımadı…
Neyse biraz daha okuduk araştırdık, PC'Nin bu cihazı tanıması için sürücülerini yüklemek lazımmış. Bir kaç sürücüyü başarısız olarak denedikten sonra (Sparkfun sürücüleri işe yaramadı) kullandığım işletim sistemi için (Win7 64-bit) uygun sürücülerin Arduino IDE programından çıktığını öğrendim.
Dolayısıyla bu cihazı kullanabilmeniz için bedava olan Arduino IDE programını indirmenizi tavsiye ederim.
https://www.arduino.cc/en/Main/Software
Bu yazılımı kurduğunuzda sürücüler de kuruluyor ve “Pro Micro” Arduino Leonardo olarak windows'da beliriyor… (Zaten Sparkfun'ın sitesinde de bunun firmware'inin Leonardo olduğunu okumuştum)
İşi yarıladık…
Şimdi sıra Arduino Pro Micro (Leonardo) ya xum1541 firmware'ini USB üzerinden atmaya geldi.
Bunun için avrdude kullanıyoruz.
xum1541 (promicro) firmware'ini bu linkten;
https://github.com/zyonee/opencbm/tree/master/xum1541
Avrdude'un son sürümünü de (6.3) bu link'den indirebilirsiniz;
http://download.savannah.gnu.org/releases/avrdude/
Şimdi hemen adamın sitesindeki gibi avrdude komut satırını yazıyorum ve firmware'i kolayca atmayı hayal ediyorum… (Hayat keşke internette yazılanlar kadar kolay olsa )
Ama bu basit komutu bile başarıyla çalıştıramamanın hayal kırıklığını yaşıyorum
avrdude hata veriyor. periyodik olarak deniyor deniyor deniyor ama sonuç nafile…
Meğersem bu cihaza USB üzerinden firmware atabilmek için bu alete önce reset atmalıymışız. Onunla da kalmıyor, reset'ten sonra alet sizi 8 saniye bekliyormuş. Bu 8 saniye içinde cihaz bootloder modunda sizin firmware atmanızı beklerken COM portu numarası da değişiyormuş. Genelde de ilk bağlandığında aldığı COM port numarasının bir fazlası olurmuş…
Bu bilgilere ulaşmak için kaç tane yabancı forum yazısı okudum tahmin edersiniz
Orijinal Arduino Micro veya Leonardo'da bir reset butonu olmasına rağmen bu çakma cihazda maalesef yok. O zaman bu cihaza basit bir de reset butonu ayarlanız gerekiyor…
Bu butona basıp değişen COM port numarasını görün önce…
Sonra bekleyin, 8 saniye sonra alet bi geri dönsün. Sonra avrdude komut satırınızı burada gördüğünüz COM port numarası ile güncelleyin…
Sonra bil eliniz reset butonunda, Windows Device Manager arkada açık vaziyette, diğer eliniz de avrdude komut satırında hazır beklerken reset butonuna basın…
Windows “di dong” diye ses çıkartıp Device Manager kendini yenileyip yeni COM portu ile Arduino Leonardo'yu görüntülediğinde diğer elinizle avrdude satırını çalıştırmak için enter'a basın
Sonuç?
Firmware yüklemesi %87 civarında alet bir anda sapıttı… Aleti söktüm taktım ancak artık PC takılan bir USB cihazı olarak algılamıyordu. Arduino Leonardo kayboldu…
Kısaca aleti büyük bir başarıyla “brick” ettim.
Eveet, proje bir anda xum1541'den birck edilen arduino nasıl kurtarılır projesine dönüştü
Şimdi öncelikle lafı daha fazla uzatmadan arduino'Yu nasıl brick haline getirdik onu anlatayım.
Hata şöyle gelişti; ben xum1541 firmware'ini adamın yazısındaki linkten ulaştığım github sayfasında görünen “xum1541-PROMICRO-v07.hex” dosyasını mouse sağ tuşa basıp indirdim. Sonradan anladım ki github sayfasında gösterilen link aslında HEX dosyasının internetten tarayıcısında “görüntülenebilir” bir text versiyonuymuş. Yani binary firmware atacağımız yerde saçma sapan bir text versiyonunu atmaya çalışmışım. Doğal olarak bu text versiyon (yani aslında html sayfası) oldukça büyük ve firmware atılması 8 saniyeden uzun sürdü ve cihaz bir anda açılınca içinde saçma sapan bir firmware ile hayat döndü.
Yani artık ne Arduino Leonardo ne de xum1541 durumunda. Brick oldu kısaca
Bunları neden yazıyorum? Siz de cihazı birck etmeyin diye. Ola ki brick ettiniz, ne yapacaksınız?
Anlatayım.
Cihaszımız artık içinde USB'den firmware kabul edebilecek bir bootloader'a sahip olmadığından bu işi ICSP yöntemi ile başka bir Arduino ile veya programlayıcı ile yapmak lazım. Bende başka Arduino yok ancak eski model basit bir USBasp programlayıcı var…
Arduino'ya ICSP'den bağlanabilmek için önce birlikte gelen pin header'ları lehimliyorum.
Sonra bu web sitesindeki pin dizilimine bakarak bir ICSP kablosu yapıyorum…
http://www.coreforge.com/blog/2014/09/recovering-arduino-pro-micro-atmega32u4/
Sonra Arduino ve kabloyu bir breadboard'a yerleştirip…
… USBAsp programlayıcımı bağlıyorum…
… ve bu düzeneği PC'ye bağlıyorum.
Şimdi bu şekilde cihaza xum1541 firmware'İni atabilecek aşamaya geldim ancak amaç bu işi ekstra programlayıcı ile yapmak değil basitçe USB üzerinden yapmaktı ki herkesde AVR programlayıcı olmayabilir. Dolayısıyla projenin bu kısmını Arduino kurtarma amaçlı olarak devam ediyorum…
Bu sebeple xum1541 firmware'İ yerine Leonardo'Nun firmware'İni atarak devam edelim. Atacağımız Leonardo firware'ini uzakta aramamıza gerek yok zira daha önce kurduğumuz Arduino IDE yazılımının içinde mevcut. Ve hatta bootloader'ı Arduino IDE yazılımı ile de basitçe yüklemek mümkün olsa da (ki yukarıda linkini paylaştığım eleman da öyle yapmış) Arduino IDE yazılımı benim çakma USBAsp programlayıcı ne yaptıysam tanımadı…
Neyse, zaten Arduino IDE de bu işi arkaplanda avrdude ile yapıyormuş zaten onu da öğrendikten sonra Leonardo firware'İni elle atmaya karar verdim.
Firmware dosyası ise Arduino IDE yazılımının kurulum dizininde mevcut;
C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\caterina\
Bu klasördeki “Leonardo-prod-firmware-2012-12-10.hex” dosyasını atacaksınız…
İşlem başarılı…
Bu işlem sonunda aleti USBAsp'den söküp ICSP bağlantılarını çıkartıp USB'den PC'ye tekrardan bağlayınca Windows'un o “di dong” sesini duyunca bi oh çektim.
Artık işimize geri dönebiliriz…
Arduino Pro Micro'yu kurtardıktan sonra esas projemize geri döndüm…
xum1541 firmware'İni bu sefer github'daki “Clone or download” linkinden indirdim.
Hazırlıkları yaptım. Komut satırı hazır, device manager hazır…
Reset butonu hazır…
… ve butona basıp, COM4'ü gördükten sonra avrdude satırını doğru HEX dosyası ile çalıştırdım…
İşlem bittiğinde windows yeni bir cihaz bulduğunu bildirdi.
Device manager'da artık Leonardo yok, xum1541 var Kahkaha Kahkaha Kahkaha
Şimdi artık xum1541 (promicro) windows sürücülerini yükleyebiliriz.
Bunun için “Zadig” yazılımını kullanıyoruz…
Zadig tek bir EXE. Direk çalıştırıyorsunuz ve önce menüden Options⇒List All devices diyorsunuz.
Dolan listeden xum1541'i seçiyorsunuz ve aşağıdaki resimdeki gibi libusb 1.2.6.0 seçip install driver butonuna basıyorsunuz (resimde re-install gözüküyor zira fotoğrafı çekmeyi unuttum, resmi driver yükledikten sonra çektim)
Zadig ile xum1541'in windows sürücülerini yükledikten sonra artık cihazımız windows tarafından tanınır hale geldi.
Şimdi artık 1541'i yönetebilmek için gerekli olan yazılımı, OpenCBM'i indiriyoruz.
http://opencbm.trikaliotis.net/
Önce yazılımın zip paketini PC'nizde uygun bir yere açın.
Sonra yazılımın kurulumunu yaptığınız kablonun tipine göre yapan “install” komutunu çalıştırarak tamamlayın..
OpenCBM aslında Commodore IEC bus ile konuşmaya hazır ancak ham bir yazılım. Komutları elle çalıştırmak yerine bir grafik arayüzüne ihtiyacınız var. Bunun için de CBMxFer yazılımını indiriyoruz;
http://www.6502.org/users/sjgray/software/cbmxfer/cbmxfer.html
Yazılımı kurarken de OpenCBM'in kurulduğu yeri gösteriyoruz (Bunu unutmayın burası önemli). Yani “C:\Program Files\OpenCBM”
Şimdi artık gelelim kablomuzu paketlemeye…
USB ucumuz hazırdı zaten. 6 pin'lik DIN soketini aşağıdaki şemadaki gibi bağlıyoruz…
Sonra pro microyu ben minik bir kutuya tıkıştırıyorum…
Yanlız dikkat edin pro micro'nun micro usb soketi oldukça narin lehimlenmiş. Ben onu da kırmayı başardım Eğer siz de yanlışlıkla kırarsanız bu yukarıdaki fotodaki gibi kabloları direk lehimleyebilirsiniz
Sonunda kablomuz hazır.
Sonunda kabloyu bir 1541'e bağlıyorum ve CBMxFer uygulamasını açıyorum…
D64 dosyası atmadan önce bir floppy'yi formatlamamız gerekiyor.
Sonra …
ve işlem tamam…
Kablo çalıştı… Bakalım yazdığımız floppy C64'de çalışacak mı?
Yeni yazdığımız floppy'Yi C64 masasına götürüp deniyorum…
Ve bu “basit” kabloyu bu kadar hata yaparak tamamlamış oluyoruz.
Sizler de benim yaptığım hataları yapmayın. Kalın sağlıcakla…
Eşref Kayın 2018/05/15 09:57