Быстрый старт Raspberry Pi Pico на Linux |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||
Скачайте документ с описанием быстрого старта [1]. Далее будут инструкции, которые описаны в разделе "Manually Configure your Environment" этого документа. [Скачайте SDK и примеры] 1. Репозиторий Pico Examples предоставляет несколько примеров приложений, написанных с помощью SDK. Для клонирования этих репозиториев создайте директорию pico в любом месте на диске, где вы намереваетесь хранить свои файлы, связанные с Raspberry Pi Pico. Описанные ниже команды предполагают, что вы создали подкаталог с именем pico в вашей домашней директории: $ mkdir ~/pico 2. Выполните клонирование git-репозиториев pico-sdk и pico-examples в созданную папку pico: $ cd ~/pico $ git clone https://github.com/raspberrypi/pico-sdk.git --branch master $ cd pico-sdk $ git submodule update --init $ cd .. $ git clone https://github.com/raspberrypi/pico-examples.git --branch master [Установите тулчейн] 3. Чтобы выполнить сборки приложений в каталоге pico-examples, вам нужно установить некоторые дополнительные инструменты. Чтобы собрать проекты, вам нужен CMake, кроссплатформенная среда для сборки кода, а также ARM GNU Toolchain. Запустите следующую команду для установки этих зависимостей: $ sudo apt update $ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential Пользователям Ubuntu и Debian может дополнительно понадобиться выполнить установку (на моей установленной Ubuntu 24.04 это не понадобилось): $ apt install g++ libstdc++-arm-none-eabi-newlib [Сборка программы Blink] 4. Из созданной ранее директории pico перейдите в её подкаталог pico-examples и создайте в нем директорию build: $ cd pico-examples $ mkdir build $ cd build 5. Установите переменную окружения PICO_SDK_PATH, предполагая, что вы клонировали pico-sdk и pico-examples в одну и ту же директорию: $ export PICO_SDK_PATH=pico-sdk Примечание: в этом руководстве мы используем относительный путь pico-sdk в директорию репозитория SDK для переменной окружения PICO_SDK_PATH. По какой-нибудь причине у вас может быть другая структура каталогов. Поэтому в зависимости от места расположения вашего репозитория вы можете заменить этот путь на другой, в том числе и абсолютный. 6. Выполните команду для подготовки к сборке: $ cmake .. Using PICO_SDK_PATH from environment ('pico-sdk') PICO_SDK_PATH is ~/pico/pico-sdk Defaulting platform (PICO_PLATFORM) to 'rp2040' since not specified. ... $ cmake .. Using PICO_SDK_PATH from environment ('pico-sdk') PICO_SDK_PATH is ~/pico/pico-sdk Defaulting platform (PICO_PLATFORM) to 'rp2040' since not specified. Defaulting target board (PICO_BOARD) to 'pico' since not specified. Using board configuration from ~/pico/pico-sdk/src/boards/include/boards/pico.h Pico Platform (PICO_PLATFORM) is 'rp2040'. -- Defaulting build type to 'Release' since not specified. Defaulting compiler (PICO_COMPILER) to 'pico_arm_cortex_m0plus_gcc' since not specified. Configuring toolchain based on PICO_COMPILER 'pico_arm_cortex_m0plus_gcc' Defaulting PICO_GCC_TRIPLE to 'arm-none-eabi' -- The C compiler identification is GNU 13.2.1 -- The CXX compiler identification is GNU 13.2.1 -- The ASM compiler identification is GNU -- Found assembler: /usr/bin/arm-none-eabi-gcc -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/arm-none-eabi-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/arm-none-eabi-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done Build type is Release -- Found Python3: ~/.pyenv/shims/python3 (found version "3.13.0") found components: Interpreter TinyUSB available at ~/pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB. BTstack available at ~/pico/pico-sdk/lib/btstack cyw43-driver available at ~/pico/pico-sdk/lib/cyw43-driver lwIP available at ~/pico/pico-sdk/lib/lwip mbedtls available at ~/pico/pico-sdk/lib/mbedtls CMake Warning at ~/pico/pico-sdk/tools/Findpicotool.cmake:30 (message): No installed picotool with version 2.1.1 found - building from source Важное замечание: SDK по умолчанию собирает бинарники для Raspberry Pi Pico. Чтобы выполнить сборку для другой платы, передайте опцию -DPICO_BOARD=board для CMake, заменив board на имя платы, которую вы хотите использовать. Для сборки бинарного кода для Pico 2 передайте -DPICO_BOARD=pico2. Для сборки бинарника для Pico W передайте -DPICO_BOARD=pico_w. Также вы можете указать сеть Wi-Fi и пароль для неё, что понадобится для примеров Pico W, путем передачи опций -DWIFI_SSID="ваша_сеть"-DWIFI_PASSWORD="ваш_пароль". 7. Теперь вы можете выполнить сборку всех примеров приложений. Ниже будут показаны команды для сборки проекта blink (его код находится в файле pico-examples/blink/blink.c). Чтобы выполнить сборку для определенного подкаталога примеров, перейдите в соответствующий подкаталог перед запуском make. Для нашего случая мы будем выполнять сборку только blink, поэтому сначала перейдем в каталог blink, а затем запустим make. $ cd blink $ make -j4 Примечание: в этом примере для команды make используется опция -j4, что ускорит сборку путем выполнения четырех заданий параллельно. Если вы выполняете сборку на хосте Raspberry Pi 5, то вполне можете использовать её 4 ядра. Результатом сборки будут следующие файлы в каталоге pico-examples/build/blink:
[Загрузка и запуск скомпилированного примера] 8. Для загрузки скомпилированной программы в плату с микроконтроллером Raspberry Pi подключите её через USB к компьютеру, смонтируйте его устройство как USB Mass Storage Device и скопируйте файл *.uf2 на эту флешку. Моя платка Raspberry Pi Pico 2020 на Ubintu смонтировалась в каталог /media/user/RPI-RP2. Нажмите и удерживайте кнопку BOOTSEL, когда подключаете вашу платку кабелем micro-USB, чтобы заставить загрузчик активировать USB Mass Storage Mode. Содержимое "флешки", которой представилась наша плата: $ ls -la /media/$USER/RPI-RP2/ total 28 drwxr-xr-x 2 user user 16384 янв 1 1970 . drwxr-x---+ 3 root root 4096 апр 11 10:56 .. -r--r--r-- 1 user user 241 сен 5 2008 INDEX.HTM -r--r--r-- 1 user user 62 сен 5 2008 INFO_UF2.TXT 9. Скопируйте файл *.uf2 на вашу платку: $ cp blink.uf2 /media/$USER/RPI-RP2 После выполнения этой команды устройство немедленно запустит программу, и зеленый светодиод на плате начнет мигать. Примечание: вы можете использовать утилиту picotool для загрузки бинарника UF2 в свою платку Pico, см. "Appendix B" документа [1]. В зависимости от платформы, на которой вы выполняете компиляцию двоичного кода, вам может понадобиться вручную смонтировать USB-устройство флешки платки (mass storage device, USB MSD): $ dmesg | tail [ 371.973555] sd 0:0:0:0: [sda] Attached SCSI removable disk $ sudo mkdir -p /mnt/pico $ sudo mount /dev/sda1 /mnt/pico Если вы можете видеть файлы в каталоге /mnt/pico, то USB Mass Storage Device смонтировалось корректно: $ ls /mnt/pico/ INDEX.HTM INFO_UF2.TXT Копирование вашего файла blink.uf2 в устройство: $ sudo cp blink.uf2 /mnt/pico $ sudo sync Примечание: последняя команда sudo sync может не понадобиться. После этого микроконтроллер автоматически отключит USB Mass Storage Device и запустит ваш код, но для полной безопасности следует также вручную отмонтировать устройство флешки: $ sudo umount /mnt/pico Примечание: отключение питания (кабеля micro-USB) не удалит код вашей программы из памяти устройства. При восстановлении питания платы, если не удерживать при этом кнопку BOOTSEL, программа снова запустится, и светодиод начнет мигать. [Использование других плат] В некоторых случаях на плате может не быть кнопки BOOTSEL. Тогда понадобятся другие способы загрузки вашего кода, что должно быть описано в руководстве вашей платы: • На большинстве плат Pico есть интерфейс SWD (см. "Appendix A: Debugprobe" [1]) который сбросит плату и загрузит код без необходимости нажатия на кнопку. Во всех случаях лучше всего проконсультироваться с документацией производителя платы, где должен описываться самый лучший способ загрузки firmware в вашу плату. [Создание вручную вашего собственного проекта] 1. Создайте каталог проекта test рядом с каталогом pico-sdk: $ cd ~/pico $ ls -la total 16 drwxr-xr-x 7 user user 224 6 Apr 10:41 ./ drwx------@ 27 user user 864 6 Apr 10:41 drwxr-xr-x 10 user user 320 6 Apr 09:29 pico-examples/ drwxr-xr-x 13 user user 416 6 Apr 09:22 pico-sdk/ $ mkdir test $ cd test 2. Создайте в этом каталоге файл test.c: #include < stdio.h> Примечания: ① Установленный на плате LED подключен к GP25 на Pico и Pico 2. Если вы выполняете сборку для Pico W, то LED подключен к CYW43_WL_GPIO_LED_PIN. Для дополнительной информации см. пример Pico W blink в Github репозитории Pico Examples (файл picow_blink.c). Файл CMakeLists.txt: cmake_minimum_required(VERSION 3.13)include(pico_sdk_import.cmake)
project(test_project C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_executable(test
test.c
)
pico_enable_stdio_usb(test 1)①
pico_enable_stdio_uart(test 1)②
pico_add_extra_outputs(test)
target_link_libraries(test pico_stdlib)
① Разрешает вывод через USB. Затем скопируйте файл pico_sdk_import.cmake из папки external в вашу папку проекта test, находящуюся в инсталляции pico-sdk: $ cp pico-sdk/external/pico_sdk_import.cmake . Вы должны увидеть в папке проекта что-то подобное: $ ls -la total 24 drwxr-xr-x 5 user user 160 6 Apr 10:46 ./ drwxr-xr-x 7 user user 224 6 Apr 10:41 -rw-r--r--@ 1 user user 394 6 Apr 10:37 CMakeLists.txt -rw-r--r-- 1 user user 2744 6 Apr 10:40 pico_sdk_import.cmake -rw-r--r-- 1 user user 383 6 Apr 10:37 test.c Теперь вы можете выполнить сборку точно так же, как это делалось в проекте "Hello World". $ mkdir build $ cd build $ export PICO_SDK_PATH=pico-sdk $ cmake .. $ make По умолчанию SDK выполнит сборку бинарного кода для Raspberry Pi Pico. Чтобы выполнить сборку для другой платы, передайте CMake опцию -DPICO_BOARD=board, заменив board на имя платы, которую используете. Для Pico 2 передайте -DPICO_BOARD=pico2, для Pico W передайте -DPICO_BOARD=pico_w. Чтобы указать сеть Wi-Fi и пароль для неё, к которой должна подключаться Pico W, передайте -DWIFI_SSID="ваша_сеть" -DWIFI_PASSWORD="ваш_пароль". Процесс make сгенерирует несколько разных файлов. В следующей таблице перечислены некоторые из них, имеющие определенное назначение.
Замечания: • UF2 (USB Flashing Format) это разработанный Microsoft формат файла, используемый микроконтроллерами Raspberry Pi для прошивки с помощью загрузчика и USB. Для дополнительной информации см. репозиторий спецификации Microsoft UF2 [4]. [Ссылки] 1. Getting started with Raspberry Pi Pico-series. |