реклама на сайте
подробности

 
 
> Написание и отладка пользовательской программы под Embedded Linux. Как стартануть?, Не могу понять, с чего начать и как сделать
transf
сообщение Apr 16 2018, 18:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 5-04-09
Пользователь №: 47 192



Добрый день всем.
Народ, может кто знает? Проблема такова:
Работаю под самим 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 (конкретно написание ПО и отладка). Заранее благодарю!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AVR
сообщение Apr 27 2018, 10:42
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Почему никто не подсказал про "Debian ARM bootstrap" (который можно в QEMU повертеть), BuildRoot, OpenEmbedded/Yocto и прочие? Допустим, автор темы соберет простое приложение тулчейном. Дальше пойдет что-то сложнее - тогда что? Как автор будет библиотеки цеплять?

Мой путь такой - сначала на целевую плату ставим Debian ARM. Отлаживаем приложение, будь то принтингом через ssh, будь то удаленным GDB-сервером. т.е. работаем как с обычным Linux "без монитора", просто собираем софт на целевой плате (потому что там ARM) либо в QEMU ARM (установив в него тот же Debian ARM bootstrap). Когда разработка завершена - засовываем в BuildRoot/OE/Yocto.


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 27 2018, 14:13
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AVR @ Apr 27 2018, 15:42) *
Допустим, автор темы соберет простое приложение тулчейном. Дальше пойдет что-то сложнее - тогда что?
Тогда нажимем кнопку Debug в Eclipse, прога загрузиться на таргет и запуститься.
Цитата
Как автор будет библиотеки цеплять?
Хоть статически, хоть динамически. Стандартные есть в составе тулчейна. Особые библиотеки можно отдельно на десктопе кросс-компилятором собрать, можно перетянуть. Я перетянул линуксовые библиотеки из таргета на виндовый десктоп, подключил их к проекту - профит!!!
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 28 2018, 05:48
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(juvf @ Apr 27 2018, 17:13) *
Я перетянул линуксовые библиотеки из таргета на виндовый десктоп, подключил их к проекту - профит!!!

Хорошо, не возражаю. Такое можно для достаточно примитивных проектов. На время разработки можно и вот так тяп ляп. Но когда автор темы дойдет до стадии "в продакшен" или проекты станут посерьезнее - тогда нужно будет учиться "как правильно" sm.gif


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 28 2018, 12:27
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AVR @ Apr 28 2018, 10:48) *
Хорошо, не возражаю. Такое можно для достаточно примитивных проектов. На время разработки можно и вот так тяп ляп. Но когда автор темы дойдет до стадии "в продакшен" или проекты станут посерьезнее - тогда нужно будет учиться "как правильно" sm.gif

А чем этот вариант не правильный? Собираю бинарник кросскомпилятором с динамической линковкой. Собираю из бинарника пакет без всяких либ (а можно и с либами, если на таргете инета не будет), только мой бинарь. При установке линукс сам подтянет зависимсти. Правильно как раз - это кросс-компиляция. Ваши средства сборки могут не поместиться на таргете.

Для openWrt свой пакет и нужные либы добавлял в сборку линукса. Всё делал на десктопе (отладку проги, компиляцию проги, сборку образа линукс). На выходе образ с моей прогой и нужными либами.
Go to the top of the page
 
+Quote Post
AVR
сообщение May 8 2018, 08:16
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(juvf @ Apr 28 2018, 15:27) *
А чем этот вариант не правильный? Собираю бинарник кросскомпилятором с динамической линковкой. Собираю из бинарника пакет без всяких либ (а можно и с либами, если на таргете инета не будет), только мой бинарь. При установке линукс сам подтянет зависимсти. Правильно как раз - это кросс-компиляция. Ваши средства сборки могут не поместиться на таргете

Что значит "сборка на таргете"? Там можно NFS или большую SD карту временно задействовать. Кроме того, BuilRoot/OE/Y это и есть кросскомпиляция. Ваш рабочий вариант, но корявый и тоже требует много возни. Пакет без либ это как раз нормально, но сами либы то откуда чудесно возникнут на момент сборки? Правильно, в QEMU/ARM+proot. Не, я понимаю Ваш способ, я даже знаю некоторые так делают - и я так делал когда надо быстро тяп ляп. Но это не есть идеальный Embedded-way. Вот такие системы типа Yocto/OpenEmbedded/BuildRoot предлагают путь создания компактных прошивок со всеми необходимыми build-time и run-time компонентами. Я не настаиваю, главное чтобы автор темы был в курсе про варианты.


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 10:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01911 секунд с 7
ELECTRONIX ©2004-2016