Нужен отдельный котёл для эмбеддеров, делающих фрейминг в serial link (будь то uart или еще что-то) тупо на счётчике байтов, без какого либо стаффинга. Зато там црц есть. Если удастся его найти в потоке-то.
This entry was originally posted at
https://ex0-planet.dreamwidth.org/102228.html. Please comment there using
OpenID.
зыЖ но есть и более дикий грех - в определенном месте посылки поднимать/опускать какой-нибудь rts/dtr/ring итп. (привет буферизации в уртах и в ос)
Reply
То что линк может _порваться_ в середине пакета, оставив другую сторону в непонятном состоянии - не, не слышали.
RTS/DTR - это ж для всяких кривых недоимплементаций RS-485 в основном, да? Это слава богу научились лечить - доступностью нормальных мостов, в основном, но тем не менее. Давно уже не видел такого.
Reply
или линк не точка-точка, а на условной шине сидит больше пары устройств, и к кому-то из них может придти ПЦ или прийти космическая частица на стопицот МЭв, которая заткнет или стартанет передачу в произвольный момент.
а, да, еще совершенно комическая, но таки реальная ситуация - изготовитель говорит, что у него оптроны медленные и "115200" не тянут, но в плане эксперимента можно попробовать. по другой версии со стороны того же устройства - там наэкономили на центральном процессоре и на программистах. но итог тот же - иногда теряются фрагменты пакетов (если смотреть с точки зрения софта высокого уровня)
Reply
Ебануться, извините мой французский, там что, 4N35?
6N137 сто лет в обед, а лучшая в мире микроэлектронная промышленность до сих пор не освоила аналога? Это же про "импортозамещение" речь, я правильно понимаю?
Reply
вот-вот. и это в заказе на стопицот денег и с мягкими сроками. ага, импортозамещенное, но этот аспект тут не очень важен (макет) важнее не-под-псакции, не-джексон-вэник, скорее не замещение, а рукожопие и профнепригодность. не, ну реально в такого рода взаимодействиях стОит закладываться на потенциальную профнепригодность контрагентов
и да, по контрасту с чего-то ардуйниподобного типа мастеркита где опто-485 сходу "мегагерц" - оно ващще шокирует.
вообще, как-то так, за последние лет 20 регулярно натыкаюсь на "ебануться, шокирует", потом всякие там психологические стадии (не)приятия, а потом как-то намного спокойнее к изведанной пиздецоме отношусь (примерно на уровне творчества Ивана Сколоты и прочих 'грузить млОденцев вилами в камаз').
Reply
Reply
это у нормальных людей. и на 485 обычно сразу договариваются что между передачей и приемом дедтайм не менее что-тотам порядка байта или даже параграфа.
а тут было что-то типа rs232 для сбора чего-то типа телеметрии, или наоборот как протокол программатора для телефона. автор там предполагал дергать не-помню-какой-именно ногой расширенного rs232 чтоб в потоке разделять данные/команды или еще что-то в том же духе.
точнее, у него было готовое изделие, которое работало только в досе и только при отключении буферизации уарта. и работало именно таким образом и с спецсофтинкой. и персонаж ругался и на буфкризацию в современных уартах и на буферизацию в ОС, которые сильно мешают такой протокол пользовать.
Reply
Это, подозреваю, совсем другие тараканы - чтобы в длинном кабеле уже точно всё успокоилось. Против коллизий в общем. А "кривые имплементации" - это без аппаратного управления передачей/приемом (полудупа полудуплекс же) и приходилось угадывать в какой момент снять RTS чтобы успеть услышать что тебе отвечают.
только в досе и только при отключении буферизации уарта
Ай-нанэ-нанэ!!! Маладэц!
Впрочем чего это я. Ввенде можно вон отслеживать таймауты компорта чуть ли не до миллисекунды, и у товарищей был сделан на этом фрейминг (отдельный котёл тоже, да), и они хотели это на линуксе. Когда я пытался объяснить что нормальные, здоровые на голову люди так не делают вот так впрямую это не портируется, товарищи включили злорадно-обиженный протокол "а что линукс так не умеее-е-е-е-еет???".
Reply
Reply
извне гарантируют некие инварианты
Ненене, речь чисто про локальный трансивер. UART по окончанию последнего байта в буфере должен отключить выходные драйвера, и это должна делать именно логика уарта, потому что никакой уровень выше просто не успеет. Просто в стародавние времена когда вешали трансивер тупо на выходы 232 (за неимением чего-то более продвинутого) приходилось изощряться.
случается пц, когда приходится растаться с заказчиком
Ощем да, позиция новичка на проекте не самая выгодная для донесения степени и количества технического долга. У меня было в жизни _два_ заказчика которые этот момент понимали и слушали, и обоих... я просрал.
Reply
Leave a comment