Управляем чем угодно откуда угодно

Pins SDK

Обсуждение линуксовой части и софта на борту виртурилки

Re: Pins SDK

Сообщение Mirmik » 28 сен 2013, 19:07

Mirmik писал(а):
andrewion писал(а):хм... что-то тут не так с константами, не совсем корректно работает у меня


И я о том же... У меня так 57000 верхний предел стоит... (нижний - 13000)
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Pins SDK

Сообщение phoenix367 » 28 сен 2013, 23:31

andrewion писал(а):Добрый день!

Было бы очень круто, если бы у вас в SDK была бы возможность управлять сервой как в ардуино. А то сейчас сижу и курю вики (http://wiki.virt2real.ru/wiki/PPM) как расчитать эти тики и дути так, чтобы можно было бы управлять сервой в градусах, а не магическими заклинаниями формул из вики :D


Попробовал добавить такую поддержку в SDK. Сервы у меня пока нет, зато есть осциллограф. На нем вроде правильно все показывает, но хорошо, если кто-то на реальном приводе проверит. Константы по умолчанию взяты из wiki. Если с ними неправильно будет работать, то можно установить другие через функции setMinDuty и setMaxDuty класса ServoRotator.

Также добавлена конфигурация для GDB, позволяющая проводить полноценную удаленную отладку на виртурилке из NetBeans или непосредственно в GDB. Если кому интересно, то могу более подробно процесс описать.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Pins SDK

Сообщение scayn » 29 сен 2013, 11:40

phoenix367 писал(а):Также добавлена конфигурация для GDB, позволяющая проводить полноценную удаленную отладку на виртурилке из NetBeans или непосредственно в GDB. Если кому интересно, то могу более подробно процесс описать.

Конечно интересно! Еще одно пожелание - комментарии в исходниках к сдк.
Аватара пользователя
scayn
 
Сообщения: 27
Зарегистрирован: 16 сен 2013, 16:14

Re: Pins SDK

Сообщение phoenix367 » 30 сен 2013, 22:34

Комментарии подписал и выложил новую версию на гитхаб.

А по поводу отладки тут ситуация следующая. Во-первых необходимо собрать прошивку с поддержкой gdbserver. Данное приложение доступно разделе конфиграции пакетов ФС "Debugging, profiling and benchmark". После этого собираем прошивку обычным образом.

Для того, чтобы начать удаленную отладку приложения необходимо сделать следующее:
1. Залить программу на виртурилку. Для заливки SDK я, например, использую простенький скрипт

Код: Выделить всё
#!/bin/sh

echo 'Upload ppmdemo application...'
sshpass -p 'root' scp ~/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo root@192.168.3.2:~/

echo 'Upload pincontroller library...'
sshpass -p 'root' scp ~/NetBeansProjects/v2rpins_sdk/pincontroller/dist/Debug/V2R-Linux-x86/libpincontroller.so root@192.168.3.2:/usr/lib/


В качестве IP адреса здесь надо указать рабочий адрес, на котором висит виртурилка.

2. Далее заходим по ssh на виртурилку и выполняем команду
Код: Выделить всё
gdbserver :10060 <имя_отлаживаемого_приложения>

Здесь 10060 - номер порта, который слушает gdbserver. В данной команде сервер слушает порт 10060 на всех поднятых интерфейсах. Если вы хотите, чтобы сервер работал с каким-то конкретным сетевым интерфейсов, то перед номером порта пишете соответствующий IP-адрес.

Например, если мы хотим отлаживать приложение ppmdemo из v2r pins sdk, то запускаем следующую команду
Код: Выделить всё
gdbserver :10060 ppmdemo

Здесь надо оговориться, что все отлаживаемые файлы должны содержать в себе отладочную информацию, а оптимизация машинного кода при сборке должна быть отключена.

3. Здесь последовательность действий разветвляется. Отладку можно вести с удаленного компьютера как непосредственно с помощью gdb, так и из среды разработки (будем рассматривать NetBeans).
3.1. Отладка в IDE NetBeans.
3.1.1 При отладке из netbeans в файле .gdbinit необходимо прописать следующее:
Код: Выделить всё
set sysroot remote:/

Эта команда скажет отладчику, что все необходимые для работы файлы ему нужно искать на удаленной машине. Это создает определенные тормоза. Для ускорения работы можно сделать копию раздела rootfs ФС карточки с прошивкой и вместо remote:/ прописать путь к папке с копией. Если вы будете отлаживать пример из SDK, то ничего делать не надо. Нужный файл .gdbinit уже прописан в проектной конфигурации.

3.1.2 Устанавливаем плагин Gdbserver, выбрав в NetBeans меню Tools->Plugin и далее ставим соответствующий плагин.
3.1.3 После установки заходим в меню Debugger->Attach Debugger. И в открывшемся окне выбираем:
Debugger: gdbserver
Target: remote <IP-адрес виртурилки>:<номер порта gdbserver>
Project: <проект, который хотите отлаживать>

На картинке приведен пример настроек
Изображение

Далее жмете OK. Все, отладка началась. Если все сделали правильно, то можно будет проходить программу по шагам, ставить точки останова и т.д. Стоит иметь в виду, что отлаживаемый проект должен быть исполняемым файлом, а не библиотекой, иначе точки останова не сработают.

3.2 В случае, если вы отлаживаете программу непосредственно в gdb, то все немного сложнее. Во-первых, предпочтительнее использовать отладчик из Codesourcery, поскольку их компилятором собираются программы для виртурилки. Он называется arm-none-linux-gnueabi-gdb. Обычный gdb, скорее всего нормально работать не будет.

3.2.1 Также как и в п. 3.1.3 запускаем gdbserver на виртурилке
3.2.2 Запускаем arm-none-linux-gnueabi-gdb следующим образом:

Код: Выделить всё
arm-none-linux-gnueabi-gdb <путь к локальному исполняемому файлу>

Далее в консоли GDB набираем команды
set sysroot remote:/
target remote <адрес gdbserver>:<порт>


Например вывод при отладке примера из SDK будет выглядеть следующим образом:
Код: Выделить всё
ivan@ivan-desktop:~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin$ ./arm-none-linux-gnueabi-gdb ~/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo
GNU gdb (Sourcery CodeBench Lite 2013.05-24) 7.4.50.20120716-cvs
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi".
For bug reporting instructions, please see:
<https://sourcery.mentor.com/GNUToolchain/>...
Reading symbols from /home/ivan/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo...done.
(gdb) set sysroot remote:/
(gdb) target remote 192.168.3.2:10060
Remote debugging using 192.168.3.2:10060
Reading symbols from remote:/lib/ld-linux.so.3...(no debugging symbols found)...done.
Loaded symbols for remote:/lib/ld-linux.so.3
0x76fd7e30 in ?? () from remote:/lib/ld-linux.so.3
(gdb)


Далее можно спокойно отлаживать программу уже в gdb.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Pins SDK

Сообщение vladru » 01 окт 2013, 01:37

Большой респект за инструкцию по работе с отладчиком и Pins SDK. Полагаю что всем кто займется разработкой на си для v2r это очень пригодиться. Хороший пример - грамотный подход.

phoenix367 писал(а):А по поводу отладки тут ситуация следующая. Во-первых необходимо собрать прошивку с поддержкой gdbserver. Данное приложение доступно разделе конфиграции пакетов ФС "Debugging, profiling and benchmark". После этого собираем прошивку обычным образом.


А где на форуме/wiki почитать о сборке прошивки "обычным образом"... это речь об установке bildroot ??
vladru
 
Сообщения: 7
Зарегистрирован: 16 сен 2013, 09:36

Re: Pins SDK

Сообщение phoenix367 » 01 окт 2013, 11:28

Тут имеется ввиду выполнение инструкций из wiki http://wiki.virt2real.ru/wiki/%D0%A3%D1 ... t2real_SDK, ничего более.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Pins SDK

Сообщение phoenix367 » 05 окт 2013, 22:14

Добавил API для чтения данных со встроенного АЦП. Теперь можно читать данные из АЦП как в виде двоичных значений, так и приведенные к значению входного напряжения.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Pins SDK

Сообщение Alyoha » 19 окт 2013, 19:03

При выполнении в х64
bash arm-2013.05-24-arm-none-linux-gnueabi.bin
пишет ошибку
Error: Missing 32-bit libraries on 64-bit Linux host
Alyoha
 
Сообщения: 51
Зарегистрирован: 01 окт 2013, 04:42

Re: Pins SDK

Сообщение dimonix » 19 окт 2013, 19:43

уже даже в wiki есть
Код: Выделить всё
sudo apt-get install libc6-i386
dimonix
 
Сообщения: 35
Зарегистрирован: 07 сен 2013, 14:54

Re: Pins SDK

Сообщение Dima4K » 25 ноя 2013, 11:46

phoenix367 писал(а):Комментарии подписал и выложил новую версию на гитхаб.

А по поводу отладки тут ситуация следующая. Во-первых необходимо собрать прошивку с поддержкой gdbserver. Данное приложение доступно разделе конфиграции пакетов ФС "Debugging, profiling and benchmark". После этого собираем прошивку обычным образом.

Для того, чтобы начать удаленную отладку приложения необходимо сделать следующее:
1. Залить программу на виртурилку. Для заливки SDK я, например, использую простенький скрипт

Код: Выделить всё
#!/bin/sh

echo 'Upload ppmdemo application...'
sshpass -p 'root' scp ~/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo root@192.168.3.2:~/

echo 'Upload pincontroller library...'
sshpass -p 'root' scp ~/NetBeansProjects/v2rpins_sdk/pincontroller/dist/Debug/V2R-Linux-x86/libpincontroller.so root@192.168.3.2:/usr/lib/


В качестве IP адреса здесь надо указать рабочий адрес, на котором висит виртурилка.

2. Далее заходим по ssh на виртурилку и выполняем команду
Код: Выделить всё
gdbserver :10060 <имя_отлаживаемого_приложения>

Здесь 10060 - номер порта, который слушает gdbserver. В данной команде сервер слушает порт 10060 на всех поднятых интерфейсах. Если вы хотите, чтобы сервер работал с каким-то конкретным сетевым интерфейсов, то перед номером порта пишете соответствующий IP-адрес.

Например, если мы хотим отлаживать приложение ppmdemo из v2r pins sdk, то запускаем следующую команду
Код: Выделить всё
gdbserver :10060 ppmdemo

Здесь надо оговориться, что все отлаживаемые файлы должны содержать в себе отладочную информацию, а оптимизация машинного кода при сборке должна быть отключена.

3. Здесь последовательность действий разветвляется. Отладку можно вести с удаленного компьютера как непосредственно с помощью gdb, так и из среды разработки (будем рассматривать NetBeans).
3.1. Отладка в IDE NetBeans.
3.1.1 При отладке из netbeans в файле .gdbinit необходимо прописать следующее:
Код: Выделить всё
set sysroot remote:/

Эта команда скажет отладчику, что все необходимые для работы файлы ему нужно искать на удаленной машине. Это создает определенные тормоза. Для ускорения работы можно сделать копию раздела rootfs ФС карточки с прошивкой и вместо remote:/ прописать путь к папке с копией. Если вы будете отлаживать пример из SDK, то ничего делать не надо. Нужный файл .gdbinit уже прописан в проектной конфигурации.

3.1.2 Устанавливаем плагин Gdbserver, выбрав в NetBeans меню Tools->Plugin и далее ставим соответствующий плагин.
3.1.3 После установки заходим в меню Debugger->Attach Debugger. И в открывшемся окне выбираем:
Debugger: gdbserver
Target: remote <IP-адрес виртурилки>:<номер порта gdbserver>
Project: <проект, который хотите отлаживать>

На картинке приведен пример настроек
Изображение

Далее жмете OK. Все, отладка началась. Если все сделали правильно, то можно будет проходить программу по шагам, ставить точки останова и т.д. Стоит иметь в виду, что отлаживаемый проект должен быть исполняемым файлом, а не библиотекой, иначе точки останова не сработают.

3.2 В случае, если вы отлаживаете программу непосредственно в gdb, то все немного сложнее. Во-первых, предпочтительнее использовать отладчик из Codesourcery, поскольку их компилятором собираются программы для виртурилки. Он называется arm-none-linux-gnueabi-gdb. Обычный gdb, скорее всего нормально работать не будет.

3.2.1 Также как и в п. 3.1.3 запускаем gdbserver на виртурилке
3.2.2 Запускаем arm-none-linux-gnueabi-gdb следующим образом:

Код: Выделить всё
arm-none-linux-gnueabi-gdb <путь к локальному исполняемому файлу>

Далее в консоли GDB набираем команды
set sysroot remote:/
target remote <адрес gdbserver>:<порт>


Например вывод при отладке примера из SDK будет выглядеть следующим образом:
Код: Выделить всё
ivan@ivan-desktop:~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin$ ./arm-none-linux-gnueabi-gdb ~/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo
GNU gdb (Sourcery CodeBench Lite 2013.05-24) 7.4.50.20120716-cvs
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi".
For bug reporting instructions, please see:
<https://sourcery.mentor.com/GNUToolchain/>...
Reading symbols from /home/ivan/NetBeansProjects/v2rpins_sdk/PpmDemo/dist/Debug/V2R-Linux-x86/ppmdemo...done.
(gdb) set sysroot remote:/
(gdb) target remote 192.168.3.2:10060
Remote debugging using 192.168.3.2:10060
Reading symbols from remote:/lib/ld-linux.so.3...(no debugging symbols found)...done.
Loaded symbols for remote:/lib/ld-linux.so.3
0x76fd7e30 in ?? () from remote:/lib/ld-linux.so.3
(gdb)


Далее можно спокойно отлаживать программу уже в gdb.


Все работает за исключением удаленной отладки
У меня вот такой скриншот
Изображение
Нет возможности выбрать порт отличный от 22 и ничего не находит. ssh работает.
Dima4K
 
Сообщения: 13
Зарегистрирован: 17 сен 2013, 13:31

Пред.След.

Вернуться в Софт на виртурилке - SDK, Linux, Github, программирование (C/C++ и др.)

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1

cron