PCI контроллер. Halcompail и драйвер.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Re: PCI контроллер. Halcompail и драйвер.

Сообщение Гагарин » 23 мар 2017, 15:15

А как тоже самое сделать в юзерспейс компоненте? Предыдущий вариант, так понимаю, не подходит.
Вроде как есть аргументы: void userinit(int argc, char **argv){}
Как их передать из loadusr my_comp ?
Гагарин
Опытный
 
Сообщения: 116
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 11
Настоящее имя: Юрий

Re: PCI контроллер. Halcompail и драйвер.

Сообщение merkwurdigliebe » 24 мар 2017, 19:36

по-моему, просто так и передать:

loadusr my_comp param1 param2 param3

а в userinit() их в argv их в виде текстовых и найдете. но я не пробовал
Последний раз редактировалось merkwurdigliebe 24 мар 2017, 23:46, всего редактировалось 1 раз.
merkwurdigliebe
Мастер
 
Сообщения: 202
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 144

Re: PCI контроллер. Halcompail и драйвер.

Сообщение Гагарин » 24 мар 2017, 21:44

пробовал подобным способом. Пока не поучилось. В понедельник еще поэкспериментирую.
Гагарин
Опытный
 
Сообщения: 116
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 11
Настоящее имя: Юрий

Re: PCI контроллер. Halcompail и драйвер.

Сообщение merkwurdigliebe » 25 мар 2017, 00:05

да вроде работает

Код: Выделить всёРазвернуть
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
merkwurdigliebe
Мастер
 
Сообщения: 202
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 144

Re: PCI контроллер. Halcompail и драйвер.

Сообщение Гагарин » 25 мар 2017, 15:20

Немного не правильно делал, значит, я )
Гагарин
Опытный
 
Сообщения: 116
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 11
Настоящее имя: Юрий

Re: PCI контроллер. Halcompail и драйвер.

Сообщение Гагарин » 27 мар 2017, 08:37

Попробовал. Спасибо, за пример. До этого я не просек значение аргументов: что argc - количество опций, а *argv - массив с их значениями.
Гагарин
Опытный
 
Сообщения: 116
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 11
Настоящее имя: Юрий

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 28 май 2017, 21:56

Вот такой вопрос. Как изменить папку, ну или указать папку в которой будут искаться include
т.е. Если записать include <...> то реально будет поиск к конкретной папке. Что если нужных библиотек там нет.
И вообще когда пишешь простое приложение и компилируешь gcc всё находиться(в другом месте). А если halcompail, то поиск в другом месте происходит.
Отличаются ли библиотеки в разных местах (может одни какие-нибудь реалтаймовские, а другие нет. Ну или как то ещё) или одинаковое назначение их?
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 28 май 2017, 22:32

T00T писал(а):Вот такой вопрос. Как изменить папку, ну или указать папку в которой будут искаться include

Опция компилятора "-I".
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 28 май 2017, 22:42

Это для halcompail, или GCC
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 28 май 2017, 22:46

Компилятор - это gcc. halcompile не компилятор, для компиляции он зовёт gcc.

P.S. Советую освоить gcc и до кучи make и рассмотреть Makefile'ы от других проектов - вопросов сильно поубавится... :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 28 май 2017, 22:56

Но makefile halcompile создаёт сам. Как посмотреть что он создаёт, и внести изменения?
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 29 май 2017, 00:22

T00T писал(а):Как посмотреть что он создаёт

Например в его исходниках.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 30 май 2017, 23:29

Короче проблема такая - Хочу поэкспериментировать с сокетами.
Написал тестовую прогу, в ней include <sys/socket.h>
Всё компилируется и работает.
Теперь если попытаться модуль с функциями сокета собрать halcompile пишет нет такого файла( include <sys/socket.h>). Походу не там ищет.
Как понять где он ищет, просто у меня складывается впечатление что ищет он там где надо, но не находит.
Всё это дело под ubuntu 10.04
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение merkwurdigliebe » 31 май 2017, 04:05

сокеты только в юзерспейсе, если это риалтайм компонент под RTAI ядром - то не получится. под RTAI был TCP/IP стек - RTNet, по-моему. но это - геморрой, там свои драйверы сетевых карт (пара штук), свои утилиты типа rtifconfig и т.п.
а вот если собрать linuxcnc под RT_PREEMPT ядро - тогда пожалуйста
merkwurdigliebe
Мастер
 
Сообщения: 202
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 144

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 31 май 2017, 10:12

А как тогда драйвер 7i76e и прочие, в userspice ?
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 31 май 2017, 12:59

T00T писал(а):А как тогда драйвер 7i76e и прочие

Они только под RT_PREEMPT работают.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 28 ноя 2017, 21:47

Вот возник тут вопрос. Как правильно работать с прерываниями в модулях для LinuxCNC. Какие особенности из-за того что работаем с RTAI ядром.
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 29 ноя 2017, 02:13

Как и везде - максимально быстро завершать работу обработчика прерывания.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Re: PCI контроллер. Halcompail и драйвер.

Сообщение T00T » 30 ноя 2017, 00:05

Ну это конечно понятно. Решил тут поэкспериментировать с прерываниями.
Вот так объявляю функцию, и сама функция. Внутри функции прерывания пара присваиваний и больше ничего.
Код: Выделить всёРазвернуть
///////////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 подцепить, а там нужно постоянно опрашивать енкодеры. И поэтому тоже будет прерывание раз в сервопериод.
Я не волшебник я пока учусь......
T00T
Мастер
 
Сообщения: 706
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 89

Re: PCI контроллер. Halcompail и драйвер.

Сообщение UAVpilot » 30 ноя 2017, 01:22

T00T писал(а):Но есть 7i76e ethernet, и тут волей неволей приём пакетов через прерывания.

И там тоже не используется, ибо незачем. Драйвер сетевой карты сам со всем этим справляется.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15812
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3853
Медальки:
Настоящее имя: Сергей

Пред.След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: aftaev, ALEX_61, AlexZaal, Argon-11, bawero, Bing [Bot], Brynet83, CactusMan, Dimon310580, Enot_1, Евжений, FL@gMan, FLUKE, Frezer_PU, frezeryga, gabik, Google [Bot], kalinvick, Maxekb77, mmv, neonas, Nikomas, odekolon, PKM, Гагарин, s29, sima8520, SNS, valera321, Yandex [bot], Фукс

Поделиться

Reputation System ©'