Описание действия для основной статьи по сборке тестового пакета для роутеров RTU.

SDK StepByStep Guide


Сборка будет производиться на операционной системе Ubuntu 16.04 LTS 64bit, но для остальных ОС на базе Linux принципы очень похожи.


Для ОС 32bit необходимо собирать ImageBuilder для 32bit архитектуры и только после этого собирать кросс-компилятор на 32bit операционной системе.

Это достаточно сложные процедуры. Поэтому мы рекомендуем использовать виртуальную среду, в которой можно установить и запустить 64bit Linux систему.


Все операции будут производиться исключительно через командную консоль (Терминал)!!!


1. Сначала обновим репозитории и пакеты:

sudo apt update

sudo apt dist-upgrade


2. Перезагружаемся для надежности (не обязательно)

sudo reboot


3. После перезагрузки повторяем команду:

sudo apt update

И устанавливаем все необходимые пакеты (subversion, git, g++, libncurses5-dev, zlib1g-dev, libssl-dev, gawk, unzip, build-essential)

sudo apt install subversion git g++ libncurses5-dev zlib1g-dev gawk libssl-dev unzip build-essential


4. Ждем окончания установки, и переходим к скачиванию SDK:

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

mkdir TELEOFIS_SDK

Переходим в неё

cd TELEOFIS_SDK/

Скачиваем SDK

wget https://github.com/teleofis/TELEOFIS-RTU968/raw/master/SDK/OpenWrt-SDK-mxs_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2


5. Распаковываем архив:

bzcat OpenWrt-SDK-mxs_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2 | tar -xvf -


6. Переходим в директорию SDK 

cd OpenWrt-SDK-mxs_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64/


7. Создаем директорию для пакета Helloworld:

mkdir -p package/helloworld


8. Скачиваем исходные коды пакета Helloworld и распаковываем их:

Переходим в папку для пакета

cd package/helloworld/

Скачиваем исходные коды

wget https://github.com/teleofis/TELEOFIS-RTU968/raw/master/SDK/helloworld.tar

Распаковываем в эту же папку

tar -xvf helloworld.tar


9. Возвращаемся в папку SDK

cd ../..


10. Пробуем запустить сборку

make menuconfig

Если появились ошибки, стираем возможные конфиги сборок:

ВНИМАНИЕ: Кроме всего прочего будет удалена ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!

make distclean

Проверяем конфигурацию

make defconfig

Заново подаем команду на запуск сборки

make menuconfig


11. Заходим в меню и ставим в Ulilities галку напротив helloworld

12. Запускаем сборку

make V=s

Увидим процесс сборки пакета


Скомпилированный пакет будет лежать по пути:

bin/mxs/packages/base/helloworld_123_321_mxs.ipk

Полный путь от корня:

/home/user/TELEOFIS_SDK/OpenWrt-SDK-mxs_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64/bin/mxs/packages/base/helloworld_123_321_mxs.ipk


13. Во время разработки часто необходимо пересобирать пакет заново, чтобы не чистить целиком конфигурацию компилятора, можно воспользоваться командами:

Очистим папку от скомпилированного пакета

make package/helloworld/clean V=s

Соберем его заново

make V=s


14. Копируем пакет на роутер RTU (например через SCP)

scp bin/mxs/packages/base/helloworld_123-321_mxs.ipk root@192.168.88.1:/tmp/

Роутер должен быть подключен к ПК кабелем Ethernet, либо быть доступным по сети.


15. Далее работаем уже непосредственно на роутере RTU

Устанавливаем пакет

opkg install /tmp/helloworld_123-321_mxs.ipk


16. Проверяем работоспособность пакета

helloworld_oneshot

Увидим ответ от нашей программы

helloworld: Hi! This is oneshot HELLO


17. Запускаем helloworld демон

etc/init.d/helloworld start

За деятельностью демона можно проследить командой

logread -f | grep helloworld


18. Остановить helloworld демон можно так же, как и запустить

etc/init.d/helloworld stop


Возможные проблемы:

Как правило, большинство проблем при сборке(чего-то не хватает, не видятся новые пакеты и т.д.)
обусловлены либо ошибками в коде, либо отсутствием необходимых пакетов на Вашем ПК(например, с Убунту)
При возникновении проблем попробуйте:
make distclean && make menuconfig


Сопутствующие статьи:

Как подключиться к роутеру RTU?

Как загружать и скачивать файлы в роутерах серии RTU?


Дополнительная информация:

Wiki на GITHUB

Страница роутера на сайте Teleofis

Контроллеры на платформе роутера RTU