RP2040

شروع کار با RP2040

خلاصه نوشته
  • RP2040 اولین میکروکنترلر از بنیاد Raspberry Pi است. بنابر ادعای بنیاد رزبری این میکروکنترولر ویژگیهایی مانند عملکرد بالا، هزینه کم و سهولت استفاده را از محصولات قبلی به فضای میکروکنترلر آورده است.

حافظه بزرگ روی تراشه، پردازنده دو هسته ای متقارن، باس پیشرفته، و مجموعه تجهیزات جانبی کاربردی که با زیرسیستم منحصر به فرد I/O قابل برنامه ریزی (PIO) که به پردازنده افزوده شده است، قدرت و انعطاف پذیری بی نظیری را در اختیار کاربران حرفه ای قرار می دهد.

RP2040 یک کنترلر بدون حالت است که از اجرای کش در محل روی حافظه خارجی QSPI پشتیبانی می کند. این ویژگی طراحی به شما این امکان را می دهد که چگالی مناسب ذخیره سازی غیر فرار را برای برنامه خود داشته باشید وحافظه های فلش اکسترنال برای ذخیره و اجرای کد خود بهره مند شوید.

RP2040 به لطف استفاده از تکنولوژی 40 نانومتری مدرن عملکرد بالا، مصرف انرژی دینامیکی کم و نشتی کم را ارائه می‌کند، و انواع حالت‌های کم مصرف برای پشتیبانی از عملکرد طولانی مدت در هنگام استفاده از باتری را فراهم میکند.

ویژگیها

  • Dual ARM Cortex-M0+ @ 133MHz
  • 264kB on-chip SRAM in six independent banks
  • Support for up to 16MB of off-chip Flash memory via dedicated QSPI bus
  • DMA controller
  • Fully-connected AHB crossbar
  • Interpolator and integer divider peripherals
  • On-chip programmable LDO to generate core voltage
  • 2 on-chip PLLs to generate USB and core clocks
  • 30 GPIO pins, 4 of which can be used as analogue inputs
  • Peripherals
    • 2 UARTs
    • 2 SPI controllers
    • 2 I2C controllers
    • 16 PWM channels
    • USB 1.1 controller and PHY, with host and device support
    • 8 PIO state machines

و ویژگیهای کاربردی دیگر مانند رمزنگاری سخت افزاری،امضای دیجیتال و قابلیت اجرای برنامه در حالت امن.

همچنین پشتیبانی از زبانهای برنامه نویسی ++C/C همچنین Rust,microPython و CircuitPython  از دیگر ویژگیهای این میکروکنترلر محبوب میباشد.

در مجموعه آموزش های دوره RP2040 بنا داریم تا شمارا با نحوه برنامه نویسی و راه اندازی واحدهای جانبی RP2040 آشنا نماییم.

زبان برنامه نویسی ما در این دوره مبتنی بر زبان برنامه نویسی ++C/C خواهد بود و از VsCode  به عنوان IDE و محیط توسعه خود استفاده خواهیم کرد.

تنظیمات تولچین در ویندوز در VsCode

Raspberry Pi یک راهنمای شروع فوق العاده برای پردازنده Pico دارد که مراحل نصب تولچین را سیستم عامل های اصلی را پوشش می دهد. در لینوکس (به طور خاص، بیشتر انواع دبیان)، می توانید یک اسکریپت را اجرا کنید که همه چیز را برای شما نصب می کند. در macOS، نیز باید از Homebrew برای نصب تولچین موردنیاز استفاده کنید، که این کار تنها با چند دستور در ترمینال قابل انجام است.

ویندوز اما داستان متفاوتی دارد. نصب تولچین یک فرآیند دشوار است که به برنامه های متعدد و تغییر دستی مسیر ویندوز نیاز دارد. راهنمای شروع Raspberry Pi Pico به شما نشان می دهد که چگونه این کار را انجام دهید، اما من با دو قسمت مشکل دارم: شما باید Build Tools را برای Visual Studio (حدود 6 گیگابایت) نصب کنید و هر بار باید VS Code را از داخل خط فرمان CMD اجرا کنید. که خب روش مطلوبی نیست.

بنابراین من در قسمت اول آموزش قصد دارم شما را از طریق راه دیگری برای نصب تولچین  C/C++ برای Pico، با استفاده از MinGW به جای Build Tools برای ویژوال استودیو اشنا کنم.

