Программа для программирования raspberry pi
До сих пор Raspberry Pi остается одним из самых популярных технологических гаджетов.На эту плату Вы можете установить практически любую операционную систему. Но сегодня мы поговорим о том, как писать программы для этой платы без операционной системе, пользуясь лишь аппаратными средствами.
В чем подвох?
На первый взгляд задача кажется тривиальной: скачиваем keil, создаем проект… Но все не так просто. Все среды программирования(keil, IAR, Atolic) поддерживают максимум ARM9.У нас же ARM11. Это связано с негласным правилом, что на голом железе пишут до ARM9, а после на Линуксе. Но все-таки есть одна лазейка: arm-none-eabi-gcc поддерживает любой ARM.
Вторая проблема заключается в том, что под данный процессор(BCM2835) нет никаких конфигурационных файлов, header'ов и т.д. Здесь нам на помощь придет загрузчик Raspberry Pi. И ничего, что он пропритетарный. Он выполняет две функции: инициализирует процессор и его периферию, а также передает управление ядру kernel.img. Мы просто замаскируем свою программу под ядро и загрузчик её запустит.
Что нам понадобится?
1) Сама Raspberry Pi, карта памяти к ней и питание.
2) Даташит на процессор
3) Компьютер с установленным Linux (но может быть можно и на Винде. Не знаю, не пробовал).
4) Кросскомпилятор, установленный на компьютере из пункта 3. Я использую arm-none-eabi-gcc
5) Содержимое этой папочки.
Приготовления.
Нам нужно отформатировать карту памяти в FAT16 и закинуть на нее содержимое этой папки. Это загрузчик плюс ядро. Затем удаляем оттуда файлы kernel.img и kernel_emergency.img. Это ядро Linux, а оно нам не нужно.
Первая программа.
Теперь мы можем приступить к написанию первой программы. Создаем файл main.c и пишем следующий код
Как видите, эта программа ничего не делает. Функция exit зачем-то нужна компилятору.
Теперь соберем её.
arm-none-eabi-gcc -O2 -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -nostartfiles main.c -o kernel.elf
arm-none-eabi-objcopy kernel.elf -O binary kernel.img
Полученный файл kernel.img кидаем на карту памяти. Готово!
GPIO
Вряд ли Вас устроит программа, которая не будет делать абсолютно ничего. Сейчас попробуем зажечь лампочку.
Для начала объявим адрес, по которому лежит GPIO( это можно прочитать в даташите).
И объявим переменную, которая определяют, что порт настроен на выход (GPIO_GPFSEL1) и переменную, подающую низкий уровень(то есть лампочка горит) на порт (GPIO_GPCLR0).
Raspberry Pi — это, может, и не единственный одноплатный компьютер (single-board computer, SBC) на рынке, но он, определённо, является самым популярным. Raspberry Pi пользуется огромное количество людей, он является центром экосистемы, в которую входит множество официальных и неофициальных ресурсов и изделий — от книг и дополнительного оборудования до форумов и учебных курсов. Raspberry Pi снабжён отличной, поддерживаемой в актуальном состоянии документацией. Благодаря Raspberry Pi Foundation регулярно выходят новые модели SBC, появляются и усовершенствования моделей предыдущих поколений. Raspberry Pi, учитывая его серьёзную вычислительную мощность, отлично показывает себя в роли настольного компьютера. Он подходит и тем, кто занимается программированием.
Raspberry Pi
Из этого материала вы узнаете о том, почему Raspberry Pi имеет смысл рассматривать как компьютер, подходящий для разработчика ПО. Здесь же мы поговорим о выборе интегрированной среды разработки (integrated development environment, IDE). Среди рассмотренных IDE можно найти инструменты для программирования практически на любом языке.
Почему Raspberry Pi отлично подходит в качестве настольного компьютера программиста?
Raspberry Pi, скромный одноплатный компьютер размером с кредитную карточку, скрывает в себе гораздо большую вычислительную мощь, чем кажется на первый взгляд. Так, например, хотя новый Raspberry Pi 4 и не крупнее сравнимых моделей предыдущих поколений, он несёт в себе много улучшений. В нём больше памяти, которая быстрее, чем раньше. Есть варианты с 1, 2, 4Гб RAM, а через некоторое время после выхода появился и вариант с 8Гб памяти. В Pi 4 имеется новая однокристальная система Broadcom BCM2711 и четырёхъядерный 64-битный процессор Cortex-A72 ARM v8, работающий на частоте 1,5 ГГц. В распоряжении пользователя есть пара USB 2.0-портов, два HDMI-порта, способных выводить 4K-видео, двухдиапазонный Wi-Fi-адаптер, Bluetooth 5.0 BLE. Raspberry Pi обладает всеми атрибутами нормального настольного компьютера.
У того, что на базе Raspberry Pi можно создать отличный компьютер для программиста, есть несколько причин:
- Множество совместимых дистрибутивов Linux.
- Доступность.
- Маленькие размеры.
- Отличное соотношение цена/качество.
- Наличие массы IDE.
Geany: лучшая многоязычная IDE
Среди основных особенностей Geany можно отметить следующие:
BlueJ: лучшая IDE для Java
BlueJ — это замечательная IDE для Java-разработчиков. Она отличается простым и удобным интерфейсом, существует её портативный вариант. Это — хороший инструмент для тех, кто занимается объектно-ориентированным программированием. BlueJ, помимо написания кода, позволяет выполнять программы. Изначально эта IDE была создана в качестве инструмента для обучения программированию Поэтому она подойдёт начинающим и опытным разработчикам. Учебное прошлое IDE видно, например, в её возможности визуализировать разные сущности и процессы вроде классов, объектов и вызова функций. А опенсорсная библиотека Pi4J из Java SE позволяет работать с аппаратным обеспечением, подключённым к компьютеру.
Среди основных особенностей BlueJ отметим следующие:
- Поддержка Java.
- Отличная приспособленность для объектно-ориентированного программирования.
- Наличие большого количества справочных материалов (вроде книг и документации), хорошая техподдержка.
Thonny: лучшая IDE для начинающих Python-разработчиков
Thonny — это продвинутая Python-IDE, которая хорошо подходит для новичков. Хотя пользоваться ей вполне могут и профессионалы, некоторые черты этой IDE говорят о том, что она особенно хороша для начинающих питонистов. Она даёт в распоряжение программиста возможности по пошаговому выполнению выражений, средства визуализации стека вызовов и множество других полезных мелочей. Если новичок возьмёт всё это на вооружение — он не только улучшит свои навыки Python-программирования, но и будет лучше понимать то, что происходит во время выполнения кода.
Вот главные особенности Thonny:
- Поддержка Python.
- Простой в использовании отладчик.
- Удобство для новичков.
- Вычисление выражений.
- Подсветка синтаксических ошибок.
- Вспомогательные средства, помогающие разобраться в коде.
Ninja-IDE
Редактор кода Ninja-IDE описан на его сайте как «Not Just Another IDE» («не просто ещё одна IDE»). Это — IDE, написанная на Python, которая просто восхитительно работает на Raspberry Pi. Nindja — это до крайности нетребовательный и приятный редактор кода, который подходит для разработки на многих языках, в число которых входит и Python. Например, здесь имеется очень удобное средство для поиска нужных фрагментов кода. Вызывается оно комбинацией клавиш CTRL + K . Тут, кроме того, есть поддержка множества других полезных возможностей, что делает Ninja отличным выбором для программиста. Среди того, что умеет Ninja, можно отметить автоматическую расстановку отступов, работу с файлами, подсветку ошибок в соответствии с PEP 8. Более того, в Ninja есть инструменты для управления проектами, этот редактор поддерживает целую кучу плагинов.
Вот главные особенности Ninja-IDE:
- Скромные системные требования.
- Подсветка ошибок.
- Мощные средства для поиска фрагментов кода.
- Автоматическая расстановка отступов.
- Инструменты для управления проектами.
- Множество плагинов.
Greenfoot: лучшая IDE для новичков
IDE Greenfoot основана на Java. Она ориентирована на обучение программированию. Поэтому в ней можно найти много приятных мелочей вроде системы автозавершения кода и подсветки синтаксиса. Greenfoot отличается чрезвычайно интерактивным интерфейсом, который легко освоить. Хотя этой IDE вполне могут пользоваться и опытные разработчики, она лучше всего подойдёт для, так сказать, «зелёных» программистов.
Вот основные особенности Greenfoot:
- Ориентированность на новичков.
- Эта IDE основана на Java.
- Поддержка Java.
- Встроенные средства для управления проектами.
- Автозавершение кода, подсветка синтаксиса, автоматическое исправление ошибок.
IDE Lazarus
Отличная IDE Lazarus, которую можно запустить на Raspberry Pi, отличается кроссплатформенностью и бесплатностью. Она использует компилятор Free Pascal и прекрасно подходит для быстрой разработки. А именно, код она компилирует очень быстро, поддерживает кросс-компиляцию. Код она тоже выполняет с весьма высокой скоростью. Lazarus поддерживает анализ производительности кода. В ней имеется множество встроенных компонентов, а если их окажется недостаточно, то можно найти дополнительные компоненты в файлах пакетов Lazarus. Перед нами — хорошо документированный опенсорсный проект, поддерживающий множество языков программирования.
Среди особенностей Lazarus можно отметить следующие:
- Быстрая компиляция и быстрое выполнение кода.
- Удобство использования.
- Поддержка визуального режима разработки, множество встроенных компонентов, возможность использования дополнительных компонентов.
- Использование Free Pascal.
- Поддержка множества языков.
Adafruit WebIDE: лучшая браузерная IDE
Adafruit WebIDE
Большинство IDE нужно загружать и устанавливать. А вот Adafruit WebIDE — это интегрированная среда разработки для Raspberry Pi, основанная на веб-технологиях. Вот видеодемонстрация этой IDE. Учитывая то, что эта IDE работает в браузере, она отлично подходит для программирования на Chromebook и даже для разработки программ на планшетных компьютерах. Adafruit WebIDE может компилировать код, написанный на разных языках программирования. Среди них — JavaScript, Ruby и Python. Но то, что эта IDE работает в браузере, не значит, что она бедна возможностями. Работая с ней, код можно загружать в Git-репозиторий. Здесь даже имеется встроенный отладчик и система, упрощающая перемещение по коду.
Среди основных особенностей Adafruit WebIDE можно отметить следующие:
- Работа в браузере.
- Поддержка загрузки кода в Git-репозитории.
- Простые компиляция и запуск кода.
- Наличие отладчика и удобных средств для перемещения по коду.
Code::Blocks: лучшая IDE для начинающих C++-программистов
IDE Code::Blocks ориентирована на C++. Это — бесплатный, опенсорсный, кроссплатформенный проект. Эта IDE поддерживает множество компиляторов, таких, как Clang, Visual C++ и GCC. Это — мощная, но, в то же время, простая и удобная среда разработки. Среди её возможностей — подсветка синтаксиса, автозавершение ввода, поддержка плагинов, возможность работы с блоками кода. Тут имеется интеллектуальный отладчик, с помощью которого удобно искать причины программных ошибок. Хотя эта IDE была создана для разработки на C++, в список поддерживаемых ей языков входят ещё C и Fortran.
Вот её главные особенности:
- Интеллектуальный отладчик.
- Отличная поддержка компиляторов, среди которых можно отметить C++, GCC, Visual C++, Intel C++, Watcom, Borland C++.
- Поддержка C, C++ и Fortran.
- Подсветка синтаксиса.
- Форматирование кода, автозавершение ввода, работа с блоками кода.
- Поддержка плагинов.
Итоги
Хотя на рабочих столах программистов обычно встречаются компьютеры, работающие под управлением macOS, Linux и, что там говорить, даже Windows, Raspberry Pi при решении многих задач выглядит на их фоне вполне достойно. Это — отличный вариант второго компьютера. На базе Raspberry Pi можно сделать «песочницу» для всяких экспериментов, эта система вполне может стать и первым компьютером, скажем — для ребёнка, который учится программировать. Существует огромное количество различных IDE, которые позволяют использовать Raspberry Pi для написания кода на практически любом языке программирования. Среди этих IDE есть самые разные проекты — от универсальных, до узкоспециализированных. А некоторые IDE уже встроены в операционные системы, устанавливаемые на Raspberry Pi.
Raspberry PI 3 Model B+
В этом мануале мы разберем основы использования Swift на Raspberry Pi. Raspberry Pi — небольшой и недорогой одноплатный компьютер, потенциал которого ограничен лишь его вычислительными ресурсами. Он хорошо известен техногикам и любителям DIY. Это отличное устройство для тех, кому нужно поэкспериментировать с идеей или проверить на практике определенную концепцию. Он применяется для самых разных проектов, легко помещается практически в любом месте — например, его можно смонтировать на крышке монитора и использовать в качестве десктопа, или подключить к макетной доске для управления электронной схемой.
Официальный язык программирования «малинки» — Python. Хотя Python достаточно прост в использовании, ему не хватает типобезопасности, плюс он потребляет много памяти. Swift, напротив, имеет ARC-управление памятью и почти в 8 раз быстрее Python. Ну а поскольку объем ОЗУ и вычислительные возможности процессора Raspberry Pi ограничены, использование языка вроде Swift позволяет максимально использовать потенциал железа этого мини-ПК.
Установка ОС
Прежде чем устанавливать Swift, нужно выбрать ОС. Для этого можно воспользоваться одним из вариантов, предлагаемых сторонними разработчиками. Наиболее обычный выбор — Raspbian, официальная ОС от Raspberry Pi. Есть несколько возможностей установить Raspbian на SD-карту; в нашем случае мы воспользуемся balenaEtcher. Вот что нужно делать:
Шаг третий: используем balenaEtcher для заливки Raspbian на карту
Рекомендуем бесплатный интенсив по машинному обучению для начинающих:
Пишем первую модель машинного обучения за три дня — 2-4 сентября. Бесплатный интенсив, который позволяет разобраться в том, что такое Machine Learning и научиться работать с открытыми данными из интернета. Также учимся предсказывать курс доллара при помощи самостоятельно разработанной модели.
Настройка Raspberry Pi
Полпути уже пройдено! Теперь у нас есть SD-карта с ОС, которую мы будем использовать, но операционную систему еще предстоит установить. Для этого есть две возможности:
- Использовать подключенные к устройству монитор, клавиатуру и мышь.
- Сделать все с другого ПК по SSH или с использованием кабеля USB Console.
Pi должна загрузиться при включении. Поздравляю! Теперь вы можете потратить немного времени на изучение своего десктопа и его возможностей.
Установка Swift
Для того чтобы установить Swift на «малинку», нужно подключить ее к интернету (при помощи Ethernet или WiFi, в зависимости от модели платы). Как только интернет подключен, можно начинать установку Swift.
Ее можно выполнить двумя способами. Первый — самостоятельное создание билда Swift, второй — использовать уже скомпилированные бинарники. Я настойчиво рекомендую второй способ, поскольку первый потребует нескольких дней подготовки. Второй способ появился благодаря группе Swift-ARM. Ей принадлежит репо, с которого можно установить Swift, используя apt (Advanced Package Tool).
Это инструмент командной строки, нечто вроде App Store для приложений и пакетов для устройств с Linux. Работу с apt начинаем, введя в терминале apt-get. Далее нужно указать ряд команд, которые уточнят выполняемую задачу. В нашем случае требуется установить Swift 5.0.2. Соответствующие пакеты можно найти здесь.
Что ж, начнем. Теперь, когда мы знаем, что будем устанавливать Swift при помощи apt, нужно добавить репо в список репозиториев.
Команда добавления/установки репо swift-arm выглядит так:
Далее устанавливаем Swift из добавленного репо:
Вот и все! Теперь Swift установлен на нашей «малинке».
Создание тестового проекта
На данный момент Swift REPL не работает, но все остальное — да. Для теста давайте создадим Swift-пакет при помощи Swift Package Manager.
Сначала создаем директорию с именем MyFirstProject.
Далее изменяем текущую рабочую директорию на свежесозданную MyFirstProject.
Создаем новый исполняемый пакет Swift.
Эти три строки создают пустой пакет Swift, который называется MyFirstProject. Для его запуска вбиваем команду swift run.
Как только компилирование завершено, мы увидим фразу «Hello, world!» в командной строке.
После того как мы создали первую программу на Pi, давайте кое что изменим. В директории MyFirstProject внесем изменения в файл main.swift. В нем содержится код, исполняющийся, когда мы запускаем пакет командой swift run.
Меняем директорию на Sources/MyFirstProject.
Редактируем файл main.swift, используя встроенный nano-редактор.
Как только редактор открыт, вы сможете изменять код своей программы. Давайте заменим содержимое файла main.swift вот этим:
Разумеется, вы можете вставить свое имя. Для сохранения изменений нужно выполнить такие действия:
Все изменения внесены, теперь самое время перезапустить программу.
Поздравляю! Как только код скомпилирован, терминал должен показать измененную строку.
Теперь, когда Swift установлен, вам есть чем заняться. Так, для управления железом, например, светодиодами, сервоприводами, реле, вы можете воспользоваться библиотекой «железных» проектов для плат Linux/ARM, которая называется SwiftyGPIO.
В 2011 году одноплатный компьютер Raspberry Pi был выпущен для тех, кто устал искать готовые решения и решил творить технологическое окружение самостоятельно. В то время как Arduino – это игрушка в большей степени для любителей работать руками, «малиновый» продукт – разминка мозга для программистов.
Всего за 6 лет под Raspberry были адаптированы почти все популярные языки программирования. Какие-то имеют существенные ограничения, какие-то работают на полную катушку. Рассмотрим 9 представителей второй категории.
Scratch
Официальный сайт предлагает пользователям Raspberry первый делом обратиться к Scratch. Исходники языка уже включены в стандартную операционную систему Raspbian. Начать создание IoT с помощью Scratch может как взрослый специалист, так и совсем ещё ребёнок. Недаром он всего за 10 лет выбился в топ-20 языков по числу запросов в поисковиках.
Python
Возможно для вас это будет сюрпризом, но Pi в названии – это не математическая константа, а отсылка к Python. IDLE, стандартная среда разработки программ на Raspberry, работает как раз на змеином языке. На официальном сайте в разделе документация вы найдёте базовое руководство. Кроме того, благодаря Python Games и их исходникам, вы познакомитесь с возможностями языка.
HTML5 и CSS3
Компьютеры Raspberry Pi подходят для создания систем IoT, а встроенный браузер Epiphany — подходящий клиентский интерфейс. Это значит, что без языков веба не обойтись. HTML5 и CSS3 позволят вам решить вопрос создания виртуальной оболочки умного дома с минимальными затратами времени и незначительными ограничениями.
JavaScript
JavaScript — динамическая сила Raspberry Pi. Вы сможете поработать с ним благодаря платформе Node.js, позволяющей вам создавать десктопные и веб-приложения. Не стоит забывать про библиотеку jQuery, которая работает в любом браузере, и наполняет его привычными динамическими функциями.
Возможность запустить Java-код на любой платформе – главная концепция языка. И эта концепция особенно полезна для таких платформ, как Raspberry Pi. Вы сначала отладите код на «большой» ОС, а потом перенесёте на Raspbian. При этом разработка приложений на Java внутри «малиновой» системы затруднительна — здесь нет полноценной среды для этого языка.
Так как Raspbian – ОС на базе Unix, в качестве базового языка здесь выступает С. С его помощью вы получите максимальную производительность без использования машинных команд. Это особенно важно для серверных систем в составе IoT. Надмножество языка, Objective-C, используется для написания приложений для iPhone и iPad, что также может пригодиться вам с «малиной».
С++ пригодится там, где нужны и скорость, и безопасность, и чёткость работы. Спектр задач при этом невероятно широк – от работы непосредственно с железом до организации взаимодействия устройств и клиентов. С++ переменит на «малиновую» сторону опытных разработчиков из прошлого века и тех, кто до этого писал код лишь для микроконтроллеров.
Perl постепенно сдаёт позиции в мире больших машин, но в Raspberry Pi это пока один из основных инструментов. Он поставляется «из коробки», имеет множество расширений и дополнений, с его помощью можно организовать сбор информации или переписать Си-программу. Это ударит по быстродействию, зато работать с таким кодом на порядок проще.
Erlang
Erlang — язык программирования для создания сложных систем. Допустим вы разрабатываете на своем одноплатном друге атомную электростанцию или нейронно-вычислительную сеть. C++ или другой прикладной язык не подойдёт. А вот Erlang позволит вам минимизировать ошибки и извлечь максимум возможностей из Raspberry Pi. Конечно, если вы дорастете до этого уровня.
Как вы поняли, язык разработки для Rasberry Pi имеет третьестепенное значение. Выбор зависит от вкусовых предпочтений, от типа решаемой задачи и вашего опыта. А значит, Rasberry Pi станет вашим верным спутником в программировании, какой бы путь вы ни выбрали.
Плата Raspberry Pi в настоящее время является одной из самых популярных микроконтроллерных плат, применяемых в современной электронике. По сравнению с другими аналогичными платами (например, Arduino), она отличается большой вычислительной мощностью, но и стоит она при этом существенно дороже. Для преодоления этого ценового разрыва компания Raspberry Pi Foundation's в этом, 2021 году, выпустила плату Raspberry Pi Pico на своем собственном чипе RP2040, которая отличается низкой ценой – всего $4. Данная плата основана на двухъядерном процессоре с архитектурой ARM и имеет систему контактов ввода/вывода общего назначения (GPIO).
В данной статье мы рассмотрим основы работы с платой Raspberry Pi Pico и ее программирование с помощью языка MicroPython.
Общая характеристика платы Raspberry Pi Pico
Плата Raspberry Pi Pico содержит в своем составе двухъядерный ARM процессор на ядре Cortex M0+ с тактовой частотой до 133 МГц. На плате находится 264 Кб SRAM памяти (ПЗУ) и 2 Мб перезаписываемой флэш памяти, которую можно увеличить до 16 Мб с помощью внешнего модуля, подключаемого по шине Quad-SPI. Также плата имеет в своем составе 26 многофункциональных контактов ввода/вывода (GPIOs) работающих с уровнем напряжения 3.3v, 3 из этих контактов также могут выполнять функции аналоговых входов. Плата Raspberry Pi Pico достаточно универсальна в плане подачи на нее питающего напряжения, которое может подаваться на нее через разъем micro-USB, внешние источники и от батареек (аккумуляторов). Также важным преимуществом платы является отсутствие необходимости в наличии специального программатора для нее и она может программироваться с помощью простой технологии Drag-and-Drop” через USB.
Как показано ниже на распиновке платы Raspberry Pi Pico она имеет в своем составе 40 контактов, 26 из которых являются многофункциональными контактами ввода/вывода (GPIOs). Встроенный в плату светодиод подключен к ее контакту GPIO25. Одним из отмечаемых недостатков платы Raspberry Pi Pico является отсутствие у нее кнопки сброса (reset button), однако у плату есть контакт RUN, который выполняет роль контакта сброса (reset pin) если мы замыкаем его на землю (Ground).
Установка языка MicroPython на Raspberry Pi Pico
Для написания программ для платы Raspberry Pi Pico хорошо подходит язык MicroPython. Автор данной статьи (ссылка на оригинал приведена в конце статьи) для установки программной среды для работы с MicroPython использовал операционную систему Ubuntu 20.04 LTS, однако аналогичным образом это можно сделать и на других Linux подобных операционных системах.
MicroPython – это версия языка программирования Python, которая написана на языке C и оптимизирована для использования на небольших микроконтроллерах/микроконтроллерных платах, которой является Raspberry Pi Pico. Для написания программ на MicroPython нам сначала необходимо установить программное обеспечение для работы с языком Python. Автор проекта использовал для этого Python3, установленный на операционную систему Ubuntu.
После установки Python нам также необходимо будет установить Python IDE “Thonny” для "безошибочной" разработки кода. Thonny IDE также поддерживается операционными системами Windows/MacOS. Нам всего лишь нужно скачать и установить ее дистрибутив для используемой нами операционной системы.
Читайте также: