Полная настройка разработки для RP2040 в Zed

Инструкция для Linux Mint и macOS. В результате получится одинаковое на обеих системах окружение:

  • официальный Raspberry Pi Pico C/C++ SDK;
  • компилятор GNU Arm Embedded;
  • CMake и Ninja;
  • редактор Zed с clangd, автодополнением и диагностикой;
  • команды сборки прямо из Zed;
  • готовый тестовый проект для Raspberry Pi Pico/Pico W на RP2040;
  • создание файла .uf2 и прошивка платы.

Актуальность инструкции: 5 августа 2026 года. Команды рассчитаны на 64-битные Linux Mint и macOS на Intel либо Apple Silicon.

1. Что потребуется #

  • плата Raspberry Pi Pico, Pico W или совместимая плата на RP2040;
  • USB-кабель с передачей данных;
  • доступ в интернет;
  • около 2 ГБ свободного места;
  • для первой прошивки — доступ к кнопке BOOTSEL на плате.

Используем нативный Pico SDK. Это лучший базовый вариант для USB HID, PIO, многопоточности, отладки и полного доступа к RP2040. Arduino можно добавить позже как отдельный стек.


2. Linux Mint #

2.1. Устанавливаем системные инструменты #

sudo apt update
sudo apt install -y \
  git cmake ninja-build build-essential python3 \
  gcc-arm-none-eabi libnewlib-arm-none-eabi \
  libstdc++-arm-none-eabi-newlib clangd \
  libusb-1.0-0-dev pkg-config

Проверяем основные программы:

git --version
cmake --version
ninja --version
arm-none-eabi-gcc --version
clangd --version
python3 --version

2.2. Устанавливаем Zed #

Официальный способ установки:

curl -f https://zed.dev/install.sh | sh
zed --version

Zed для Linux требует 64-битную систему, достаточно современную glibc и видеодрайвер с Vulkan 1.3. Актуальные Linux Mint на базе Ubuntu обычно удовлетворяют этим требованиям.


3. macOS #

3.1. Устанавливаем Command Line Tools и Homebrew #

xcode-select --install

Если Homebrew ещё не установлен, юзаем команду с официального сайта brew.sh. После установки выполняем предложенную Homebrew команду добавления brew в PATH.

3.2. Устанавливаем инструменты для сборки #

brew update
brew install git cmake ninja arm-none-eabi-gcc llvm libusb pkg-config
brew install --cask zed

Homebrew устанавливает clangd вместе с LLVM. Добавляем LLVM в PATH:

echo 'export PATH="$(brew --prefix llvm)/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Чекаем окружение:

git --version
cmake --version
ninja --version
arm-none-eabi-gcc --version
clangd --version
python3 --version
zed --version

Если приложение Zed установлено, но команда zed отсутствует, в Zed юзаем Cmd+Shift+P и запускаем cli: install cli binary.


4. Установка Raspberry Pi Pico SDK #

Следующие команды одинаковы на Linux и macOS:

mkdir -p "$HOME/Developer/raspberry-pi"
cd "$HOME/Developer/raspberry-pi"
git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git
git clone --recurse-submodules https://github.com/raspberrypi/pico-examples.git

Ветка master официального репозитория Pico SDK содержит актуальный стабильный SDK. Подмодули обязательны!

Linux Mint: сохранение пути к SDK #

echo 'export PICO_SDK_PATH="$HOME/Developer/raspberry-pi/pico-sdk"' >> ~/.bashrc
source ~/.bashrc

macOS: сохранение пути к SDK #

echo 'export PICO_SDK_PATH="$HOME/Developer/raspberry-pi/pico-sdk"' >> ~/.zshrc
source ~/.zshrc

Проверка:

test -f "$PICO_SDK_PATH/pico_sdk_init.cmake" && echo "Pico SDK найден"

Zed запускает задачи через login shell, поэтому после перезапуска редактора он увидит PICO_SDK_PATH из конфигурации оболочки.


5. Проверка SDK сборкой официальных примеров #

cd "$HOME/Developer/raspberry-pi/pico-examples"
cmake -S . -B build -G Ninja -DPICO_BOARD=pico
cmake --build build --parallel

Для Pico W вместо pico используем:

cmake -S . -B build-picow -G Ninja -DPICO_BOARD=pico_w
cmake --build build-picow --parallel

После успешной сборки, например, должен существовать файл:

build/blink/blink.uf2

6. Создаём проект #

mkdir -p "$HOME/Developer/rp2040-starter/src"
mkdir -p "$HOME/Developer/rp2040-starter/.zed"
cd "$HOME/Developer/rp2040-starter"
cp "$PICO_SDK_PATH/external/pico_sdk_import.cmake" .

Получится структура:

rp2040-starter/
├── .zed/
│   ├── settings.json
│   └── tasks.json
├── src/
│   └── main.c
├── CMakeLists.txt
└── pico_sdk_import.cmake

src/main.c #

#include "pico/stdlib.h"

int main(void) {
    stdio_init_all();
    gpio_init(PICO_DEFAULT_LED_PIN);
    gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);

    while (true) {
        gpio_put(PICO_DEFAULT_LED_PIN, true);
        sleep_ms(500);
        gpio_put(PICO_DEFAULT_LED_PIN, false);
        sleep_ms(500);
    }
}

Этот пример рассчитан на обычный Raspberry Pi Pico. У Pico W встроенный светодиод подключён через Wi-Fi-чип; для первой проверки Pico W удобнее собрать официальный пример picow_blink либо использовать внешний светодиод.

CMakeLists.txt #

cmake_minimum_required(VERSION 3.13)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

include(pico_sdk_import.cmake)

project(rp2040_starter C CXX ASM)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

add_executable(rp2040_starter
    src/main.c
)

target_link_libraries(rp2040_starter
    pico_stdlib
)

pico_enable_stdio_usb(rp2040_starter 1)
pico_enable_stdio_uart(rp2040_starter 0)
pico_add_extra_outputs(rp2040_starter)

Строка CMAKE_EXPORT_COMPILE_COMMANDS создаёт базу команд компиляции. По ней clangd понимает заголовки SDK, макросы платы и параметры ARM-компилятора.


7. Настройка Zed #

Zed уже включает поддержку C и C++ и использует clangd. Дополнительное расширение C/C++ устанавливать не нужно.

.zed/settings.json #

{
  "languages": {
    "C": {
      "format_on_save": "on",
      "formatter": "language_server",
      "tab_size": 4
    },
    "C++": {
      "format_on_save": "on",
      "formatter": "language_server",
      "tab_size": 4
    }
  },
  "lsp": {
    "clangd": {
      "binary": {
        "arguments": [
          "--background-index",
          "--clang-tidy",
          "--completion-style=detailed"
        ]
      }
    }
  }
}

.zed/tasks.json #

[
  {
    "label": "RP2040: configure",
    "command": "cmake",
    "args": [
      "-S", ".",
      "-B", "build",
      "-G", "Ninja",
      "-DPICO_BOARD=pico",
      "-DCMAKE_BUILD_TYPE=Debug",
      "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
    ],
    "cwd": "$ZED_WORKTREE_ROOT",
    "reveal": "always"
  },
  {
    "label": "RP2040: build",
    "command": "cmake",
    "args": ["--build", "build", "--parallel"],
    "cwd": "$ZED_WORKTREE_ROOT",
    "reveal": "always"
  },
  {
    "label": "RP2040: clean",
    "command": "cmake",
    "args": ["--build", "build", "--target", "clean"],
    "cwd": "$ZED_WORKTREE_ROOT",
    "reveal": "always"
  }
]

Для Pico W в конфигурации:

"-DPICO_BOARD=pico_w"

Открываем проект:

cd "$HOME/Developer/rp2040-starter"
zed .

В Zed:

  1. Открываем палитру задач: Cmd+Shift+R на macOS или Ctrl+Shift+R на Linux.
  2. Запускаем RP2040: configure.
  3. Запускаем RP2040: build.
  4. Чекаем, что создан build/rp2040_starter.uf2.

После первой конфигурации рестартим language server через палитру команд либо просто перезапускаем Zed. clangd должен автоматически найти build/compile_commands.json.

Если clangd не видит заголовки SDK #

Проверяем:

test -f build/compile_commands.json && echo "compile_commands.json найден"

Если файл существует, но диагностика не обновилась, в корне проекта нужно создать символическую ссылку:

ln -s build/compile_commands.json compile_commands.json

На macOS убеждаемся, что выполняется Homebrew-версия:

which clangd
clangd --version

8. Первая прошивка через BOOTSEL #

Этот способ не требует отладчика или специальных правил USB.

  1. Отключаем Pico от компьютера.
  2. Зажмимаем кнопку BOOTSEL.
  3. Не отпуская кнопку, подключаем USB-кабель.
  4. Отпускаем BOOTSEL.
  5. Появится накопитель RPI-RP2.
  6. Копируем на него build/rp2040_starter.uf2.
  7. Плата автоматически перезагрузится и запустит программу.

На обычном Pico светодиод должен переключаться каждые 500 мс: полная вспышка длится одну секунду.

Если накопитель не появляется, чаще всего виноват USB-кабель, предназначенный только для зарядки (без шины данных).


9. Удобная прошивка через picotool — необязательно #

picotool позволяет смотреть сведения о прошивке и загружать её без ручного копирования файла. Готовые сборки для Linux и macOS публикуются официальным проектом pico-sdk-tools; также picotool можно собрать из исходников.

На macOS сначала пробуем:

brew install picotool
picotool version

Когда плата находится в режиме BOOTSEL, прошивку можно загрузить так:

picotool load -f -x build/rp2040_starter.uf2

Если команда или пакет недоступны, используем надёжный способ с копированием .uf2 на RPI-RP2.


10. Обновление окружения #

Pico SDK и примеры #

cd "$HOME/Developer/raspberry-pi/pico-sdk"
git pull --ff-only
git submodule update --init --recursive

cd "$HOME/Developer/raspberry-pi/pico-examples"
git pull --ff-only
git submodule update --init --recursive

После обновления SDK рекомендуется пересоздать каталог сборки проекта:

cd "$HOME/Developer/rp2040-starter"
cmake -S . -B build-fresh -G Ninja -DPICO_BOARD=pico -DCMAKE_BUILD_TYPE=Debug
cmake --build build-fresh --parallel

Если новая сборка успешна, старый каталог build можно удалить вручную и снова выполнить конфигурацию из Zed.

Linux Mint #

sudo apt update
sudo apt upgrade

Zed, установленный официальным скриптом, обновляется автоматически.

macOS #

brew update
brew upgrade
brew upgrade --cask zed

12. Итоговая проверка #

Окружение готово, если все пункты выполняются:

  • arm-none-eabi-gcc --version показывает ARM-компилятор;
  • cmake, ninja и clangd находятся в PATH;
  • переменная PICO_SDK_PATH указывает на каталог Pico SDK;
  • официальный pico-examples собирается без ошибок;
  • Zed показывает автодополнение для pico/stdlib.h;
  • build/compile_commands.json создан;
  • задача RP2040: build создаёт .elf, .bin, .hex и .uf2;
  • после копирования .uf2 на RPI-RP2 программа запускается.

Источники #

Жми класс
Обновлено 05.08.2026

Оцените документ




0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

0