< Все темы
Печать

Полная инструкция по сборке проекта на базе ОСРВ MULTEX-ARM

В статье приведена полная инструкция по сборке проекта с использованием ОСРВ MULTEX-ARM для плат на базе поддерживаемых ARM-процессоров. В качестве примера в тексте статьи используется плата Orange Pi Zero на процессоре Allwinner H3. Способ сборки и запуска проектов для других плат на этом и других процессорах практически не отличается.

Подготовка инструментальной машины

Сборка проекта производится на инструментальной машине под управлением ОС Ubuntu (Linux). В качестве инструментальной машины может использоваться персональный компьютер или ноутбук. Особых требований к инструментальной машине не предъявляется, важно только, чтобы на машине имелся кард-ридер для карт памяти micro-SD, а также свободный USB порт для подключения к целевой плате через переходник USB-UART. В качестве такого переходника рекомендуется использовать кабель TTL-232R-3V3. Внешний вид переходника и схема подключения к целевой плате показаны ниже.

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

  • make — утилита работы с файлами;
  • Linaro toolchain — набор инструментов для компиляции проектов под ARM.

Для установки нужных пакетов из репозитория следует поочерёдно ввести следующие команды в консоли Linux:

sudo apt update
sudo apt install make
sudo dpkg --add-architecture armhf
sudo apt install g++-arm-linux-gnueabihf
sudo apt install build-essential git debootstrap u-boot-tools device-tree-compiler

Кроме того, для работы с проектом понадобится текстовый редактор и программа терминала для связи с целевой платой по последовательному интерфейсу. Рекомендуется использовать следующее программное обеспечение:

  • текстовый редактор с подсветкой синтаксиса Visual Studio Code — очень удобный редактор для написания не только кода, а вообще всего. В тестовых проектах, размещённых на нашем сайте, присутствуют файлы настройки, позволяющие настроить редактор на работу с заголовочными файлами библиотек MULTEX-ARM. Скачать файлы для установки можно на страничке проекта;
  • терминал putty — удобная программа, позволяющая открыть консоль для работы с целевой платой, как по последовательному интерфейсу, так и по сетевому протоколу. Для установки программы можно воспользоваться утилитой apt, запустив команду в консоли Linux, как показано в листинге ниже.
sudo apt install putty

Подготовка загрузочного диска

Для запуска собранных проектов на целевой плате понадобится micro-SD диск. Для того, чтобы плата запускалась именно с этого диска, его нужно сделать загрузочными — то есть разместить в начале диска программу-загрузчик. Загрузчик запускает процессор и передаёт управление исполняемому файлу. Скачать загрузчик для выбранного процессора можно с сайта set-code.ru из раздела MULTEX-ARM/Файлы/Загрузчики. Загрузчики размещены на сайте в виде заархивированных образов дисков разных размеров. Размер образа следует выбирать исходя из имеющейся карты памяти. Для запуска платы Orange Pi Zero следует скачать загрузчик процессора H3 нужного размера. Скачанный загрузчик следует разархивировать. Для прошивки образа на диск можно воспользоваться make-файлом, который можно скачать в том же разделе сайта. Его следует также разархивировать и положить в папку с подготовленным образом загрузчика. При использовании make-файла перед прошивкой следует ввести имя используемого диска — такая предосторожность нужна, чтобы случайно не прошить системный диск. Посмотреть как именно подключился ваш micro-SD к системе можно с помощью утилиты “Диски” (gnome-disks), входящей в состав Ubuntu. Далее предполагается, что вы проверили подключение, и диск подключен с именем sda, как показано на рисунке ниже.

Для работы с образом диска в консоли Linnux следует перейти в папку с образом и make-файлом и ввести имя диска, с которым предстоит работать:

export DEVNAME=sda

Для вывода всех возможных команд следует ввести команду make без параметров. При этом вывод утилиты примет вид, показанный на рисунке ниже:

Для прошивки образа загрузочного диска для процессора H3 на диск размером 8 Гб следует использовать команду:

make h3-8

