21 Temmuz 2009

"Pointer" hatası

Kodda bir hata yapıp yedeğini de sildiğim için yıllardır bir köşede duran "chrono+" kodunu dün düzeltebildim. Kod hala çok çirkin,biraz daha düzenledikten sonra yayınlayacağım. Saptayabilmek için saatlerimi harcadığım hata ise, C++'ya yeni başlayanların sıkça yaptığı, benim de başkalarının kodunda genellikle kolay yakaladığım bir şeydi, şunun gibi.




C++'ya aşina olanlar buradaki hatayı hemen görmüştür. Basitçe açıklayalım:

main() içindeki scr değişkeninde rasgele, anlamsız bir adres var. Bu adresi kullanarak bir fonksiyon çağırdığımızda(init()), bu adres çağırılan fonksiyona kopyalanıyor. init() içindeki new komutuyla scr değişkenine yeni ve anlamlı bir adres atanıyor. Fakat scr ile screen aynı değişken değil, sadece başta aynı değere sahitiler. Bu yüzden init() fonksiyonundan sonra screen'in değeri değişmiyor, aynı anlamsız adresi göstermeye devam ediyor. Buraya geldiğinizde hala kafanız karışıksa şu kodu çalıştırmayı deneyin:




Kendi koduma gelince, dediğim gibi, biraz daha adam ettikten sonra "arıza" adıyla yeniden yayınlayacağım. Şimdiki haliyle, "canavar"'ın yayınladığı halinden pek bir farkı yok, görünüş olarak.

28 Mayıs 2009

İlk çalışan çekirdeğim

Daha önce farklı zamanlarda bilgisayar ve gömülü cihazlar için çekirdek derlemeyi denemiştim. Sonuç ya derleme hatası, ya da "kernel panic" oluyordu. Dün ilk defa ARM9 kullanan bir kart için derlediğim çekirdek çalıştı.

Anlaşılan, sadece çekirdeğin ayarlarını düzgün yapmak yetmiyor, çekirdeği derlemek için kullandığımız derleyiciyi(benim için bu arm-...-gcc) doğru ayarlarla ve hatta doğru derleyiciyle derlememiz gerekiyor.(gcc 4.3 yerine 3.6, ortam olarak da dash degil bash).

19 Şubat 2009

Biraz daha kasaplık

Dünkü dişi USB kasaplığımdan sonra bugün bir tane B tipi erkek fiş elde ettim. İkisini güzelce lehimleyip epoksi işle yapıştırmayı planlıyorum. Bunda silikon kullanılmadığı için ayıklamak kolay oldu.
Image Hosted by ImageShack.us

Kasaplık antrenmanı

Neo Freerunner üstündeki USB prizinin OTG değil de mini-usb şeklinde olması biraz sinir bozucu, çünĸü piyasada bunu dişi USB prizine dönüştüren bir kablo yok. Ben de bu yüzden kasaplık ederek bir USB-PS/2 çeviricinin içinden USB prizini ayıkladım.
Image Hosted by ImageShack.us
Aradaki kablolar sıcak yapıştırıcı(silikon) ile kaplı olduğu için bunu ayıklamak biraz zaman aldı. Falçata kullanarak adım adım kırptım silikonu ama sonuçta çıplak ve seksi bir prizim oldu. Şimdi bu prizin bir de diğer ucunu elde etmek var, yakında onu da yaparım. Diğer yandan tesadüfen(malzeme dükkanında bir yanlış anlama sonucu) elime aşağıdki güzellik geçti.
Image Hosted by ImageShack.us
Bu sayede standart USB kabloları kullanarak abuk fikirlerimi deneyebilirim. Yakın zamanda bir kaç Freerunner projesi yapıp yayınlamayı düşünüyorum.

15 Şubat 2009

Beagleboard ustunde ogre3d

Beagleboard, TI OMAP tabanlı, özgür yazılım kullanan bir "single board computer" projesi. Bu şirin canavar üzerinde 3B oyun motoru Ogre'ı çalıştırmışlar. İşin eğlenceli kısmı, aleti TI'nin mini projektörü DLP ile yansıtıp wiimote ile kumanda etmişler. Vidyo aşağıda:

11 Şubat 2009

