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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Требуется помощь спецов :)
Хотел допилить драйвер STEP DIR.
Добавил в рабочую версию структуру str_step_t, функцию расчёта параметров движения DDcontr и вызов этой функции.
Всё вроде в порядке, компилируется без ошибок.
Но Linuxcnc не запускается. Если закоментировать вызов этой функции, то всё запускается.
Какие у кого мысли?
to_pci4.c
файл драйвера
(14.29 КБ) 1043 скачивания
result.txt
сообщение об ошибке
(5.71 КБ) 1092 скачивания
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

по-моему, при вызове DDcontr вы передаете ей неинициализированный указатель sd_data1
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Вызов этой функции, её содержимое. указатели и вызов её - всё по аналогии функции update port. В такой конфигурации всё компилируется, если же что-нибудь изменить то компилироваться не будет. Я пробовал записывать в структуре не указатели на float, __s32 и т.д., а сами float и т.д., результат тот же.
В 81 строке str_step_t *sd_data1;
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

T00T писал(а):str_step_t *sd_data1;
ну. определен указатель, значение его NULL. вы этот NULL передаете DDcontr и там разыменовываете

ikor = DDcontr( sd_data1,*(port-> digital_out_step));
...
ftemp = *(data_sd->l_move) + ccor - *(data_sd->cord_tek);

"thou shalt not follow the null pointer, for chaos and madness awaits thee at its end" ;)
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Да, всё понял. Уже разобрался. Подскажите а что точно обозначает данная строка:
str_step_t *sd_data1;
Это объявление структуры типа str_step_t, с указателем на неё *sd_data1? В том случае указатель должен указывать на такую структуру.

Или это просто объявление указателя *sd_data1 пустого ну и якобы он потом будет указывать на структуру типа str_step_t.

Я не волшебник я пока учусь......
Я не волшебник я пока учусь......
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

merkwurdigliebe писал(а):ikor = DDcontr( sd_data1,*(port-> digital_out_step));
...
ftemp = *(data_sd->l_move) + ccor - *(data_sd->cord_tek);
С этим то как раз всё в порядке sd_data1 - это грубо говоря адрес, я его вот тут передаю
ikor = DDcontr( sd_data1,*(port-> digital_out_step));

Затем в теле функции:
__s32 DDcontr(void *farg,float ccor)
{
str_step_t *data_sd;
Я создаю структуру типа str_step_t *data_sd;
А потом её указатель перемещаю на тот адрес data_sd = farg;

Я просто забыл что по тому адресу пока ничего нет. Нужно просто освободить место под такую структуру и всё время обращаться к этому адресу.

Теперь вопрос: Такой метод объявления нужен исходя из того что это по идее модуль ядра? Или можно просто взять и объявить структуру и передавать её указатель?
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

T00T писал(а): ikor = DDcontr( sd_data1,*(port-> digital_out_step));
С этим то как раз всё в порядке sd_data1 - это грубо говоря адрес, я его вот тут передаю
ikor = DDcontr( sd_data1,*(port-> digital_out_step));
нет, не все в порядке. sd_data1 - это статическая переменная типа "указатель на структуру какую-то там". значение этой переменной - адрес структуры. по-умолчанию статические переменные инициализируются нулями. больше в программе присваиванией этой переменной нет. и в функцию DDcontr в качестве первого аргументы вы передаете значение sd_data1 т.е. NULL
Затем в теле функции:
__s32 DDcontr(void *farg,float ccor)
str_step_t *data_sd;
Я создаю структуру типа str_step_t *data_sd;
А потом её указатель перемещаю на тот адрес data_sd = farg;
нет, вы создаете еще одну (локальную) переменную типа "указатель на str_step_t" и присваиваете ей адрес, переданный в первом аргументе, т.е. NULL
Теперь вопрос: Такой метод объявления нужен исходя из того что это по идее модуль ядра? Или можно просто взять и объявить структуру и передавать её указатель?
ну сейчас-то нет никакого метода :) да, можно объявить статическую переменную типа str_step_t. только если в системе может быть несколько экземпляров вашего драйвера, то они подерутся, наверное
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

merkwurdigliebe писал(а):нет, не все в порядке. sd_data1 - это статическая переменная типа "указатель на структуру какую-то там". значение этой переменной - адрес структуры. по-умолчанию статические переменные инициализируются нулями.
Я и говорю:
T00T писал(а):Я просто забыл что по тому адресу пока ничего нет. Нужно просто освободить место под такую структуру и всё время обращаться к этому адресу.
Ну и указатель должен указывать на этот участок.

Спасибо за ответы.....
Я не волшебник я пока учусь......
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

merkwurdigliebe, А в вашем проекте PCI модуль это корка для софтового процессора?
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

Нужно просто освободить место под такую структуру и всё время обращаться к этому адресу.
ага, только это называется "выделить память" под структуру. и ее адрес присвоить переменной sd_data1 - т.е. проинициализировать
T00T писал(а):А в вашем проекте PCI модуль это корка для софтового процессора?
нет, PCI корка сама по себе. с софкор процессором у них общее двухпортовое ОЗУ. ну и прерывания...
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

merkwurdigliebe писал(а): PCI корка сама по себе
А эта корка от Xilinx или нет?
Я просто под этот корпус не нашёл, пришлось самому написать.......
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

нет, слейв подтырил у латтис (тсс...), мастера дописал
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

А зачем там мастер то?
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

данные burst'ами передавать - иначе не успеваю
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

А как насчет выходов степ/дир?
mmv
Мастер
Сообщения: 610
Зарегистрирован: 24 май 2016, 21:58
Репутация: 33
Контактная информация:

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

Сообщение mmv »

Первый комплект пробуем испытывать уже.
Комплект плат PinCET для модернизации станков на Linuxcnc.
http://www.cnc-club.ru/forum/viewtopic. ... 16#p268407
AlexeyChelny
Новичок
Сообщения: 6
Зарегистрирован: 14 янв 2017, 10:33
Репутация: 2
Настоящее имя: Алексей
Откуда: Набережные Челны
Контактная информация:

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

Сообщение AlexeyChelny »

Как продвигаются дела с ethernet вариантом ваших плат?
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Пока работаем над этим.
Я не волшебник я пока учусь......
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Подскажите как передавать параметры для подгружаемого модуля. Что то типа того:
loadrt pid names=pid.x - загружается компонент PID и ему передаётся имя через некую переменную, в данном случае name.
Как эту переменную обрабатывать в модуле?
Я не волшебник я пока учусь......
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

http://linuxcnc.org/lucid/docs/2.7/html ... rtapi.html

в данном случае

char *names[MAX_CHAN] ={0,};
RTAPI_MP_ARRAY_STRING(names, MAX_CHAN,"pid names");
Ответить

Вернуться в «LinuxCNC»