реклама на сайте
подробности

 
 
> Принцип построения консоли управления устройством, Поделитесь опытом кто как делает :)
mempfis_
сообщение Aug 12 2009, 08:43
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Стоит задача разаработать устройство которое должно иметь возможность управляться через UART.
Думаю встроить отладочную консоль чтобы можно было посылать в устройство комманды и получать ответы.
Комманды в виде одиночных символов реализовал. Теперь хочу расширить функциональность консоли и реализовать длинные команды
(наподобие АТ-комманд). Причём хочется сделать аппаратно-независимую консоль чтобы можно было переносить из проекта в проект меняя только низкоуровневые функции приёма/отправки символовов через UART.

Подскажите кто как делает подобные консоли. Интересует прежде всего как осуществляется поиск комманд в потоке принимаемых символов (выделение слов длиной 2 и более символа)? Какие стандартные библиотеки можно использовать?

Сейчас реализована входная FIFO-UART которая заполняется в прерываниях и функция считывания символа из FIFO которая возвращает -1 если нет данных или принятый символ. Одиночные символы отлавливать легко (считал - обработал), два - уже сложнее но пока реализую устанавливая флаги.
Как отловить три и более символа - вот тут нужны идеи smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Aug 13 2009, 05:02
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zltigo @ Aug 12 2009, 14:24) *
Код
....
case 'sst ':
...
case 'psst':
....
case 'aa  ':
....

Команды - по первым четырем (для 32битника) символам.

А все-таки, если у человека тупо буфер, нету манагера кучи для построения деревьев в ОЗУ - АВР средненький, короче, - так построить интерпретатор команд не получится! smile.gif

Цитата(AHTOXA @ Aug 12 2009, 22:06) *
Ну и можно банально забыть писишную программуsmile.gif
Интерактив, короче. Для таких применений сложно придумать универсальную программу для ПиСи, имхо.

Ага, ОРС-серверы всякие не забывают, а тут-досада smile.gif
Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет.


Цитата(Goodefine @ Aug 12 2009, 22:32) *
Как тогда контроллер отреагирует на на сообщение "hello world"

Это все бессмысленно без
а) строгого разделения команд без аргументов, хотя бы пробелами.
б) минимального синтаксического разбора команд с аргументами.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 13 2009, 05:45
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Pasha @ Aug 13 2009, 11:02) *
Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет.


ОРС-серверы - это для устройств, постоянно находящихся на связи. Тут действительно, забыть проблематичноsmile.gif Если же терминал применяется изредка, то шансы возрастают.

Цитата(_Pasha @ Aug 13 2009, 11:02) *
Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет.


Как реализовать через регистровую модель мини-DOS для флеш-карточки, например?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 13 2009, 05:52
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AHTOXA @ Aug 13 2009, 08:45) *
Как реализовать через регистровую модель мини-DOS для флеш-карточки, например?

Легко. Регистр адреса + регистр данных + регистр управления/статуса.
Остальное - епархия девайса.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 13 2009, 06:00
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Что-то не могу себе представить... Расскажите чуть подробнее, как, например, будет реализована команда "DIR"?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 13 2009, 06:09
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AHTOXA @ Aug 13 2009, 09:00) *
как, например, будет реализована команда "DIR"?

Тогда лучше определиться, что мы хотим - получить блочное устройство накопитель данных или девайс, общающийся посредством терминала. А команда DIR - средствами оси.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 13 2009, 06:17
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Насколько я понял, автор темы хочет консоль управления/отладки.
Если мы реализуем блочное устройство и будем читать карточку средствами оси, то это мало поможет нам отлаживать код работы с файловой системой внутри устройства.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 13 2009, 06:41
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(AHTOXA @ Aug 13 2009, 09:17) *
Насколько я понял, автор темы хочет консоль управления/отладки...


Именно. Мне нужна консоль в устройстве чтобы посылая определённые команды из терминала можно было изменить настройки, перепрошить устройство, считать текущие параметры и т.д. Ничего сверхумного и сверхсложного не нужно.
Может быть я даже неправильно назвал тему - скорее нужно было назвать "как отловить из потока симмволов команды длиной более 2х символов".
Но пару идей в дискуссии по тому как это сделать (ну и как собственно организовать консоль и систему команд) я уже приметел smile.gif

Все спасибо за дисскуссию. Надеюсь она не остановится и ещё прозвучит ещё много идей smile.gif

По поводу длинных команд - буквы F, E, L не так информативны как WFLASH, EFLASH, WLOCK и т.п.
Сразу видно что я хочу записать флэш, стереть её, записать лок-биты. Вобщем небольшое увеличение длины команды позволяет сразу переходить на необходимую подпрограмму обработки. Будет и самому интуитивно понятнее и система команд значительно расширяется.

Сообщение отредактировал mempfis_ - Aug 13 2009, 06:46
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 13 2009, 16:01
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(mempfis_ @ Aug 13 2009, 09:41) *
"как отловить из потока симмволов команды длиной более 2х символов".


Так в принципе, ничего нового не выдумано, насколько я понимаю. Всё тоже как и 30 лет назад.

1) если идёт сплошной поток, то префикс команды (Байтстафинг). Как вы уже отметили в модемах используется. Префикс AT (за малым исключением). То есть "hgjghjhati3" будет квалифицировано как команда "i3" - идентификация устройства. Префикс может быть любым, в том числе и односимвольным. Я обычно использую "Ъ". smile.gif Естественно префикс из простого потока данных изымается (заменяется на комбинацию), либо удваивается. Один из вариантов WAKE.

