3 Adımda Raspberry Pi Pico Kurulum Hazırlığı

Raspberry Pi Pico C/C++ ile Kullanımı

Raspberry Pi Pico Kurulum Hazırlığını anlattığımız. bu içerik ile üretim ortamınız için gerekli IDE ve kütüphanelerin kurulmasına hakim olabilirsiniz.

2012’de, Raspberry Pi Foundation bizi tek kartlı bir bilgisayarla tanıştırdı, yani Raspberry Pi, esas olarak çocuklara bilgisayar biliminin temellerini öğretmek için tanıtıldı ve 9 yıl sonra mikro denetleyicili bir kart olan Raspberry Pi Pico piyasaya sürüldü. Raspberry Pi Pico, Raspberry Pi Foundation’ın kendi silikon çipi RP2040 ile birlikte gelir. 4 ABD doları olan düşük maliyetli bir mikro denetleyicidir. GPIO ve Dijital/Analog çevre birimlerinin yanı sıra Çift Çekirdekli ARM işlemciye sahip olduğu için, mikro ve küçük ölçekli gömülü uygulamaları kolayca oluşturabiliriz. Raspberry Pi Pico serisinin bu eğitiminde “C/C++ SDK kullanarak Raspberry Pi Pico Nasıl Programlanır” öğreneceğiz.

Kısaca Raspberry Pi Pico Özeti

Raspberry Pi Pico, 133 MHz’e kadar hızda çalışabilen Çift Çekirdekli ARM Cortex M0+ işlemciye sahiptir. 264 KB SRAM ve 2 MB dahili flash depolama alanına sahiptir, ancak özel bir Quad-SPI veri yolu aracılığıyla yonga dışı flash belleği 16 MB’a kadar genişletebiliriz. 3,3 V dijital G/Ç’yi destekleyen toplam 26 adet çok işlevli GPIO’ya sahibiz ve bunlardan 3’ü analog giriş olarak da kullanılabilir. Raspberry Pi Pico ayrıca mikro USB, harici güç kaynakları veya piller gibi son derece esnek bir güç kaynağı mimarisini de destekler. En önemlisi, Raspberry Pi Pico’yu programlamak için herhangi bir programlayıcıya ihtiyacımız olmamasıdır, çünkü USB üzerinden yığın depolama kullanarak “Sürükle ve Bırak” programlama ile çalışır.

Raspberry Pi Pico Kurulum Hazırlığı
Raspberry Pi Pico Kurulum Hazırlığı

Yukarıdaki resimde de görüldüğü gibi, Raspberry Pi Pico’da 40 adet pin çıkışı bulunur ve bunların 26’sı çok işlevli GPIO’lardır. Ayrıca, GPIO25’e bağlı bir yerleşik LED’i de vardır. En hayal kırıcı olan nokta ise Raspberry Pi Pico’da yerleşik bir donanım sıfırlama düğmesinin bulunmamasıdır; ancak kartta, bu pini toprakla kısa devre yaptırdığımızda sıfırlama pini görevi gören bir RUN pini bulunmaktadır.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Linux Tabanlı Sistemlerde Raspberry Pi Pico için C/C++ SDK’sının Kurulumu

Donanımı anladıktan sonra, uygulamalar geliştirmek için bir C/C++ yazılım geliştirme ortamı kurmamız gerekiyor. C/C++ SDK’sını kurmak için Ubuntu 20.04 LTS kullanıyoruz.

Raspberry Pi Foundation, Linux ve Raspberry Pi OS için bir kurulum komut dosyası sağlar; bu komut dosyası, C/C++ SDK ve Visual Studio Code çapraz platform IDE için ön koşulları otomatik olarak oluşturur ve yükler. C/C++ SDK kurulum komut dosyasını indirmek için aşağıdaki komutları çalıştırmamız gerekir.

mkdir ~/raspberry-pi-pico
cd ~/raspberry-pi-pico
wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
chmod +x pico_setup.sh
./pico_setup.sh

Not: Ubuntu 20.04 LTS – 64 bit işletim sistemimde, kurulum komut dosyasının Visual Studio Code IDE’yi indirip yüklemesi konusunda bir sorunla karşılaştım. Bu nedenle, VSCode IDE’nin indirilme kısmını engelledim ve işletim sistemime uygun olarak IDE’yi ayrı olarak indirip yükledim.

Tıpkı kurulum komut dosyasında olduğu gibi, aşağıda belirtilen komutları kullanarak ön koşulları, SDK’yı ve IDE’yi tek tek yükleyebiliriz.

Önkoşulları Yükleyin 

sudo apt update
sudo apt install git cmake gcc-arm-none-eabi gcc g++ libstdc++-arm-none-eabi-newlib
sudo apt install automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Pico C/C++ SDK Deposunu İndirin ve SDK’nın Ortam Yollarını Güncelleyin

mkdir ~/raspberry-pi-pico
cd ~/raspberry-pi-pico
mkdir pico
cd pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git
git clone -b master https://github.com/raspberrypi/pico-extras.git
git clone -b master https://github.com/raspberrypi/pico-playground.git
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

SDK ve örnek kod deposunu indirdikten sonra, ileride kullanmak üzere .bashrc dosyasına her bir deponun yolunu “PICO_SDK_PATH”, “PICO_EXAMPLES_PATH”, “PICO_EXTRAS_PATH” ve “PICO_PLAYGROUND_PATH” olarak ekleyerek ortam değişkenini güncelleme zamanı gelmiştir. Ayrıca, kullanıcılar Raspberry Pi Pico üzerinde çalışırken de ortam değişkenini güncelleyebilir.

export PICO_SDK_PATH=/home/<kullanıcı-adı>/raspberry-pi-pico/pico/pico-sdk
export PICO_EXAMPLES_PATH=/home/<kullanıcı-adı>/raspberry-pi-pico/pico/pico-examples
export PICO_EXTRAS_PATH=/home/<kullanıcı-adı>/raspberry-pi-pico/pico/pico-extras
export PICO_PLAYGROUND_PATH=/home/<kullanıcı-adı>/raspberry-pi-pico/pico/pico-playground
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Picotool ve Picoprobe Kurulumu

Raspberry Pi Pico’nun ikili dosyalarından gömülü bilgileri almak için Picotool’u indirip yüklememiz gerekiyor.

cd ~/raspberry-pi-pico/pico
git clone -b master https://github.com/raspberrypi/picotool.git
cd picotool
mkdir build
cd build
export PICO_SDK_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-sdk
cmake ../
make
sudo cp picotool /usr/local/bin/
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Picotool’u yükledikten sonra, sıra Picoprobe’u indirip yüklemeye geldi. Picoprobe aygıt yazılımı sayesinde, bir Raspberry Pi Pico’yu başka bir Raspberry Pi Pico için programlayıcı/hata ayıklayıcı cihazı olarak kullanabiliriz.

cd ~/raspberry-pi-pico/pico
git clone -b master https://github.com/raspberrypi/picoprobe.git
cd picoprobe
mkdir build
cd build
export PICO_SDK_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-sdk
cmake ../
make
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Hata Ayıklama için OpenOCD Kurulumu

Şimdi, Raspberry Pi Pico’da hata ayıklama yapmak için OpenOCD’yi indirip kurmanın zamanı geldi.

cd ~/raspberry-pi-pico/pico
git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1
cd openocd
./bootstrap
./configure --enable-picoprobe --enable-ftdi --enable-sysfsgpio --enable-bcm2835gpio
make
sudo make install​
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Visual Studio Code IDE’yi İndirin ve Kurun 

Tüm SDK ve hata ayıklama yazılımlarını indirip kurduktan sonra, şimdi kolay ve hızlı bir geliştirme süreci için çapraz derleyici IDE’si Visual Studio Code’u yükleyeceğiz. Daha önce Ubuntu 20.04LTS – 64 bit kullandığımı belirtmiştim, bu nedenle Visual Studio resmi web sitesinden code_1.xx.xx_amd64.deb dosyasını indirdim ve VSCode IDE’yi kurdum. VSCode IDE kurulumu tamamlandıktan sonra, VSCode IDE’den Raspberry Pi Pico’da hata ayıklama yapabilmemiz için IDE için bazı uzantıları yüklememiz gerekiyor.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı
cd ~/raspberry-pi-pico/pico
sudo apt install libx11-xcb1 libxcb-dri3-0 libdrm2 libgbm1 libegl-mesa0
code --install-extension marus25.cortex-debug
code --install-extension ms-vscode.cmake-tools
code --install-extension ms-vscode.cpptools
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

İlk Projeyi Kurma ve Derleme [Blink-Led]

Artık her şey hazır olduğuna göre, IDE, derleyici ve kütüphanenin gerektiği gibi çalışıp çalışmadığını kontrol etmek için C dilini kullanarak ilk projemizi, yani Raspberry Pi Pico LED’ini yanıp söndüren kodumuz ile projemizi derlemeye çalışalım.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Şimdi, ~/raspberry-pi-pico/ klasörü içinde bir “pico_workspace” klasörü oluşturun ve Visual Studio Code’u açın. Ardından sol üstteki “Explorer” sekmesine tıklayın veya Ctrl+Shift+E tuşlarına basın ve ardından Explorer sekmesinin altındaki “Open Folder” seçeneğine tıklayın. Klasörü Aç penceresinde, ~/raspberry-pi-pico/pico_workspace konumuna gidin ve “blink-led” adında bir klasör oluşturun ve Tamam düğmesine tıklayın.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

“blink-led” proje klasörünü oluşturup içe aktardıktan sonra, menü çubuğundan “Dosya -> Yeni Dosya” seçeneğini veya Ctrl+N tuşlarını kullanarak bir dosya oluşturun ve ardından Ctrl+S tuşlarına basarak dosyayı “main.c” adıyla kaydedin. Dosyayı kaydettikten sonra, LED’i yanıp sönmesini sağlayan kodu “main.c” dosyasına yazın.

