Сериальное

Jul 23, 2021 16:25

Нужен отдельный котёл для эмбеддеров, делающих фрейминг в serial link (будь то uart или еще что-то) тупо на счётчике байтов, без какого либо стаффинга. Зато там црц есть. Если удастся его найти в потоке-то.

This entry was originally posted at https://ex0-planet.dreamwidth.org/102228.html. Please comment there using OpenID.

программизм, терминальное

Leave a comment

nicka_startcev July 23 2021, 13:56:56 UTC
в смысле, для тех, кто "а зачем синхру ловить"?

зыЖ но есть и более дикий грех - в определенном месте посылки поднимать/опускать какой-нибудь rts/dtr/ring итп. (привет буферизации в уртах и в ос)

Reply

ex0_planet July 23 2021, 14:31:12 UTC
В смысле да, зачем вообще синхра - что в блютухе что в усб и так коррекция ошибок есть же, зачем еще что-то.

То что линк может _порваться_ в середине пакета, оставив другую сторону в непонятном состоянии - не, не слышали.

RTS/DTR - это ж для всяких кривых недоимплементаций RS-485 в основном, да? Это слава богу научились лечить - доступностью нормальных мостов, в основном, но тем не менее. Давно уже не видел такого.

Reply

nicka_startcev July 23 2021, 17:30:21 UTC
>То что линк может _порваться_ в середине пакета

или линк не точка-точка, а на условной шине сидит больше пары устройств, и к кому-то из них может придти ПЦ или прийти космическая частица на стопицот МЭв, которая заткнет или стартанет передачу в произвольный момент.

а, да, еще совершенно комическая, но таки реальная ситуация - изготовитель говорит, что у него оптроны медленные и "115200" не тянут, но в плане эксперимента можно попробовать. по другой версии со стороны того же устройства - там наэкономили на центральном процессоре и на программистах. но итог тот же - иногда теряются фрагменты пакетов (если смотреть с точки зрения софта высокого уровня)

Reply

ex0_planet July 23 2021, 18:25:35 UTC
оптроны медленные

Ебануться, извините мой французский, там что, 4N35?

6N137 сто лет в обед, а лучшая в мире микроэлектронная промышленность до сих пор не освоила аналога? Это же про "импортозамещение" речь, я правильно понимаю?

Reply

nicka_startcev July 23 2021, 18:41:56 UTC
>Ебануться

вот-вот. и это в заказе на стопицот денег и с мягкими сроками. ага, импортозамещенное, но этот аспект тут не очень важен (макет) важнее не-под-псакции, не-джексон-вэник, скорее не замещение, а рукожопие и профнепригодность. не, ну реально в такого рода взаимодействиях стОит закладываться на потенциальную профнепригодность контрагентов

и да, по контрасту с чего-то ардуйниподобного типа мастеркита где опто-485 сходу "мегагерц" - оно ващще шокирует.

вообще, как-то так, за последние лет 20 регулярно натыкаюсь на "ебануться, шокирует", потом всякие там психологические стадии (не)приятия, а потом как-то намного спокойнее к изведанной пиздецоме отношусь (примерно на уровне творчества Ивана Сколоты и прочих 'грузить млОденцев вилами в камаз').

Reply

ex0_planet July 23 2021, 18:45:05 UTC
Ну шокировать оно и меня не особо шокирует уже, примерно как "оно ещё и в таком изводе бывает, любопытно-с". Но как-то же отношение обозначить надо....

Reply

nicka_startcev July 23 2021, 17:36:33 UTC
>RTS/DTR - это ж для всяких кривых недоимплементаций RS-485 в основном, да?

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

а тут было что-то типа rs232 для сбора чего-то типа телеметрии, или наоборот как протокол программатора для телефона. автор там предполагал дергать не-помню-какой-именно ногой расширенного rs232 чтоб в потоке разделять данные/команды или еще что-то в том же духе.

точнее, у него было готовое изделие, которое работало только в досе и только при отключении буферизации уарта. и работало именно таким образом и с спецсофтинкой. и персонаж ругался и на буфкризацию в современных уартах и на буферизацию в ОС, которые сильно мешают такой протокол пользовать.

Reply

ex0_planet July 23 2021, 18:33:57 UTC
на 485 обычно сразу договариваются что между передачей и приемом дедтайм

Это, подозреваю, совсем другие тараканы - чтобы в длинном кабеле уже точно всё успокоилось. Против коллизий в общем. А "кривые имплементации" - это без аппаратного управления передачей/приемом (полудупа полудуплекс же) и приходилось угадывать в какой момент снять RTS чтобы успеть услышать что тебе отвечают.

только в досе и только при отключении буферизации уарта
Ай-нанэ-нанэ!!! Маладэц!

Впрочем чего это я. Ввенде можно вон отслеживать таймауты компорта чуть ли не до миллисекунды, и у товарищей был сделан на этом фрейминг (отдельный котёл тоже, да), и они хотели это на линуксе. Когда я пытался объяснить что нормальные, здоровые на голову люди так не делают вот так впрямую это не портируется, товарищи включили злорадно-обиженный протокол "а что линукс так не умеее-е-е-е-еет???".

Reply

nicka_startcev July 23 2021, 19:40:41 UTC
>Против коллизий в общем ( ... )

Reply

ex0_planet July 23 2021, 21:51:16 UTC
Неудачно выразился. Чисто электрический звон - по длительности порядка бита на макс. разрешённой для этой длины скорости. Но по окончанию передачи хосты должны отдуплиться, решить что делать дальше, и если начать вторую передачу в этот скользкий момент, то можно получить коллизии. Об этом речь.

извне гарантируют некие инварианты
Ненене, речь чисто про локальный трансивер. UART по окончанию последнего байта в буфере должен отключить выходные драйвера, и это должна делать именно логика уарта, потому что никакой уровень выше просто не успеет. Просто в стародавние времена когда вешали трансивер тупо на выходы 232 (за неимением чего-то более продвинутого) приходилось изощряться.

случается пц, когда приходится растаться с заказчиком
Ощем да, позиция новичка на проекте не самая выгодная для донесения степени и количества технического долга. У меня было в жизни _два_ заказчика которые этот момент понимали и слушали, и обоих... я просрал.

Reply


Leave a comment

Up