Перейти к содержанию
    

Коллеги, дайте нормальное описание YModem

Добрый день! Пишу приёмник для YModem. Готовый не хочу брать с гитхабов. И... что за бардак с стандарте? Например, написано, что первым (нулевым) блоком после установления связи передаётся имя файла + '\0' (здесь всё нормально), затем размер файла в шестандцатеричном виде (Extra Putty передаёт в десятичном виде), но самое главное - нет CRC!!! Т.е. нулевой пакет состоит из SOH + 128 байт данных (PackNum, 255 - PackNum, Data). Это Extra Putty кривая, или я что-то не понимаю? Собственно, что удручает, так это отсутствие какого-то нормально оформленного стандарта с примерами в виде документа. Сплошные обрывки. Приходится пока писать методом пристрелки: принял пакет, посмотрел в отладчике. Буду признателен, если кто поделится) Спасибо)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

первые же ссылки при гуглении по строке "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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Ruslan1, вы делали приёмник для YModem по приведённым документам? У вас получилось? У меня, вот, не получается. Одна из проблем описана в моём первом сообщении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, haker_fox said:

@Ruslan1, вы делали приёмник для YModem по приведённым документам? У вас получилось? У меня, вот, не получается. Одна из проблем описана в моём первом сообщении.

"А судьи кто?"

Почему вы решили, что Extra Putty может сойти за референс, тем более, что вы ее уже ловили на странностях типа передачи размера файла в десятитичном формате? Может, есть более уважаемые реализации (в т.ч., в виде исходников)? Я, например, более доверял бы TeraTerm'у (open source, кстати). Или в Линукс заглянул бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал ZOC. Он вообще не откликается на символ C. Зато если нажать отмену передачи файла (в это время терминал ждёт чего-то), то присылает символ CAN. Я могу, конечно, попробовать TerraTerm, и ещё с десяток "проверенных и идеологически верных"  терминалов. Всё же хочу услышать совет коллег, которые делали этот протокол сами. Всё ли там так криво или нет.

Вот моя последовательность действий на текущий момент:

1. Мой приёмник посылает символ C, затем ждёт ответа от передатчика 3 секунды.

2. Если ничего не приходит, то повторяем п. 1. Если приходит символ STX или SOH, то начинаем парсить пакет.

Так вот, Extra Putty присылает пакет по пункту 2, а ZOC - молчит. Должен же он хоть что-то прислать для подтверждения? ZOC это многократно обласканный терминал здесь на форуме, даже сам @zltigo его рекомендовал в своё время. А то, что он эксперт в связи я не сомневаюсь.

Что я делаю неправильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, haker_fox said:

Что я делаю неправильно?

Вот здесь https://techheap.packetizer.com/communication/modems/xmodem-ymodem_reference.html

в главе 4 показана диаграмма, но которой приемник начинает не с отправки "С", а с запроса файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не смотря на наличие "стандарта", похоже, что YModem релазиуют довольно вольно. Например, TeraTerm может отправить до 5 (сам засёк) пакетов 0 с именем файла и размером. Всё дело в имеющихся несчитанных символах C от приёмника. Extra Putty поступает умнее - она всегда отправляет один пакет. Глядя на различный код приёмников, смотрю, что он готов к приёму арзмера как в десятичном, так и в шестнадцатиричном формате... ZOC тоже отправляет данные, но как-то вяло... Правда у него хитро в справке написано про YModem, дескать, выбирайте XModem-CRC вместо YModem, а YModem используйте только для многофайловой (batch) отправки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте посмотреть исходный код minicom (под linux), там есть поддержка разных протоколов. Исходники открыты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26.08.2020 в 13:29, haker_fox сказал:

Пишу приёмник для YModem.

Кстати: а почему используете не ZModem? Который вроде как более продвинутый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

56 minutes ago, jcxz said:

Кстати: а почему используете не ZModem?

У нас есть кучка железяк, которые обновляются по YModem. Поэтому использую его для совместимости. У меня задание: написать обновлялку (загрузчик) для железяки на базе STM32F091. Хочу написать сам, заодно разобраться. Ибо те исходники, которые коллеги уже использовали, мне не нравятся - взяты откуда-то, написаны, ИМХО, неаккуратно. Ну а мне - опыт в копилочку)

58 minutes ago, jcxz said:

Который вроде как более продвинутый.

Да ,это так. НЕмного пробежался по диагонали, пока читал про XModem и YModem/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединюсь к теме. В документации написано сначало принимаешь rz + cr, а tera term отправлять r* как так? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Alex_Golubev said:

В документации написано сначало принимаешь rz + cr, а tera term отправлять r* как так? 

Пока сделал так. С TeraTerm работает. На других терминалах не проверял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Alex_Golubev said:

У меня z modem а там y modem. Есть что-то для z modem? 

А вы на кой ляд в чужой теме-то пишите? У вас же своя по Zmodem есть...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно нижеследующая информация Вам поможет.

Общие описания YModem:
http://koapp.narod.ru/tehlit/hardware/18modems/9.htm
http://pauillac.inria.fr/~doligez/zmodem/ymodem.txt
https://programmer.ink/think/ymodem-protocol-learning.html

Простая реализация Ymodem:
https://gist.github.com/zonque/0ae2dc8cedbcdbd9b933

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...