/**
 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    while (true) {
        gpio_put(LED_PIN, 1);
        sleep_ms(250);
        gpio_put(LED_PIN, 0);
        sleep_ms(250);
    }
#endif
}
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Raspberry Pi Pico’nun C/C++ SDK’sı, CMake derleme otomasyon aracıyla birlikte gelir. Bu nedenle, proje için .C dosyasını oluşturduktan sonra “CMakeLists.txt” dosyasını da oluşturmamız gerekir. CMakeLists.txt dosyası, proje kaynak dosyalarını ve hedeflerini (çalıştırılabilir dosyalar, kütüphaneler) tanımlayan talimatları içerir.

# Set minimum required version of CMake
cmake_minimum_required(VERSION 3.12)
#include build functions from Pico SDK
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
# Set name of project (as PROJECT_NAME) and C/C++ Standards
project(blink-led C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# Creates a pico-sdk subdirectory in our project for the libraries
pico_sdk_init()
# point out the CMake, where to find the executable source file
add_executable(${PROJECT_NAME}
        main.c
)
# create map/bin/hex/uf2 files.
pico_add_extra_outputs(${PROJECT_NAME})
# Pull in our pico_stdlib which pulls in commonly used features (gpio, timer-delay etc)
target_link_libraries(${PROJECT_NAME}
            pico_stdlib
)
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Şimdi, blink-led projesi için CMake uzantısı ayarlarının otomatik olarak yapılabilmesi amacıyla Visual Studio Code’u yeniden başlatın. Yeniden başlatmanın ardından, alt kısımdaki çıktı penceresinde CMake derleme günlüğünü görebilirsiniz.

[cmake] -- Configuring done
[cmake] -- Generating done
[cmake] -- Build files have been written to: /home/<kullanıcı-adı>/raspberry-pi-pico/pico_workspace/blink-led/build
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Ardından, durum çubuğunun altındaki Derle simgesine tıklayarak blink-led projesini derleyin ve .uf2 dosyasını oluşturun. Derleme işleminin çıktısı Çıktı Günlüğü penceresinde görüntülenecektir. Derleme işlemi başarıyla tamamlandıktan sonra, derleme durumu da çıktı penceresinde gösterilir.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı
[build] [100%] Linking CXX executable blink-led.elf
[build] [100%] Built target blink-led
[build] Build finished with exit code 0
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Not: Doğru çapraz derleme araç zincirini (“GCC x.x.x arm-none-eabi”) seçtiğinizden emin olun. Araç zinciri doğru değilse, alt durum çubuğundaki anahtar ve tornavida simgesine tıklayın ve resimde gösterildiği gibi listeden doğru araç zincirini seçin.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı
3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Kodu Raspberry Pi Pico’ya Yükleme

Pi Pico’yu programlamak için her şeyi hazırladıktan sonra, artık kodu yükleme zamanı geldi. Bildiğimiz gibi, Raspberry Pi Pico’yu programlamak için herhangi bir programlayıcıya ihtiyacımız yok. Raspberry Pi Pico, sürükle ve bırak işlemiyle programlanıyor. Bu sürükle ve bırak işlemi için, Pico sisteme bağlanana kadar yerleşik BOOTSEL düğmesini basılı tutarken USB’yi Pico’ya takmamız ve ardından BOOTSEL düğmesini bırakmamız gerekiyor.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Raspberry Pi Pico’yu yeni programı/donanım yazılımını yüklemek üzere önyükleyici yığın depolama modu moduna geçirmek için cihaz üzerindeki BOOTSEL düğmesi kullanılır. Raspberry Pi Pico önyükleyici moduna girdikten sonra, RPI-RP2 adıyla bir yığın depolama birimi bağlanır. Şimdi bağlanan RPI-RP2 sürücüsüne tıklayın ve açın.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Şimdi, yeni derlenen blink-led programını Raspberry Pi Pico’ya yükleme zamanı geldi. Blink-led programını derlediğimizde, ~/raspberry-pi-pico/pico_workspace/blink-led/build klasörüne bir UF2 ikili dosyası oluşturulur. Raspberry Pi Pico’yu bağladıktan sonra, blink-led.uf2 dosyasını bağlanan RPI-RP2 sürücüsüne kopyalamamız gerekiyor. Ardından Raspberry Pi Pico otomatik olarak yeniden başlatılacak ve yerleşik LED’in yanıp sönmeye başlaması beklenir.

3 Adımda Raspberry Pi Pico Kurulum Hazırlığı Raspberry Pi Pico Kurulum Hazırlığı

Raspberry Pi Pico’yu C/C++ SDK kullanarak programlamaya ilişkin bilgiler bu kadar. Tüm bu adımlar, aşağıda ekli videoda da ayrıntılı olarak anlatılmıştır. Projeyle ilgili herhangi bir sorunuz varsa, forumumuzu kullanarak bu konu hakkında bir tartışma başlatabilirsiniz.

/**
 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
 *
 * SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    while (true) {
        gpio_put(LED_PIN, 1);
        sleep_ms(250);
        gpio_put(LED_PIN, 0);
        sleep_ms(250);
    }
#endif
}

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.