Компиляция исполняемого файла C++ для контроллера TXT

Обсуждаем модели и конструкции, построенные своими руками
Ответить
AntonEngineer
Сообщения: 42
Зарегистрирован: 10 дек 2019, 18:13

Компиляция исполняемого файла C++ для контроллера TXT

Сообщение AntonEngineer »

Доброго времени суток!

На языке C++ я написал простую программу для обмена данными по MQTT протоколу. Не знаю как скомпилировать исполняемый файл для TXT контроллера в расширении ".cloud". Можете помочь?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Компиляция исполняемого файла C++ для контроллера TXT

Сообщение Mr.Kubikus »

На странице https://github.com/fischertechnik/txt_demo_c_download есть примеры исполняемых программ на языке C++ для контроллера TXT. Если там будет что-то не понятно, то давайте попробуем разобраться вместе.
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Компиляция исполняемого файла C++ для контроллера TXT

Сообщение Mr.Kubikus »

Не знаю как скомпилировать исполняемый файл для TXT контроллера в расширении ".cloud"
Кстати, расширение ".cloud" - это всего лишь часть имени файла. От этой части никак не зависит - будет файл исполняемым или нет. Поэтому я подготовил небольшое описание по сборке исполняемого файла из исходного кода на языке C++, который работает без расширения ".cloud" в своем имени.

Для получения опыта создадим очень простую программу на языке C++, которая выводит в консоль сообщение «Hello TXT». Для этого нам понадобится выполнить следующие действия:
  1. Подготовить инструментарий
  2. Создать исходный файл
  3. Выполнить компиляцию и связывание
  4. Проверить наличие связи между ПК и контроллером
  5. Загрузить файл в контроллер TXT
  6. Подключиться к консоли через SSH
  7. Включить атрибут исполнения
  8. Запустить программу
  9. Отключиться от консоли
1. Подготовить инструментарий
Для того чтобы получить из исходного текста, написанного на языке C++, исполняемый файл нам понадобится комплект инструментальных программ (тулчейн - от англ. Toolchain), который выполнит препроцессорную обработку исходного кода, компиляцию и затем компоновку исполняемого модуля. Также при выборе инструментального ПО надо учесть, что разработка будет происходить на компьютере с процессором x64 и ОС Windows, а полученный в результате компиляции исполняемый файл будет выполняться на контроллере с процессором ARM и ОС Linux. Для такой конфигурации нам понадобится кросс-компилятор из комплекта инструментального ПО GCC, который можно скачать на сайте linaro.org. Скачайте и распакуйте архив gcc-linaro-aarch64-linux-gnu-4.9-2014.05_win32.zip в папку C:\txt-cross-dev.


2. Создать исходный файл
Создайте пустой текстовый файл hellotxt.cpp в папке C:\txt-cross-dev \src и скопируйте листинг с примером, приведенный ниже:

Код: Выделить всё

#include <iostream>

int main()
{
    std::cout << ("\nHello CPP from TXT\n");
    return 0;
}
Можно использовать любой текстовый редактор, который умеет сохранять файлы в формате UTF. Я использую notepad++.


3. Выполнить компиляцию и связывание
Откройте окно командной строки и перейдите в папку c исходным файлом - C:\txt-cross-dev\src. Затем запустите компиляцию исходного файла:

Код: Выделить всё

C:\txt-cross-dev\src> С:\txt-cross-dev\bin\arm-linux-gnueabihf-g++ -o hellotxt hellotxt.cpp
Если в исходном коде нет ошибок, то после завершения работы компилятора в папке src появится исполняемый файл hellotxt.


4. Проверить наличие связи между ПК и контроллером
Подключите контроллер TXT к компьютеру кабелем USB и включите питание контроллера. После загрузки контроллера в ОС Windows появится новый сетевой интерфейс с адресом 192.168.7.1. Адрес контроллера – 192.168.7.2. Для проверки можно использовать команду ping:

Код: Выделить всё

C:\txt-cross-dev\src>ping 192.168.7.2

Pinging 192.168.7.2 with 32 bytes of data:
Reply from 192.168.7.2: bytes=32 time<1ms TTL=64
Reply from 192.168.7.2: bytes=32 time<1ms TTL=64

Статистика Ping для 192.168.7.2:
    Пакетов: отправлено = 2, получено = 2, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

5. Загрузить файл в контроллер TXT
Для загрузки файла hellotxt нам понадобится утилита SCP – она уже встроена в Windows 10.

Код: Выделить всё

C:\txt-cross-dev\src>scp hellotxt ROBOPro@192.168.7.2:C-Program/
Когда утилита запросит, пароль введите: ROBOPro


6. Подключиться к консоли через SSH
Чтобы получить доступ к консоли контроллера TXT мы будем использовать утилиту SSH. Она тоже входит в состав Windows 10:

Код: Выделить всё

C:\txt-cross-dev\src>ssh ROBOPro@192.168.7.2
ROBOPro@192.168.7.2's password:
 _____ _____     _        _
|  ___|_   _|   | |___  _| |_
| |_    | |_____| __\ \/ / __|
|  _|   | |_____| |_ >  <| |_
|_|     |_|      \__/_/\_\\__|

Welcome to FT-txt
$

7. Включить атрибут исполнения
Теперь, когда мы находимся в консоли контроллера TXT надо перейти в папку C-Program и включить атрибут исполнения для файла hellotxt:
$ cd C-Program
$ chmod u+x hellotxt


8. Запустить программу
Для запуска программы наберите:
$ ./hellotxt
Hello CPP from TXT
$


9. Отключиться от консоли
Чтобы закрыть консоль контроллера TXT используйте сочетание клавиш CTRL+D.

Таким образом, мы прошли весь путь от создания исходного файла до запуска программы на контроллере. Конечно – это был очень простой пример без какой-либо автоматизации сборки, но он дает базовое представление о последовательности действий, необходимых для сборки ПО, исполняемого на контроллере TXT с ОС Linux. Буду рад помочь с ответом, если у вас возникнут вопросы.
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Компиляция исполняемого файла C++ для контроллера TXT

Сообщение Mr.Kubikus »

Кстати, ранее я уже писал как собрать программу на С для контроллера TXT.
С уважением, Григорий
GitHub FB ВК
Ответить