Ethernet контроллер для LinuxCNC (STM32, FPGA)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):Я понял! Просто нашёлся китайский MX_Master, который уже засунул свою прошивку в эту плату, а теперь наш MX_Master хочет сделать тоже самое... :hehehe:
Я могу засунуть и в оригинал :) и даже стм'ку могу махнуть на F4, был бы толк.
Последний раз редактировалось MX_Master 02 июн 2020, 23:15, всего редактировалось 1 раз.
D.L.
Мастер
Сообщения: 471
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение D.L. »

UAVpilot писал(а):Тут стоит что-то типа dc/dc, плата сильно другой версии, да и это совсем противоположный угол платы.
dc/dc тут sot23-6, обведён красным:
000.gif (2517 просмотров) <a class='original' href='./download/file.php?id=182080&sid=86f1861364d5b3b28c813bb70f1c18e9&mode=view' target=_blank>Загрузить оригинал (531.91 КБ)</a>
И вобще эта плата больше похоже на оригинал.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

На фотке оригинал 2-й версии. В первой версии микрухи не было. Конечно, если первая тоже была оригиналом ;) Мне, честно говоря, клон подходит даже больше.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Сергей Саныч »

Может, все проще - увидели китайцы, что нет у STM32 EEPROM, ну и заложили внешний "шоб було".
А потом разобрались, как эмулировать его через флэш.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
aekhv
Мастер
Сообщения: 393
Зарегистрирован: 17 окт 2014, 15:03
Репутация: 218
Настоящее имя: Александр
Откуда: г.Хабаровск
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение aekhv »

MX_Master писал(а):STM32F207VCT6. Весь софт менять.
Вопрос совсем не по теме, возможно даже не для этого форума, но всё равно спрошу. Ломаю голову на задачей, как забирать данные с некого внешнего устройства через DMA. Устройство примитивное: 8-ми разрядная шина данных DD0...DD7, входы CE/RD/WR. Не могу понять откуда во время обмена DMA perepheral-to-memory взять такты RD? Как заставить DMA контроллер выводить такты на какую-либо ножку контроллера? Если делать не через DMA, а просто дёргать линию RD программно, то все просто и понятно, но очень меееееееедлнно :(((

Пока что играюсь с Atmel SAM3X8E (Arduino Due). Но на примере STM32F207VCT6, как можно было бы решить такую задачку? Даташит посмотрел, про тактирование периферии ничего не нашёл.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

указать DMA контроллеру, что делать передачу надо после определенного аппаратного события ;) Без часового изучения доков к STM32, это можно сделать за пару минут в CubeMX. Я, кстати, когда выбирал между модулями ардуино и STM32, таки заставил себя изучить сначала STM32. И не пожалел. К ардуинам я теперь ваще не прикасаюсь :D
Сергей Саныч писал(а):Может, все проще - увидели китайцы, что нет у STM32 EEPROM, ну и заложили внешний "шоб було".
А потом разобрались, как эмулировать его через флэш.
В этом деле есть момент, когда одни китайцы скопировали контроллер у других китайцев. А на клон эту микруху не стали ставить, потому что в STM32 всё необходимое уже есть. Прошивка клона даже никак не защищена, потому что это и не нужно. Никто не станет делать контроллер ещё дешевле клона.
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение kentawrik »

aekhv писал(а): Как заставить DMA контроллер выводить такты на какую-либо ножку контроллера
Довольно странный вопрос.

Настрой таймер и им тактируй ПДП. а УВВ укажи гпио.
Именно для этого столько вариантов тактирования стримов с привязкой к таймеру. А не только для ШИМ :).
умеючи МК можно нагрузить так что он будет стоять, а переферия шуршать. И по сути как многоядерное устройство пахать.
И это есть мастерство, а "не извращения с DMA".

Добавлю - а выход таймера можешь настроить как RD.
Удачи!
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

В продолжение темы про безопасность протокола передачи..

Решил сделать в своём софте так:
Cами Ethernet пакеты не шифруются, это лишнее. Зато к каждому пакету добавляется пара длинных чисел (как подпись). Первое число - всегда случайное. Второе число - хэш от первого числа с солью из ID контроллера. У каждого контроллера имеется свой уникальный ID. Этот ID нужно вбить в настройках драйвера, чтобы LinuxCNC мог без проблем общаться с данным контроллером. Если контроллер получит больше 3-х пакетов, подписанных некорректно, доступ к контроллеру блокируется до отключения на нём питания.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

Я правильно понимаю, что можно один раз перехватить эти два числа и просто добавлять их к любым "левым" пакетам?.. wave
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а): 08 сен 2020, 17:17 Я правильно понимаю, что можно один раз перехватить эти два числа и просто добавлять их к любым "левым" пакетам?.. wave
Аха, я немного тупанул. Думаю, будет логичнее сделать первое число номером пакета. Счётчик пакетов на каждой стороне должен увеличиваться. Если номер очередного пакета будет старый или слишком новый, весь пакетик можно считать левым. Даже без проверки второго числа.

