Kiryanov 0 16 апреля, 2018 Опубликовано 16 апреля, 2018 · Жалоба Добрый день всем. Народ, может кто знает? Проблема такова: Работаю под самим Linux'ом, но десктопным, на компе и безо всякой виртуалки. Нужно писать и отлаживать пользовательское ПО под встроенный Linux. Embedded Linux собран под одно из 2-х ядер, находящихся внутри чуда Zynq-7000, конкретно под плату zc706. Имеется инструмент Vivado, Xilinx SDK, но я в нем новичок. У меня опыт программирования MK с использованием RTOS, но это совсем другое, потому-что там исходники операционки и пользовательских задач собираются вместе. Также, и программировать под самой Linux на C/C++ для меня дело привычное (конкретно сейчас - работаю под Eclipse CDT в OpenSUSE). Но что такое работать под Embedded Linux - пока тайна и задача, к которой, не знаю, с какой стороны подойти. Что-то слышалось про GDB, но как настроить его и прикрутить к той же IDE Eclipse - не знаю. Помогите пожалуйста, как решить эту задачу? Еще такая же предстоит с IMX 6D (NXP), плюс еще и сборка ядра самой системы под него - а моих знаний для этого недостаточно. Расскажите пожалуйста, как победить? Подчеркну: в частности интересует работа с инструментом Eclipse (конкретно написание ПО и отладка). Заранее благодарю! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Для MOXA UC-8410 был мануал. там на таргете поднимался гдб-сервер, эклипс цеплялся к нему. Сейчас настроил Eclipse для кросс-компиляции и отладки программ на Raspberry. (я сейчас в виндах, на моксе работал в дебьяне, но принцип одинаковый). У меня опыт программирования MK с использованием RTOS, но это совсем другое, потому-что там исходники операционки и пользовательских задач собираются вместе.тоже был разрыв шаблона.... не понимал как это делается работает.... Вобщем с Linux для МК схема такая.... 1)Если есть на МК готовая сборка линукса, то переходим на шаг 3 2)Собирается OS Linux + U-Boot + FS. Полученный образ размещается в памяти таргета. Boot МК натравливается на U-Boot. При старте МК стартует загрузчик U-Boot, который загружает ядро линукса... разворачивается FS и далее на мк живет обычный линукс, как на вашем десктопе, отдельно от ваших программ. Программы запускаются динамически также, как и на вашем десктопе. Это отличие от статических RTOS (хотя и на них, при желании, можно отделить мух от котлет). 3)Линукс запускает ваше ПО. 4)Профит!!! Вам нужен тулчейн. Либо сами соберайте, либо скачайте с инета готовый. Toolchain'ы делятся на несколько типов или триплетов. Триплет обычно состоит из трёх частей: целевой процессор, vendor и OS, vendor зачастую опускается. *-none-eabi — это toolchain для компиляции проекта работающего в bare metal. *eabi — это toolchain для компиляции проекта работающего в какой-либо ОС. В моём случае, это Linux. *eabihf — это почти то же самое, что и eabi, с разницей в реализации ABI вызова функций с плавающей точкой. hf — расшифровывается как hard float. на таргете должен работать ssh на десктопе в Eclipse делается проект с++, выберается Cross GCC в свойствах проекта c/c++ build->settings->cross settings указываем префикс arm-linux-gnueabihf- и путь до папки с кросс-компиляторами. можно собирать холловорд Дебаг: теоретически..... десктоп полученный бинарник закидывает на таргет, запускает на таргете gdbserver, на десктопе arm-linux-gnueabihf-gdb цепляется к тагрету и запускает отлаживаемую программу. Далее как на десктопе. практически: в Eclipse заходим в Debug as ..., там должно в списке быть "c/c++ remote Application". Если нет, то нужно доставить какойто плуг, не помню какой. Далее.... на майне Remote Absolute File Path for c/c++ App:" пишем полный путь /home/pi/myProgDir/myProg На вкладке Debugger путь до отладчика D:\SysGCC\Raspberry\bin\arm-linux-gnueabihf-gdb.exe на таргете ставим гдб sudo apt-get install gdbserver или другим путем его ставим. Eclipse при дебаге будет удаленно запускать gdbserver на таргете. Ещё.... нужно создать коннекшин, на вкладке main в окне Debug configuration кнопка New, там выбрать ssh, ip таргета, логин пароль.... Всё! Запускаем дебаг - наслаждаемся дебагом под Eclipse. При отладке видим в консоли эклипса вывод (см скрин) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
twix 0 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Народ, может кто знает? Проблема такова: Опупеть, вопрос так вопрос. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kiryanov 0 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Спасибо вам juvf за подробный ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pat 0 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Смотрите в сторону Qt. Из QtCreator все это легко делается. Бонусом будет нормальная ИДЕ а не этот тормазнутый Еклипс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Можно и в сторону visual studio смотреть. Там тоже всё есть для этого. Кому как удобнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 18 апреля, 2018 Опубликовано 18 апреля, 2018 · Жалоба Смотрите в сторону Qt. Из QtCreator все это легко делается. Бонусом будет нормальная ИДЕ а не этот тормазнутый Еклипс. QtCreator-у ещё нужно подрасти до Eclipse. А что касается тормознутости - так это как любое жаваприложение - старт чуть подольше, а работа без каких-либо тормозов. Тем более автор знает еклипс. В одной ИДЭ и проекты для bare metal/RTOS на МК, и проекты для Linux. ps Раньше был плуг Qt для Eclipse, сейчас нет. Плохо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 3 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Еще такая же предстоит с IMX 6D (NXP), плюс еще и сборка ядра самой системы под него - а моих знаний для этого недостаточно. Расскажите пожалуйста, как победить? Подчеркну: в частности интересует работа с инструментом Eclipse (конкретно написание ПО и отладка). Заранее благодарю! Начните с того, что у представителя NXP скачайте с сайта образ для Линукса. Насколько мне известно они Yocto используют. Это такая система, которой вы можете модифицировать конфигурацию, а потом ваш компьютер долго работает и выдает вам образ диска для установки навстроеный Линукс. Мне джавовские IDE не нравятся (Eclipse QT creator). Я ими не пользуюсь. Это совсем не обязательно. Да и жалко тратить на их изучение время. Изучайте лучше кросскомпиляцию, git, Linux API, gdb, ddd. На работе все пользуются QT creator, но я обхожусь vim, grep, a компилируем скриптом, дебагируем gdbgui. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kiryanov 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба Вам нужен тулчейн. Либо сами соберайте, либо скачайте с инета готовый. Возможно проявлю невежество: не совсем понимаю какой и как сделать на таргете должен работать ssh Он работает, еще поставлен tcf-client для работы через Xilinx SDK (входит в пакет программ Vivado, собрана на том же Eclipse). Debug в среде Xilinx SDK запускается только под Windows. Под LInux не удалось пока. на десктопе в Eclipse делается проект с++, выберается Cross GCC в свойствах проекта c/c++ build->settings->cross settings указываем префикс arm-linux-gnueabihf- и путь до папки с кросс-компиляторами. можно собирать холловорд Собрать под обычным Eclipse (Oxygen.3 Release (4.7.3RC3)) таким образом так и не удалось. С помощью YaST поставил несколько инструментов: cross-armv6hl-gcc48-icecream-backend cross-armv7hl-gcc48-icecream-backend cross-arm-binutils В поле Properties->Settings->CrossSettings->Prefix вбил arm-linux-gnueabinf-, с помощью grep -r искал arm-linux-gnueabi* - пока не врубился какой путь до компилятора вбить. В общем так ничего и не заработало. Ругается что не может найти arm-linux-gnueabinf-g++ (command not found). Каким образом и какие нужно поставить компиляторы? Помогите пожалуйста новичку настроить Eclipse. Еще: совершенно не понимаю разницу в их версиях; Oxygen, Luna, Mars и пр. Какая для работы нужна версия? Можно с любой работать или с какой-то конкретной? При отладке C/C++ программ для десктопников, между Oxygen и Luna не увидел никакой разницы. Дебаг: теоретически..... десктоп полученный бинарник закидывает на таргет, запускает на таргете gdbserver, на десктопе arm-linux-gnueabihf-gdb цепляется к тагрету и запускает отлаживаемую программу. Далее как на десктопе. до этого пока не добрался QtCreator-у ещё нужно подрасти до Eclipse. А что касается тормознутости - так это как любое жаваприложение - старт чуть подольше, а работа без каких-либо тормозов. Тем более автор знает еклипс. В одной ИДЭ и проекты для bare metal/RTOS на МК, и проекты для Linux. ps Раньше был плуг Qt для Eclipse, сейчас нет. Плохо. С этим согласен. Я в Qt-Creator'е работал долго, но очень не удобная отладка, невозможно просмотреть динамические массивы (динамически выделенную память) и прочие проблемы при отладке. Eclipse намного удобнее. Изменено 24 апреля, 2018 пользователем transf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба не совсем понимаю какой и как сделатьможет тогда не стоит браться за это? Какой именно тулчейн - не подскажу, возможно любой для кортекса-а9. Собирают тулчейн из исходников с gcc.gnu.org, но забудьте про это, по крайне мере сейчас. Ищите готовый компилятор. Возможно поиск подскажет Первая ссылка The Xilinx Software Development Kit (SDK) provides a complete environment for creating software applications targeted for Xilinx embedded processors. It includes a GNU-based compiler toolchain (GCC compiler, GDB debugger, utilities, and librarie s), JTAG debugger, flash programmer, drivers for Xilinx IPs, bare-metal software, middleware libraries for application-specific functions, and an IDE for C/C++ bare-metal and Linux application developm ent and debugging. Based upon the open source Eclipse platform, SDK incorporates th e C/C++ Development Toolkit (CDT) уже всё украдено Oxygen, Luna, Mars - внешне одно и тоже. Работайте в кислороде, под марс могут каиенибудь плуги не заработать. В поле Properties->Settings->CrossSettings->Prefix вбил arm-linux-gnueabinf-, с помощью grep -r искал arm-linux-gnueabi* - пока не врубился какой путь до компилятора вбить. В общем так ничего и не заработало. Ругается что не может найти arm-linux-gnueabinf-g++ (command not found). Каким образом и какие нужно поставить компиляторы? есть пакет компиляторов gcc, g++, gbd, c++. Есть тулчейн arm-linux-gnueabinf, в него входят компиляторы arm-linux-gnueabinf-gcc, arm-linux-gnueabinf-g++, arm-linux-gnueabinf-c++. Что толку ставить префикс arm-linux-gnueabinf и искать arm-linux-gnueabinf-g++, если вы поставили тулчейн cross-armv6hl-gcc48-icecream-backend? Смотрите какие компиляторы установил этот пакет, какой у них префикс и где они расположились. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 27 апреля, 2018 Опубликовано 27 апреля, 2018 · Жалоба Почему никто не подсказал про "Debian ARM bootstrap" (который можно в QEMU повертеть), BuildRoot, OpenEmbedded/Yocto и прочие? Допустим, автор темы соберет простое приложение тулчейном. Дальше пойдет что-то сложнее - тогда что? Как автор будет библиотеки цеплять? Мой путь такой - сначала на целевую плату ставим Debian ARM. Отлаживаем приложение, будь то принтингом через ssh, будь то удаленным GDB-сервером. т.е. работаем как с обычным Linux "без монитора", просто собираем софт на целевой плате (потому что там ARM) либо в QEMU ARM (установив в него тот же Debian ARM bootstrap). Когда разработка завершена - засовываем в BuildRoot/OE/Yocto. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 27 апреля, 2018 Опубликовано 27 апреля, 2018 · Жалоба Допустим, автор темы соберет простое приложение тулчейном. Дальше пойдет что-то сложнее - тогда что?Тогда нажимем кнопку Debug в Eclipse, прога загрузиться на таргет и запуститься. Как автор будет библиотеки цеплять?Хоть статически, хоть динамически. Стандартные есть в составе тулчейна. Особые библиотеки можно отдельно на десктопе кросс-компилятором собрать, можно перетянуть. Я перетянул линуксовые библиотеки из таргета на виндовый десктоп, подключил их к проекту - профит!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 28 апреля, 2018 Опубликовано 28 апреля, 2018 · Жалоба Я перетянул линуксовые библиотеки из таргета на виндовый десктоп, подключил их к проекту - профит!!! Хорошо, не возражаю. Такое можно для достаточно примитивных проектов. На время разработки можно и вот так тяп ляп. Но когда автор темы дойдет до стадии "в продакшен" или проекты станут посерьезнее - тогда нужно будет учиться "как правильно" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 28 апреля, 2018 Опубликовано 28 апреля, 2018 · Жалоба Хорошо, не возражаю. Такое можно для достаточно примитивных проектов. На время разработки можно и вот так тяп ляп. Но когда автор темы дойдет до стадии "в продакшен" или проекты станут посерьезнее - тогда нужно будет учиться "как правильно" :) А чем этот вариант не правильный? Собираю бинарник кросскомпилятором с динамической линковкой. Собираю из бинарника пакет без всяких либ (а можно и с либами, если на таргете инета не будет), только мой бинарь. При установке линукс сам подтянет зависимсти. Правильно как раз - это кросс-компиляция. Ваши средства сборки могут не поместиться на таргете. Для openWrt свой пакет и нужные либы добавлял в сборку линукса. Всё делал на десктопе (отладку проги, компиляцию проги, сборку образа линукс). На выходе образ с моей прогой и нужными либами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 8 мая, 2018 Опубликовано 8 мая, 2018 · Жалоба А чем этот вариант не правильный? Собираю бинарник кросскомпилятором с динамической линковкой. Собираю из бинарника пакет без всяких либ (а можно и с либами, если на таргете инета не будет), только мой бинарь. При установке линукс сам подтянет зависимсти. Правильно как раз - это кросс-компиляция. Ваши средства сборки могут не поместиться на таргете Что значит "сборка на таргете"? Там можно NFS или большую SD карту временно задействовать. Кроме того, BuilRoot/OE/Y это и есть кросскомпиляция. Ваш рабочий вариант, но корявый и тоже требует много возни. Пакет без либ это как раз нормально, но сами либы то откуда чудесно возникнут на момент сборки? Правильно, в QEMU/ARM+proot. Не, я понимаю Ваш способ, я даже знаю некоторые так делают - и я так делал когда надо быстро тяп ляп. Но это не есть идеальный Embedded-way. Вот такие системы типа Yocto/OpenEmbedded/BuildRoot предлагают путь создания компактных прошивок со всеми необходимыми build-time и run-time компонентами. Я не настаиваю, главное чтобы автор темы был в курсе про варианты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться