برنامه نویسی رزبری پای پیکو با C/C++ SDK
![](/wp-content/uploads/2022/02/برنامه-نویسی-رزبری-پای-پیکو-با-C-SDK.jpg)
محتویات
در سال 2012، بنیاد Raspberry Pi یک کامپیوتر تک بردی را به ما معرفی کرد. Raspberry Pi که عمدتاً برای آموزش مبانی علوم کامپیوتر به بچه ها استفاده میشد و 9 سال بعد یک برد میکروکنترلر به نام رزبری پای پیکو معرفی کرد. Raspberry Pi Pico با تراشه سیلیکونی RP2040 عرضه می شود. پیکو یک میکروکنترلر ارزان است که 4 دلار قیمت دارد. از آنجایی که دارای پردازنده ARM دو هستهای به همراه GPIO و لوازم جانبی دیجیتال/آنالوگ است، میتوانیم به راحت پروژه های امبدد را با آن راه اندازی کنیم.
راه اندازی C/C++ SDK برای پیکو
برای توسعه برنامه ها به یک محیط توسعه نرم افزار C/C++ نیاز داریم. برای راه اندازی C/C++ SDK، من از Ubuntu 20.04 LTS استفاده می کنم.
موسسه رزبری پای یک اسکریپت راهاندازی برای Linux و سیستم عامل رزبری پای ارائه میکند که بهطور خودکار پیشنیازهایی را برای C/C++ SDK و Visual Studio Code ایجاد و نصب میکند. برای دانلود اسکریپت راه اندازی C/C++ SDK، باید دستورات زیر را فراخوانی کنیم.
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
توجه: من بخش دانلود VSCode IDE را مسدود کردم و بسته به سیستم عاملم IDE را جداگانه دانلود و نصب کردم.
درست مانند اسکریپت راه اندازی، می توانیم پیش نیازها، SDK و IDE را نیز یکی یکی با استفاده از دستورات ذکر شده در زیر نصب کنیم.
پیش نیازها را نصب کنید
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
مخزن SDK Pico C/C++ را دانلود کنید و مسیرهای محیطی SDK را بهروزرسانی کنید
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
پس از دانلود SDK، زمان آن رسیده است که متغیر Environment را برای مسیر هر مخزن با PICO_SDK_PATH
, PICO_EXAMPLES_PATH
, PICO_EXTRAS_PATH
, PICO_PLAYGROUND_PATH
در bashrc. برای استفاده در آینده به روز کنید. همچنین، کاربران می توانند زمانی که روی Raspberry Pico کار می کنند، متغیر Environment را به روز کنند.
export PICO_SDK_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-sdk export PICO_EXAMPLES_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-examples export PICO_EXTRAS_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-extras export PICO_PLAYGROUND_PATH=/home/<user-name>/raspberry-pi-pico/pico/pico-playground
دانلود و نصب Picotool و Picoprobe
برای بازیابی اطلاعات جاسازی شده از باینری های Raspberry Pi Pico باید Picotool را دانلود و نصب کنیم.
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/
پس از نصب Picotool، نوبت به دانلود و نصب Picobrobe می رسد. با کمک Picoprobe، میتوانیم از Raspberry Pi Pico به عنوان یک دستگاه برنامهنویس/debugger برای Raspberry Pi Pico استفاده کنیم.
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
دانلود و راه اندازی کامپایلر OpenOCD (برای اشکال زدایی)
اکنون زمان دانلود و راه اندازی OpenOCD برای دیباگ کردن Raspberry Pico است.
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
Visual Studio Code IDE را دانلود و نصب کنید
پس از دانلود و راه اندازی تمامی نرم افزارهای SDK و دیباگر، اکنون قصد داریم تا برای توسعه آسان و سریع، IDE Visual Studio Code را نصب کنیم. قبلاً اشاره کردم که از اوبونتو 20.04LTS – 64 بیتی استفاده می کنم، بنابراین، فایل code_1.xx.xx_amd64.deb را از وب سایت رسمی ویژوال استودیو دانلود کردم و VSCode IDE را نصب کردم.
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
کامپایل اولین پروژه به زبان سی [Led چشمک زن]
اکنون که همه چیز آماده است، بیایید اولین پروژه خود را کامپایل کنیم، یعنی چشمک زدن ال ای دی با Raspberry Pi Pico با استفاده از زبان C.
حالا یک “pico_workspace” در داخل پوشه ~/raspberry-pi-pico/ ایجاد کنید و کد VisualStudio را باز کنید. سپس روی «Explorer» در سمت چپ بالا کلیک کنید یا Ctrl+Shift+E را فشار دهید و سپس روی «Open Folder» در زیر تب Explorer کلیک کنید. در پنجره Open Folder به ~/raspberry-pi-pico/pico_workspace بروید و یک پوشه با نام blink-led ایجاد کنید و روی دکمه OK کلیک کنید.
پس از ایجاد و وارد کردن پوشه پروژه blink-led، اکنون با انتخاب گزینه “File->New File or Ctrl+N” از نوار منو یک فایل ایجاد کنید و سپس Ctrl+S را فشار دهید تا به عنوان “main.c” ذخیره شود. پس از ذخیره فایل، کد چشمک زن led را در “main.c” بنویسید.
/** * 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 }
C/C++ SDK Raspberry Pi Pico با ابزار اتوماسیون ساخت CMake همراه است. بنابراین، پس از ایجاد فایل .C برای پروژه، باید “CMakeLists.txt” را ایجاد کنیم. CMakeLists.txt حاوی دستورالعملهای مجموعهای است که فایلها و اهداف منابع پروژه را توصیف میکند.
# 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 )
اکنون، کد ویژوال استودیو را برای تنظیم خودکار برنامه افزودنی Cmake برای پروژه چشمک زن مجدداً راه اندازی کنید. پس از راه اندازی مجدد، می توانید گزارش ساخت CMake را در پنجره خروجی در پایین مشاهده کنید.
[cmake] -- Configuring done [cmake] -- Generating done [cmake] -- Build files have been written to: /home/<user-name>/raspberry-pi-pico/pico_workspace/blink-led/build
و سپس روی نماد Build در پایین نوار وضعیت کلیک کنید تا پروژه blink-led ساخته شود و فایل uf2. خروجی فرآیند ساخت در پنجره Output Log نشان داده می شود. پس از ساخت موفق، وضعیت ساخت نیز در پنجره خروجی نشان داده می شود.
[build] [100%] Linking CXX executable blink-led.elf [build] [100%] Built target blink-led [build] Build finished with exit code 0
توجه: مطمئن شوید که “GCC x.x.x arm-none-eabi” را انتخاب کرده اید. اگر درست نیست، بر روی آیکون Wrench+ScrewDriver در نوار وضعیت پایین کلیک کنید و زنجیره ابزار درست را مانند تصویر از لیست انتخاب کنید.
آپلود کد در رزبری پای پیکو به زبان C
اکنون، پس از تنظیم همه چیز برای برنامه نویسی Pi Pico، نوبت به آپلود کد رسیده است. همانطور که می دانیم، برای برنامه ریزی Raspberry Pico به هیچ پروگرامری نیاز نداریم. باید USB را به pico وصل کنیم در حالی که دکمه BOOTSEL روی برد فشار داده شده و نگه داشته شده تا Pico به سیستم وصل شود و سپس دکمه BOOTSEL را رها کنید.
اکنون، زمان آپلود کد چشمک زدن LED با رزبری پای Pico است. هنگامی که ما پروژه Blink-led را می سازیم، یک فایل باینری UF2 در پوشه ~/raspberry-pi-pico/pico_workspace/blink-led/build ایجاد می شود. پس از نصب Raspberry Pi Pico، باید blink-led.uf2 را در درایو RPI-RP2 نصب شده کپی کنیم و Raspberry Pi Pico به طور خودکار خود را مجددا راه اندازی می کند و باید چشمک زدن led روی برد را مشاهده کنید.
این مراحل برای برنامه نویسی Raspberry Pi Pico با استفاده از C/C++ SDK است.