STM32F4 Discovery ve Ubuntu Bölüm-2

Yazı dizimizin ilk kısmında gerekli programlardan ve kurulumlarından bahsetmiştik. Bu kısımda ise kurduğumuz programları nasıl bir araya getireceğimizi ve gerekli ayarların nasıl yapılacağını göstereceğiz. Dilerseniz sırasıyla gerekli işlemlere başlayalım.

ST-Link ve Eclipse İlişkilendirmesi

Eclipse programımızı açıyoruz ve sırasi ile bu adımları takip ediyoruz.

  1. Run > External Tools >External Tools Configurations.
  2. Program yazan yere sağ tuş ile tıklayıp New seçeneğini seçiyoruz.
  3. Name kısmına “ST-Link“, Location kısmına da “/opt/stlink/st-util yazıyoruz. Working Directory kısmına ${workspace_loc}${project_path} yazıyoruz.
  4. Build sekmesine geliyoruz. Burdaki “Build Before Launch” seçeneğindeki işareti kaldırıyoruz.
  5. Common sekmesine geçip “Display in Favorites menu” başlığı altındaki “External tools” seçeneğini işaretliyoruz.

Değişiklikleri Apply diyerek kaydediyoruz ve Close tuşu ile çıkıyoruz. Buraya kadar ayarlarımızı yaptık. Eclipse programımızı kapatıp çıkabiliriz. Yeni safhaya geçmeden önce kendinize bir bardak kahve ya da çay hazırlamanızı tavsiye ederim. Sıra geldi proje hazırlıklarına. Öncelikle path ayarlarımızdan emin olarak eclipse programımızı başlatıyoruz. İlk bölümdeki kurulumu yaptıktan sonra bilgisayarınızı yeniden başlattıysanız “path” ayarlarınız halihazırda yapılmış olmalıdır ama emin değilseniz “source /etc/environment” komutunu verdikten heen sonra eclipse komutunu vererek programı başlatın.

Örnek Proje Ayarları

Eclipse programımızı açtık. Tertemiz bir sayfa bizi karşıladı. Sıra proje ayarlarımızı yapmakta. Sırasıyla bu adımları takip ediyoruz.

  1. File > New > Project
  2. C/C++ > C Project > Next
  3. Arm Cross Target Application > Empty Project
  4. Yandaki pencereden Arm Linux GCC (Sourcery G++ Lite) seçiliyor
  5. Project kısmına bir proje adı verip devam ediyoruz.

Eğer her şey doğru yapıldıysa sol taraftaki “Project Explorer” penceresinde oluşturduğumuz projeye eklenmiş 3 dizin göreceğiz

/opt/CodeSourcery/arm-2011.09/arm-none-eabi/include

/opt/CodeSourcery/arm-2011.09/lib/gcc/arm-none-eabi/4.6.1/include

/opt/CodeSourcery/arm-2011.09/lib/gcc/arm-none-eabi/4.6.1/include-fixed

Şimdi diğer ayarları yapmaya geçelim. Bu aşamaya geçmeden önce indirmemiz gereken bir dosya daha var. STM32 için gerekli olan kütüphaneleri içeren paket. STM32F4 DSP Peripherals and Standart Library adlı yaklaşık 30 MB büyüklüünde bir dosya. İçinde elimizdeki donanım için gerekli tüm kütüphaneler mevcut. Biz de bu kütüphaneleri projemize ekleyeceğiz. Bunun için sırası ile

  1. Project > Properties
  2. C/C++ Generals > Paths and Symbols
  3. Configuration Ayarlarını “All configurations” olarak değiştiriyoruz.
  4. Include sekmesindeki Languages ayarını GNU C olarak seçiyoruz.

Bu ekranda iken Add tuşuna basarak indirdiğimiz STM32F4 kütüphanelerini ekliyoruz. Eklememiz gereken dizinler şunlar:

/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/Include

/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/Device/ST/STM32F4xx/Include

/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4xx_StdPeriph_Driver/inc

/${ProjDirPath}

