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

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

Всем доброго времени суток!

Возникла потребность в реализации простенькой консоли управления/конфигурирования устройством на базе микроконтроллера с ядром RV32IMC с 64 кБ флеша и 32 кБ статической памяти и под это ищется какая-нибудь проверенная готовая библиотека, написанная на чистом C. Крайне желательно, чтобы в ней была поддержка возможности редактирования строки команды, история, простых скриптов и т.п., т.е. что-то вроде Linux shell или TCL shell на минималках. В качестве первой пробы была взята https://github.com/brycekellogg/tinycli но она уж слишком проста и в ней нет поддержки скриптов. Попалось еще несколько вариантов встраиваемых интерпретаторов TCL-образных языков и в пределе было бы здорово использовать давно известный и проверенный JimTcl, но он слишком толстый для МК и его придется сильно резать, причём не факт, что это получится сделать хорошо и правильно из-за его зависимостей от функций ОС.

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

 

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


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

9 минут назад, makc сказал:

Понятно, что можно написать свою библиотеку, но совершенно не хочется изобретать ещё один велосипед, когда речь идёт о типовой задаче.

К сожалению, реальность в виде не особо одаренных техническим складом ума юзеров, начиная от техников, проверяющих и настраивающих изделия на заводе, заставила отказаться от консоле-подобных заморочек еще лет 10 назад... Сейчас даже GUI-шки для них жмутся до размера пары-тройки кнопок и одного индикатора - исправно/нет. Я думал, что весь эмбеддед идет примерно по такому пути))

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


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

Эти все проблемы мне понятны. Эта консоль не для простых пользователей, а для техников и админов, т.е. для подготовленных людей имеющих опыт работы с командой строкой, например,  линукса. Посмотрите, например, как до сих пор администрируется продукция Cisco и тот же Mikrotik имеет прекрасную консоль.

7 минут назад, Arlleex сказал:

Я думал, что весь эмбеддед идет примерно по такому пути))

Что куда идёт очень сильно зависит от условий конкретной задачи. Прикрутить к этой консоли GUI - не проблема, а приделать скрипты на expect ещё проще. 

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


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

Беглый гуглёж по запросам вроде baremetal shell дал пару интересных программ: barebox и microshell

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


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

3 минуты назад, vov4ick сказал:

Беглый гуглёж по запросам вроде baremetal shell дал пару интересных программ: barebox и microshell

Гуглить я тоже умею. 😉

Вот, например, неплохая подборка - https://github.com/BaseMax/AwesomeInterpreter

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

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


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

У меня свой простенький shell, с редактированием, историей и автодополнением названий команд, без скриптов. Библиотечку готовую не подобрал.

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


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

17 минут назад, amaora сказал:

Библиотечку готовую не подобрал.

Что помешало?

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


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

Взглянув на заголовок, первым порывом было предложить JimTcl. Но уже при прочтении начального поста выяснилось, что ТС такой вариант рассмотрел и отбросил из-за неподходящей весовой категории Джима.

Тогда вспомнил, что пробегало мимо вот такое:

Там в конце есть ряд ссылок на CLI оболочки, есть вероятность найти в них что-то подходящее.

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


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

12 часов назад, makc сказал:

Кто чем пользуется для этих целей?

Ну так отладка, это как правило просто вывод в консоль, а если уж что-то сложнее, скрипты и пр, то лучше линукса для этих целей еще никто не придумал))

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


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

11 hours ago, makc said:

Что помешало?

В частности, не хотелось составлять список обработчиков команд и регистрировать их на старте, как это обычно все делают. У меня команды разбросаны по всему проекту, помечены с помощью макросов, что это обработчик CLI, а таблица собирается python-скриптом на этапе сборки. Ну и это не такая сложная задача, чтобы не делать велосипед, посмотрел сейчас, у меня около 600 строк (как упомянутый tinycli).

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

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


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

1 час назад, mantech сказал:

Ну так отладка, это как правило просто вывод в консоль, а если уж что-то сложнее, скрипты и пр, то лучше линукса для этих целей еще никто не придумал))

Всё верно, но если устройство управляется и тестируется через UART, то возникает потребность чего-то большего, чем отладочная выдача и реакция на ввод отдельных символов для запуска необходимых операций (getch и всё такое). Поэтому мы в таком случае и приходим к реализации консоли или на худой конец TUI, который сильно медленнее консоли.

1 минуту назад, amaora сказал:

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

Скрипты у меня это вариант расширенной сборки, по необходимости. Для простых случаев достаточно консоли с редактированием и историей, далее в более сложных автодополнение, а на сладкое скрипты.

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


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

2 минуты назад, amaora сказал:

интерпретатор какого-то языка влезающий по ресурсам.

Ну вот когда-то я взял за основу своей системы интерпретатор С4, он сильно примитивный в исходном виде, но простые скрипты на нем делать очень просто...

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


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

2 часа назад, mantech сказал:

интерпретатор С4

Где именно вы его брали?

2 часа назад, Ozelot сказал:

ESH

Посмотрел, вы его использовали? Очень похоже на tinycli и похоже не умеет работать со скриптами. Или я что-то упустил?

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


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

4 минуты назад, makc сказал:

Или я что-то упустил?

Он же вроде под линукс, не?

4 минуты назад, makc сказал:

Где именно вы его брали?

https://github.com/rswier/c4

 

Изменено пользователем mantech

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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