После окончания работы утилиты на диске будет записан загрузчик и файл конфигурации загрузчика — boot.scr. Этот файл не следует удалять, так как без него загрузчик не сможет запустить исполняемый бинарный файл пользователя.

Подготовка рабочей директории

При работе с проектами на базе ОСРВ MULTEX-ARM используется система сборки на основе базового make-файла, входящего в состав операционной системы. При работе файла предполагается, что все библиотеки и проекты пользователя размещены в одной директории (на одном уровне) в отдельных папках. В дальнейшем такую структуру можно изменить. По умолчанию структура расположения папок должна быть следующей:

  • Рабочая папка с проектами MULTEX-ARM;
    • multex_arm — библиотеки, заголовочные файлы и утилиты операционной системы;
      • bin — утилиты, используемые при сборке проектов;
      • include — папка с заголовочными файлами библиотек;
      • lib — библиотеки ядра и дополнительные библиотеки;
    • multex_arm_demo_project — проект пользователя, использующий библиотеки MULTEX-ARM;
      • log — логи процесса сборки проекта;
      • out — готовые файлы проекта, а именно собранный исполняемый бинарный файл и файлы, используемые в ходе выполнения программы (графика, текстовые файлы и т.п.). Всё содержимое этой папки копируется на загрузочный диск для запуска на целевой плате;
      • src — исходные тексты программы пользователя. Все файлы, содержащиеся в этой папке будут скомпилированы и собраны вместе с библиотеками ядра операционной системы в единый исполняемый бинарный файл;
      • config.h — файл конфигурации работы ядра, содержащий настройки проекта и имя запускаемой процедуры пользователя;
      • Makefile — Файл настройки параметров сборки.

Базовый набор библиотек ядра (папку multex_arm) можно скачать в виде архива с сайта set-code.ru в разделе MULTEX-ARM/Файлы/Библиотеки. По умолчанию вам будут доступны ядро операционной системы и все драйвера, кроме драйверов работы с графическими интерфейсами. Графические библиотеки следует запрашивать отдельно через контакты, указанные на сайте. После скачивания содержимое архива следует распаковать и поместить в рабочую папку с проектами MULTEX-ARM.

ВАЖНО! Сразу после скачивания библиотек утилиты в папке multex_arm/bin не получают атрибутов на исполнение, а следовательно их нужно выставить вручную. Сделать это можно в консоли Linux с помощью команды chmod. Например, находясь в рабочей папке с проектами и библиотеками MULTEX-ARM, нужно в консоли ввести следующую команду:

chmod -R 755 ./multex_arm/bin/

Демонстрационный проект можно также скачать в виде архива с сайта set-code.ru в разделе MULTEX-ARM/Файлы/Примеры. Для платы Orange Pi Zero следует скачивать проект “Тестовый проект для Allwinner H3“. Содержимое архива следует распаковать и поместить в в рабочую папку с проектами MULTEX-ARM рядом с папкой multex_arm.

Сборка проекта

Собирать проект можно непосредственно в консоли Linux. Однако, удобнее работать с проектом в редакторе Visual Studio Code, запуская сборку во встроенной консоли редактора. Открыть папку с проектом в редакторе можно одним из указанных способов:

  • в графическом интерфейсе Ubuntu выбрать нужную папку, вызвать контекстное меню правой кнопкой мыши и выбрать пункт “Открыть в другом приложении“. В появившемся окне выбрать редактор Visual Studio Code;
  • открыть редактор Visual Studio Code и в меню “Файл/Открыть папку” выбрать папку с проектом;
  • вызвать редактор из консоли с указанием папки проекта. Например, для скачанного ранее проекта, находясь в рабочей папке с проектами MULTEX-ARM в консоли нужно ввести команду:
code ./multex-arm-simple-h3/

Консоль для запуска сборки находится по умолчанию в нижней части редактора во вкладке ТЕРМИНАЛ. Переключиться на консоль можно с помощью сочетания клавиш Ctrl+j. В левой части редактора на вкладке “Проводник” расположены папки и файлы проекта. На скриншоте ниже показан внешний вид редактора с открытым файлом main.c проекта и консолью.

