Страница 1 из 2

LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 06:42
MX_Master
Чисто в порядке бреда.. Небольшой сабж на тему аппаратного генератора шагов для LinuxCNC.

Третьего дня смотрел в интернетах разные PCI-LPT адаптеры.
И наткнулся на такие вот удлинители и отводы
  1. https://www.aliexpress.com/item/-/32689099107.html
  2. https://www.aliexpress.com/item/-/32797334524.html
Закралась мысль, что можно без большой пайки подключить к плате ПК какое-ньть полезное устройство, не PCI форм-фактора. Например, ту же бюджетку с STM32. Стессна, без драйвера тут не обойтись, но это не должно быть проблемой. Для начала внешнее устройство можно использовать - как бюджетный аппаратный генератор. Более широкое применение тоже возможно. В соседней теме, такое устройство уже реализовано, но там это готовая разработка на собственной плате.

Два вопроса - реальна ли идея и какие могут быть сложности?
Hot-Sale-Cheapest-32-Bit-Flexible-PCI-Riser-Card-Extender-Flex-Extension-Ribbon-Cabler.jpg (6561 просмотр) <a class='original' href='./download/file.php?id=121634&mode=view' target=_blank>Загрузить оригинал (136.34 КБ)</a>
High-Quality-PCI-Male-to-Female-Riser-Extension-Card-Adapter-1U-IPC-Chassis-90-Degree-Angled.jpg (6561 просмотр) <a class='original' href='./download/file.php?id=121635&mode=view' target=_blank>Загрузить оригинал (75.77 КБ)</a>

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 09:28
Evilmax
Собственно вопрос фундаментальный - На#рена? Так же замечано, последние из тем от тебя напоминают выпуски рубрики "Очумелые ручки" из передачи "Пока все дома". )))

