STM32F4 Discovery ve Ubuntu Bölüm-1

OYUN BAŞLASIN!

Evet bayadır elimde bulunan STM32F4 Discovery kartı ile nihayet uğraşmaya başlayabildim. Piyasada bulabileceğiniz çoğu deney kartı gibi Win sistemlerde pek bir sorun yok. Kolayca kurulum yapıp çalışmaya başlayabiliyorsunuz. Gelgelelim söz konusu linux olunca çoğu firma görmedik duymadık bilmiyoruz havasında olduğu için mecburen kendi göbeğimizi kendimiz kesiyoruz. Linux camiasının güzelliği işte pek çok seçeneğe sahip olmak:)

Sizleri baştan uyarıyorum uzun bir yazı olacak. O yüzden yeteri miktarda çay kahve su tedarik ediyoruz, güzel bir müzik albümünü de çalma listemize ekleyip kuruluma başlıyoruz. Kurulum yaptığım işletim sistemi Ubuntu 12.04 x64.

NOT: Bu yazı hazırlanırken yararlanılan kaynaklar şunlardır:

1-Ön Hazırlık

Kuruluma başlamadan önce ilk olarak bilgisayarımıza gerekli dosyaları indiriyoruz. Bize ilk lazım olan şey arm ortamı için gerekli olan kütüphaneleri ve derleyicileri içeren çalışma ortamı. Yabancılar genelde bu ortamı “arm-tool-chain” olarak isimlendiriyor. Bu dosyaları kendiniz oluşturabileceğiniz gibi internet üzerinden hazır oluşturulmuş olan sürümleri de indirebilirsiniz. Bu çalışmada ilk önce kolaylık olması açısından hazır bir çalışma ortamı kullanılacaktır. Kullandığımız çalışma ortamı Mentor tarafından sağlanan Sourcery Codebench. Bu dosyaların ücretsiz sürümünü BURADAN indirebilirsiniz.Tek sıkıntı üyelik gerektirmesi. Üye olduktan sonra indirme isteğinde bulunduğunuzda dosya bağlantısı e-posta adresinize gönderiliyor bu sayede gerekli indirme bağlantısına ulaşabiliyorsunuz. Bu yazı yayınlandığı sırada en güncel sürüm Sourcery Codebench Lite 2011.09-69 idi. Ya da ben uğraşamam üyelikle falan diyorsanız belirtilen sürümü BURADAN indirebilirsiniz.

Dosyayı indirdikten sonra sıra geldi kurulum yapmaya. Kurulum yaptığımız dizin /opt dizini. Bu tarz dosyalarımı bir alışkanlık olarak buraya kuruyorum. Ama siz istediğiniz başka bir dizin için de uygulayabilirsiniz. Kuruluma başlamadan önce root kullanıcısına geçiş yapmanız gerekiyor.

sudo su
mkdir /opt/CodeSourcery
cd /opt/CodeSourcery
tar xvf /dosya_dizini/arm-2011.09-69-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
ls
echo PATH=\"$PATH:/opt/CodeSourcery/arm-2011.09/bin\" >> /etc/environment
source /etc/environment
arm-none-eabi-gcc --version
NOT: taz xvf /dosya_dizini/ kısmına biraz önce indirdiğini dosyanın tam adresini yazınız. Örneğin kullanıcı adınız "zzz" olsun ve dosya "İndirilenler" klasöründe bulunsun. O halde adresimiz /home/zzz/İndirilenler/arm-2011.09-69-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 olacaktır.

2-Eclipse Kurulumu ve Gerekli Eklentilerin Yüklenmesi

Dosyaları indirdikten sonra sıra geldi yazılım geliştirme ortamımızı Eclipse ile birlikte kullanabileceğimiz hale getirmeye. Bu kurulumda Eclipse yazılımının temel sürümü kullanılmış ve tüm anlatım onun üzerinden yapılmıştır. Eğer eclipse kurulu değilse basitçe :”sudo apt-get install eclipse” diyerek ubuntu altında Eclipse paketlerinin yüklenmesini sağlayabilirsiniz. Bu komuttan sonra Eclipse yazılımının temel sürümü kurulmuş olacaktır. Fakat bize gereken Eclipse CDT (C/C++ Development) sürümüdür. İlk önce bu eklentiyi kurmakla işe başlıyoruz.

  1. Help > Install New Sowtware
  2. Work with satırına: http://download.eclipse.org/tools/cdt/releases/indigo yazıyoruz.
  3. CDT Main Features başlığından “C/C++ Development Tools” seçeneğini ve CDT Optional Features başlığından C/C++ GDB Hardware Debugging başlığını seçiyoruz.
  4. İşlemleri sırasıyla takip edip kurulumu bitiriyoruz.

Bağlantı hızınıza göre kurulum süresi değişken olacaktır. Ortalama 10 dk civarlarında tamamlanır diye tahmin ediyorum. Kurulum bittikten sonra bir uyarı ekranı çıkacak ve güncellemenin tamamlanması için yazılımı yeniden başlatmanız gerektiğini söyleyecektir. “Restart Now” diyerek kurulum işleminin tamamlanması için gerekli son adımı da atıyoruz. Sıra geldi Eclipse için arm eklentimizi kurmaya. Bu eklenti sayesinde bir önceki adımda indirdiğimiz Sourcery Codebench Lite dosyalarını Eclipse altından kullanabileceğiz. Kurulum adımlarına geçelim:

  1. Help > Install New Software
  2. Work with satırına: http://gnuarmeclipse.sourceforge.net/updates adresini ekliyoruz.
  3. CDT GNU Cross Development Tools başlığını seçiyoruz ve Next tuşuna basıyoruz.
  4. Birkaç Next tuundan sonra Finish diyerek kurulumu bitiri

Burda da bağlantı hızınıza göre kurulum bir kaç dakika sürecektir. Kurulum sırasında Bir “Securtiy Warning” penceresi açılacaktır. Buraya “OK” diyerek devam ediyoruz. Kurulum tamamlandıktan sonra programı tekrar başlatmanızı isteyecek bir ekran çıkacak. Buraya da “Restart Now” diyerek devam ediyoruz.

3-ST-Link ve Diğer Gerekli Yazılımların Yüklenmesi

Sıra geldi kurulumuzun 3. adımına. Bu adımda kartımıza program atmak için gerekli ara program olan St-Link programının kurulumunu yapacağız. Bu program sayesinde kartımıza program atabilir , kartımızda bulunan hafıza içeriğini tekrar bilgisayarımıza kopyalayabiliriz. İlk olarak kendimize bir çalışma klasörü oluşturuyoruz. Ve derleme öncesi gerekli ek dosyaları yüklüyoruz. Bu yükleme için sisteminizde git istemcisinin kurulu olması gerekiyor.

sudo apt-get install libsgutils2-dev libusb-1.0-0-dev autoconf libtool
mkdir src
cd src
git clone git://github.com/texane/stlink.git
cd stlink
./autogen.sh
./configure
make

02.07.2012 – Güncelleme : @Tagli uyardı ST-Link kurulumunda değişiklik gerçekleşmiş. O yüzden önce bir “README” dosyasına göz atmakta fayda var. Eski kodları iptal edip yenilerini ekledim.

28.08.2012 – Güncelleme : ST-Link kurulumunda yine değişiklikler olmuş. “libtool” paketi kurulması gerekiyor, derlenen dosyalar ana stlink klasöründe oluşturuluyor. İlgili yerler güncellendi.

Derleme işlemi bittikten sonra dosyaları kopyalayıp düzenliyoruz. Tüm bu işlemler için root olmanız gerektiğini unutmayın.

mkdir /opt/stlink
cd /opt/stlink
cp /home/user/src/stlink/st-flash ./st-flash
cp /home/user/src/stlink/st-util st-util
echo PATH=\"$PATH:/opt/stlink\" >> /etc/environment
source /etc/environment

Şimdi de USB erişim ayarlarımızı düzenleyelim. Bu sayede kartımızı bilgisayarımıza bağladığımızda /dev/ dizini altında bir aygıtımız olacak.

cp /home/user/src/stlink/49-stlinkv*.rules /etc/udev/rules.d
udevadm control --reload-rules

Evet stlink araçlarının kurulum işlemi tamamladı. İsterseniz bir kontrol edelim. Kurulum işlemi bittikten sonra root kullanıcısından çıkabiliriz. Kart içinde yüklü bulunan içeriği olduğu gibi bilgisayarımıza kopyalayalım.

st-flash read ~/STM32F4-Discovery.bin 0x8000000 0x100000

Bu komutu verdiğimizde kartın içeriğinde bulunan yazılım kullanıcı dizinimize kopyalanıyor. Eğer st-flash komutu bulunamazsa ya bilgisayarınız yeniden başlatın ya da bu seferlik “source /etc/environment” komutunu verin ve tekrar deneyin. Şimdi de kopyaladığımız içeriği tekrar karta yazalım. Fakat başta uyarayım bu işlem bir kaç dakika sürebilir. Bu işlem de tamamlandığında ST-Link programının sorunsuzca çalıştığına emin olabiliriz.

st-flash write ~/STM32F4-Discovery.bin 0x8000000

Evet buraya kadar neler yaptığımızı özetleyelim. Arm derlemesi için gerekli dosyaları indirdik. Eclipse programımızı ve CDT eklentisini kurduk. İndirdiğimiz arm dosyalarını Eclipse altında kullanmak için gerekli eklentiyi kurduk. Kartımıza program atmak için gerekli olan St-Link programının kurulumunu yapıp çalıp çalışmadığını sınadık.

