цифровая электроника
вычислительная техника
встраиваемые системы

 


Как начать работу с Raspberry Pi Pico

Автор: Mike(admin) от 1-02-2021, 03:55

Вы, вероятно, слышали о Raspberry Pi в отношении их линейки небольших компьютеров размером с кредитную карту, которые могут работать с операционными системами Linux. Они отлично подходят для ситуаций, когда требуется низкое энергопотребление, отличные возможности подключения и относительно большие вычислительные возможности, но они не подходят в ситуациях, когда требуется работа в реальном времени и точная синхронизация.


Как начать работу с Raspberry Pi Pico

Вот именно здесь новый Raspberry Pi Pico превосходит остальные творения Raspberry Pi Foundation. Он имеет множество отличных периферийных блоков, включая I2C, SPI, USB и многое другое. Pico содержит два быстрых ядра Arm Cortex-M0+ на специальном чипе, а также специальную подсистему, называемую Programmable I/O, или сокращенно PIO. Это позволяет программистам создавать специализированные конечные автоматы (до 8), которые могут обрабатывать задачи ввода/вывода с выводами без необходимости тонны взаимодействия с ЦП, тем самым освобождая два ядра для других задач.


Как начать работу с Raspberry Pi Pico

Работать с Raspberry Pi Pico довольно просто, но здесь имеется несколько нюансов. Для начала при работе с этим контроллером желательно иметь SDK. Достаточно сложно просто загрузить текстовый редактор и начать программировать для платы даже с умеренно продвинутыми функциями. Комплект для разработки программного обеспечения (SDK) – это просто пакет библиотек, компилятора/компоновщика, отладчика, а иногда и фреймворка. Таким образом, вместо того, чтобы переключать определенные регистры в ассемблере и пытаться настроить ассемблер для компиляции, SDK может предоставить необходимые инструменты.


В этом руководстве рассматривается SDK C/C++, а не MicroPython, и предполагается, что разработка ведется в среде ОС на основе Debian или Ubuntu.


Итак, начните с создания нового каталога в какой-то пользовательской папке, например, в домашнем каталоге, с помощью следующей команды:


mkdir pico

Затем введите:


cd pico

Далее выполните следующие три команды для установки SDK и обновления библиотеки USB.



git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update –init

Затем оставьте эту папку и перейдите в папку pico с помощью команды:


cd ..

И, наконец, клонируйте примеры в другую папку под названием pico-examples.


git clone -b master https://github.com/raspberrypi/pico-examples.git

Далее просто запустите следующие две команды, чтобы установить как CMake, так и GNU Embedded Toolchain для Arm, так код, который вы пишете, будет преобразован в машинные инструкции.



sudo apt update
sudo apt install cmake gcc-arm-none-eabi build-essential

Вот и все! Установив набор инструментов и SDK, пора начинать программировать Raspberry Pi Pico. И первое, с чего мы начнем – конечно же с мигания светодиодом. В папке pico введите:


cd pico-examples

Это нужно для просмотра примеров проектов. Затем создайте и войдите в каталог сборки с помощью:



mkdir build
cd build

Создайте переменную среды PICO_SDK_PATH:


export PICO_SDK_PATH=../../pico-sdk

И, наконец, запустите cmake с помощью:


cmake ..

По умолчанию CMake настроен на создание сборок выпуска, в которых нет информации, необходимой для отладки. Чтобы создать отладочную версию, запустите:


cmake -DCMAKE_BUILD_TYPE=Debug

Теперь мы можем запустить программу мигания. Введите:


cd blink

Это позволит перейти к папке с примерами мигания. Его содержимое должно выглядеть так:


Как начать работу с Raspberry Pi Pico

Здесь есть два варианта сборки. Первый – просто запустить make или make -jT, где T – количество одновременных процессов (обычно количество ядер вашего процессора), поэтому в случае Raspberry Pi 4 вы должны запустить:


make -j4

И теперь вы должны увидеть файлы blink.elf и blink.uf2. Файл elf используется отладчиком, тогда как файл uf2 может быть скопирован на запоминающее устройство RP2040.


Как начать работу с Raspberry Pi Pico