ساخت دایرکتوریهای مورد نیاز :

در ابتدای کار به استثنای CMake و Python، ما می خواهیم همه ابزارها و فایل های SDK ما در یک پوشه در ویندوز وجود داشته باشند. این روش کار پیکربندی مسیرها و یافتن ابزارها را در آینده آسان می‌کند.

یک پوشه به نام VSARM در ریشه درایو C خود ایجاد کنید.

  • 
    C:\VSARM\armcc
    C:\VSARM\lib
    C:\VSARM\mingw
    C:\VSARM\sdk
    
    

 

توجه داشته باشید که این ساختار دایرکتوری شبیه روشی است که می توانید سایر ابزارهای کامپایلر Arm و SDK ها را راه اندازی کنید (مانند نصب تولچین STM32). شما باید تمام ابزارهای توسعه Arm خود را در دایرکتوری VSARM نگه دارید و آنها را با ابزارها و SDKهای دیگر به اشتراک بگذارید.

حتما این نکته رو در نظر داشته باشید که باید از نام‌های پوشه کوتاه و تک کلمه‌ای برای کوتاه نگه داشتن مسیرها و اجتناب از فاصله استفاده ‌کنیم. برخی از ابزارهای یونیکس/لینوکس (که به ویندوز پورت شده اند) با مسیرهایی که دارای فاصله هستند به خوبی کار نمی کنند.

نصب GNU Arm Embedded Toolchain :

زنجیره ابزار گنو Arm Embedded  میباشد که شامل کامپایلر Arm GCC است و با استفاده از آن کدهای C و ++C را برای RP2040 کامپایل می کنیم.

به صفحه دانلود GNU Arm Embedded Toolchain بروید و آخرین نصب کننده ویندوز را دانلود کنید.

در این آموزش من از نسخه Arm GNU Embedded Toolchain 11.2-2022.02 استفاده کردم که بدون مشکل عمل میکند.

نصب کننده را اجرا کنید. در صورت درخواست، محل نصب را به C:\VSARM\armcc تغییر دهید. به طور خودکار پوشه مقصد  با نام نسخه فعلی زنجیره ابزار نام گذاری میشود.

نوشته های مشابه

کامپایلر رزبری پیکو

مراحل نصب را ادامه دهید. پس از تکمیل، گزینه  Add path to environment variable محیط را انتخاب کنید.

شروع کار با RP2040

در این مرحله، باید بتوانید هر یک از ابزارهای کامپایلر Arm را در یک خط فرمان جدید، مانند arm-none-eabi-gcc.exe فراخوانی کنید.

نصب MinGW-w64 GCC Tools :

MinGW (مخفف عبارت Minimalist GNU for Windows) مجموعه‌ای از ابزارهای منبع باز، مانند کامپایلرها و لینک‌کننده‌ها است که به ما اجازه می‌دهد تا برنامه‌های کاربردی برای ویندوز بسازیم.

هنگامی که پروژه های Pico را می سازیم، باید ابزارهای elf2uf2 و pioasm را از سورس کامپایل کنیم. این ابزارها بر روی رایانه ما (نه میکروکنترلر هدف RP2040) اجرا می شوند و ما به یک کامپایلر و پیوند دهنده محلی نیاز داریم. راهنمای اصلی شروع به کار ارائه شده توسط رزبری پای به ما می‌گوید ابزارهای Build را برای ویژوال استودیو نصب کنیم تا یک کامپایلر ویندوز (cl.exe)، پیوند دهنده (link.exe) و ابزار ساخت (nmake.exe) را دریافت کنیم. ولی ما در این آموزش به جای آن از مجموعه گنو منبع باز (به عنوان مثال gcc, ld, make) برای ویندوز استفاده می کنیم.

به صفحه فایل‌های MinGW-W64 در SourceForge بروید: https://sourceforge.net/projects/mingw-w64/files/.

فایل فشرده i686-posix-sjlj را برای نسخه MinGW-W64 GCC مورد نظر خود (به عنوان مثال 8.1.0) دانلود کنید.

از 7-Zip برای اکسترکت کردن فایل دانلودی در پوشه C:\VSARM\mingw استفاده کنید. تیک دایرکتوری unzip نامگذاری شده را بردارید تا وقتی همه چیز از حالت فشرده خارج شد، C:\VSARM\mingwmingw32 را داشته باشید.

وقتی کار تمام شد، Command Prompt ویندوز را باز کنید و دستور زیر را در ترمینال وارد کنید

echo mingw32-make %* C:\VSARM\mingw\mingw64\bin\make.bat

این دستور یک فایل wrapper batch ایجاد می کند که هر زمان شما دستور make را در ترمینال ویندوز تایپ کنید، ابزار mingw32-make را فراخوانی می کند. درادامه ما مسیر ویندوز را برای یافتن همه ابزارهای موجود در mingw32bin (به همراه این فایل bat.) به روز خواهیم کرد.

نصب CMake:

CMake ابزاری است که به شما کمک می کند فرآیند ساخت برنامه ها را خودکار کنید. ابزار CMake  برنامه را نمی سازد/کامپایل نمی کند (مانند کاری که Make انجام می دهد)، بلکه می تواند ساختارهای دایرکتوری و فایل های مورد نیاز برای هر سیستم ساخت (Make، Qt Creator، Ninja و غیره) تولید کند. Raspberry Pi Pico SDK برای ایجاد این فایل‌های ساخت به CMake متکی است.

برای این آموزش من از نسخه 3.29.3 استفاده کرده ام که شما میتوانید فایل نصبی آن را (cmake-3.29.3-windows-x86_64) از لینک زیر دانلود نمایید.

دانلود Cmake

فایل نصب کننده را اجرا کنید و مجوز کاربر را بپذیرید.

در بخش تنظیمات نصب ، Add CMake to the system PATH for all users را انتخاب کنید.

مراحل نصب را ادامه دهید و تمام پیش فرض ها را بپذیرید. توجه داشته باشید که با این کار CMake در C:Program FilesCMake نصب می‌شود، که اتفاق خوبی است، زیرا به عنوان ابزاری در سراسر سیستم (نه فقط برای پروژه‌های VSARM) می توان از آن استفاده کرد.

cmake

نصب Python:

Pico SDK برای اسکریپت نویسی و خودکارسازی برخی از توابع ساخت پروژه به پایتون متکی است.

در هنگام نوشتن این آموزش من از پایتون ورژن 3.11.4 استفاده میکردم که مشکل خاصی وجود نداشت.

به وبسایت پایتون و بخش دانلودها رفته و نسخه پایتون 3.11.4 را دانلود و نصب نمایید.

در هنگام نصب مطمئن شوید که تیک گزینه Install launcher for all users و تیک گزینه Add Python 3.11 to PATH خورده باشد.

نصب پایتون

روی Install Now کلیک کنید و منتظر بمانید تا پایتون نصب شود.

در پایان مراحل نصب، گزینه غیرفعال کردن محدودیت طول MAX_PATH را انتخاب کنید.

مهم! اگر از شما خواسته نشد که محدودیت طول MAX_PATH را غیرفعال کنید، باید مطمئن شوید که مسیرهای طولانی فعال هستند. Pico SDK (و بسیاری از SDK های دیگر) اغلب دارای پوشه های طولانی و تو در تو هستند که منجر به نام مسیرهایی می شود که از محدودیت اصلی ویندوز (260 کاراکتر) فراتر می روند.

برای فعال کردن مسیرهای طولانی، regedit را در نوار جستجوی ویندوز جستجو کنید و برنامه ویرایشگر رجیستری را اجرا کنید. به

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

بروید و یک ورودی (اگر قبلاً وجود ندارد) برای LongPathsEnabled اضافه کنید. مقدار Value data  را به 1 و Base را به هگزادسیمال تغییر دهید.

نصب Git:

Git  کار دانلود Pico SDK را بسیار آسان‌تر می‌کند و نسخه ویندوز آن با Git Bash عرضه می‌شود که شل بسیار مفیدی است. می‌توانیم شل VS Code را نیز به Git Bash تغییر دهیم تا خط فرمان آن درست مانند لینوکس کار کند.

به صفحه دانلود Git SCM بروید و آخرین نصب کننده ویندوز (Download for Windows) را دانلود کنید.

نصب کننده را اجرا کنید. وقتی به صفحه رسیدید که از شما می‌خواهد یک ویرایشگر پیش‌فرض را انتخاب کنید،ویرایشگر موردنظر خودرا انتخاب نمایید.

نصب Git

مراحل نصب را ادامه دهید و تمام پیش فرض ها را بپذیرید.

دانلود Pico SDK و مثالها:

