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

FreeRTOS+CLI escape codes

Здравствуйте.

Работаю с FreeRTOS +CLI (для Сortex -M3 под FreeRTOS соответственно) и VT100 терминалом.

В случае передачи escape последовательности сursor move (стрелочка вправо ,в лево и т.д.),

все приложение виснет.

Может кто то знает причину?

 

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


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

Здравствуйте.

Работаю с FreeRTOS +CLI (для Сortex -M3 под FreeRTOS соответственно) и VT100 терминалом.

В случае передачи escape последовательности сursor move (стрелочка вправо ,в лево и т.д.),

все приложение виснет.

Может кто то знает причину?

 

А на отладчике что видно ?

Смотрите размер буферов USART.

Если сбой только на "цепочечных" посылках, когда пакет из ESC итд идет без паузы - в

отличие от тыкания пальцем по отдельным кодам (тогда между каждым прилетающим в приемник символом идет бОООльшая пауза).

Что-то не феншуй с приемом и векторах прерываний. Получается критична скорость обработки пришедшего символа.

смотрите настройки соотв-го вектора по прерывания по Rx и его увязку с обработчиком ОС.

Сбой только на <0x1B> <...> <...> ?

Зашлите из терминальной программы с помощью макроса пакет другого содержания из нескольких байт. Будет ли сбой-завес.

 

 

 

 

 

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


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

А на отладчике что видно ?

Смотрите размер буферов USART.

Если сбой только на "цепочечных" посылках, когда пакет из ESC итд идет без паузы - в

отличие от тыкания пальцем по отдельным кодам (тогда между каждым прилетающим в приемник символом идет бОООльшая пауза).

Что-то не феншуй с приемом и векторах прерываний. Получается критична скорость обработки пришедшего символа.

смотрите настройки соотв-го вектора по прерывания по Rx и его увязку с обработчиком ОС.

Сбой только на <0x1B> <...> <...> ?

Зашлите из терминальной программы с помощью макроса пакет другого содержания из нескольких байт. Будет ли сбой-завес.

 

На отладчике ошибка переполнения регистра приема uart, обработчик явно не успевает (если поставить задержку передачи символа в

терминалке на 1мс/символ все работает), в случае передачи нескольких символов сразу ситуация повторяется как и для ESC.

Наверное причин может быть много, но

задача обработчика ввода с консоли самая высокоприоритетная,

приоритет обработчика прерываний configMAX_SYSCALL_INTERRUPT_PRIORITY

задача обработчика консоли одна и выполняется на высокопроизводительном 32 разрядном cortex m3

 

что может замедлять обработчик?

 

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


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

Только работа мозга.

Проверьте без OS.

Загрузите проект на github - тогда что-то конкретное будет.

RTS/CTS

XON/XOFF

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


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

Только работа мозга.

Проверьте без OS.

Загрузите проект на github - тогда что-то конкретное будет.

RTS/CTS

XON/XOFF

 

без OS все ОК

RTS/CTS не вариант.

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


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

без OS все ОК

RTS/CTS не вариант.

Загрузите проект на github - тогда что-то конкретное будет.

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


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

причина неправильной обработки ESC обнаружилась в неправильной инициализации uart.

он был установлен в режим "asynchronous multi-processor" (а нужен был "asynchronus normal serial mode").

при получении трех символов ESC последовательности (непрерывно), происходило считывание дополнительного (9-го) бита.

т.е. имело место некорректное чтение символа (обработчик прерывания сбрасывал принятый "мусорный" символ, очищал ошибку переполнения в Serial Status Register и на этом заканчивал свою часть работы)

Особенности работы задачи-обработчика принятых символов я пока не понял (вместо переданной ESC последовательности терминалка выводила "мусор", хотя обработчик прерываний данные в задачу-обработчик не отправлял..).

Однако понятно, что данная глупая ошибка связана с невнимательностью при инициализации uart.

 

Спасибо k155la3 и x893 за участие. хорошего дня.

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


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

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

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

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

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

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

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

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

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

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