Изображение
Изображение

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 11:30
MX_Master
Ты б этого форума и не увидел, если б энтузиасты прекратили эксперименты после "нахрена?". :hehehe: Если не знаешь, о чём я спрашиваю, то отвечать и не нужно.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 13:18
aftaev
MX_Master писал(а):И наткнулся на такие вот удлинители и отводы
у мну они где то лежат :) Покупал чтобы платы МЕСА "положить" и сделать более компактней стойку.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 14:55
muxa
MX_Master писал(а):апример, ту же бюджетку с STM32. Стессна, без драйвера тут не обойтись, но это не должно быть проблемой. Для начала внешнее устройство можно использовать - как бюджетный аппаратный генератор. Более широкое применение тоже возможно. В соседней теме, такое устройство уже реализовано, но там это готовая разработка на собственной плате.
давайте по порядку - итак у нас есть РС , тобишь комп, который без особых затей может через простейшую LPT плату рулить станком.
очумелым ручкам захотелось подключить что то эдакое бюджетное, рублей за 200 на stm32.
окей, гугл (тм) берем и пишем в stm32 аналог китайской LPT платы. пинов хватает на грани, денежный эффект есть, только вот забыли про аппаратный ген, ну не беда,
можно еще долго менять камни и т.п. но пока не придет осознание что любой камень выполняющий свою микропрограмму это нифига ни разу ни аппаратный степ ген.
толку имхо не будет.
все хотелки по аппаратному степгену перекрывает меса со своим зоопарком плат на плис. с хостом коннектится просто - хочешь LPT хочешь PCI Ex.
хоть какой то экономический эффект может быть только при удачном запуске линуха на оранж рс.
вот когда стоимость "платформы" будет не 5000 а 1000, вот тогда кому то может и станет интересна связка с "дешевым" stm32 , настолько что он закроет глаза на его "аппаратный" степген.
но блин и эта разница на фоне общего ценника железа станка просто смешна.
З.Ы, я намеренно не упоминал про USB, чтобы кое кто нам тут не начал рассказывать про кфлоп :)
З.З.Ы, имхо stm32 несмотря на все его мипсы и дмипсы никоими ножками к PCI не законнектим. или ставить чипс спец. приемник или старшие плисины, у них на ногах можно хоть обычный (хотя правильнее сказать древний PCI ) хоть PCI ex принимать, даже корки под всё это скорее всего найдутся условно безоплатныя.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 окт 2017, 18:43
MX_Master
Вощем, дёргаться не надо, оставим идею для сверх экзотичных решений..

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 09 окт 2017, 18:46
arkhnchul
как минимум один китаец об этом как минимум думал - http://en.cnki.com.cn/Article_en/CJFDTO ... 301055.htm , https://wenku.baidu.com/view/3c6d2b92b9 ... 77938.html . Судя по abstract-у, вполне додумался.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 10 окт 2017, 20:40
AAN
Для упрощённой разработки быстрых устройств есть специализированное решение с Python-ом и ПЛИС "на борту" http://www.pynq.io/
Хотя и дороже...

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 26 окт 2017, 14:37
ScrewDriver
MX_Master писал(а):Вощем, дёргаться не надо, оставим идею для сверх экзотичных решений..
Мне кажется у тебя большая часть аппаратных возможностей уйдет на реализацию pci. Насколько я знаю там все оооочень жестко с таймингами.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 28 апр 2018, 01:29
Leonidd
Всем привет!
В линукс-CNC открытый исходный код. Нужно посмотреть формат общения программы с той же платой меса, например. Ну может кто другой способ знает. Это для передачи данных во внешний контроллер (и из контроллера в программу).
Кто знает, подскажите пожалуйста как там это делается. Не шагами же он в плату меса требуемое положение передает!
После этого, когда разберемся с форматом передачи данных, можно будет пробовать подключить контроллер. Не обязательно по шине PCI (хотя и желательно). Можно через Ethernet. В STM32 (не во всех) есть аппаратный Ethernet.
По поводу отсутствия аппаратного генератора шагов - контроллер за 1500 р. работает на частоте 400 МГц, у него 208 ног, есть шим, АЦП, и его не проблема подключить к датчику обратной связи и через H - мост к дрели, например (хотя мне больше нравятся генераторы 28в) и вообще выкинуть эти шаговые двигатели. Если все же так нравятся ШД, то с точки зрения контроллера частота 32 КГц не проблема: при частоте (контроллера) 72 МГц это будет 72 000 000/32 000 = 2 250 тактов (216 МГц - в 3 раза больше, 400 МГц - в 5,6 раз больше) контроллера за один шаг, этого вполне хватит для всех нужных вычислений, хоть с датчиком обратной связи, хоть без него. Привязать частоту шагов к аппаратному таймеру контроллера тоже недолго. В любом случае получится лучше, чем выдает LPT порт.
Если я чего - то не догоняю, не судите строго. Пока еще не во всех аспектах разобрался.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 28 апр 2018, 01:43
Serg
Leonidd писал(а):Кто знает, подскажите пожалуйста как там это делается. Не шагами же он в плату меса требуемое положение передает!
А вам это зачем?
Если вы программист и хотите всё это реализовать, то для вас добыть нужную информацию из исходников не составит проблем. А если не программист, то и реализовать не получится... :)

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 28 апр 2018, 05:26
MX_Master
Иногда это очень настораживает, когда человек только что зарегистрировался и сразу рвётся в бой.
Leonidd писал(а): После этого, когда разберемся с форматом передачи данных, можно будет пробовать подключить контроллер. Не обязательно по шине PCI (хотя и желательно). Можно через Ethernet. В STM32 (не во всех) есть аппаратный Ethernet.
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=18671

Ethernet меня полностью устраивает. Уже пилю первую версию драйвера.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 29 апр 2018, 01:18
Leonidd
Ну, здесь форум, люди вопросы задают. По разным причинам. Кто знает, подсказывает.
Мне вообще для общего развития (формат передачи данных из линукс CNC в плату). Подобная информация снижает степень неопределенности. Скажем, не зная ее можно размышлять над бесконечным количеством форматов передачи данных, а зная - только над тем, как обработать в контроллере уже имеющийся формат.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 29 апр 2018, 23:03
Serg
Тут не надо размышлять, тут надо просто взять и изучить документацию и исходники. :)
Ну или ждать пока кто-то потратит своё время, чтобы всё это изучить и рассказать вам...

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 01 май 2018, 09:11
astrahard
Аппаратный генератор шагов говорите, все поделки на ARM с аппаратной генерацией основаны на DMA на шине AHB, причем отсутствие Latency ОС обеспечивает в основном именно шина AHB. Также и для PC, непротиворечивый (независящий от Latency операционной системы) вывод, изохронный (без Latency) может быть выполнен основываясь на современной хабовой архитектуре чипсета, когда BUS мастеринг может быть выполнен чисто аппаратно и будет независим от Latency ОС. Примеров достаточно 1. Видео выделяющие видеопамять из основного ОЗУ 2, Аудио подсистема 3. USB изохронный трафик и.т.п. и.т.д.. Итого, нет необходимости добавлять сложную аппаратуру или процессор типа ARM. Но нужно уметь обращаться с драйверами, знающими особенности чипсета в плане работы с хабами периферийных шин (PCI, PCI-E[press, USB и.т.п.)

P.S. Вот, к примеру, DMA в процессоре ARM, к примеру STM32, как раз работает как аппаратный драйвер хаба периферийной шины (шина AHB) и не зависит от ОС Latency.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 май 2018, 09:33
Leonidd
UAVpilot писал(а):Тут не надо размышлять, тут надо просто взять и изучить документацию и исходники. :)
Ну или ждать пока кто-то потратит своё время, чтобы всё это изучить и рассказать вам...
1. Исходники в студию!
2. Я с уважением отношусь к Вашему времени, тем более потраченному на такое нужное дело. Могу 100 рублей на телефон положить.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 май 2018, 09:44
Leonidd
astrahard писал(а):Аппаратный генератор шагов говорите, все поделки на ARM с аппаратной генерацией основаны на DMA на шине AHB, причем отсутствие Latency ОС обеспечивает в основном именно шина AHB. Также и для PC, непротиворечивый (независящий от Latency операционной системы) вывод, изохронный (без Latency) может быть выполнен основываясь на современной хабовой архитектуре чипсета, когда BUS мастеринг может быть выполнен чисто аппаратно и будет независим от Latency ОС. Примеров достаточно 1. Видео выделяющие видеопамять из основного ОЗУ 2, Аудио подсистема 3. USB изохронный трафик и.т.п. и.т.д.. Итого, нет необходимости добавлять сложную аппаратуру или процессор типа ARM. Но нужно уметь обращаться с драйверами, знающими особенности чипсета в плане работы с хабами периферийных шин (PCI, PCI-E[press, USB и.т.п.)

P.S. Вот, к примеру, DMA в процессоре ARM, к примеру STM32, как раз работает как аппаратный драйвер хаба периферийной шины (шина AHB) и не зависит от ОС Latency.
Вы предлагаете заново переписать LinuxCNC?
Давайте перепишем, сразу под raspberry pi 3
Нужно создать отдельную тему для этого.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 май 2018, 11:58
Serg
Leonidd писал(а):1. Исходники в студию!
Как это ни странно выглядит, но исходники LinuxCNC лежат на сайте LinuxCNC, исходники прошивок Mesa - на сайте Mesa. :)
Leonidd писал(а):2. Я с уважением отношусь к Вашему времени, тем более потраченному на такое нужное дело. Могу 100 рублей на телефон положить.
Зачем мне 100 рублей на телефоне, за который контора платит?.. :)
Кстати, а "нужное дело" - оно кому нужное?..

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 07 май 2018, 23:38
Leonidd
Как минимум конторе, раз платит.

Re: LinuxCNC -> PCI -> STM32 ?

Добавлено: 08 май 2018, 13:13
Leonidd
astrahard писал(а):Аппаратный генератор шагов говорите, все поделки на ARM с аппаратной генерацией основаны на DMA на шине AHB, причем отсутствие Latency ОС обеспечивает в основном именно шина AHB. Также и для PC, непротиворечивый (независящий от Latency операционной системы) вывод, изохронный (без Latency) может быть выполнен основываясь на современной хабовой архитектуре чипсета, когда BUS мастеринг может быть выполнен чисто аппаратно и будет независим от Latency ОС. Примеров достаточно 1. Видео выделяющие видеопамять из основного ОЗУ 2, Аудио подсистема 3. USB изохронный трафик и.т.п. и.т.д.. Итого, нет необходимости добавлять сложную аппаратуру или процессор типа ARM. Но нужно уметь обращаться с драйверами, знающими особенности чипсета в плане работы с хабами периферийных шин (PCI, PCI-E[press, USB и.т.п.)

P.S. Вот, к примеру, DMA в процессоре ARM, к примеру STM32, как раз работает как аппаратный драйвер хаба периферийной шины (шина AHB) и не зависит от ОС Latency.
Не могу написать в личку.
Статья с этой проблемой: http://hexvolt.blogspot.ru/2013/03/rasp ... pio-2.html
Датировано 2013г. На Raspberry GPIO получили частоту 5 МГц, но были просадки сигнала из - за многозадачности ОС (или неправильной работы с драйверами, как Вы говорите).
Есть планы подключить к Raspberry PI3 несколько серводвигателей через оптическое волокно, по 2 линии на двигатель - вход и выход. Частота работы будет 1 МГЦ.