2) Применяется пауза (в том числе определённой длительности) перед началом команды.

3) Применяется комбинация 1 и 2.

Есть ещё битстафинг (я применял), но он неподходит для UARTа.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mempfis_   Принцип построения консоли управления устройством   Aug 12 2009, 08:43
- - ukpyr   нужен приемный буфер на макс.количество символов в...   Aug 12 2009, 10:17
- - _Pasha   Собираете словарь команд (ASCIIZ), например Кодcon...   Aug 12 2009, 10:26
|- - zltigo   Цитата(_Pasha @ Aug 12 2009, 13:26) Собир...   Aug 12 2009, 11:24
|- - _Pasha   Цитата(zltigo @ Aug 12 2009, 14:24) Станд...   Aug 12 2009, 11:40
|- - AlexMad   Цитата(zltigo @ Aug 12 2009, 15:24) С раз...   Aug 20 2009, 18:52
|- - zltigo   Цитата(AlexMad @ Aug 20 2009, 20:52) А не...   Aug 20 2009, 19:23
- - DpInRock   Длинные команды - бессмысленное пижонство.   Aug 12 2009, 12:06
- - Goodefine   Зато обеспечивают детерминированное поведение сист...   Aug 12 2009, 14:31
|- - Dog Pawlowa   Цитата(Goodefine @ Aug 12 2009, 17:31) За...   Aug 12 2009, 15:44
- - Goodefine   Цитата(Dog Pawlowa @ Aug 12 2009, 18:44) ...   Aug 12 2009, 15:50
|- - Dog Pawlowa   Цитата(Goodefine @ Aug 12 2009, 18:50) В ...   Aug 12 2009, 17:21
|- - AHTOXA   Цитата(Dog Pawlowa @ Aug 12 2009, 23:21) ...   Aug 12 2009, 17:49
|- - Dog Pawlowa   Цитата(AHTOXA @ Aug 12 2009, 20:49) Гораз...   Aug 12 2009, 18:27
|- - AHTOXA   Цитата(Dog Pawlowa @ Aug 13 2009, 00:27) ...   Aug 12 2009, 19:06
|- - _Pasha   Цитата(Dog Pawlowa @ Aug 12 2009, 21:27) ...   Aug 12 2009, 19:10
- - SasaVitebsk   Читал протокол Пирамида. Правда это надпротокольны...   Aug 12 2009, 19:08
- - Goodefine   Цитата(Dog Pawlowa @ Aug 12 2009, 20:21) ...   Aug 12 2009, 19:32
|- - Dog Pawlowa   Цитата(Goodefine @ Aug 12 2009, 22:32) В ...   Aug 13 2009, 02:18
- - _Pasha   Цитата(AHTOXA @ Aug 13 2009, 09:17) Наско...   Aug 13 2009, 07:02
|- - AHTOXA   Цитата(_Pasha @ Aug 13 2009, 13:02) Но, в...   Aug 13 2009, 07:23
|- - _Pasha   Цитата(AHTOXA @ Aug 13 2009, 10:23) проще...   Aug 13 2009, 07:33
|- - AHTOXA   Цитата(_Pasha @ Aug 13 2009, 13:33) Ага. ...   Aug 13 2009, 09:30
- - rezident   В дополнение ко всему хотел бы заметить, что конфи...   Aug 13 2009, 19:03
|- - SasaVitebsk   Цитата(rezident @ Aug 13 2009, 22:03) В д...   Aug 14 2009, 06:54
|- - MrYuran   Цитата(SasaVitebsk @ Aug 14 2009, 10:54) ...   Aug 14 2009, 07:13
- - amaora   Обычно использую бинарный протокол для отладки, но...   Aug 14 2009, 17:02
|- - defunct   ЦитатаПринцип построения консоли управления устрой...   Aug 15 2009, 15:52
- - C.S.   Цитата(mempfis_ @ Aug 12 2009, 12:43) Сей...   Aug 25 2009, 11:56
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 14:56) Смущает...   Aug 25 2009, 12:08
- - C.S.   2_Pasha Кхм, я путаюсь уровнем ниже. Как принимаем...   Aug 25 2009, 12:25
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 15:25) Первый ...   Aug 25 2009, 12:58
|- - AHTOXA   Цитата(C.S. @ Aug 25 2009, 18:25) Как при...   Aug 25 2009, 13:03
- - C.S.   На время между символами. Наверное, может и не нуж...   Aug 25 2009, 13:02
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 16:02) А sym_p...   Aug 25 2009, 13:17
- - C.S.   ЦитатаРазворачиваем это все в другой буфер (к сожа...   Aug 25 2009, 13:26
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 16:26) Аааа...   Aug 25 2009, 13:36
- - C.S.   Цитатаэто ж ответ от девайса пойдет только после п...   Aug 25 2009, 13:54
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 16:54) Так вед...   Aug 25 2009, 14:03
- - C.S.   Так а если надо будет вернуть чего-то более разумн...   Aug 25 2009, 14:17
|- - _Pasha   Цитата(C.S. @ Aug 25 2009, 17:17) Так а е...   Aug 25 2009, 14:36
- - C.S.   Понял. Идиот. Спасибо большое!   Aug 25 2009, 15:18
- - C.S.   Парсинг команд сделал. Использовал побайтовое срав...   Aug 27 2009, 09:33
|- - _Pasha   Цитата(C.S. @ Aug 27 2009, 12:33) Команды...   Aug 27 2009, 14:19
- - C.S.   Хм, попробую и так. Просто делить их по запятой. А...   Aug 27 2009, 14:45


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 11:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016