Bu dizinleri ekledikten sonra “Source Location” sekmesine geçiyoruz ve Link Folder seçeneğine tıklıyoruz:

  1. Folder Name kısmına StdPeriph yazıyoruz.
  2. Link to folder in the file system seçeneğini seçiyoruz.
  3. Browse tuşuna basıp /STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4xx_StdPeriph_Driver/src dizinini gösteriyoruz. Onaylayıp işemi bitiriyoruz.

Daha sonra Symbol sekmesine geçiyoruz. Buraya bir kaç değer eklememiz gerekiyor. Sol taraftan GNU C seçili iken Add tuşuna basarak şu 3 değeri ekliyoruz.

  1. Name kısmına USE_STDPERIPH_DRIVER deyip OK diyoruz. Value değeri boş kalacak.

  2. Name kısmına USE_STM32_DISCOVERY deyip OK diyoruz. Value değeri boş kalacak.
  3. Name Kısmına HSE_VALUE diyoruz. Value kısmına 8000000 değerini giriyoruz. OK diyoruz.

Apply diyerek değişikliklerimizi kaydediyoruz. Aynı pencerede iken sol taraftaki C/C++ General başlığı altındaki Indexer ayarlarına giriyoruz. Burada resimde görülen ayarları işaretliyoruz ve Apply diyoruz.

Azimle yolumuza devam ediyoruz. Herşey ARM için 🙂 Sol taraftaki seçeneklerden C/C++ Build sekmesine geliyoruz. Environment seçeneğine tıklıyoruz. Sağ taraftaki “Select” tuşuna tıklayıp PATH değişkenini ekliyoruz.

Daha sonra soldan yine Settings seçeneğini seçiyoruz ARM Sourcery Linux GCC Linker başlığı altındaki General seçeneğini seçiyoruz ve Script File kutusuna /${ProjDirPath}/stm32_flash.ld

Aynı yerden ARM Sourcerry Linux GNU Flash Image ayarlarından Output seçeneğine gelip Output File Format seçeneğini “binary” olarak değiştiriyoruz.

Sabırlı okurlarım yüzdük yüzdük kuyruğuna geldik. Az daha sabredin. Projemizin sorunsuz derlenmesi için gereken bir kaç dosyayı proje dizinimize kopyalamamız gerek. İşte o dosyalar

/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324xG_EVAL/stm32_flash.ld
/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f4xx.s

