Описание действия для основной статьи по сборке тестового пакета для роутеров RTU.
Сборка будет производиться на операционной системе Ubuntu 16.04 LTS 64bit, но для остальных ОС на базе Linux принципы очень похожи.
Для ОС 32bit необходимо собирать ImageBuilder для 32bit архитектуры и только после этого собирать кросс-компилятор на 32bit операционной системе.
Это достаточно сложные процедуры. Поэтому мы рекомендуем использовать виртуальную среду, в которой можно установить и запустить 64bit Linux систему.
SDK для роутеров аппаратной версии V4 (или с прошивкой версии 3.X.X и выше) доступно по ссылке: https://drive.google.com/file/d/1o5YQ3cPduCivuroQkIZVn9hwQDydQ6SG/view
SDK для роутеров аппаратной версии V2 доступно по ссылке:
Все операции будут производиться исключительно через командную консоль (Терминал)!!!
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
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/main/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?
Дополнительная информация: