Есть ли способ сказать терминалу ждать, прежде чем отправлять больше данных? - PullRequest
3 голосов
/ 03 августа 2011

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

Текстовый файл может быть довольно большим (много килобайт), поэтому в небольшой встроенной среде я не могу просто вывести его в оперативную память.Я думаю, если возможно связаться со стандартным эмулятором терминала (который поддерживает перетаскивание / допинг для файлов), чтобы приостановить передачу каждый раз, когда буфер записи заполнен, и сказать продолжить снова после завершения записи?Я не нашел ничего, что могло бы помочь мне в этом.

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

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Я всегда использую XMODEM при программировании данных во FLASH через последовательную связь с ПК.При использовании XMODEM он отправляет только один пакет данных за раз и ждет, пока вы подтвердите пакет, прежде чем отправлять следующий.

Это означает, что мы контролируем поток с помощью программного обеспечения на принимающей стороне:

  • Получить пакет ->
  • Записать пакет ->
  • Подтвердить пакет ->
  • Повторить утилиту сделано ...

XMODEMможет быть реализовано на самых маленьких устройствах (менее 1 КБ ОЗУ), и код очень прост.Все последовательные терминалы поддерживают XMODEM (до Windows XP поставляется с терминалом, поддерживающим XMODEM).XMODEM не требует специального оборудования.

Вот спецификация.

Вот пример реализации.

2 голосов
/ 03 августа 2011

Для базового последовательного соединения вы можете увидеть, поддерживает ли аппаратное обеспечение управление потоком.Это будут строки CTS, RTS (очистить для отправки, запрос на отправку).
http://en.wikipedia.org/wiki/RS-232_RTS/CTS#RTS.2FCTS_handshaking

Однако многие простые встроенные системы не реализуют этот тип управления потоком.

Если аппаратное обеспечение не поддерживает управление потоком, вам придется рассмотреть вопрос об использовании какой-либо формы программного управления потоком.Возможно, вы сможете реализовать управление потоком Xon / Xoff (http://en.wikipedia.org/wiki/XON/XOFF) или реализовать простой протокол передачи файлов, такой как XMODEM, ZMODEM или даже tftp.Это зависит от того, что может поддерживать ваш терминал.

...