25 Aralık 2010

Pardus'ta MSP430 LaunchPad Kullanımı


MSP430 LaunchPad, şuradan da görebileceğiniz gibi öğrenme amaçlı kullanılan çok düşük fiyatlı bir mikro denetleyicidir. Geçen hafta Gerçek Zamanlı Sistemler dersinde tüm sınıfa bunlardan (msp-exp430g2) dağıtıldı ve bunun üzerinde birkaç uygulama yapmamız istendi. Bu cihazlar ayrıca mcu-turkey adlı yarışmaya katılan öğrencilere de dağıtılıyor. Geliştirmeyi Pardus'la yapmak isteyenlere bir başlangıç olabilmesi amacıyla bu yazıyı yazıyorum.

Derste gösterilen resmi geliştirme ortamı sadece Windows üzerinde çalışıyor. Sitesindeki Linux Support başlığı altında ise birkaç blog linki var. Bu bağlantıdaki blogda Ubuntu için alternatif bir geliştirme ortamının nasıl kurulup çalıştırılacağı anlatılıyor.

Windows'taki geliştirme ortamı 1GB boyutunda ve ücretsiz sürümünde kod uzunluğu sınırı bulunuyor. Linux'taki geliştirme ortamında ise sınırlama yok ve dosya boyutu birkaç MB büyüklüğünde... Yazının geri kalanında bunu Pardus 2011 üzerinde nasıl kurduğumu anlatacağım. Diğer Pardus sürümlerinde de aynen çalışacağını düşünüyorum.

Kaynak koddan derleyerek kurmamız gereken iki uygulama var: Derleyici olan mspgcc4 ve mspgcc4 ile derlenen kodu denetleyiciye yüklemeye yarayan mspdebug. Bunları derleyebilmek için pisi deposundan system.devel bileşenini ve git'i kurmalıyız. Ayrıca cihazdan okuma yapabilmek için minicom kurmamız da faydalı olacaktır. Şu komut bunları sırayla kuracaktır:

sudo pisi it -c system.devel && sudo pisi it git minicom

Pisi'nin işi bitince mspgcc4'ü kurmak için şu komutları veriyoruz:

git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4
cd mspgcc4
sudo sh buildgcc.sh

Son komutu verince renkli bir ekranda birkaç soru sorulacak. Tüm soruları Enter ile geçebilirsiniz fakat son soruda "Do you want to start build right now?" diyor. Bunun öntanımlı yanıtı 'Hayır' olduğu için Enter'a basmadan önce Evet'in üzerine gelmeyi unutmayın. Derleme işlemi bir saat kadar sürebilir.

mspdebug'u indirip kurmak için şu komutları veriyoruz:
wget -O mspdebug.tar.gz http://sourceforge.net/projects/mspdebug/files/mspdebug-0.13.tar.gz/download
tar -zxvf mspdebug.tar.gz
cd mspdebug
make
sudo make install
Bunun derlenmesi birkaç saniye sürecektir.

Sonunda geliştirme ortamımız hazır. Şimdi bir program derleyip cihaz üzerinde çalıştıralım. Örnek kod olarak birinci ödevimiz için hazırladığım kodu buradan indirebilirsiniz. Kodun yaptığı işi açıklamak gerekirse:

Cihazla birlikte kurulu gelen programın yaptığı işi aynen yapıyor (yani sıcaklık ölçümü). Buna ek olarak düğmeye basınca bilgisayara proje ekibinin isimlerini gönderiyor. Ölçüm değerlerini ise değişiklik olduğu zaman bilgisayara gönderiyor. Ve bunları onaltılık sistemde derece cinsinden gönderiyor.

Kodu main.c adıyla kaydedip şu komutla derleyebilirsiniz.

/opt/msp430-gcc-4.4.5/bin/msp430-gcc -Os -mmcu=msp430x2231 -o main.elf main.c

Oluşan main.elf dosyasını mspdebug ile bilgisayarımızın USB çıkışına bağlı LaunchPad'e yükleyelim.

mspdebug rf2500 "load main.elf"

Program yüklendiği anda cihazın ledleri yanıp sönmeye başlayacaktır. Bu durumda iken minicom ile bağlantı kuralım.

Minicom ile ilk defa bağlantı kuracaksanız şu komutla minicom'u ayar modunda çalıştırın:

sudo minicom -s

Gelen ekranda Serial port setup'ı seçin. A'ya basıp aygıt adını /dev/ttyACM0 olarak değiştirin. F'ye basıp Hardware flow control'u kapatın. E'ye basıp gelen ekranda A ve B tuşlarını kullanarak Baud Rate ayarını 2400'e getirin. Sona ana menüye dönüp Save setup as dfl'yi seçin.

Artık minicom ayarları da tamam olduğuna göre cihazı usb portuna takıp birkaç saniye bekleyelim ve sadece minicom komutunu vererek bağlantı kuralım. Üzerinde P1.3 yazan düğmeye bastığınızda ekranda sıcaklık değerlerini görmeye başlayacaksınız. Cihazı elleyip ısıtarak değişimi görebilirsiniz.

Eğer minicom ile ilk denemede bağlantı kuramıyorsanız cihazı çıkarıp yeniden takmayı deneyin. Aslında minicom'u her kapattığınızda bir daha okuma yapabilmek için cihazı çıkarıp takmak gerekiyor. Şimdilik çözemedeğim tek sorun bu.

15 Nisan 2010

Star Wars ve Özgür Yazılım

Geçen cumartesi CNBC-E'de Madagaskar Penguenleri ve ardından Star Wars'ın çizgi filmini görünce Star Wars serisini tekrar izlemeye karar verdim. İzlemişken bir de Quake3 motoruyla yazılmış Jedi Academy oyununu oynadım. Bunun sonucunda Star Wars ile özgür yazılım arasında bazı bağlar olduğunu keşfettim. Ee, keşfetmişken paylaşmamak olmaz :)


Serideki bazı sözcüklerin yazılım dünyasındaki karşılıkları şöyle düşünülebilir:
force: source
dark side of the force: non-free software

force kullanıcılarının temel güçleri git komutlarına çok benziyor:
push: git push
pull: git pull
speed: git'in hızı
sense: git show branch
jump: git branch

Jedi güçleri GPL'i anlatıyor:
heal: yazılımı güçlendirir
absorb: lisansın kötü yönde değiştirilmesini engeller
protect: kullanıcıyı korur
mind trick: lisansın kendisi güzel bir akıl oyunudur

Dark side güçleri de EULA'yı anlatıyor:
drain: kullanıcılardan güç toplar
grip: kullanıcının elini kolunu bağlama
thunder: istediğinde kullanıcıyı çarpar
dark rage: patent davaları