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
-
Небольшая тема для тех, кто хочет начать разрабатывать для спутниковых ресиверов Openbox различные программы, будь то плагины или те же эмуляторы, но не знает, с чего начать. :)
А начать необходимо с понимания, что в ресиверах Openbox SX-серии используются непривычные для обычных пользователей процессоры. Большинство пользователей домашних компьютеров знакомы только с архитектурами x86 и x86_64, представленные чаще фирмами Intel и AMD. Процессоры же ресиверов производятся фирмой STMicroelectronics и имеют архитектуру sh4, более подробно о которой можно прочитать на википедии (https://ru.wikipedia.org/wiki/SuperH), так что повторяться не буду.
Разумеется, саму разработку независимо от конечной архитектуры приложений обычно осуществляют на обычном персональном компьютере. Ресурсов же для сборки особенно проектов с большим числом строк исходного кода на самом ресивере может не хватить, поэтому компиляцию так же в подавляющем числе случаев осуществляют на том же персональном компьютере, но под нужную архитектуру. Данный процесс называется кросскомпиляцией.
Что же нужно для кросскомпиляции для Openbox SX? Всего несколько вещей:
- Обычный персональный компьютер с любой установленной операционной системой Linux (Ubuntu, openSUSE и пр.)
- Набор компиляторов C (gcc) и C++ (g++) со стандартными библиотеками
Последний пункт и представляет из себя тулчейн. То есть это набор исходных кодов, библиотек и компиляторов, позволяющих создавать программы для определённых архитектур.
Обычно наибольшую сложность для новичков представляет процесс сборки тулчейнов.
Чтобы упросить данный шаг, и представляю свой тулчейн, который можно скачать здесь (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).
Собственно и всё. Будут вопросы, особенно по разработке плагинов, - пишите. Постараюсь помочь. ;)
-
Пример исходного кода плагина, который при нажатии на красную кнопку пульта выводит надпись на экран, при повторном - стирает её.
Порядок компиляции следующий.
Качаем (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.
-
Обновлённые тулчейны.
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. В каждой сборке - конфиг.
-
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Работаю от рута.
Использую тучейны в первом сообщении.
.bashrc:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
в /opt/ всё присутствует
иерархия папок проекта как нужно
gcc и g++ установлены
apt-get update сделан
ubuntu 14.04 32-bit
что еще можно сделать???
спасибо
-
Системные gcc и g++ в системе не обязательны, так как используются именно компиляторы тулчейна.
Судя по вашей ошибке, система не знает, куда вы их положили. Настоятельно рекомендую собирать от простого пользователя (к тому же пути к бинарникам тулчейна вы же приписали у него). И всё заработает.
Или пропишите путь в /root/.bashrc, если по каким-то причинам вам нужно собирать именно под super user'ом.
Ах, да! Тулчейны требуют x86-64! На x32 не заработают - не думал, что ещё кто-то использует эту архитектуру...
-
Обновлённый (https://yadi.sk/d/Fpks1dJMwtiUh) тулчейн со свежими версиями библиотек.
-
Добрый день Всем мимо проходящим, решил я попробовать что такое sti7111, скачал и установил тулчейн из данного поста на ubuntu 16.04, сделал попытку собрать getstream для gi 8120 spark, все бы ничего, но вылезли ошибки, которые привели к необходимости собрать libglib2.0 для sh4-unknown-linux-gnu, собрал libglib2.0, но при попытке собрать getstream получил странную ошибку libglib2.0.so File format not recognized, так и не смог понять почему не может распознать формат файла, может кто подскажет.