Pico SDK شامل مجموعه‌ای از ابزارها و کتابخانه‌هایی است که برای آسان‌تر کردن توسعه کد روی میکروکنترلر Pico (و RP2040) استفاده می‌شوند. همچنین می‌توانیم مجموعه‌ای از مثالهای نوشته شده با  C++/C را همراه آن دانلود کنیم که دید مفیدی از نحوه استفاده از SDK به کاربران میدهد.

ابتدا، یک پوشه جدید به نام pico در C:\VSARM\sdk ایجاد کنید.

در حالی که  شما می‌توانید نسخه‌های زیپ SDK و مخازن مثالها را به صورت دستی دانلود کنید، استفاده از git بسیار ساده‌تر است.به این خاطر که ماژول‌های فرعی تو در تو وجود دارند که باید آنها را از مخازن دیگر دانلود کنید و ممکن است سخت و زمانبر باشد، اما با چند دستور ساده در Git Bash میتوان این کار را به سادگی انجام داد.

Git Bash را باز کنید و دستورات زیر را وارد کنید.


cd /c/VSARM/sdk/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 bash

در انتهای این مرحله، شما تمام ابزارهای ساخت، SDK و مثالهای لازم را برای شروع کدنویسی Raspberry Pico و RP2040 نصب کرده اید. بروز رسانی متغیرهای محلی: برخی از ابزارهایی که نصب کردیم به طور خودکار متغیرهای environment variables  (مخصوصاً Path) را به روز می کنند. با این حال، تعداد کمی (مانند MinGW و SDK) این کار را به صورت خودکار انجام نمیدهند. ما باید متغیرهای محیطی را به روز کنیم تا شل و ابزارهای مختلف build بدانند در کجای فایل سیستم ما چیزهای مورد نیاز خود را پیدا کنند. در نوار جستجوی ویندوز، env را وارد کنید. بر روی Edit the system environment variables کلیک کنید. در پنجره بازشده بر روی Environment Variables کلیک کنید. در قسمت User variables ابتدا path را انتخاب کرده و روی Edit کلیک کنید. C:\VSARM\mingw\mingw32\bin را به عنوان ورودی جدید اضافه کنید. این متغیر محلی به ما امکان می دهد از ابزارهایی مانند gcc و ld برای ساخت برنامه های C و ++C در ویندوز استفاده کنیم. مطمئن شوید که ورودی های زیر را در لیست مشاهده می کنید:

C:\VSARM\armcc\<release version>\bin

C:\VSARM\mingw\mingw64\bin

اگر تصمیم به نصب پایتون برای کاربر فعلی گرفته باشید (همان کاری که من انجام دادم) ممکن است یک ورودی برای Python3 نیز مشاهده کنید. برای خروج از این پنجره  روی OK کلیک کنید. در قسمت User variables ، روی New… کلیک کنید و ورودی زیر را اضافه کنید: (البته در قسمت system  هم میتوان وارد کرد).

user env

 

Variable name: PICO_SDK_PATH

Variable value: C:\VSARM\sdk\pico\pico-sdk

روی OK کلیک کنید تا متغیرهاذخیره شود. در این مرحله، متغیرهای کاربر شما باید یک مسیر به روز شده و همچنین متغیرهای PICO_SDK_PATH را نیز داشته باشند.

در قسمت System variables،  مثل حالت قبل path را انتخاب کرده و روی Edit کلیک کنید. بررسی کنید , و از وجود ورودی های زیر مطمئن شوید (اگر وجود نداشتند آنها را اضافه کنید):

C:\Program Files\CMake\bin

C:\Program Files\Git\cmd

این ورودی‌ها هنگامیکه نصب کننده مرتبط آنها را اجرا میکنید  به‌طور خودکار به Path در سراسر سیستم شما اضافه می‌شوند.

همچنین اگر پایتون را برای همه کاربران (All User) نصب کردید، ممکن است یک ورودی برای Python310 (یا Python311) مشاهده کنید. روی OK در هر 3 پنجره باز کلیک کنید تا بسته شوند و تغییرات ذخیره شوند. در این مرحله، باید بتوانید با باز کردن یک خط فرمان و وارد کردن دستوراتی مانند

gcc،

make

و

echo %PICO_SDK_PATH%

از تنظیم متغیرهای محیطی به درستی مطمئن شوید.

نصب VsCode :

