TEKNİK YAZI

Tiva Not-2: Keil de Sıfırdan Tiva Projesi Oluşturmak

Girişini yaptığımız bir önceki yazının devamında tam bir başbelası olan KEIL de sıfırdan proje oluşturma kısmını ele alıyoruz. Öyle ki ti dan bu konuda destek aldığımda sıfırdan proje oluşturmaya çalışmayıp örnek projeler üzerindeki kodları değiştirerek  önceden yapılı ayarları kullanarak projelerimi yapmam söylendi. Çok zor bir ayar yok, en azından şimdilik öyle gördüm, işin zorluğu çok garip hatalar alıyorsunuz ve çözümü de yine ayarlardaki ufak bir noktadan. Ben şimdiye kadar karşılaştığım durumları ve yapılması gereken ayarları, bu ayarların neden yapılması gerektiğini yazmaya çalışacağım. Daha sonra yeni bilgiler edinirsem eklerim.

Öncelikle yeni çalışmaya başladıysanız tiva ile ilk olarak önceki yazımızdaki adımları tam olarak uygulayın ve her şeyin tastamam çalıştığından emin olun.

KEIL programı çok kapsamlı programdır ve bir çok hatta neredeyse piyasadaki tüm işlemcileri programlayabilecek bir derleyicidir. Bu yüzden hangi işlemciyi kullanacağımızı hangi api yi kullanacağımızı vb tüm tanımlamaları doğru şekilde yapmazsak kodlarımız derlenmez, anlam veremediğimiz hata oluşur, her şey yolunda görünse bile yüklediğimiz kod çalışmayabilir.

Programlama konusunda mutlaka yapmanızı tavsiye edeceğim bir tavsiye de kodlarınıza kodların nerelerde takıldığını görebileceğiniz bir nevi devreniz çalışırken canlı debug yapabileceğiniz noktalar koymaktır. Bu bir led sinyali olabileceği gibi seri porttan adım adım işlemlerin ilerlediğinin yazımı da olabilir. Launchpad direk olarak bilgisayara seri porttan da bağlandığı için bunu kolaylıkla yapabilirsiniz. Bu tarz yeni platformlarda çalışırken bu çok faydalı olacaktır, yazdığınız bir satırda veya bu durum karşımıza daha önce de çıktı yazılan API de hatalar olabilir.

Karşılaşılan durumlar ve tecrübeler üzerine konuşulabilecek şey çok. Bunları belki daha sonra tek bir yazı üzerinde ele alabiliriz.

KEIL de tiva mikroişlemcilerle proje oluşturmaya başlamak için ihtiyacımız olan program ve yazılımların neler olduğu ve nasıl kurulması gerektiği hakkında bilgi için önceki yazılarımızı kontrol ediniz.

Adım adım gitsek daha güzel olacak gibi duruyor:

– Keil programını çalıştırıyoruz ve açık olan tüm projeleri kapatıyoruz. Tertemiz bir keil arayüzümüzün bize bakıyor olması lazım. Her zaman keil programının en son sürümünü kullanmaya gayret etmenizi tavsiye ediyorum.

2013-11-04 16_18_49-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

Project> New uVisison Project kısmından yeni bir proje oluşturuyoruz.

2013-11-04 16_18_58-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Projemiz için yeni bir klasör oluşturup projemizi ismi ile birlikte buraya kaydediyoruz.

2013-11-04 16_19_05-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Açılan pencereden kullanacağımız işlemciyi seçiyoruz.

2013-11-04 16_19_13-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Açılan pencerede bize startup dosyasını eklemek istiyor musunuz diye soruyor. Biz hayır diyoruz.Neden?

2013-11-04 16_19_23-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Hem ti ın notlarında hemde bir çok workshop videolarında bu dosyayı eklememiz gerektiğinden bahseder. Bu dosyayı eklediğimizde direk olarak işlemcimizi register bazında programlamak istediğimizi belirtmiş oluruz bir anlamda. Ancak biz TivaWare API si ile programlayacağımız için bu dosyayı eklemeden devam ediyoruz.

İşlemcinin keil tarafından otomatik olarak eklediği bu başlangıç dosyası ile derleme yapmaya çalıştığımızda aşağıdaki gibi bir hata alabiliriz:

.\proje1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_tm4c123.o).

Bu hatayı alıyorsak başlangıç dosyamız, yani vektör dosyamız hatalıdır demektir. Bu sorun ile karşılaşanlar için yardımcı olması açısından buraya not düşmek istedim.

Adımlarımıza devam edecek olursak, kullanacağımız library dosyalarını ekleyelim ilk önce,

2013-11-04 16_19_31-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Sol taraftaki project kısmında projemizin source dosyalarına library dosyalarımızı eklemek için yukardaki resimde görüldüğü gibi dosya ekleyeceğimizi belirtiyoruz ve açılan penceren ilk olarak KEIL de Tiva programlama için tüm fonksiyonlarımızı barındıran library.lib dosyasını ekliyoruz. Dosyanın dizini:

C:\ti\TivaWare_C_Series-1.0\driverlib\rvmdk

Ve asıl kullanacağımızdan bahsettiğimiz vektör dosyamızı ekliyoruz.”startup_rvmdk.s” vektör dosyasını örnek bir projenin içerisinden çekebiliriz.

_dosya dizini:

C:\ti\TivaWare_C_Series-1.0\examples\boards\ek-tm4c123gxl\projectO

Bu iki dosyayı eklediğimize aşağıdaki gibi source group da görünmesi gerekli:

2013-11-04 16_19_38-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Sonra, file>new yapıp yeni bir dosya açıyoruz. Bu dosya text dosyası olarak açılıyor, bu dosyayı proje klasörümüze “c” uzantılı olarak kaydediyoruz. ben main.c olarak kaydettim. Kaydettiğimiz dosyayı ise önceki adımda library leri eklediğimiz gibi source group a kaydediyoruz.

2013-11-04 16_19_44-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

2013-11-04 16_19_51-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

Gelelim projemizin ayarları kısmına. Buradaki ayarları da tam olarak gösterdiğimiz şekilde yapmamız gerekiyor. Problem yaşadığınız noktalar olursa problemi çözmeden diğer adımlara geçmeyiniz.

Projemizin ayarları için aşağıdaki gibi proje ayarları kısmına giriş yapıyoruz;

 

2013-11-04 16_19_57-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

İlk olarak birinci sekmede projeye başlarken de seçmiş olduğumuz işlemci adının doğru olarak seçildiğini kontrol ediyoruz.

2013-11-04 16_20_08-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

 

Target sekmesine geçip Kristal ayarını 16 Mhz e ayarlıyoruz. Başka bir değişiklik yapmamıza şu aşamada gerek yok.

2013-11-04 16_20_13-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

C/C++ sekmesine geçiyoruz “include paths” kısmına TivaWare dosyasının olduğu konumu bildiriyoruz. Bu şekilde kullanacak olduğumuz API için gerekli kütüphaneyi derleyiciye tanıtıyoruz.

2013-11-04 16_20_20-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

C/C++ sekmesinde yapacağımız diğer ayar ise Preprocessor Symbols kısmına resimde de görüleceği üzere “PART_TM4C123GH6PM ” yazmak. İlk derleyeceğimiz led yak söndür kodlarında bunu yazmadığımızda bir sorun yaşamıyoruz ancak ileriki uygulamalarda örneğin bir seri port uygulamasında UART0 haricinde diğer 7 uart dan birini kullanmaya çalıştığımızda pin tanımlamalarında hata alabiliyoruz.

 

2013-11-04 16_42_06-Tiva yeni proje oluşturma KEIL ayarlar ve ilk blinky (1) - Microsoft Word

Bu tanımlama tivaware apisinin pin tanımlamalarını keil e tanıtmış oluyor. Şu şekilde pinlerin tanımlı olmadığı şeklinde bir hata alıyorsunuz halbuki kod üzerinde herşey tanımlı.

2013-11-04 16_20_28-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

Aynı şekilde Asm sekmesinde de TivaWare dizinini include paths bölümünde gösteriyoruz. Ayrıca burada thumb mode u seçili hale getiriyoruz. Bunu işaretlemek zorunda değiliz. İşaretlemenin avantajı ARM mimarisinin sahip olduğu thumb mode da kodlarımızı derlemesi ve kod optimizasyonu açısından daha performanslı şekilde kodları derlemesi. Dediğim gibi seçmesenizde başlangıç aşamasında bişey farketmeyecektir.

 

2013-11-04 16_20_34-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

Debug ve Utilities sekmelerinde ise kullanacağımız Stellaris ICDI ı seçiyoruz.

2013-11-04 16_20_42-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

2013-11-04 16_21_02-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

 

Ayarlarımızı bu şekilde kaydettikten sonra sıra geldi ilk projemizi derlemeye. Örnek kod olarak direk örnekler içerisinde bulunan project0 içerisindeki kodları kopyala yapıştır yapıp derleyip deniyoruz.

Tüm ayarlarımız doğru şekilde yapılmış ise sorunsuz şekilde kodun derlendiğini görebiliriz ve direk launchpadimize yükleyebiliriz. Her hangi bir problem ile karşılaşırsanız yukarıdan adımları tekrar kontrol ederek geliniz. Kodumuzu derleyip LP ye yükledikten sonra Launchpad üzerindeki reset butonuna bastığımızda kodumuz çalışmaya başlar. Sırayla bir polis ışığı edasıyla kırmızı ve mavi ledler sıra ile yanarlar.

Bir nevi ilk yazımızın da sağlaması şeklinde olan bu yazımızın da sonuna geldik. Dokuman hazırlamak zormuş onu öğrendik en çok.

Bir sonraki yazımızda bilgisayardan kopup işin donanım kısmına geçeceğiz ve tiva işlemciler ile pcb tasarımı yaparken nelere dikkat etmeliyiz neden dikkat etmeliyiz gibi önemi çoğu kişi tarafından ciddiye alınmayan ama sonra “herşey tamam niye çalışmıyo bu??!!!…” şeklinde tepkiler verdirten konuyu ele alacağız inşaallah.

 

  • Yasin

    öncelikle ellerinize sağlık, çok yararlı paylaşım olmuş. Bu uygulamayı yaparken bir sorun oluştu gpio.h dosyasında ilk 6 fonksiyon tanımlamasında hata alıyorum.
    error: unknown typte name ‘uint_8’ ve ‘uint_32’ gibi
    neden olabilir bu hata ?

    • Metin KOÇ

      Söylediklerinizden anladığım neticesinde , problem yaşadığınız dosyanın en üstünde stdint.h dosyasını include ile eklemeniz sorunu çözecektir.

  • Yasin

    teşekkürler dediğiniz gibi halloldu sorun 🙂

  • umut

    library dosyasını nereden indiricez