Счётчика на 32 бита должно хватить на несколько дней, а на 64 бита - чуть подольше :freak:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а): Счётчик пакетов на каждой стороне должен увеличиваться. Если номер очередного пакета будет старый или слишком новый, весь пакетик можно считать левым.
Как быть с восстановлением работы после потери пакета?

Почему вместо хеша случайного числа не хочешь использовать цифровую подпись (хеш всего пакета со случайным числом, зашифрованный открытым ключём)?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Потеря пакетов не страшна для этой проверки. Когда ответа нет, счётчик увеличиваться не должен. Небольшой диапазон скачков вперёд можно разрешить.

Во многих STM32 есть аппаратный CRC32. Пара тактов и хэшик готов. А вот модуль шифрования есть не везде. Программно шифровать весь пакет будет довольно накладно.

У меня по сути получается быстрая подпись только номера пакета, закрытым ключом. Другие варианты, особенно, программные, должны быть гораздо медленней. Или я чего не знаю? :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а): Программно шифровать весь пакет будет довольно накладно.
Зачем шифровать весь пакет? :)
MX_Master писал(а): Другие варианты, особенно, программные, должны быть гораздо медленней. Или я чего не знаю?
А ты попробуй... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
alex_sar
Мастер
Сообщения: 1718
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 286
Настоящее имя: Алексей
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение alex_sar »

Достаточно добавить к пакету закрытый ключ и посчитать crc32 от всего этого добра.

Не защищает от повтора пакетов, но уже что-то.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

alex_sar писал(а): Достаточно добавить к пакету закрытый ключ
И передавать всё это по сети? :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
wldev
Мастер
Сообщения: 1639
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение wldev »

Если будешь использовать UID контроллера, который будет записан на ПК. То можно просто все шифровать на нём симметрично. Он же не будет передаваться по открытым каналам....
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а): 09 сен 2020, 01:26 Зачем шифровать весь пакет? :)
UAVpilot писал(а): 08 сен 2020, 23:58(хеш всего пакета со случайным числом, зашифрованный открытым ключём)
Согласен. Не весь пакет, а лишь хэшик всего пакета. Но хэш всего пакета будет считаться дольше, чем хэш одного числа. А юзать медленный программный RSA для шифровки одного хэшика - это как с пушки по воробьям. Плюс длина открытого ключа будет всегда больше хэшика.

Я не спорю, что способ рабочий и логически правильный. Но даже невооружённым глазом видно, что он ест заметно больше ресурсов. И чтобы им пользоваться нужен какой-то мега быстрый программный RSA (или аналог).
Bender писал(а): 09 сен 2020, 05:09 Если будешь использовать UID контроллера, который будет записан на ПК. То можно просто все шифровать на нём симметрично. Он же не будет передаваться по открытым каналам....
Да, сейчас я так и делаю. Только юзаю не сам UID, а хэшик от него. Этот хэшик знают обе стороны.
alex_sar
Мастер
Сообщения: 1718
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 286
Настоящее имя: Алексей
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение alex_sar »

UAVpilot писал(а): 09 сен 2020, 04:17
alex_sar писал(а): Достаточно добавить к пакету закрытый ключ
И передавать всё это по сети? :hehehe:
это ваши домыслы

ключами надо как-то поменяться. в начале сессии сгенерировать временный или заранее. это уже другой вопрос.
или id какой нибудь известный взять в качестве ключа.

в процессе работы достаточно подписи crc32 содержимого пакета + закрытый ключ

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

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

alex_sar писал(а): ключами надо как-то поменяться. в начале сессии сгенерировать временный или заранее. это уже другой вопрос.
Как например? Это как раз самый главный вопрос. :)
Закрытый ключ на то и закрытый, что хранится в надёжном месте и никому никогда не передаётся.
alex_sar писал(а): или id какой нибудь известный взять в качестве ключа.
Известный кому, и злоумышленнику тоже? :)
MX_Master писал(а): Но хэш всего пакета будет считаться дольше, чем хэш одного числа.
С какого перепугу?
MX_Master писал(а): Плюс длина открытого ключа будет всегда больше хэшика.
Ну и что, памяти жалко?
Не нравится ассиметричное шифрование используй симметричное с генерацией сессионных ключей (протокол Диффи-Хеллмана).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а): Не нравится ассиметричное шифрование используй симметричное с генерацией сессионных ключей (протокол Диффи-Хеллмана).
Нравится/не нравится - это, скорее, про вкус мороженого. Любое шифрование или мои хэшики в пакетах мне не нравятся. Это дополнительное усложнение. Но мне интересно другое - почему дядь Серёже не нравится простая, быстрая и симметричная система из пары чисел с закрытым ключом? :hehehe:

Я, кстати, не знаю, а в протоколах связи месы какая-то защита от левых пакетов есть?
Ответить

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