Эта статья рассчитана прежде всего на то, чтобы сэкономить время при создании тулкита, но при этом я постараюсь рассказать все достаточно объемно.
Первое — это SDK для платы, которое можно скачать на официальном сайте Toradex.
Второе — нам нужен хост с Ubuntu 16.04 LTS.
Третье — непосредственно Eclipse для C/C++.
Важно: устанавливать его лучше по дефолтному пути, во избежания разного рода багов.
После установки SDK у нас появится возможность запустить скрипт, для автоматической интеграции переменных:
Примечание: каждый раз, когда вы открываете новый терминал — необходимо снова запускать скрипт.
1. Для работы Eclipse необходима Java, установим ее:
2. Перейдем в каталог в котором у нас находится Eclipse и распакуем его:
3. Перейдем в каталог Eclipse:
4. Экспортируем переменные и запускаем Eclipse:
На этом установка завершена.
1. Установим необходимые пакеты:
2. Перейдем в Help->Eclipse Marketplace
3. Найдем и установим pkg-config
После этого необходимо перезапустить Eclipse.
4. Перейдем в Property-->C/C++ Build-->Settings-->«pkg-config»
5. Найдем GTK и отметим его галочкой.
Так же, рекомендую, для того чтобы быстрее и лучше работать с интерфейсом — установить Glade.
Перед запуском Eclipse не забываем интегрировать переменные:
1. Создаем новый проект C++:
2. Переходим в свойства проекта:
3. Переходим в C/C++ Build --> Settings
4. Теперь нам необходимо передать Eclipse переменные, по примеру:
Для Cross GCC Compiler это:
Для Cross GCC Compiler --> Miscellaneous это:
Для Cross G++ Compiler это:
Для Cross G++ Compiler --> Miscellaneous это:
Для Cross G++ Linker это:
Для Cross G++ Linker --> Miscellaneous это:
Для Cross GCC Assembler это:
Всё, теперь можно создать проект, скомпилировать и протестировать его на ПЛК.
Спасибо за внимание, удачи в разработке.
Описание оценочной платы
Плата составлена на базе двухъядерного процессора «NVIDIA Tegra Cortex-A9».
Может работать на Windows CE 7.0* и Linux.
RAM: 512MB
Полные характеристики доступны по ссылке.
*Должен предупредить — я не рекомендую WinCE7.0 в качестве ОС для данной платы, если принципиальным для разработки является C++, т.к toolkit лично мне собрать было не просто. Исключение — если ваше приложение является консольным, тогда проблем возникнуть не должно. CoDeSys и C# — проблем не вызывают.
Может работать на Windows CE 7.0* и Linux.
RAM: 512MB
Полные характеристики доступны по ссылке.
*Должен предупредить — я не рекомендую WinCE7.0 в качестве ОС для данной платы, если принципиальным для разработки является C++, т.к toolkit лично мне собрать было не просто. Исключение — если ваше приложение является консольным, тогда проблем возникнуть не должно. CoDeSys и C# — проблем не вызывают.
Внешний вид платы



Содержание
- Скачать все необходимое
- Установка SDK
- Проверка SDK
- Установка Eclipse
- Подключение GTK к Eclipse
- Настройка проекта Eclipse
- Результат
Скачаем все необходимое:
Первое — это SDK для платы, которое можно скачать на официальном сайте Toradex.
Второе — нам нужен хост с Ubuntu 16.04 LTS.
Третье — непосредственно Eclipse для C/C++.
Установка SDK:
Важно: устанавливать его лучше по дефолтному пути, во избежания разного рода багов.
mon@mon:~$ cd /Downloads/SDK mon@mon:~$ chmod +x angstrom-glibc-x86_64-armv7at2hf-vfp-v2017.12-toolchain.sh mon@mon:~$ ./angstrom-glibc-x86_64-armv7at2hf-vfp-v2017.12-toolchain.sh Angstrom SDK installer version nodistro.0 ========================================= Enter target directory for SDK (default: /usr/local/oecore-x86_64): You are about to install the SDK to "/usr/local/oecore-x86_64". Proceed[Y/n]? y
После установки SDK у нас появится возможность запустить скрипт, для автоматической интеграции переменных:
. /usr/local/oecore-x86_64/environment-setup-armv7at2hf-vfp-angstrom-linux-gnueabi
Примечание: каждый раз, когда вы открываете новый терминал — необходимо снова запускать скрипт.
Необязательный шаг
1. Изменим оболочку Ubuntu с dash на bash:
2. Создадим файл FirstTest.c, cо следующим содержимым:
3. Компилируем:
4. Любым способом сбросим на ПЛК и запустим:
Проверка SDK
1. Изменим оболочку Ubuntu с dash на bash:
sudo update-alternatives --install /bin/sh sh /bin/bash 100
2. Создадим файл FirstTest.c, cо следующим содержимым:
#include <stdio.h> int main(int argc, char *argv[]){ printf("Hello world!!!\n"); return 0; }
3. Компилируем:
${CC} -Wall FirstTest.c -o FirstTest
4. Любым способом сбросим на ПЛК и запустим:
Скриншот
Похоже, что все в порядке.
Похоже, что все в порядке.Установка Eclipse
1. Для работы Eclipse необходима Java, установим ее:
sudo apt-get update sudo apt-get install default-jre
2. Перейдем в каталог в котором у нас находится Eclipse и распакуем его:
cd ~ mkdir -p ~/eclipse/neon-3 tar xf ~/Downloads/eclipse-cpp-neon-3-linux-gtk-x86_64.tar.gz -C ~/eclipse/neon-3/
3. Перейдем в каталог Eclipse:
cd ~/eclipse/neon-3/eclipse
4. Экспортируем переменные и запускаем Eclipse:
. /usr/local/oecore-x86_64/environment-setup-armv7at2hf-vfp-angstrom-linux-gnueabi ./eclipse
На этом установка завершена.
Подключение и настройка GTK в Eclipse
1. Установим необходимые пакеты:
sudo apt-get install libgtk-3-dev gdb eclipse-cdt build-essential cmake git pkg-config
2. Перейдем в Help->Eclipse Marketplace
Скриншот

3. Найдем и установим pkg-config
Скриншот

После этого необходимо перезапустить Eclipse.
4. Перейдем в Property-->C/C++ Build-->Settings-->«pkg-config»
Скриншот

5. Найдем GTK и отметим его галочкой.
Скриншот

Так же, рекомендую, для того чтобы быстрее и лучше работать с интерфейсом — установить Glade.
sudo apt-get install glade-gnome
Настройка проекта Eclipse:
Перед запуском Eclipse не забываем интегрировать переменные:
. /usr/local/oecore-x86_64/environment-setup-armv7at2hf-vfp-angstrom-linux-gnueabi
1. Создаем новый проект C++:
Скриншот

2. Переходим в свойства проекта:
Cкриншот

3. Переходим в C/C++ Build --> Settings
Cкриншот

4. Теперь нам необходимо передать Eclipse переменные, по примеру:
Cкриншот

Для Cross GCC Compiler это:
${CC}
Для Cross GCC Compiler --> Miscellaneous это:
${CFLAGS} -c
Для Cross G++ Compiler это:
${CC}
Для Cross G++ Compiler --> Miscellaneous это:
${CFLAGS} -c
Для Cross G++ Linker это:
${CXX}
Для Cross G++ Linker --> Miscellaneous это:
${LDFLAGS}
Для Cross GCC Assembler это:
${AS}
Всё, теперь можно создать проект, скомпилировать и протестировать его на ПЛК.
Результат
Код
#include <gtk/gtk.h> static void print_hello (GtkWidget *widget, gpointer data) { g_print ("Hello World\n"); } static void activate (GtkApplication *app, gpointer user_data) { GtkWidget *window; GtkWidget *button; GtkWidget *button_box; window = gtk_application_window_new (app); gtk_window_set_title (GTK_WINDOW (window), "Window"); gtk_window_set_default_size (GTK_WINDOW (window), 400, 400); button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_container_add (GTK_CONTAINER (window), button_box); button = gtk_button_new_with_label ("Hello World"); g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); gtk_container_add (GTK_CONTAINER (button_box), button); gtk_widget_show_all (window); } int main (int argc, char **argv) { GtkApplication *app; int status; app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; }
Скриншот

Спасибо за внимание, удачи в разработке.