ÖNEMLİ : Proje dizinimize kopyaladığımız “startup_stm32f4xx.s” dosyasının uzantsını büyük s ile “S” ile değiştiriyoruz. Yani dosya adımız “startup_stm32f4xx.S” olacak. Bir de netleştiremediğim bir durum olmakla birlikte bu dosyanın içinde bulunan bir satırı iptal etmemiz gerekiyor ya da gerekmiyor. Yaralandığım kaynaklardan biri almanca ve google translate ile tercüme ettiğimde ilgili yeri “uncomment” edin demiş fakat bu satır etkinken kod derlenmiyor. Kaldı ki bu satır zaten etkinleştirilmiş. Yani etkinleştirilmiş satırı tekrar nasıl etkinleştirebiliriz ki. Olmak ya da olmamak işte bütün mesele bu. Ya da bir ihtimal daha var ölmek mi dersin… (Yazar burda saçmalamaktadır ciddiye almayınız 🙂 Olması gereken durum şu:

/* Call static constructors */
//    bl __libc_init_array

Biraz mola verebiliriz. Bundan sonra fazla bir işimiz kalmadı. Sırada GDB ile Debug işlemi için gerekli ayarları yapacağımız yere geliyoruz.Şimdi bazı okurlar diyordur ki hep az kaldı diyoruz ama bir olayınızı göremedik. Bizi mi kandırıyon len! Ben de diyorum ki şunu da yaptık mı tamamdır bu iş.Sırasıyla

Run>Debug Configuration seçeneğine tıklıyoruz.

Açılan pencerede solda bulunan “GDB Hardware Debugging” kısmına sağ tuş ile tıklayıp New seçeneğini seçiyoruz. Açılan pencerede NEW kısmına “STM32F4-Discovery ST-Link” ismini veriyoruz. Debugger sekmesine geçip GDB Command kısmına “arm-none-eabi-gdb” yazıyoruz ve port numarasını 4242 olarak belirliyoruz. Aşağıdaki ekran görüntüsünde ayarları görebilirsiniz.

Son olarak Common sekmesine gelip Display in favorites menu başlığı altındaki Debug seçeneğini işaretleyin. Apply ve close diyerek pencereyi kapatıyoruz. Aşağıdaki örnekte deneme projesi için yaptıığım ayarları görebilirsiniz.

Şimdi bir kaç püf noktasına değinelim:

  1. Debug işleminden önce ST-Link çalışıyor olmalı. (Run > External Tools > ST-Link)
  2. Eğer ST-Link açılında “Variable References empty selection” hatası verirse Project Explorer penceresindeki proje klasörünüze bir kere tıklayıp tekrar deneyin.
  3. Run > Debug Configuration penceresinden proje ayarlarınızı yapın.
  4. Debug işlemini başlatın. Açılan pencere uyarısına yes diyerek debug ekranına ulaşabilirsiniz.
  5. F8 ile kodunuzu tekrar baştan başlatabilirsiniz.

GDB henüz %85 oranında faal olan bir uygulama olduğu için hatalarını olgunlukla karşılayacağını biliyorum :D. Bir sonraki yazımızda basit bir led yak söndür uygulaması kodu vereceğim.

BÖLÜM 2 SONU

5 thoughts on “STM32F4 Discovery ve Ubuntu Bölüm-2

  1. ArGeMaNiA dedi ki:

    Tebrik ederim, çok güzel bir çalışma..

  2. mushack34 dedi ki:

    Merhaba muzaffer abi…. bayabi uzun suredir ilgilenememiştim arm la… tekrar bi kuruyım dedim… guncellemeler felan olmus…. eski hatalarım kayboldu… fakat eclipse platformuna entegre etme kısmında problem yaşıyorum…. problemim yukarıda belirttiğiniz dogru kurulumla gelen 3 satır da…. o kısımlar bende gelmiyor 🙁 ve 2 tane uyarı alıyorum…. Bunlar :

    “Error launching external scanner info generator (arm-none-eabi-gcc -E -P -v -dD /home/mushack34/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c) ”

    “Program ‘arm-none-eabi-gcc’ is not found in $PATH”

    nerede yanlış yapıyorum acaba 🙁

  3. muuzoo dedi ki:

    $PATH ile ilgili uyarı bir önceki adımda bir hata yapmış olabilecğin anlamına geliyor. Normalde bir önceki yazıda yapılan kurulumdan kaynaklı bir hata gibi. Bir de yazıda bir yerde bir } işaretini unutmuşum onu ekledim.
    Şu komutun çıktısına bakar mısın : which arm-none-eabi-gcc
    Eğer doğru kurulum olduysa şuna benzer bir çıktı olacak:
    /opt/CodeSourcery/arm-2011.09/bin/arm-none-eabi-gcc

  4. mushack34 dedi ki:

    Cevabın için çok sağol muzaffer abi sorunu çözdüm…. http://download.eclipse.org/tools/cdt/releases/indigo link ile gelen dosyalar arasında support eklentileri vardı onlarıda kurunca sorun ortadan kalktı… ayrıca verdiğin kod ile denedim path aynı 🙂 asıl bundan sonra işler baslıyor muzaffer abi, baktimda bayabi uzun anlatim olmus 🙂 walla böyle güzel bir çalışma için çok tessekkur ederim… emeğine sağlık devamını bekliyoruz….

  5. mushack34 dedi ki:

    Merhaba muzaffer abi 😀 kuruluma kaldığım yerden devam ediyim dedim 😀 Benim suanda tek hatam var fakat çözemedim 🙁 ilk hatam stm32f4xx_conf.h dosyasıydı proje dizininde olmadığından fatal error veriyordu bunu hallettim… fakat şimdiki hatam, belirtmiş olduğun debug conf taki,( Debug/deneme02.elf ) kısım, benim projemin debug kısmında .elf dosyası yok bu nedenle hata veriyor 🙁 bir fikrin varmı acep….

Bir Cevap Yazın

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