ویژوال استودیو کد (VS Code) یک ویرایشگر متن عالی و چند پلتفرمی است که پلاگین های بسیار کاربردی و با قابلیت تنظیم را ارائه می دهد. با افزونه های مناسب، می توانید VS Code را به یک محیط توسعه یکپارچه کامل (IDE) با اشکال زدایی مرحله به مرحله تبدیل کنید! من فعلاً در این قسمت اصول اولیه را آموزش میدهم تا بتوانید VsCode خود را در ویندوز نصب نمایید و کدهای توسعه رزبری پای پیکو را در آن بنویسید.در قسمتهای بعدی آموزش به ذکر جزییات بیشتری خواهیم پرداخت.

به این لینک VsCode بروید و آخرین نسخه را برای ویندوز دانلود کنید.

فایل نصب کننده را اجرا کنید و تمام پیش فرض ها را بپذیرید. می توانید یک میانبر دسکتاپ ایجاد کنید و “Open with Code” را به منوی Windows Explorer اضافه کنید. برای راحتی کار در آینده بهتره این گزینه ها را فعال کنید، اما ضروری نیستند. پس از اتمام نصب، زمان آن رسیده که با نوشتن یک کد ساده همه چیز را تست کنیم.

نصب vscode

پروژه چشمک زن ساده :

VsCode را باز کنید. روی Terminal>New Terminal کلیک کنید. ترمینال پیش فرضی که باز می شود احتمالا Windows PowerShell است. توصیه می کنم با کلیک بر روی منوی کشویی و انتخاب New Git Bash، آن را به Git Bash تغییر دهید. توصیه بعدی ساخت یک نام مستعار برای mingw32-make.exe در Git Bash میباشد. دستورات زیر را در ترمینال وارد کنید (فقط یک بار باید این کار را انجام دهید):


echo "alias make=mingw32-make.exe" ~/.bashrc
source ~/.bashrc

مثال چشمک زدن را با وارد کردن دستورات زیر در ترمینال خود بسازید:


cd /c/VSARM/sdk/pico/pico-examples/
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
cd build
make

مهم! هر زمان که CMake را از ترمینال مانند این تصویر فراخوانی می کنید، باید «MinGW Makefiles» را به عنوان build system generator (سویچ -G) مشخص کنید.

چشمک زن با رزبری پیکو

بعد از اجرای دستورات بالا مثال چشمک زن شما build شده است و فایلهای elf.,hex.,uf2. آماده انتقال به روی حافظه RP2040 میباشد.

ما به راحتی میتوانیم فایل uf2 را بدون نیاز به هیچ ابزار خاصی برروی رزبری پیکو اپلود نماییم.

برد Pico را در حالت بوت لودر قرار دهید (دکمه BOOTSEL را فشار داده و نگه دارید و کابل USB را به Pico وصل کنید).

در فایل اکسپلورر ویندوز نگاه کنید که درایو RPI-RP2 روی کدام حرف درایو نصب شده است (مثلاً G:). دستور زیر را در Git Bash وارد کنید (در صورت لزوم حرف درایو را تغییر دهید):


cp blink.uf2 /g/

اکنون باید برد رزبری پیکو شما شروع به چشمک زدن نماید.

اگر در هنگام ساخت پروژه با خطایی مرتبط با فایل CMakeLists.txt شدید محتوای فایل cmake را با کد زیر جایگزین نمایید.


# 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 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()

# Tell CMake where to find the executable source file
add_executable(${PROJECT_NAME}
blink.c
)

# Create map/bin/hex/uf2 files
pico_add_extra_outputs(${PROJECT_NAME})

# Link to pico_stdlib (gpio, time, etc. functions)
target_link_libraries(${PROJECT_NAME}
pico_stdlib
)

# Enable usb output, disable uart output
pico_enable_stdio_usb(${PROJECT_NAME} 1)
pico_enable_stdio_uart(${PROJECT_NAME} 0)

خب تا اینجای کار اولین قدم در استفاده از  Raspberry Pi Pico SDK را باهم برداشتیم. استفاده از MinGW راه راحت تری به نسبت ابزار های بیلد برای ویژوال استودیو میباشد.

در بخشهای بعدی آموزش نکات بیشتری از ابزارهای توسعه کد، در حین آموزش بخشهای مختلف RP2040 بیان خواهیم کرد با ما همراه باشید.

دیدگاهتان را بنویسید

دکمه بازگشت به بالا