Сборка проекта выполняется с помощью базового make-файла, входящего в состав системы сборки ОСРВ MULTEX-ARM. Этот файл поставляется вместе с библиотеками операционной системы. В проекте используется простой make-файл, содержащий только настройки сборки. В таком файле происходит подключение базового make-файла, что позволяет вызывать функции сборки. Подробное описание используемых настроек можно найти в описании операционной системы в разделе “Сборка проекта“.

Для работы с системой сборки через терминал используется команда make, вызываемая с одним из параметров. Все возможные параметры команды make (цели сборки) можно посмотреть в справке, выводимой при вызове команды make без параметров. Для сборки проекта в отладочном режиме следует воспользоваться командой:

make debug

Для финальной сборки проекта используется команда:

make release

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

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

export DEVNAME=sda

Копирование всех файлов из папки out на диск производится командой:

make install

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

make update

Пример вывода в консоль при успешном копировании файлов показан на рисунке ниже:

После копирования файлов на диске появятся файлы:

  • multex.bin — компактное монолитное ядро операционной системы слинкованное с процедурами пользователя;
  • файл с расширением .arc — файл описания архитектуры используемой платы. Данный файл используется системой для подключения драйверов;
  • прочие файлы используемые в проекте, скопированные из папки проекта out.

Запуск проекта на целевой плате

Перед запуском целевой платы следует проделать следующие операции:

  • вставить загрузочный диск с проектом в слот платы micro-SD;
  • соединить инструментальную машину и целевую плату с помощью переходника USB-UART;
  • запустить программу терминала на инструментальной машине.

Запускать терминал putty следует из консоли Linux в режиме суперпользователя. Повышенные права нужны программе для того, чтобы получить доступ к работе с аппаратным портом ввода/вывода. Запускать программу можно с помощью команды с добавлением амперсанда, чтобы освободить консоль для прочих задач. Ниже в листинге показаны две команды — переход в режим суперпользователя (потребуется ввести пароль) и запуск программы терминала:

sudo -s
putty &

При запуске терминала сначала появится окно настройки сессии. Параметры сессии можно настроить один раз и сохранить под именем UART0 и при следующих запусках уже загружать параметры сессии по имени. Параметры подключения к целевой плате через переходник USB-UART показаны на скриншотах:

Теперь можно включить питание. При успешном запуске в программе терминала вы увидите сообщения, выводимые системой в процессе загрузки. Общее время загрузки от включения питания должно составлять примерно 3 секунды. После окончания загрузки система выведет приветственное сообщение показанное на рисунке ниже:

Работа с проектом на целевой плате

Итак, проект собран и запущен на целевой плате, к которой подключена программа терминала. Теперь разработчик получает возможность взаимодействовать с программой через интерпретатор команд Shell. Подробное описание функций интерпретатора можно найти в описании ОСРВ MULTEX-ARM в соответствующем разделе. Здесь приведены только некоторые возможности Shell:

  • просмотр и изменение значений глобальных переменных;
  • запуск функций по имени;
  • просмотр дампов памяти по команде dd;
  • просмотр запущенных задач по команде i;
  • просмотр списка используемых прерываний по команде irq;
  • просмотр подключенных библиотек с помощью команд brief и details;
  • вывод справки по работе с Shell по команде h.

На базе тестового проекта можно написать свой проект. Например, используя драйвера аппаратных интерфейсов UART, SPI, I2C, Ethernet, входящих в базовый бесплатный набор библиотек, можно написать обработчик сетевого потока данных с выводом на внешние исполнительные устройства. Описания всех драйверов можно найти в документации на операционную систему на сайте set-code.ru в разделе MULTEX-ARM/Документация.

Заключение

Данная статья является текстовой версией видео-инструкции, которую вы сможете посмотреть на нашем RUTUBE канале. Надеемся, что материалы статьи помогут вам в освоении ОСРВ MULTEX-ARM, ведь самое трудное в любом деле — это начало! Спасибо за интерес к нашему проекту. По всем вопросам обращайтесь к нам любым удобным для вас способом, указанным на сайте set-code.ru в разделе Контакты.

Команда разработчиков MULTEX-ARM

Оглавление