-
- Один из примеров того, зачем надо -> - Evgeny_CDАрхитектор(22.02.2020 16:08, ссылка)
- Годное чтиво по теме -> - Evgeny_CDАрхитектор(13.02.2020 22:15, ссылка)
- Шевкопляс Борис Владимирович "Лекции по телекоммуникациям". Там много чего... - Chum_A(14.02.2020 09:11, ссылка)
- А зачем? Cкpипaчпророк(422 знак., 13.02.2020 09:09)
- Гарант мля.А унификация?А если проект это нечто большее чем данная платка и она только часть? PlainUser(149 знак., 13.02.2020 15:18)
- Унификация? Вы уверенны? Что с чем унифицировано? И, да, чем больше проект, тем насущнее необходимость строгой типизации. Cкpипaчпророк(309 знак., 13.02.2020 15:33 - 15:38)
- Всему свое место и время.Иногда и широковещательная передача в тему. - PlainUser(14.02.2020 07:52)
- Модбас - управляющий протокол, а Евгений будет потоки данных на обратную сторону Луны гонять в 2025. Нельзя сравнивать. - VLLV(13.02.2020 15:40)
- В MODBUS и о файловом обмене есть. Щупал - жизнеспособно. - Cкpипaчпророк(13.02.2020 15:46)
- Есть вещи, которые надо делать самому, даже при наличии здорового коллектива (с). - Kpoк(13.02.2020 18:11)
- В MODBUS и о файловом обмене есть. Щупал - жизнеспособно. - Cкpипaчпророк(13.02.2020 15:46)
- Унификация? Вы уверенны? Что с чем унифицировано? И, да, чем больше проект, тем насущнее необходимость строгой типизации. Cкpипaчпророк(309 знак., 13.02.2020 15:33 - 15:38)
- Не соглашусь, мне не стыдно :) VLLV(220 знак., 13.02.2020 13:26)
- Расширяемым. Передавайте тип телеграммы и он будет расширяемым. Но нет, хочется "утиную типизацию". Чтобы обрабатывать то, что угадалось и игнорить остальное, оставляя простор для ошибок "из пункта А вышло, но нахуй никому не нужно" :) - Cкpипaчпророк(13.02.2020 14:53)
- Ну Евгений вырвал кодирование из всей вселенной, и танцует это кодирование. Пройдет. Он еще поразит нас и заставит завидовать! :| - VLLV(13.02.2020 15:37)
- Ну да, не "сверху-вниз" ни разу :( Но, подозреваю, это просто мысли на развитие
интеллекта.И протокол у него есть, и кодирование. "Улучшайзинг". Cкpипaчпророк(210 знак., 13.02.2020 15:44) - Нельзя слишком глубоко копать код Вселенной. Можно расшифровать что-нибудь такое, что лучше не расшифровывать... - SciFi(13.02.2020 15:42)
- Ну да, не "сверху-вниз" ни разу :( Но, подозреваю, это просто мысли на развитие
- Ну Евгений вырвал кодирование из всей вселенной, и танцует это кодирование. Пройдет. Он еще поразит нас и заставит завидовать! :| - VLLV(13.02.2020 15:37)
- Расширяемым. Передавайте тип телеграммы и он будет расширяемым. Но нет, хочется "утиную типизацию". Чтобы обрабатывать то, что угадалось и игнорить остальное, оставляя простор для ошибок "из пункта А вышло, но нахуй никому не нужно" :) - Cкpипaчпророк(13.02.2020 14:53)
- Гарант мля.А унификация?А если проект это нечто большее чем данная платка и она только часть? PlainUser(149 знак., 13.02.2020 15:18)
- Я решил задачу! Как 32 бита передать 4 символами и префиксом На группу бит! Evgeny_CDАрхитектор(394 знак., 13.02.2020 02:08)
- Ты даже описать не смог, что ты хотел сказать. Считать отдельные биты (по несколько машинных инструкций на каждый) -- дорого. Поэтому вряд ли ты изобретёшь что-то лучше LEB128. Хотя я не прав. Вот эта идея с range coder'ом она позволяет даже fk0легенда(82 знак., 13.02.2020 12:05)
- Спасибо! (За LEB128) - Dingo(14.02.2020 20:52 - 21:03)
- Ничего не понятно, но очень интересно)) Moлoдoй кoллeгa(84 знак., 13.02.2020 09:03)
- 243 символа передают 5 отличных бит. \\ Родительный падеж - штука неудачная для технических текстов. Кто кого передает? Биты символов или символы битов? - Kpoк(13.02.2020 08:57)
- нельзя так глубоко погружаться - остальные просто плавают на поверхности - VLLV(13.02.2020 06:20)
- Запатентовать что ли? - Evgeny_CDАрхитектор(13.02.2020 02:13)
- Да здравствуют MCU с аппаратным делением! - Evgeny_CDАрхитектор(13.02.2020 02:13)
- Я бы не закладывался. У многих за N*2^k тактов (где k -- число бит, а N -- обычно 1 или 2). У некоторых вообще нет (как раз в embedded). - fk0легенда(13.02.2020 12:08)
- В современных Cortex-M -> все более-менее терпимо. - Evgeny_CDАрхитектор(13.02.2020 15:03, ссылка, ссылка)
- Я бы не закладывался. У многих за N*2^k тактов (где k -- число бит, а N -- обычно 1 или 2). У некоторых вообще нет (как раз в embedded). - fk0легенда(13.02.2020 12:08)
- fk0, очень тебе благодарен за пинок! - Evgeny_CDАрхитектор(13.02.2020 02:10)
- Ты даже описать не смог, что ты хотел сказать. Считать отдельные биты (по несколько машинных инструкций на каждый) -- дорого. Поэтому вряд ли ты изобретёшь что-то лучше LEB128. Хотя я не прав. Вот эта идея с range coder'ом она позволяет даже fk0легенда(82 знак., 13.02.2020 12:05)
- [Creeper] -> Описания не нашел. Тоже, судя по всему, табличное кодирование/декодирование. Возможно, идеи ASII 85: число символов суть основание системы счисления; берем исходное число и делим на основание, получаем "разложение по разрядам" Evgeny_CDАрхитектор(32 знак., 06.02.2020 16:04, ссылка)
- Фактически это арифметическое кодирование наоборот: там множество входных значений символов конечного алфавита (не обязательно байтов) преобразуется в последовательность битов. Здесь же задача преобразовать последовательность битов во множество fk0легенда(196 знак., 06.02.2020 19:14)
- Спасибо! - Evgeny_CDАрхитектор(06.02.2020 19:18)
- Вообще идея шикарная. Тестируем канал минимальным набором символов, которые точно дойдут. Потом проверяем прохождение по максимум. Строим алфавит, и по нему уже кодируем/декодируем. - Evgeny_CDАрхитектор(06.02.2020 16:18)
- Фактически это арифметическое кодирование наоборот: там множество входных значений символов конечного алфавита (не обязательно байтов) преобразуется в последовательность битов. Здесь же задача преобразовать последовательность битов во множество fk0легенда(196 знак., 06.02.2020 19:14)
- Коллеги, это все фигня. Еще есть Phainocode и мириады подобного -> Что только не нагуглится :) [Шутка] - Evgeny_CDАрхитектор(06.02.2020 15:41, ссылка)
- С подачи fk0. [LEB128] -> [VLQ - variable-length quantity] --> Идеи сильно похожи на мои в части использования 7 битного кодирования. - Evgeny_CDАрхитектор(06.02.2020 02:41, ссылка, ссылка)
- Если идею развивать дальше, то есть ещё коды Райса/Голомба и более широкое семейство универсальных кодов (Фиббоначи, Левенштейна и т.п.) Все они находят применение в стандартах кодирования аудио/видео, коды Райса часто в алгоритмах сжатия fk0легенда(10 знак., 06.02.2020 11:25)
- Есть ещё экспоненциальная версия, и Элиаса забыли упомянуть. Евгений, освежите в памяти ещё CBOR, посмотрите как реализованы теги и в частности - массивы фиксированной и переменной длинны. Если на базе этой идеи сделать с другим алфавитом? Dingo(161 знак., 14.02.2020 18:44)
- Хочется остаться в классе простых решений. Простых в понимании, в описании, в реализации. Относительно простых, конечно. - Evgeny_CDАрхитектор(14.02.2020 18:53)
- Оно там не сложно для понимания, а вот для реализации - "зависит от". Перекликается с LEB128 и protocol buffer. Не пойму, что хотите на выходе, но вроде как полезно может быть или натолкнуть на дельные мысли. - Dingo(14.02.2020 19:23)
- За "наталкивание" большое спасибо! Думаю. - Evgeny_CDАрхитектор(14.02.2020 19:43)
- некоторые пункты оглавления из стандарта: Dingo(918 знак., 14.02.2020 20:18, ссылка)
- За "наталкивание" большое спасибо! Думаю. - Evgeny_CDАрхитектор(14.02.2020 19:43)
- Оно там не сложно для понимания, а вот для реализации - "зависит от". Перекликается с LEB128 и protocol buffer. Не пойму, что хотите на выходе, но вроде как полезно может быть или натолкнуть на дельные мысли. - Dingo(14.02.2020 19:23)
- Хочется остаться в классе простых решений. Простых в понимании, в описании, в реализации. Относительно простых, конечно. - Evgeny_CDАрхитектор(14.02.2020 18:53)
- Код Райса -> Код Голомба --> - Evgeny_CDАрхитектор(07.02.2020 00:48, ссылка, ссылка)
- Есть ещё экспоненциальная версия, и Элиаса забыли упомянуть. Евгений, освежите в памяти ещё CBOR, посмотрите как реализованы теги и в частности - массивы фиксированной и переменной длинны. Если на базе этой идеи сделать с другим алфавитом? Dingo(161 знак., 14.02.2020 18:44)
- Если идею развивать дальше, то есть ещё коды Райса/Голомба и более широкое семейство универсальных кодов (Фиббоначи, Левенштейна и т.п.) Все они находят применение в стандартах кодирования аудио/видео, коды Райса часто в алгоритмах сжатия fk0легенда(10 знак., 06.02.2020 11:25)
- HDLC и ASN.1 давно изобретены. - fk0легенда(05.02.2020 18:44)
- HDLC может неожиданно дать оверхед 2х -> если данные "неудачные". ASN.1 сложно для совсем мелких контроллеров. Evgeny_CDАрхитектор(204 знак., 05.02.2020 19:06, ссылка)
- А у тебя какие-то новые предложения по реализации escape-последовательностей? Я могу только предложить от них отказаться, путём отказа от передачи произвольных бинарных данных (кому надо -- пусть в base64 кодируют). Тогда любые числа (целые, fk0легенда(5651 знак., 05.02.2020 23:34)
- ... или ASCII85... - Vit(06.02.2020 04:59)
- ZZencode. Только фиг найдёшь описание. Google похерил google-группы и фидо-архивы. - fk0легенда(06.02.2020 11:41)
- [ZZencode] Нашлось только вот такое, пока не понял, что это. - Evgeny_CDАрхитектор(06.02.2020 15:50, ссылка, ссылка)
- Дядя Женя, плохо ты гуглить умеешь: SciFi(235 знак., 06.02.2020 16:11, ссылка)
- Спасибо! - Evgeny_CDАрхитектор(06.02.2020 16:16)
- Дядя Женя, плохо ты гуглить умеешь: SciFi(235 знак., 06.02.2020 16:11, ссылка)
- Подумалось. В моём же варианте, если кодировать строки не просто копированием, а а-ля base64 из чертверок байт формировать числа (32-битные) и их кодировать как числа, то получается нечто похожее на тот же ASCII85 -- 4 байта кодируются в пять. И fk0легенда(536 знак., 06.02.2020 14:49)
- [ZZencode] Нашлось только вот такое, пока не понял, что это. - Evgeny_CDАрхитектор(06.02.2020 15:50, ссылка, ссылка)
- Спасибо! - Evgeny_CDАрхитектор(06.02.2020 11:31)
- ZZencode. Только фиг найдёшь описание. Google похерил google-группы и фидо-архивы. - fk0легенда(06.02.2020 11:41)
- Большое спасибо! Курить надо. - Evgeny_CDАрхитектор(06.02.2020 02:27)
- ... или ASCII85... - Vit(06.02.2020 04:59)
- COBS maleon(05.02.2020 22:02)
- Спасибо! Упоминалось у нас -> -->, но я забыл название и не смог найти Evgeny_CDАрхитектор(295 знак., 05.02.2020 22:33, ссылка, ссылка)
- Для простых, да и собственно любых устройств использую ascii : все посылки читаются в терминале, можно даже пальцами настучать. VLLV(81 знак., 05.02.2020 19:58 - 20:05)
- Даже для обычного ASCII есть проблема: если данные идут непрерывным потоком без пауз, то разъединив кабель на долю секунды можно получить 100%-й мусор на приёмной стороне. А в HDLC -- синхронизация восстановится. Для этого в модемных протоколах fk0легенда(587 знак., 05.02.2020 23:49)
- Отключение кабеля на лету - классика тестирования :) Но тут опять таки разница в поведении "модемных" протоколов и протоколов "управления", где паузы естественны и совместно с контроммной суммой позволяют диагностировать нарушения - VLLV(06.02.2020 07:15)
- +1 - Evgeny_CDАрхитектор(06.02.2020 02:13)
- Это классика. Хочу выше эффективность канала при скромных затратах ресурсов. - Evgeny_CDАрхитектор(05.02.2020 20:04)
- Даже для обычного ASCII есть проблема: если данные идут непрерывным потоком без пауз, то разъединив кабель на долю секунды можно получить 100%-й мусор на приёмной стороне. А в HDLC -- синхронизация восстановится. Для этого в модемных протоколах fk0легенда(587 знак., 05.02.2020 23:49)
- А у тебя какие-то новые предложения по реализации escape-последовательностей? Я могу только предложить от них отказаться, путём отказа от передачи произвольных бинарных данных (кому надо -- пусть в base64 кодируют). Тогда любые числа (целые, fk0легенда(5651 знак., 05.02.2020 23:34)
- HDLC может неожиданно дать оверхед 2х -> если данные "неудачные". ASN.1 сложно для совсем мелких контроллеров. Evgeny_CDАрхитектор(204 знак., 05.02.2020 19:06, ссылка)
- О, создатели protobuf копались в моей голове :) -> Evgeny_CDАрхитектор(123 знак., 05.02.2020 16:45, ссылка)
- Поясняю замысел. Я описал именно кодирование для выделение элементов протокола, т.е. канальный уровень. Evgeny_CDАрхитектор(1462 знак., 05.02.2020 16:32)
- Большой ARM-процессор дрючить отдельные битики будет медленно и печально. Надо уметь быстро складывать байты в 32-битные числа и обрабатывать их. См. моё предложение. Оно на практике уже реализовывалось в каком-то виде. Таблицы большого размера fk0легенда(915 знак., 05.02.2020 23:55)
- Всегда есть место
шуткамнабросам :) - VLLV(06.02.2020 07:36) - Насчет кеша - мелкие MCU FLASH со страничным ускорителем, быстрые ARM как минимум 16к кеш (обычно) - таблица 512 байт терпимо. - Evgeny_CDАрхитектор(06.02.2020 02:36)
- Спасибо! Я бы так сказал - для мелких (8 бит 51, AVR, 16 бит PIC24, dsPIC, RL78, больше ничего осмысленного нет) и 32 битных ядер нужная разная оптимизация методологии. Они на самом деле очень сильно разные, дело не в ширине слова. - Evgeny_CDАрхитектор(06.02.2020 02:35)
- Всегда есть место
- Большой ARM-процессор дрючить отдельные битики будет медленно и печально. Надо уметь быстро складывать байты в 32-битные числа и обрабатывать их. См. моё предложение. Оно на практике уже реализовывалось в каком-то виде. Таблицы большого размера fk0легенда(915 знак., 05.02.2020 23:55)
- А нужен ли этот велосипед? По кодированию столько всего уже придумали. В текущем проекте, например, protobuf используется (со стороны микроконтроллера в варианте nanopb) - AlexG(05.02.2020 16:27, ссылка, ссылка)
- Это вечная неисчерпаемая тема :) Поиск баланса между эффективностью использования канала, простотой реализации и понятностью для человека. - Evgeny_CDАрхитектор(05.02.2020 16:42)
- Предлагаю DVCD == Da Vinci CoDe. - SciFi(05.02.2020 09:12)
- Что-то я перестарался с громкими названиями. Рано еще. - Evgeny_CDАрхитектор(05.02.2020 16:19)
- Da Vinci Cat :) - Cидopгeк(05.02.2020 10:45, картинка)
- Ложкин клювом прощёлкал... - SciFi(05.02.2020 10:51)
- Этому малюнку лет, как одноимённому фильму. Рисовал ли тогда Ложкин - х.з. - Cидopгeк(05.02.2020 12:54)
- Ложкин клювом прощёлкал... - SciFi(05.02.2020 10:51)
- Похоже на зародыш альтернатора 7уровневой модели. - PlainUser(05.02.2020 08:06)
- А что критиковать? В первых абзацах (втором и четвертом) - должен и должен. Т.е. самое интересное - где-то далеко за скобками. Cкpипaчпророк(703 знак., 05.02.2020 00:01 - 00:10)
- Спасибо! Здесь тот же подход. Вопрос в выборе набора "базовых сущностей", поверх которых будет жить все остальное. Вот это важно обсудить. - Evgeny_CDАрхитектор(05.02.2020 00:14)
- Отсутствие понятия приостановление/возобновление потока мне кажется существенным отличием. Просто высокоуровневые потоки живут в другом измерении, по отношению к низкоуровневым. Cкpипaчпророк(388 знак., 05.02.2020 00:26 - 00:34)
- Предельная эффективность - 87.5% от полосы. Это разумная плата за детерминизм. Можно сравнить с идеей "маскирования" байтов. Evgeny_CDАрхитектор(303 знак., 05.02.2020 00:53)
- А каковы основания считать что эффективность: предельна; как-то связанна? Cкpипaчпророк(59 знак., 05.02.2020 08:55)
- Хороший вопрос, ответ на него долгий. - Evgeny_CDАрхитектор(05.02.2020 16:33)
- То что цифра с потолка - я понял. Но она сильно авышена. Cкpипaчпророк(152 знак., 05.02.2020 18:07)
- Спасибо! Правильный вариант - перед обсуждением протокола нарисовать граф - что будем обсуждать. И вносить в него регулярно основные итоги обсуждения. Так и стоит поступить. - Evgeny_CDАрхитектор(05.02.2020 18:30)
- Задачи протокола для скоростного (на пределе канала) потока данных и протокола управления существенно разнятся, нужно сразу определиться. - VLLV(05.02.2020 20:10)
- +1, но там все зависимости нелинейны. Evgeny_CDАрхитектор(163 знак., 05.02.2020 21:17)
- +1 - Cкpипaчпророк(05.02.2020 20:28)
- Задачи протокола для скоростного (на пределе канала) потока данных и протокола управления существенно разнятся, нужно сразу определиться. - VLLV(05.02.2020 20:10)
- Спасибо! Правильный вариант - перед обсуждением протокола нарисовать граф - что будем обсуждать. И вносить в него регулярно основные итоги обсуждения. Так и стоит поступить. - Evgeny_CDАрхитектор(05.02.2020 18:30)
- То что цифра с потолка - я понял. Но она сильно авышена. Cкpипaчпророк(152 знак., 05.02.2020 18:07)
- Хороший вопрос, ответ на него долгий. - Evgeny_CDАрхитектор(05.02.2020 16:33)
- Но есть минимальная предельная латентность из-за наличия буферов. Evgeny_CDАрхитектор(362 знак., 05.02.2020 00:58)
- А вы продумали как именно будут конкурировать высокоприортетные сообщения? Приоритеты, контроллер прерываний? :) Cкpипaчпророк(80 знак., 05.02.2020 10:06)
- Машина состояний - это хорошо, пока машина состояний не определена, разговор в общем то ни о чем, не зря описание приличных протоколов содержит графы для хоста и слейва. - VLLV(05.02.2020 02:39)
- Ясен пень, что это надо описывать. Но пока идет синтез идей. Evgeny_CDАрхитектор(66 знак., 05.02.2020 03:07)
- Потому, что у тебя в кучу смешались разные слои, от сериализации до канального уровня. - fk0легенда(06.02.2020 11:36)
- Значит, протокол не простой. И вообще 7 уровней не зря придумывали, нужно или сливать уровни, или продумывать весь стек с инкапсуляцией и сервисом. Пока в Ваших соображениях ничего этого не нашел, а микс/спагетти не прокатит. - VLLV(05.02.2020 03:23)
- Да, я и сам понял, что пока все смешалось. Evgeny_CDАрхитектор(160 знак., 05.02.2020 03:39)
- Не думаю, что авторы hdlc легко с этим согласятся - VLLV(05.02.2020 05:45)
- HDLC нервно курит в части эффективности кодирования -> Evgeny_CDАрхитектор(537 знак., 05.02.2020 16:17, ссылка)
- Ты думаешь дураки HDLC изобретали? А я думаю, дураки те, кто не понимает, почему 0x7E. Потому, что если у тебя по-настоящему последовательный канал передачи данных, где не байты 8-битные атомарно идут, а отдельные биты, начиная с младшего и до fk0легенда(662 знак., 05.02.2020 23:44)
- HDLC нервно курит в части эффективности кодирования -> Evgeny_CDАрхитектор(537 знак., 05.02.2020 16:17, ссылка)
- Не думаю, что авторы hdlc легко с этим согласятся - VLLV(05.02.2020 05:45)
- Да, я и сам понял, что пока все смешалось. Evgeny_CDАрхитектор(160 знак., 05.02.2020 03:39)
- Ясен пень, что это надо описывать. Но пока идет синтез идей. Evgeny_CDАрхитектор(66 знак., 05.02.2020 03:07)
- А каковы основания считать что эффективность: предельна; как-то связанна? Cкpипaчпророк(59 знак., 05.02.2020 08:55)
- Предельная эффективность - 87.5% от полосы. Это разумная плата за детерминизм. Можно сравнить с идеей "маскирования" байтов. Evgeny_CDАрхитектор(303 знак., 05.02.2020 00:53)
- Отсутствие понятия приостановление/возобновление потока мне кажется существенным отличием. Просто высокоуровневые потоки живут в другом измерении, по отношению к низкоуровневым. Cкpипaчпророк(388 знак., 05.02.2020 00:26 - 00:34)
- Интересно, ставил ли кто подобные задачи и как он их решал... - Evgeny_CDАрхитектор(05.02.2020 00:04)
- Инкапсуляция (в пакет данных "короткого" протокола вставляется кусок файла - в моем случае строка хекс файла для обновления прошивки). Если получен корректный ответ, указатель увеличивается. - VLLV(06.02.2020 07:24)
- Ближайшее что делал - получение отладочной информации поверх Modbus. Реализовывал через пару регистров <вирт.адрес+данные> Cкpипaчпророк(248 знак., 05.02.2020 00:14 - 00:27)
- Спасибо! Здесь тот же подход. Вопрос в выборе набора "базовых сущностей", поверх которых будет жить все остальное. Вот это важно обсудить. - Evgeny_CDАрхитектор(05.02.2020 00:14)