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.
Project> New uVisison Project kısmından yeni bir proje oluşturuyoruz.
Projemiz için yeni bir klasör oluşturup projemizi ismi ile birlikte buraya kaydediyoruz.
Açılan pencereden kullanacağımız işlemciyi seçiyoruz.
Açılan pencerede bize startup dosyasını eklemek istiyor musunuz diye soruyor. Biz hayır diyoruz.Neden?
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,
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:
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.
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;
İ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.
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.
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.
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.
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ı.
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.
Debug ve Utilities sekmelerinde ise kullanacağımız Stellaris ICDI ı seçiyoruz.
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.