haker_fox 60 26 августа, 2020 Опубликовано 26 августа, 2020 · Жалоба Добрый день! Пишу приёмник для YModem. Готовый не хочу брать с гитхабов. И... что за бардак с стандарте? Например, написано, что первым (нулевым) блоком после установления связи передаётся имя файла + '\0' (здесь всё нормально), затем размер файла в шестандцатеричном виде (Extra Putty передаёт в десятичном виде), но самое главное - нет CRC!!! Т.е. нулевой пакет состоит из SOH + 128 байт данных (PackNum, 255 - PackNum, Data). Это Extra Putty кривая, или я что-то не понимаю? Собственно, что удручает, так это отсутствие какого-то нормально оформленного стандарта с примерами в виде документа. Сплошные обрывки. Приходится пока писать методом пристрелки: принял пакет, посмотрел в отладчике. Буду признателен, если кто поделится) Спасибо) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 26 августа, 2020 Опубликовано 26 августа, 2020 · Жалоба первые же ссылки при гуглении по строке "Ymodem standard pdf" не годятся? http://www.blunk-electronic.de/train-z/pdf/xymodem.pdf https://open.library.ubc.ca/media/download/pdf/831/1.0051993/2 гугление по строке "Ymodem specification pdf": https://techheap.packetizer.com/communication/modems/xmodem-ymodem_reference.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 26 августа, 2020 Опубликовано 26 августа, 2020 · Жалоба @Ruslan1, вы делали приёмник для YModem по приведённым документам? У вас получилось? У меня, вот, не получается. Одна из проблем описана в моём первом сообщении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 26 августа, 2020 Опубликовано 26 августа, 2020 · Жалоба 1 hour ago, haker_fox said: @Ruslan1, вы делали приёмник для YModem по приведённым документам? У вас получилось? У меня, вот, не получается. Одна из проблем описана в моём первом сообщении. "А судьи кто?" Почему вы решили, что Extra Putty может сойти за референс, тем более, что вы ее уже ловили на странностях типа передачи размера файла в десятитичном формате? Может, есть более уважаемые реализации (в т.ч., в виде исходников)? Я, например, более доверял бы TeraTerm'у (open source, кстати). Или в Линукс заглянул бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 26 августа, 2020 Опубликовано 26 августа, 2020 · Жалоба Попробовал ZOC. Он вообще не откликается на символ C. Зато если нажать отмену передачи файла (в это время терминал ждёт чего-то), то присылает символ CAN. Я могу, конечно, попробовать TerraTerm, и ещё с десяток "проверенных и идеологически верных" терминалов. Всё же хочу услышать совет коллег, которые делали этот протокол сами. Всё ли там так криво или нет. Вот моя последовательность действий на текущий момент: 1. Мой приёмник посылает символ C, затем ждёт ответа от передатчика 3 секунды. 2. Если ничего не приходит, то повторяем п. 1. Если приходит символ STX или SOH, то начинаем парсить пакет. Так вот, Extra Putty присылает пакет по пункту 2, а ZOC - молчит. Должен же он хоть что-то прислать для подтверждения? ZOC это многократно обласканный терминал здесь на форуме, даже сам @zltigo его рекомендовал в своё время. А то, что он эксперт в связи я не сомневаюсь. Что я делаю неправильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 27 августа, 2020 Опубликовано 27 августа, 2020 · Жалоба 5 hours ago, haker_fox said: Что я делаю неправильно? Вот здесь https://techheap.packetizer.com/communication/modems/xmodem-ymodem_reference.html в главе 4 показана диаграмма, но которой приемник начинает не с отправки "С", а с запроса файла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 28 августа, 2020 Опубликовано 28 августа, 2020 · Жалоба Не смотря на наличие "стандарта", похоже, что YModem релазиуют довольно вольно. Например, TeraTerm может отправить до 5 (сам засёк) пакетов 0 с именем файла и размером. Всё дело в имеющихся несчитанных символах C от приёмника. Extra Putty поступает умнее - она всегда отправляет один пакет. Глядя на различный код приёмников, смотрю, что он готов к приёму арзмера как в десятичном, так и в шестнадцатиричном формате... ZOC тоже отправляет данные, но как-то вяло... Правда у него хитро в справке написано про YModem, дескать, выбирайте XModem-CRC вместо YModem, а YModem используйте только для многофайловой (batch) отправки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 28 августа, 2020 Опубликовано 28 августа, 2020 · Жалоба Попробуйте посмотреть исходный код minicom (под linux), там есть поддержка разных протоколов. Исходники открыты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 29 августа, 2020 Опубликовано 29 августа, 2020 · Жалоба 26.08.2020 в 13:29, haker_fox сказал: Пишу приёмник для YModem. Кстати: а почему используете не ZModem? Который вроде как более продвинутый. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 29 августа, 2020 Опубликовано 29 августа, 2020 · Жалоба 56 minutes ago, jcxz said: Кстати: а почему используете не ZModem? У нас есть кучка железяк, которые обновляются по YModem. Поэтому использую его для совместимости. У меня задание: написать обновлялку (загрузчик) для железяки на базе STM32F091. Хочу написать сам, заодно разобраться. Ибо те исходники, которые коллеги уже использовали, мне не нравятся - взяты откуда-то, написаны, ИМХО, неаккуратно. Ну а мне - опыт в копилочку) 58 minutes ago, jcxz said: Который вроде как более продвинутый. Да ,это так. НЕмного пробежался по диагонали, пока читал про XModem и YModem/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 21 сентября, 2020 Опубликовано 21 сентября, 2020 · Жалоба Присоединюсь к теме. В документации написано сначало принимаешь rz + cr, а tera term отправлять r* как так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 21 сентября, 2020 Опубликовано 21 сентября, 2020 · Жалоба 3 hours ago, Alex_Golubev said: В документации написано сначало принимаешь rz + cr, а tera term отправлять r* как так? Пока сделал так. С TeraTerm работает. На других терминалах не проверял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 21 сентября, 2020 Опубликовано 21 сентября, 2020 · Жалоба У меня z modem а там y modem. Есть что-то для z modem? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 2 hours ago, Alex_Golubev said: У меня z modem а там y modem. Есть что-то для z modem? А вы на кой ляд в чужой теме-то пишите? У вас же своя по Zmodem есть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uk_denis 0 12 января, 2021 Опубликовано 12 января, 2021 · Жалоба Возможно нижеследующая информация Вам поможет. Общие описания YModem:http://koapp.narod.ru/tehlit/hardware/18modems/9.htmhttp://pauillac.inria.fr/~doligez/zmodem/ymodem.txthttps://programmer.ink/think/ymodem-protocol-learning.html Простая реализация Ymodem:https://gist.github.com/zonque/0ae2dc8cedbcdbd9b933 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться