Найти тему

Компиляция прошивки uf2 для Raspberry Pi Pico W из исходников на macOS

Оглавление

Всем привет! 🦝 Давайте сегодня попробуем собрать прошивку для Raspberry Pi Pico W из исходников на примере macOS. Я недавно уже писал о том как это сделать в Astra Linux, да и в целом в Linux. Сегодня у нас macOS. Ссылку на предыдущую статью прикрепляю.

🌊вВодная часть

В целом процесс сборки прошивки на macOS практически идентичен процессу сборки на Linux. Единственная разница заключается лишь в том, что будет другой менеджер пакетов. Для того, чтобы установить необходимый для сборки софт, нам потребуется brew.

🍺Пару слов о Homebrew и его установка

-2

📌Если у вас уже установлен Homebrew, можете пропускать этот пункт

Homebrew, часто называемый просто Brew, это менеджер пакетов для операционной системы macOS. Он предназначен для упрощения установки программного обеспечения на macOS. Для установки этого менеджера пакетов в macOS для начала давайте перейдем на официальный сайт.

Homebrew

Копируем скрипт установки с главной страницы себе в терминал и дожидаемся окончания процесса установки. После завершения установки, проверим версию brew, для этого в терминале пишем команду:

brew --version
-3

Отлично, Homebrew установлен 🍻 двигаемся дальше.

💿Установка необходимого для сборки софта

Теперь с помощью менеджера пакетов Homebrew, давайте установим необходимый софт для сборки прошивки. Начнем с конфигуратора сборки cmake, пишем в терминале:

brew install cmake

Начнется процесс установки.

-4

Далее аналогичным образом нам нужно установить следующие пакеты, также я вкратце о них расскажу:

  • git

Система управления версиями, понадобиться нам для клонирования репозитория с исходными кодами прошивки.

  • gcc-arm-embedded

Специальный пакет инструментов ( тот самый toolchain), который включает компилятор GNU Compiler Collection (GCC) и другие утилиты, предназначенные для разработки программного обеспечения, основанного на архитектуре ARM.

📌Касаемо загрузки компилятора, тут могут возникнуть некоторые трудности. Так как brew будет загружать пакет с официального сайта, а developer.arm.com не работает в России из-за санкций - придется воспользоваться VPN.

  • libtool

Утилита, предназначенная для упрощения процесса создания статических и динамических библиотек.

  • automake

Если вкратце, это утилита для генерации Make-файлов.

  • libusb

это библиотека, позволяет взаимодействовать с USB-устройствами без необходимости написания драйверов для каждой отдельной операционной системы.

  • wget

Если вы читали мои предыдущие статьи, то вы уже знаете что эта за утилита :) Если нет, то это очень нужная штука, которая позволяет загружать файлы из интернета и не только...

  • pkg-config

Тут можно расписывать очень долго, прям очень. И эта утилита очень важна для сборки, так как именно с помощью нее можно получить правильные опции для компиляции и именно она эффективно управляет всеми зависимостями в процессе сборки

  • gcc

Даже не знаю как правильно назвать. GCC - это коллекция компиляторов для таких языков программирования как C, C++, Objective-C, Ada, Fortran, и др.

  • texinfo

Для работы с программной документацией.

-5

👨‍💻Загрузка исходников

После установки необходимого софта для сборки, давайте создадим директорию, куда мы будем клонировать репозитории git. Дальше процесс будет очень схож тем, который я описал в статье сборки прошивки для Linux.

Я создал себе папку в домашней директории, вы же можете создатиь там, где вам нравиться.

mkdir ~/pico && cd ~/pico

Далее клонируем два репозитория один с прошивкой, это firmware, другой с необходимым набором инструментов (SDK) для работы с платами Raspberry Pi Pico.

git clone https://github.com/pico-cs/firmware
git clone https://github.com/raspberrypi/pico-sdk

Далее у SDK необходимо обновить подмодули, другие git с необходимым для компиляции софтом.

cd ~/pico/pico-sdk
git submodule update --init

📌На этапе подтягивания репозиториев с подмодулями у меня возникали трудности. На некоторых интернет провайдерах репозитории на отрез отказывались клонироваться и терминал пестрил сообщениями об ошибках.

-6

Для решения этой проблемы можно пойти двумя путями: первый - пробовать других интернет провайдеров (например на Tele2 у меня все успешно клонировалось); второй - использовать VPN.

🛠Сборка прошивки

И так, если удалось все клонировать, давайте подготовим исходники к сборке прошивки. Для начала создадим Make-файлы в папке исходного кода прошивки. Переходим в эту папку:

cd ~/pico/firmware/src

И создаем папку и переходим в папку build, в которую впоследствии скомпилируется файл прошивки для платы:

mkdir build && cd build

Далее чтобы не было проблем с зависимостями, добавим несколько важных путей в переменные окружения. А именно, добавим в переменные окружения путь до SDK для плат Pi Pico (в примере указа свой путь, вы указывайте тот, куда клонировали все репозитории):

export PICO_SDK_PATH=~/pico/pico-sdk

И дополнительно укажем путь к компилятору. Для того, чтобы узнать где поживает установленный ранее компилятор, воспользуемся командой which. Эта утилита используется для определения пути исполняемого файла команды, в нашем случае будем искать где "живет" компилятор arm-none-eabi-gcc. Пишем в терминале следующую команду:

which arm-none-eabi-gcc

В результате выполнения команды, мы получим путь к исполняемому файлу

-7

Этот путь мы и записываем в переменные окружения, чтобы конфигуратор понимал каким компилятором ему нужно будет воспользоваться для сборки прошивки.

export PICO_TOOLCHAIN_PATH=/usr/local/bin

После указания всех переменных окружения, приступаем к конфигурированию файлов для сборки, выполняем команду:

cmake .. -DPICO_BOARD=pico_w -DPICO_CS_WIFI_SSID=test -DPICO_CS_WIFI_PASSWORD=1234567890

О том, что означают эти параметры и почему я зада именно такие я писал в статье про сборку прошивки на Linux. 🔗Ссылку вежливо оставляю:

После конфигурирования файлов для сборки, запускаем сам процесс сборки:

make -j 4
-8

По окончанию процесса сборки в папки build появиться файл cs_w.uf2, поздравляю 🎉 это и есть файл прошивки.

-9

Вот мы и собрали прошивку для для Raspberry Pi Pico W на macOS. Далее можно приступать к самой прошивке платы, как это сделать я уже писал в одной из своих статей, 🔗ссылка ниже:

Осталось, для полного комплекта описать процесс сборки прошивки на Windows, когда-нибудь я обязательно решусь на это 🙃, но а пока что ...

Спасибо за прочтение! Удачных сборок! 🦝

-10