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.

6 yorum:

Abdul dedi ki...

Uğur bey freeciv oyununun türkçe çevirmeni sizmişsiniz. Ama hem çeviride fazlaca eksiklikler var hem de uzun süredir update edilmemiş. Bunun pek de uzun süreceğini sanmıyorum. Bir bakıverseniz ?

Uğur Çetin dedi ki...

Freeciv çevirisinin kısa sürdüğünü söyleyemem ama bu ay içinde Pardus 2011 paketini hazırlarken bakmaya çalışacağım. Eğer gönüllüyseniz şu anki çeviri dosyasını düzenleyip bana gönderebilirsiniz. Doğrudan Freeciv çevirilerine ekleyebiliyorum. Çeviri dosyası bu adreste.

Abdul dedi ki...

Verdiğiniz adresteki bu dosyada en yeni sürümün tüm ingilizce metinlerinin yer aldığına emin misiniz? Çünkü oyunda bazı yerlerde -özellikle yardım kısmında- bol bol ingilizce var. Fakat ben bu dosyada yalnızca çevrilenlerle karşılaştım(sanırım).
Bir de bu dosyayı biraz açıklayabilir misiniz? Mesela bazı yerlerinde ingilizcesinin altında çift tırnak içerisinde hiçbir şey yazmıyor (Yoksa onlar mı çevrilmediği manasına geliyor?) ...
Not: %s %d \n leri programlama bildiğimden dolayı anladım.


Yani edebildiğim kadar yardım edeceğim :)

Uğur Çetin dedi ki...

Dosyayı düzenlemek için poedit gibi bir po düzenleyici uygulaması kullanın. Bu uygulamalar neyin çevrilmesi gerektiğini gösterir ve işinizi kolaylaştırır.

Ayrıca Freeciv'e özel bazı durumları bu adresteki yazıdan öğrenebilirsiniz.

Unknown dedi ki...

Merhaba
MSP430 Launchpad ..G2231 ile proje geliştiriyorum. Bi noktada takıldım yardımcı olursanız sevinirim.
Sorun şu elimde SRF02 Ultrasonic mesafe ölçer var. Bundan verileri I2C ile almak istiyorum. Start durumunu bir türlü gönderemedim birde sensör 5 V ile çalışıyor. MSP430 ile bağlantılarını pull-up direnci kullanarak yapıyorum.
Sensör datasheet : http://www.robot-electronics.co.uk/htm/srf02techI2C.htm

ismailkalay dedi ki...

ellerine saglik... cok guzel paylasim... ama ben-sudo sh buildgcc.sh- komutunu verdim mi 30-40 dk sonra hata aliyorum .pl dosyasinin 260 satirinda