Gisclub

Fulan Spark | Fulan ALi | Fulan Sunplus | Fortis => Openbox SX4(Base), SX6, SX9(Combo), S2HD, S2 mini HD, S2 mini HD+ и др. => FAQ => Тема начата: Stuart от 27 июня | 2015г. | 22:46:09

Название: Разработка плагинов на Fortis API
Отправлено: Stuart от 27 июня | 2015г. | 22:46:09

Небольшая тема для тех, кто хочет начать разрабатывать для спутниковых ресиверов Openbox различные программы, будь то плагины или те же эмуляторы, но не знает, с чего начать.  :)

А начать необходимо с понимания, что в ресиверах Openbox SX-серии используются непривычные для обычных пользователей процессоры. Большинство пользователей домашних компьютеров знакомы только с архитектурами x86 и x86_64, представленные чаще фирмами Intel и AMD. Процессоры же ресиверов производятся фирмой STMicroelectronics и имеют архитектуру sh4, более подробно о которой можно прочитать на википедии (https://ru.wikipedia.org/wiki/SuperH), так что повторяться не буду.

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

Что же нужно для кросскомпиляции для Openbox SX? Всего несколько вещей:


Последний пункт и представляет из себя тулчейн. То есть это набор исходных кодов, библиотек и компиляторов, позволяющих создавать программы для определённых архитектур.

Обычно наибольшую сложность для новичков представляет процесс сборки тулчейнов.

Чтобы упросить данный шаг, и представляю свой тулчейн, который можно скачать здесь (https://yadi.sk/d/JX8xVpbogpAER).

Что же он из себя представляет? Данный тулчейн позволяет компилировать программы для SH4-архитектур и включает в себя компиляторы gcc 4.9.2, библиотеку glibc 2.19.

Данный набор позволит вам без труда собирать свои собственные плагины, используя Fortis API (https://gisclub.tv/plaginy-jemuljatory-i-kljuchi-525/fortis-api/), а так же помогать компилировать уже существующие программы.

Для более удобного вызова компиляторов без прописывания полного пути к ним, после распаковки тулчейнов, например, по пути /opt/sh4-unknown-linux-gnu, в домашнем каталоге пользователя находим скрытый файл .bashrc и прописываем в нём путь к тулчейну:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Для успешного написания плагинов желательно знать как можно больше об операционной системе Linux, непосредственно разбираться в языках C/C++ и хотя бы немного быть знакомым с кросскомпиляцией (в том числе написанием Makefile).

Собственно и всё. Будут вопросы, особенно по разработке плагинов, - пишите. Постараюсь помочь.  ;)
Название: Разработка плагинов на Fortis API
Отправлено: Stuart от 27 июня | 2015г. | 22:50:15
Пример исходного кода плагина, который при нажатии на красную кнопку пульта выводит надпись на экран, при повторном - стирает её.

Порядок компиляции следующий.

Качаем (https://yadi.sk/d/JX8xVpbogpAER) тулчейн и распаковываем, например, по пути /opt/sh4-unknown-linux-gnu, в домашнем каталоге пользователя прописываем в файле .bashrc путь к bin тулчейна, например:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Качаем (https://gisclub.tv/plaginy-jemuljatory-i-kljuchi-525/fortis-api/) Fortis API последней версии (для SX-серии подходит версия 1.20 и выше), распаковываем, в каталог ~/src/fortis копируем папки include и lib. Другие файлы из архива Fortis API для сборки нам не нужны - они представляют из себя документацию. В эту же папку ~/src/fortis распаковываем из вложенного в сообщение архива папку plugin.

То есть конечная структура папок должна быть примерно такой:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
После переходим в каталог plugin командой cd ~/src/fortis/plugin. Тильда обозначает домашний каталог текущего пользователя, например, /home/user, как в примере выше.

Затем вводим make - плагин собран. Команда make clean позволяет удалить весь "мусор" от сборки и конечный бинарный файл для последующий чистой сборки.

В примере фактически можно найти пример работы с Fortis API, а так же каким образом пишутся Makefile.
Название: Разработка плагинов на Fortis API
Отправлено: Stuart от 02 июля | 2015г. | 00:01:59
Обновлённые тулчейны.

sh4 - gcc 4.9.3, glibc 2.21, binutils 2.25, zlib-1.2.8, jpeg-9a, libpng-1.6.17, freetype-2.3.12, libevent-2.0.22, openssl-1.0.2c
sh4-old - gcc 4.8.5, glibc 2.10.1, binutils 2.25, zlib-1.2.8, jpeg-9a, libpng-1.6.17, freetype-2.3.12, libevent-2.0.22, openssl-1.0.2c
arm - gcc 4.9.3, glibc 2.19, binutils 2.25, zlib-1.2.8, jpeg-9a, libpng-1.6.17, freetype-2.6, libevent-2.0.22, openssl-1.0.2c
mipsel - gcc 5.1.0, glibc 2.21, binutils 2.25, zlib-1.2.8, jpeg-9a, libpng-1.6.17, freetype-2.6, libevent-2.0.22, openssl-0.9.8zg

В sh4-old используется старая glibc в случае возникновения проблем запуска на Openbox SX, arm заточил под конфигурацию Debian 8, в mipsel умышленно поставил более старую openssl, которая используется в большинстве имиджей Enigma2.

Скачать (https://yadi.sk/d/oSXVw8q2hcMJw) (244,8 МБ)

Собрано в crosstoll-ng 1.21.0. В каждой сборке - конфиг.
Название: Разработка плагинов на Fortis API
Отправлено: Saskereliz от 14 октября | 2015г. | 23:25:32
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Работаю от рута.
Использую тучейны в первом сообщении.
.bashrc:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
в /opt/  всё присутствует
иерархия папок проекта как нужно

gcc и g++ установлены
apt-get update сделан

ubuntu 14.04 32-bit

что еще можно сделать???
спасибо
Название: Разработка плагинов на Fortis API
Отправлено: Stuart от 14 октября | 2015г. | 23:32:16
Системные gcc и g++ в системе не обязательны, так как используются именно компиляторы тулчейна.

Судя по вашей ошибке, система не знает, куда вы их положили. Настоятельно рекомендую собирать от простого пользователя (к тому же пути к бинарникам тулчейна вы же приписали у него). И всё заработает.

Или пропишите путь в /root/.bashrc, если по каким-то причинам вам нужно собирать именно под super user'ом.

Ах, да! Тулчейны требуют x86-64! На x32 не заработают - не думал, что ещё кто-то использует эту архитектуру...
Название: Разработка плагинов на Fortis API
Отправлено: Stuart от 15 октября | 2016г. | 17:54:14
 Обновлённый (https://yadi.sk/d/Fpks1dJMwtiUh) тулчейн со свежими версиями библиотек.
Название: Разработка плагинов на Fortis API
Отправлено: Vyacheslav_2 от 14 октября | 2019г. | 22:00:47
Добрый день Всем мимо проходящим, решил я попробовать что такое sti7111, скачал и установил  тулчейн из данного поста на ubuntu 16.04, сделал попытку собрать getstream для gi 8120 spark, все бы ничего, но вылезли ошибки, которые привели к необходимости собрать libglib2.0 для sh4-unknown-linux-gnu, собрал libglib2.0, но при попытке собрать getstream получил странную ошибку   libglib2.0.so File format not recognized, так и не смог понять почему не может распознать формат файла, может кто подскажет.