Страница 14 из 19
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 23 мар 2017, 15:15
Гагарин
А как тоже самое сделать в юзерспейс компоненте? Предыдущий вариант, так понимаю, не подходит.
Вроде как есть аргументы: void userinit(int argc, char **argv){}
Как их передать из loadusr my_comp ?
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 24 мар 2017, 19:36
merkwurdigliebe
по-моему, просто так и передать:
loadusr my_comp param1 param2 param3
а в userinit() их в argv их в виде текстовых и найдете. но я не пробовал
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 24 мар 2017, 21:44
Гагарин
пробовал подобным способом. Пока не поучилось. В понедельник еще поэкспериментирую.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 25 мар 2017, 00:05
merkwurdigliebe
да вроде работает
Код: Выделить всё
dmitry@atom:~/git/usercomp$ cat argv.comp
component argv "argv test";
option userspace yes;
option userinit yes;
pin out float out;
license "GPLv2 or later";
;;
#include <unistd.h>
void userinit(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; i++)
rtapi_print_msg(RTAPI_MSG_ERR, "arg %d: %s\n", i, argv[i]);
}
void user_mainloop(void) {
while(1) {
usleep(1000);
FOR_ALL_INSTS() out = drand48();
}
}
dmitry@atom:~/git/usercomp$ halcmd loadusr argv one two three=val 4444
dmitry@atom:~/git/usercomp$ arg 0: argv
arg 1: one
arg 2: two
arg 3: three=val
arg 4: 4444
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 25 мар 2017, 15:20
Гагарин
Немного не правильно делал, значит, я )
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 27 мар 2017, 08:37
Гагарин
Попробовал. Спасибо, за пример. До этого я не просек значение аргументов: что argc - количество опций, а *argv - массив с их значениями.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 май 2017, 21:56
T00T
Вот такой вопрос. Как изменить папку, ну или указать папку в которой будут искаться include
т.е. Если записать include <...> то реально будет поиск к конкретной папке. Что если нужных библиотек там нет.
И вообще когда пишешь простое приложение и компилируешь gcc всё находиться(в другом месте). А если halcompail, то поиск в другом месте происходит.
Отличаются ли библиотеки в разных местах (может одни какие-нибудь реалтаймовские, а другие нет. Ну или как то ещё) или одинаковое назначение их?
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 май 2017, 22:32
Serg
T00T писал(а):Вот такой вопрос. Как изменить папку, ну или указать папку в которой будут искаться include
Опция компилятора "-I".
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 май 2017, 22:42
T00T
Это для halcompail, или GCC
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 май 2017, 22:46
Serg
Компилятор - это gcc. halcompile не компилятор, для компиляции он зовёт gcc.
P.S. Советую освоить gcc и до кучи make и рассмотреть Makefile'ы от других проектов - вопросов сильно поубавится...

Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 май 2017, 22:56
T00T
Но makefile halcompile создаёт сам. Как посмотреть что он создаёт, и внести изменения?
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 29 май 2017, 00:22
Serg
T00T писал(а):Как посмотреть что он создаёт
Например в его исходниках.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 30 май 2017, 23:29
T00T
Короче проблема такая - Хочу поэкспериментировать с сокетами.
Написал тестовую прогу, в ней include <sys/socket.h>
Всё компилируется и работает.
Теперь если попытаться модуль с функциями сокета собрать halcompile пишет нет такого файла( include <sys/socket.h>). Походу не там ищет.
Как понять где он ищет, просто у меня складывается впечатление что ищет он там где надо, но не находит.
Всё это дело под ubuntu 10.04
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 31 май 2017, 04:05
merkwurdigliebe
сокеты только в юзерспейсе, если это риалтайм компонент под RTAI ядром - то не получится. под RTAI был TCP/IP стек - RTNet, по-моему. но это - геморрой, там свои драйверы сетевых карт (пара штук), свои утилиты типа rtifconfig и т.п.
а вот если собрать linuxcnc под RT_PREEMPT ядро - тогда пожалуйста
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 31 май 2017, 10:12
T00T
А как тогда драйвер 7i76e и прочие, в userspice ?
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 31 май 2017, 12:59
Serg
T00T писал(а):А как тогда драйвер 7i76e и прочие
Они только под RT_PREEMPT работают.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 28 ноя 2017, 21:47
T00T
Вот возник тут вопрос. Как правильно работать с прерываниями в модулях для LinuxCNC. Какие особенности из-за того что работаем с RTAI ядром.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 29 ноя 2017, 02:13
Serg
Как и везде - максимально быстро завершать работу обработчика прерывания.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 30 ноя 2017, 00:05
T00T
Ну это конечно понятно. Решил тут поэкспериментировать с прерываниями.
Вот так объявляю функцию, и сама функция. Внутри функции прерывания пара присваиваний и больше ничего.
Код: Выделить всё
///////////REQUEST INTERRUPT//////////////////////////
retval = request_irq(pdev->irq,hand_interrupt, IRQF_SHARED, driver_NAME, st_dev);
if (retval) goto fail2;
irqreturn_t hand_interrupt (int irq, void *dev_st)
{
priv_pci_t *base_struct;
base_struct = dev_st;
if(base_struct->id == IDCODE)
{
base_struct->cnt++;
...
return IRQ_HANDLED;
}
else
return IRQ_NONE;
}
Т.к. функция маленькая, то достаточно только верхнего прерывания, нижняя часть будет в основной функции, которая вызывается раз в сервопериод.
Прерывание тоже вызывается раз в сервопериод, но может и чаще.
После подключения такого модуля всё начинает подтормаживать.
Может просто у меня комп слабый(какой то ATLON уровня пентиум3). Хотя модуль без прерываний не оказывает заметного влияния.
Просто есть функции реалтаймовские rt_irq_new() и подобные. Для чего они нужны, в чём особенность их использования?
Как с этим дела обстоят у других плат? Я так понял что прерывания нигде не используют, а используется polling. Но есть 7i76e ethernet, и тут волей неволей приём пакетов через прерывания. Получается что на такой плате тоже будет заметное снижение производительности, т.к. к ней можно и 7i77 подцепить, а там нужно постоянно опрашивать енкодеры. И поэтому тоже будет прерывание раз в сервопериод.
Re: PCI контроллер. Halcompail и драйвер.
Добавлено: 30 ноя 2017, 01:22
Serg
T00T писал(а):Но есть 7i76e ethernet, и тут волей неволей приём пакетов через прерывания.
И там тоже не используется, ибо незачем. Драйвер сетевой карты сам со всем этим справляется.