Теперь приступим к загрузке программы в устройство. Программировать Pico очень просто. Удерживая нажатой кнопку BOOTSEL на плате, подключите кабель micro USB.


Как начать работу с Raspberry Pi Pico

Теперь вы должны увидеть устройство под названием RPI-RP2 со следующими файлами.


Как начать работу с Raspberry Pi Pico

На рабочем столе перетащите файл uf2 из ранее использовавшейся папки build/blink на запоминающее устройство USB. Это закроет окно проводника и заставит Pico мигать своим встроенным светодиодом. Вы также можете подключить Pico таким же образом (удерживая кнопку BOOTSEL при подключении кабеля micro USB), а затем искать подключенный диск с помощью


dmesg | tail

А затем создать новый каталог для файловой системы:


sudo mkdir -p /mnt/pico

И смонтировать устройство.


sudo mount /dev/sdDp /mnt/pico

Здесь D – устройство (a, b, c и т. д.), а p – раздел (должно быть 1). Так что для Pico на sda это будет выглядеть так:


sudo mount /dev/sda1 /mnt/pico

Затем скопируйте файл с помощью:



sudo cp blink.uf2 /mnt/pico
sudo sync

А затем размонтируйте его с помощью:


sudo unmount /mnt/pico

Если у вас есть предыдущий опыт работы с C или C++, то вы знаете, что для копирования данных из одного массива в другой вам обычно требуется выполнить итерацию из исходного массива (прочитать его), а затем переместить те же данные в целевой массив. При работе с чем-то вроде Arduino Uno и цепочкой адресуемых светодиодов RGB Atmega 328p должен взять буфер данных о цвете и побитно передавать их через вывод GPIO, что означает, что ЦП больше ничего не может.


Вы также можете попробовать представить систему с двумя устройствами, одно из которых отправляет данные в Pico по некоторому протоколу, а затем Pico необходимо поместить эти данные в какой-то буфер в ОЗУ для последующего использования. Почему бы не иметь для этого выделенное оборудование, вместо того чтобы постоянно ждать поступления новых данных и затем сохранять их? Это основной принцип прямого доступа к памяти (DMA).


Вернитесь в папку pico/pico-examples/build, а затем войдите в папку dma с помощью:


cd ~/pico/pico-examples/build/dma

Вы должны увидеть три папки, относящиеся к различным примерам, а пока мы рассмотрим ту, которая называется hello_dma.


Если вы запустите здесь команду make, она соберет обычные файлы elf и uf2, которые вы можете загрузить на свою плату. Вы можете просмотреть вывод, подключив преобразователь UART к USB к контактам UART оборудования Pico и контакту заземления. Теперь посмотрим, как на самом деле работает код. Перейдите в папку с исходным кодом, введя


cd ~/pico/pico-examples/dma/hello_dma/

А затем выполните просмотр файла hello_dma.c в текстовом редакторе. Он выглядит так:


Как начать работу с Raspberry Pi Pico

Вы можете видеть, что существует массив символов (chars), называемый src, который сохраняется во флэш-памяти, когда программа загружается на чип (потому что это const). Под ним находится указатель на место в памяти, называемое dst, в котором выделено такое же пространство, как и для постоянного массива. После вызова stdio_init_all(), который настраивает порт UART для таких функций, как printf, вы можете увидеть, что запрашивается канал DMA с именем chan. Затем со строки 27 по строку 30 создается структура dma_channel_config, которая настраивает на приращение указатель источника и назначения при каждой передаче, а также настраивается на передачу 8 бит за раз.


В вызове dma_channel_configure() устанавливаются указатели назначения и источника, а также количество передач. Как только вызов сделан, передача начинается немедленно и завершается после того, как будет передано правильное количество байтов. Поскольку в этом примере процессору больше нечего делать, dma_channel_wait_for_finish_blocking() просто ожидает завершения передачи и затем возвращается. Наконец, данные из целевого буфера распечатываются на периферийное устройство UART с помощью Put().


Raspberry Pi Pico обладает огромным потенциалом, и будет интересно увидеть, что люди могут создавать с помощью этого небольшого и дешевого устройства.




© digitrode.ru


Теги: Raspberry Pi, Raspberry Pi Pico




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

Комментарии:

Оставить комментарий