GP2X'e Nokia pil takmak

2006'da bu cihazı aldığımdan beri bir şekilde buna Li-iyon pil takmak istiyordum. Bir kaç ay önce GP2X'imin pil kısmı bozulunca 'artık bu işin zamanı geldi' dedim. Nasıl yaptığımızı anlatalım.

Öncelikle uyarımızı yapalım: Buarada yazanlar, kişinin kendi deneyimidir. Okuyucuya faydalı(ya da eğlenceli) olması temennisiyle yazılmıştır. Burada yazanların uygulanmasından doğacak hiç bir hasar, yaralanma veya başka türlü bir zarardan yazar sorumlu değildir.

Evet, nerede kalmıştık? Hah, işte malzemeler:
* Nokia 3310(kapakları ve ekranı sökülmüş)
* "Yan sanayi" ürünü 1300 mA-saat Li-iyon pil
* GP2X kasaya uyan bir 'jack'
* Kırmızı ve siyah teller
* Havya, lehim, ıslak sünger vs.
Free Image Hosting at www.ImageShack.us
GP2X güç kablosunun içi -, dışı +'dır. Dikkat etmemiz gereken en önemli şey bu. Elektrik mühendisliğinde standart olduğu üzere iç kısma siyah, dış kısma kırmızı tel lehimleyip ölçme aletiyle kontrol ediyoruz. Daha sonra siyah teli telefonun - yazan kısmına, kırmızı teli de + yazan kısmına takıyoruz:
Free Image Hosting at www.ImageShack.us
Dikkatlice pilimizi yerleştiriyoruz:
Free Image Hosting at www.ImageShack.us
GP2X'i bağlamadan önce son ölçümü yapıyoruz. Ölçü aletinin siyah kablolu ucunu "jack"ın içine, kırmızı kablolu ucunu dışına değdiriyoruz. 3,7 gibi bir değer görmemiz gerekiyor(DİKKAT: -3,7V olmaması gerek!)
Free Image Hosting at www.ImageShack.us
O da nesi, 4,1V?
Free Image Hosting at www.ImageShack.us
Biraz yüksek bir gerilim ama GP2X içinceki gerilim düzenleyici için bunun sorun olmaması gerekiyor. Deneyelim bakalım.
Free Image Hosting at www.ImageShack.us
Çalıştı! Açıp 5 dakika kadar Ghostpics oynayıp kapattım. Pilin ne kadar gittiğini ve GP2X açıkken nasıl şarj olduğunu henüz denemedim.

Afiyet olsun

Düşünceler:
Yeterli el becerisine sahip biri için oldukça kolay bir işlem. Benim gibi beceriksizleri ise biraz uğraştırıyor. Bu haliyle elde tutması ve yanında taşıması pek rahat olmadı. Eğer bir telefon yerıne daha hafif bir şarj cihazı kullanılırsa daha pratik olur. Ayrıca pil bölmesinin çıkıntısını keserek yerden tasarruf edilebilir ancak ben kasaya şimdilik zarar vermek istemiyorum.

Çıkıntıyı hafıften kserek ya da kesmeden, sadece pili takrak çalıştırmak da bir seçenek, ama o zaman pili doldurmak için sökmeniz gerekir.

Bu "hack"in en zarif hali, GP2Xin içine bir şarj devresi yerleştirip, kendi güç adaptörüyle pilleri doldurmasını sağlamak olacaktır. Bu nisbeten daha zor ve zaman isteyen bir iş olduğundan yakın zamanda yapmayı düşünmüyorum.

Buradan bir arkadaşımın önerisi de, kabloyu uzun tutup pili cebimde taşımamdı. Kullanım ve taşıma için kullanışlı olacağı kesin ama bunu kullanırken insanlar size nasıl bakar bilmiyorum.

29 Ocak 2009

Pandora heyecanı

Kasanın ilk FDM prototipinin hazırlanmasından sonra "EvilDragon" anakart ve ekranı monte ederek ilk tamamlanmış Pandora cihazı çalıştırdı. 2 yıl kadar süren bir tasarım ve tartışma süreci sonunda üretim zamanı artık geldi. Vidyonun bulunduğu forum sayfası şurada:
http://forum.gp2xtr.com/index.php?topic=1167.0