Yazı uzun olduğu için iki parçaya böldüm. Diğer işlemler için ikinci bölüme geçelim.

1. Bölümün Sonu

24 thoughts on “STM32F4 Discovery ve Ubuntu Bölüm-1

  1. mushack34 dedi ki:

    Eline sağlık muuzoo onumara bir anlatım olmuş…. normalde windows ta çalışacaktım ama…. şimdi ubuntu altında çalışmak harika birşey olacak….devamını sabırsızlıkla bekliyorum….telefonla arayıp yazının ileriki bölümlerini oluşturman için 😀 😀 seni rahatsız edersem kusura bakma 😀 😀 iyi çalışmalar…. hayırlı tezkereler :))))

  2. mushack34 dedi ki:

    Muuzoo merhaba, senin anlattığın şekilde kurulumun aşağıdaki kısmına kadar geldim. yalnız bu kısımları yapıp ensondaki “make” işlemini yaptığımda derleme olmuyor ve şöyle bir yazı çıkıyor..
    “make: *** No targets specified and no makefile found. Stop.” bunun nedeni nedir acaba?? ayrıca git istemcisinide kurdum ve işlemleri root olarak yapıyorum….
    ————————————————————————–
    sudo apt-get install libsgutils2-dev libusb-1.0-0-dev
    mkdir src
    cd src
    git clone git://github.com/texane/stlink.git
    cd stlink
    make
    ———————————————————————–

  3. muuzoo dedi ki:

    Hmm. Muhtemelen kopyalamada bir hata oluşmuş olabilir. Bir de şöyle dener misin? Ayrıca bu aşamada root olmana gerek olmaması gerekir.

    git clone https://github.com/texane/stlink.git
    cd stlink
    make

  4. mushack34 dedi ki:

    dediğini yaptım fakat yine olmadı. ben 32bit ubuntu kullanıyorum… bundan kaynaklanıyor olabilirmi?

  5. muuzoo dedi ki:

    Onla alakası olmaması gerekiyor. Dizin adların türkçe karakter içeriyor olabilir mi?

  6. mushack34 dedi ki:

    dizin adlarında turkce bi karakter kullanmıyorum ama nedenini hala anlayamadım…

  7. mushack34 dedi ki:

    bide “file system” içindeki dosyaları kurcalarken “bin” dizini altında hemen hemen tüm linux console komutlarına rastlarken “make” komutuna rast gelmedim… acaba bunedenle çalışmıyor olabilirmi…. nettede bayabi araştırdım…ama sonuç yine bad 😀

  8. muuzoo dedi ki:

    Uygun bir vakitte teamviewer üzerinden bir bakalım. Teamviewer kurunca bana haber ver. Uzaktan erişim ile yardımcı olayım.

  9. Tagli dedi ki:

    mushack34’un sorunu sanirim projedeki bir guncellemeden kaynaklaniyor. README dosyasinda yazdigina gore artik autotools kullaniliyormus (nedir ne degildir pek bilmiyorum).
    $ ./autogen.sh
    $ ./configure
    $ make
    Sanirim bunun icin de automake ve autotools-dev (bu ikinciden emin degilim) paketlerinin kurulu olmasi gerekiyor.

  10. muuzoo dedi ki:

    Tagli bilgilendirme için sağol 😉 . Yeni kodları denedim ve yazıya ekledim.

  11. erol dedi ki:

    merhaba,

    çalışmanız için size tşk ederim.
    Sourcery Codebench için derleme esnasında herhangi limit kısıtlaması var mı?

    kolay gelsin

  12. muuzoo dedi ki:

    Sourcerry Codebench sürümlerine ait özellik karşılaştırma tablosuna BURADAN ulaşabilirsiniz. Bildiğim kadarıyla derleme ile ilgili bir kısıtlama yok.

  13. recep dedi ki:

    Merhabalar
    [code]
    mkdir /opt/stlink
    cd /opt/stlink
    cp /home/user/src/stlink/flash/st-flash ./st-flash
    cp /home/user/src/stlink/gdbserver/st-util
    echo PATH=\”$PATH:/opt/stlink\” >> /etc/environment
    source /etc/environment[/code]
    buraya kadar sorun yoktı fakat burda sorun oluştu şu satırda
    [code]
    cp /home/user/src/stlink/flash/st-flash ./st-flash
    [/code]böyle bir hata verdi [code]
    cp: `/home/rclk/src/stlink/flash/st-flash’ durumlanamadı: Böyle bir dosya ya da dizin yok
    [/code] yardımlarınız bekliyorum,
    ayrıca böyle bir bilgi paylaştıgınız için teşekkür ediyorum…

  14. muuzoo dedi ki:

    Evet şimdi tekrar kurulumu inceledim. Bir takım değişiklikler olmuş. Yazıdaki kurulum kısmını tekrar güncelliyorum. Hatanın giderilmesi için lütfen ilgili kısmı tekrar deneyiniz. ST-Link kaynağında bazı değşiklikler olmuş. “sudo apt-get install libsgutils2-dev libusb-1.0-0-dev autoconf libtool” satırından itibaren tekrar deneyin.

  15. asd dedi ki:

    Yazı için teşekkürler…

    Geri bildirim açısından, karşılaştığım bazı problemleri ve çözümleri yazmak istedim.

    // ./autogen.sh işleminde sorun oldu,
    “sudo apt-get install autoconf” komutunu girmem gerekti.

    // libtool programı düzgün yüklenememiş, bunun için
    “sudo aptitude install libtool” komutu ile tekrar yükledim.

    // libusb için komutunu çalıştırmam gerekti.
    “sudo apt-get install libusb-1.0”

    Sonuç olarak başarılı bir şekilde kurulum gerçekleşti.

  16. Nazım dedi ki:

    Merhabalar,

    STM32F3 için flash loader desteği verilmiyor sanırım…

    STM32F4’ünkine bakarak bunu yapmanın aşamaları nelerdir?

  17. muuzoo dedi ki:

    Geç cevap için kusura bakmayın. Ne yazık ki bu konu hakkında şu an için bir fikrim yok.

  18. Arif dedi ki:

    Merhaba sudo apt-get install libsgutils2-dev libusb-1.0-0-dev autoconf libtool komutu hata döndürüyor, nasıl kuracağımı bilemedim. Ayrıca az önceki koddan olsa gerek şunlarda hata veriyor;
    cp /home/user/src/stlink/st-flash ./st-flash
    cp /home/user/src/stlink/st-util st-util

  19. muuzoo dedi ki:

    Merhaba,

    Dönen hatayı yazarsanız daha faydalı olur.

  20. Arif dedi ki:

    direkt dosya veya dizin yok diyor

  21. Arif dedi ki:

    “/etc/environment: satır 4: `”‘ için eşleşme aranırken beklenmedik dosya sonu
    dpkg: error processing package install-info (–configure):
    installed post-installation script alt işlemi çıkış durumunda hata döndürdü : 2
    İşlem sırasında hatalar bulundu:
    install-info
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘google-chrome.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘google-chrome.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    E: Sub-process /usr/bin/dpkg returned an error code (1)”
    indirme içinde bu hatayı veriyor

  22. muuzoo dedi ki:

    Sizin sistemden kaynaklı bir sorun var. Şu komutların çıktılarını gönderir misiniz?

    sudo dpkg –configure -a

    daha sonra da

    sudo apt-get install -f

  23. Arif dedi ki:

    dpkg: error: need an action option
    sudo dpkg –configure -a için;

    Type dpkg –help for help about installing and deinstalling packages [*];
    Use ‘apt’ or ‘aptitude’ for user-friendly package management;
    Type dpkg -Dhelp for a list of dpkg debug flag values;
    Type dpkg –force-help for a list of forcing options;
    Type dpkg-deb –help for help about manipulating *.deb files;

    Options marked [*] produce a lot of output – pipe it through ‘less’ or ‘more’ !

    sudo apt-get install -f için ;

    Paket listeleri okunuyor… Bitti
    Bağımlılık ağacı oluşturuluyor
    Durum bilgisi okunuyor… Bitti
    0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 32 paket yükseltilmeyecek.
    1 paket tam olarak kurulmayacak ya da kaldırılmayacak.
    Bu işlem tamamlandıktan sonra 0 B ek disk alanı kullanılacak.
    install-info (5.2.0.dfsg.1-2) ayarlanıyor…
    /etc/environment: satır 4: `”‘ için eşleşme aranırken beklenmedik dosya sonu
    dpkg: error processing package install-info (–configure):
    installed post-installation script alt işlemi çıkış durumunda hata döndürdü : 2
    İşlem sırasında hatalar bulundu:
    install-info
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘google-chrome.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘google-chrome.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘kroq-gar78-ppa-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘upubuntu-com-themes-saucy.list.save’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    N: ‘/etc/apt/sources.list.d/’ dizinindeki ‘ubuntu-wine-ppa-saucy.list.distUpgrade’ dosyası geçersiz bir dosya uzantısı olduğu için yok sayılıyor.
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    ilgilendiğiniz için teşekkürler

  24. muuzoo dedi ki:

    Siz de paket yöneticisi ile alakalı bir sorun var. İsterseniz size uygun bir zamanda teamviewer üzerinden çözmeye çalışalım.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir