C - Hızlı Başlangıç
C, MahirKart gibi birçok geliştirme kartını programlayabildiğimiz bir yazılım dilidir.
Bu rehber, C ile MahirKart'ı kullanmaya başlamanıza yardımcı olacaktır. Geliştirme ortamını kurmak, C kodunu MahirKart'a yüklemek ve LED yaktığımız basit bir proje oluşturmak için adım adım talimatlar içerir.
Gereksinimler
- Bir MahirKart
- Bir USB Type-C kablosu
- Bir bilgisayar
- Visual Code
- Gerekli olan bir kaç Tool
Geliştirme Ortamı
C ile programlama yapabilmek için öncelikle birkaç eklenti kurmamız gerekecektir. Geliştirme ortamı olarak Visual Code kullanılacaktır. İsterseniz başka bir geliştirme ortamı da kullanabilirsiniz. Adım adım hepsi anlatılacaktır.
Dizin Kurulumu
Kuracağımız araçları tek bir klasörde konumlandıracağız. Bu sayede ilerleyen süreçlerde daha düzenli bir çalışma ortamı oluşturmuş olacağız.
C sürücünüzün en üst dizinine VSMHR adlı bir klasör oluşturun. Ardından VSMHR klasörünün içine şu klasörleri oluşturun :
- armcc (Dizini şu şekilde olmalı C:\VSMHR\armcc)
- lib (Dizini şu şekilde olmalı C:\VSMHR\lib)
- mingw (Dizini şu şekilde olmalı C:\VSMHR\mingw)
- sdk (Dizini şu şekilde olmalı C:\VSMHR\sdk)
Yukarıdaki 4 klasörü VSMHR klasörünün altına oluşturduğunuzda aşağıdaki görsel gibi klasör yapısına sahip olmalısınız.
GNU Arm Embedded Toolchain Kurulumu
GNU Arm Embedded Toolchain, RP2040 işlemcisinde C ve C++ kodunu derlemek için ihtiyaç duyulan Arm GCC derleyicisini içerir. https://developer.arm.com/downloads/-/gnu-rm sayfasına gidin ve Windows için en son yükleyiciyi indirin.
Exe’yi çalıştırdıktan sonra hedef dizin seçiminde “Gözat” a tıklayıp C:\VSMHR\armcc yolunu seçin.
"C:\VSMHR\armcc" bu yolu seçtiğinizde ise “Hedef Dizin” kutusu aşağıdaki gibi olacaktır. (İndirdiğiniz sürüme bağlı olarak armcc\ den sonraki kısım değişiklik gösterecektir.)
“Kur” butonuna basıp kurulum işlemine devam edin. Birkaç dakika sürebilir bu kısım. Kurulum tamamlandığında Ortam değişkenine yol ekle (Add path to environment variable) kutucuğunu işaretleyin. Bitir demeden önce kurulum dosyasının son hali şu şekilde olmalıdır.
Böylece GNU Arm Embedded Toolchain kurulumunu bitirmiş olduk. Şimdi diğer adıma geçelim.
MinGW-w64 GCC Toolchain Kurulumu
MinGW, Windows için uygulamalar geliştirmenize olanak tanıyan derleyiciler ve bağlayıcılar gibi açık kaynaklı yardımcı programlardan oluşan bir koleksiyondur. MahirKart’da kullanılmak üzere MinGW-w64(8.10) i686-posix-sjlj.zip dosyasını indireceğiz. https://sourceforge.net/projects/mingw-w64/files/ bu siteye gidip aşağıya kaydırıp i686-posix-sjlj dosyasına tıklayacaksınız.
İndirdiğiniz .zip dosyasını C:\VSMHR\mingw dizinine çıkartın.
Çıkartma işlemini tamamladıktan sonra bir Windows Komut İstemi açıp (Windows tuşuna basıp cmd yazabilirsiniz. İlk çıkana tıklayın.) aşağıdaki komutu yazın.
MinGW kurulumunu da başarıyla tamamladık bir sonraki adıma geçelim.
CMake Kurulumu
CMake, C ve C++ ile yazılan projelerin derleme ve kurulum sürecini otomatikleştirmek için kullanılan bir araçtır. Çapraz platformdur, yani Windows, macOS ve Linux gibi farklı işletim sistemlerinde çalışabilir. https://cmake.org/download/ bu siteden CMake’ in Windows için olan en son sürümünü indirin. İndirdiğiniz dosyayı çalıştırın, kullanıcı lisansını kabul edin son olarak “Tüm Kullanıcılar İçin CMake’i Sistem Yol’una Ekle”’ butonunu işaretleyin.
CMake’i yükleyeceğiniz dizini C:\Program Files\CMake dizinine yüklerseniz daha rahat bir çalışma ortamınız olur. Çünkü CMake sistem çapında bir araç olarak kullanılacaktır. CMake kurulumunu da başarılı bir şekilde bitirdik. Bir sonraki adıma geçelim.
Python Kurulumu
https://www.python.org/downloads/ bu siteye gidip en güncel Python yükleyicisini indirin. Yükleyiciyi çalıştırın. Gelen ekranda iki kutucuğu da işaretleyin.
İki kutucuğu da seçtikten sonra “Install Now” a tıklayın. Ardından MAX_PATH uzunluk sınırını devre dışı bırakma işlemi yapacağız. Bunun için Windows arama çubuğuna “Kayıt Defteri Düzenleyicisi” yazın ve ilk çıkana tıklayın. Ekrana aşağıdaki görsel gibi bir ekran gelecektir.
Ardından bu ekranda kutu içerisindeki kısma şu yolu kopyalayın.
Yukarıdaki yola gittiğinizde önünüze bu sayfa gelecektir. Bu sayfadanda okla gösterilen LongPathEnabled ‘a tıklayıp önünüzde açılan pencerede aşağıdaki seçenekleri yapın ve Tamam’a basın.
Bu işlemi de başarıyla tamamladık ve bir sonraki adıma geçtik.
Git Kurulumu
https://git-scm.com/download/win bu siteye gidip Windows için en son sürümü indirin. Tüm varsayılanları kabul ederek kurulum işlemini tamamlayın. Git kurulumu da bu kadardı. Şimdi pico-sdk’yı indereceğiz.
Pico SDK Kurulumu
Pico SDK, RP2040 işlemcisi için bir C/C++ yazılım geliştirme kitidir. Pico SDK, RP2040’ın donanım özelliklerine erişmek için API'ler ve kütüphaneler sağlar.
Öncelikle C:\VSMHR\sdk dizinine gidip bu dizin içerisinde “mahir” adlı bir klasör oluşturun.
Klasörü oluşturduktan sonra Git Bash’i açın. Ardından sırasıyla şu komutları yazın. cd /c/VSMHR/sdk/mahir (kurulum yapacağımız dizine gitmemizi sağlar)
Bu komut Github’daki repoyu klonlar.git clone -b master https://github.com/raspberrypi/pico-sdk.git bunu yazıp enter’a bastığımızda birkaç indirme işlemi yapacak.
Ardından “pico-sdk” klasörüne gidip sub modülleri indireceğiz. Bunun içinde aşağıdaki kodları yazın.
Sonra ;
Yukarıdaki kodu yazın. Bu kısmın yüklenmesi uzun sürebilir.
Artık RP2040 işlemcisinde C/C++ programları geliştirmek için gerekli tüm derleme araçlarını kurduk. Geriye sadece birkaç ortam değişkeni güncellemesi kaldı. Şimdi o adıma geçelim.
Ortam Değişkenlerini Güncelleme
Kurduğumuz araç ve eklentilerden bazıları ortam değişkenlerini güncelledi. Güncellemeyen birkaçı (MinGW ve SDK) için kendimiz manuel güncelleme yapacağız.
Windows arama çubuğuna “Sistem ortamı değişkenlerini düzenle” yazın ve ilk çıkana tıklayın. Karşınıza alttaki gibi bir ekran gelecek. Bu pencerede “Ortam Değişkenleri..” butonuna basın
İlk olarak kullanıcı değişkenlerini yapacağız. Path’i seçin ve Düzenle’ye tıklayın
Düzenle dedikten sonra gelen ekranda sağ üstten Yeni’ye tıklayıp C:\VSMHR\mingw\mingw32\bin bunu yazın ve tamam diyin. Ayrıca yine bu ekranda
-
C:\VSMHR\armcc\
\bin -
C:\VSMHR\mingw\mingw32\bin
Bu iki yolu da gördüğünüzden emin olun.
Emin olduktan sonra Tamam’a tıklayın. Ardından yine kullanıcı değişkenleri kısmında Yeni butonuna basıp şunu ekleyin :
Değişken adı : PICO_SDK_PATH
Değişken değeri : C:\VSMHR\sdk\mahir\pico_sdk
Bu işlemleri yaptıktan sonra “Kullanıcı Değişkeni” kısmına PICO_SDK_PATH oluşması lazım.
Ardından kontrol amaçlı Sistem Değişkenleri kısmından PATH’i seçip Düzenle diyip
- C:\Program Dosyaları\CMake\bin
- C:\Program Dosyaları\Git\cmd
Bu iki yolun olduğundan emin olun
Tüm her şey tamamsa Tamam butonlarına basarak ekranları kapatın. Evet tüm kurulumları tamamlamış bulunmaktayız. Artık Led yakmaya geçebiliriz.
Led Yakıp Söndürme İçin Proje Oluşturma
İlk olarak projelerimizi yerleştireceğimiz bir klasör oluşturmalıyız. C:\VSMHR\sdk\mahir\ dizinin içine mhrkrt_ornekler diye bir klasör oluşturalım.
Ardınan Visual Code programına girip File kısmına tıklayıp Open Folder’a basıp mhrkrt_ornekler klasörünü seçin. Bu klasörde iken tekrardan bir klasör açın ve adını Blink koyun.
Ardından Blink klasörü içine main.c dosyasını oluşturun. Main.c dosyasını kodlamaya başlayalım. Blink için kodlama şu şekildedir.
int main(){
const uint Led_pin = 25; // Mahir Kart üzerindeki ledin pininin değişkene atama
gpio_init(Led_pin); // Pin için gerekli init işlemlerini yapma
gpio_set_dir(Led_pin, GPIO_OUT); // Pinin fonksiyonunu belirleme
while (true)
{
gpio_put(Led_pin, true); // Ledi yakma
sleep_ms(1000);
gpio_put(Led_pin, false); // Ledi söndürme
sleep_ms(1000);
}
}
Main.c dosyasını yazdıktan sonra main.c ile aynı dizinde olacak şekilde adı CmakeLists.txt olan bir dosya oluşturun. Klasör içi şu şekilde görünecektir.
Ardından CMake dosyasının içine gelin ve şu kodları yazın :
// Bu komut, CMake'in en az 3.12 sürümünü gerektirdiğini belirtir
cmake_minimum_required(VERSION 3.12)
// Bu komut, CMake'in PICO_SDK_PATH ortam değişkeninin değerini kullanarak Pico SDK'nın dışa aktarma CMake dosyasını dahil eder.
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
// Bu kod, blink adlı bir C/C++/ASM projesi tanımlar.
project(blink C CXX ASM)
// Bu kodlar, C ve C++ projeleri için standartları ayarlar.
set(CMAKE_C_STANDART 11)
set(CMAKE_CXX_STANDART 17)
// Pico SDK'yı başlatır.
pico_sdk_init()
// Bu kod, blink adlı bir proje için main.c dosyasını bir hedef olarak tanımlar.
add_executable(${PROJECT_NAME}
main.c
)
// Derleme işleminin ardından oluşturulan ek dosyaları hedefe ekler.
pico_add_extra_outputs(${PROJECT_NAME})
// Bu kod, blink adlı bir hedefe pico_stdlib kitaplığını bağlar.
target_link_libraries(${PROJECT_NAME}
pico_stdlib
)
CMake dosyasımızı da yazdığımıza göre son işleme geçiyoruz. Bir terminal açın. Terminalden Git Bash seçin. Ardından sırasıyla bu komutları yazın :
(Kurulum biraz zaman alabilir)
(Kurulum biraz zaman alabilir)
Mahir Kart’a yüklenecek olan dosya hazır hale gelmiş olur.
Bu işlemler sonucunda Mahir Kart içine atacağımız blink.uf2 dosyası oluşuyor. Şimdi bu dosyayı kartımızın içine atalım. Build klasörünün üstüne sağ tık yapıp “ Reveal in File Explorer”
Ardından karşınıza şöyle bir klasör gelecek. Okla gösterilen blink.uf2 dosyası Mahir Kartın içine atılacak olan dosyadır.