Я могу засунуть и в оригинал и даже стм'ку могу махнуть на F4, был бы толк.UAVpilot писал(а):Я понял! Просто нашёлся китайский MX_Master, который уже засунул свою прошивку в эту плату, а теперь наш MX_Master хочет сделать тоже самое...
Ethernet контроллер для LinuxCNC (STM32, FPGA)
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Последний раз редактировалось MX_Master 02 июн 2020, 23:15, всего редактировалось 1 раз.
-
- Мастер
- Сообщения: 471
- Зарегистрирован: 25 авг 2018, 10:11
- Репутация: 152
- Настоящее имя: Дмитрий
- Откуда: Киров
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
dc/dc тут sot23-6, обведён красным: И вобще эта плата больше похоже на оригинал.UAVpilot писал(а):Тут стоит что-то типа dc/dc, плата сильно другой версии, да и это совсем противоположный угол платы.
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
На фотке оригинал 2-й версии. В первой версии микрухи не было. Конечно, если первая тоже была оригиналом Мне, честно говоря, клон подходит даже больше.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Может, все проще - увидели китайцы, что нет у STM32 EEPROM, ну и заложили внешний "шоб було".
А потом разобрались, как эмулировать его через флэш.
А потом разобрались, как эмулировать его через флэш.
Чудес не бывает. Бывают фокусы.
- aekhv
- Мастер
- Сообщения: 393
- Зарегистрирован: 17 окт 2014, 15:03
- Репутация: 218
- Настоящее имя: Александр
- Откуда: г.Хабаровск
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Вопрос совсем не по теме, возможно даже не для этого форума, но всё равно спрошу. Ломаю голову на задачей, как забирать данные с некого внешнего устройства через DMA. Устройство примитивное: 8-ми разрядная шина данных DD0...DD7, входы CE/RD/WR. Не могу понять откуда во время обмена DMA perepheral-to-memory взять такты RD? Как заставить DMA контроллер выводить такты на какую-либо ножку контроллера? Если делать не через DMA, а просто дёргать линию RD программно, то все просто и понятно, но очень меееееееедлнно ((MX_Master писал(а):STM32F207VCT6. Весь софт менять.
Пока что играюсь с Atmel SAM3X8E (Arduino Due). Но на примере STM32F207VCT6, как можно было бы решить такую задачку? Даташит посмотрел, про тактирование периферии ничего не нашёл.
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
указать DMA контроллеру, что делать передачу надо после определенного аппаратного события Без часового изучения доков к STM32, это можно сделать за пару минут в CubeMX. Я, кстати, когда выбирал между модулями ардуино и STM32, таки заставил себя изучить сначала STM32. И не пожалел. К ардуинам я теперь ваще не прикасаюсь
В этом деле есть момент, когда одни китайцы скопировали контроллер у других китайцев. А на клон эту микруху не стали ставить, потому что в STM32 всё необходимое уже есть. Прошивка клона даже никак не защищена, потому что это и не нужно. Никто не станет делать контроллер ещё дешевле клона.Сергей Саныч писал(а):Может, все проще - увидели китайцы, что нет у STM32 EEPROM, ну и заложили внешний "шоб було".
А потом разобрались, как эмулировать его через флэш.
-
- Опытный
- Сообщения: 158
- Зарегистрирован: 25 авг 2008, 00:46
- Репутация: 14
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Довольно странный вопрос.
Настрой таймер и им тактируй ПДП. а УВВ укажи гпио.
Именно для этого столько вариантов тактирования стримов с привязкой к таймеру. А не только для ШИМ .
умеючи МК можно нагрузить так что он будет стоять, а переферия шуршать. И по сути как многоядерное устройство пахать.
И это есть мастерство, а "не извращения с DMA".
Добавлю - а выход таймера можешь настроить как RD.
Удачи!
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
В продолжение темы про безопасность протокола передачи..
Решил сделать в своём софте так:
Cами Ethernet пакеты не шифруются, это лишнее. Зато к каждому пакету добавляется пара длинных чисел (как подпись). Первое число - всегда случайное. Второе число - хэш от первого числа с солью из ID контроллера. У каждого контроллера имеется свой уникальный ID. Этот ID нужно вбить в настройках драйвера, чтобы LinuxCNC мог без проблем общаться с данным контроллером. Если контроллер получит больше 3-х пакетов, подписанных некорректно, доступ к контроллеру блокируется до отключения на нём питания.
Решил сделать в своём софте так:
Cами Ethernet пакеты не шифруются, это лишнее. Зато к каждому пакету добавляется пара длинных чисел (как подпись). Первое число - всегда случайное. Второе число - хэш от первого числа с солью из ID контроллера. У каждого контроллера имеется свой уникальный ID. Этот ID нужно вбить в настройках драйвера, чтобы LinuxCNC мог без проблем общаться с данным контроллером. Если контроллер получит больше 3-х пакетов, подписанных некорректно, доступ к контроллеру блокируется до отключения на нём питания.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Я правильно понимаю, что можно один раз перехватить эти два числа и просто добавлять их к любым "левым" пакетам?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Аха, я немного тупанул. Думаю, будет логичнее сделать первое число номером пакета. Счётчик пакетов на каждой стороне должен увеличиваться. Если номер очередного пакета будет старый или слишком новый, весь пакетик можно считать левым. Даже без проверки второго числа.
Счётчика на 32 бита должно хватить на несколько дней, а на 64 бита - чуть подольше
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Как быть с восстановлением работы после потери пакета?
Почему вместо хеша случайного числа не хочешь использовать цифровую подпись (хеш всего пакета со случайным числом, зашифрованный открытым ключём)?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Потеря пакетов не страшна для этой проверки. Когда ответа нет, счётчик увеличиваться не должен. Небольшой диапазон скачков вперёд можно разрешить.
Во многих STM32 есть аппаратный CRC32. Пара тактов и хэшик готов. А вот модуль шифрования есть не везде. Программно шифровать весь пакет будет довольно накладно.
У меня по сути получается быстрая подпись только номера пакета, закрытым ключом. Другие варианты, особенно, программные, должны быть гораздо медленней. Или я чего не знаю?
Во многих STM32 есть аппаратный CRC32. Пара тактов и хэшик готов. А вот модуль шифрования есть не везде. Программно шифровать весь пакет будет довольно накладно.
У меня по сути получается быстрая подпись только номера пакета, закрытым ключом. Другие варианты, особенно, программные, должны быть гораздо медленней. Или я чего не знаю?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Зачем шифровать весь пакет?
А ты попробуй...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1718
- Зарегистрирован: 28 авг 2018, 17:13
- Репутация: 286
- Настоящее имя: Алексей
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Достаточно добавить к пакету закрытый ключ и посчитать crc32 от всего этого добра.
Не защищает от повтора пакетов, но уже что-то.
Не защищает от повтора пакетов, но уже что-то.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- wldev
- Мастер
- Сообщения: 1639
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Если будешь использовать UID контроллера, который будет записан на ПК. То можно просто все шифровать на нём симметрично. Он же не будет передаваться по открытым каналам....
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Согласен. Не весь пакет, а лишь хэшик всего пакета. Но хэш всего пакета будет считаться дольше, чем хэш одного числа. А юзать медленный программный RSA для шифровки одного хэшика - это как с пушки по воробьям. Плюс длина открытого ключа будет всегда больше хэшика.
Я не спорю, что способ рабочий и логически правильный. Но даже невооружённым глазом видно, что он ест заметно больше ресурсов. И чтобы им пользоваться нужен какой-то мега быстрый программный RSA (или аналог).
Да, сейчас я так и делаю. Только юзаю не сам UID, а хэшик от него. Этот хэшик знают обе стороны.
-
- Мастер
- Сообщения: 1718
- Зарегистрирован: 28 авг 2018, 17:13
- Репутация: 286
- Настоящее имя: Алексей
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
это ваши домыслы
ключами надо как-то поменяться. в начале сессии сгенерировать временный или заранее. это уже другой вопрос.
или id какой нибудь известный взять в качестве ключа.
в процессе работы достаточно подписи crc32 содержимого пакета + закрытый ключ
если пакеты фиксированой длины, то ключ можно в начале поставить - оптимизация небольшая получится.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Как например? Это как раз самый главный вопрос.
Закрытый ключ на то и закрытый, что хранится в надёжном месте и никому никогда не передаётся.
Известный кому, и злоумышленнику тоже?
С какого перепугу?
Ну и что, памяти жалко?
Не нравится ассиметричное шифрование используй симметричное с генерацией сессионных ключей (протокол Диффи-Хеллмана).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Нравится/не нравится - это, скорее, про вкус мороженого. Любое шифрование или мои хэшики в пакетах мне не нравятся. Это дополнительное усложнение. Но мне интересно другое - почему дядь Серёже не нравится простая, быстрая и симметричная система из пары чисел с закрытым ключом?
Я, кстати, не знаю, а в протоколах связи месы какая-то защита от левых пакетов есть?