makc 214 9 августа Опубликовано 9 августа · Жалоба Всем доброго времени суток! Возникла потребность в реализации простенькой консоли управления/конфигурирования устройством на базе микроконтроллера с ядром RV32IMC с 64 кБ флеша и 32 кБ статической памяти и под это ищется какая-нибудь проверенная готовая библиотека, написанная на чистом C. Крайне желательно, чтобы в ней была поддержка возможности редактирования строки команды, история, простых скриптов и т.п., т.е. что-то вроде Linux shell или TCL shell на минималках. В качестве первой пробы была взята https://github.com/brycekellogg/tinycli но она уж слишком проста и в ней нет поддержки скриптов. Попалось еще несколько вариантов встраиваемых интерпретаторов TCL-образных языков и в пределе было бы здорово использовать давно известный и проверенный JimTcl, но он слишком толстый для МК и его придется сильно резать, причём не факт, что это получится сделать хорошо и правильно из-за его зависимостей от функций ОС. Кто чем пользуется для этих целей? Понятно, что можно написать свою библиотеку, но совершенно не хочется изобретать ещё один велосипед, когда речь идёт о типовой задаче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 172 9 августа Опубликовано 9 августа · Жалоба 9 минут назад, makc сказал: Понятно, что можно написать свою библиотеку, но совершенно не хочется изобретать ещё один велосипед, когда речь идёт о типовой задаче. К сожалению, реальность в виде не особо одаренных техническим складом ума юзеров, начиная от техников, проверяющих и настраивающих изделия на заводе, заставила отказаться от консоле-подобных заморочек еще лет 10 назад... Сейчас даже GUI-шки для них жмутся до размера пары-тройки кнопок и одного индикатора - исправно/нет. Я думал, что весь эмбеддед идет примерно по такому пути)) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 9 августа Опубликовано 9 августа · Жалоба Эти все проблемы мне понятны. Эта консоль не для простых пользователей, а для техников и админов, т.е. для подготовленных людей имеющих опыт работы с командой строкой, например, линукса. Посмотрите, например, как до сих пор администрируется продукция Cisco и тот же Mikrotik имеет прекрасную консоль. 7 минут назад, Arlleex сказал: Я думал, что весь эмбеддед идет примерно по такому пути)) Что куда идёт очень сильно зависит от условий конкретной задачи. Прикрутить к этой консоли GUI - не проблема, а приделать скрипты на expect ещё проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vov4ick 39 9 августа Опубликовано 9 августа · Жалоба Беглый гуглёж по запросам вроде baremetal shell дал пару интересных программ: barebox и microshell Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 9 августа Опубликовано 9 августа · Жалоба 3 минуты назад, vov4ick сказал: Беглый гуглёж по запросам вроде baremetal shell дал пару интересных программ: barebox и microshell Гуглить я тоже умею. 😉 Вот, например, неплохая подборка - https://github.com/BaseMax/AwesomeInterpreter Однако вопрос был в другом: нужен проверенный вариант, который хорошо себя показал на практике (есть положительный личный опыт). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 24 9 августа Опубликовано 9 августа · Жалоба У меня свой простенький shell, с редактированием, историей и автодополнением названий команд, без скриптов. Библиотечку готовую не подобрал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 9 августа Опубликовано 9 августа · Жалоба 17 минут назад, amaora сказал: Библиотечку готовую не подобрал. Что помешало? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 9 августа Опубликовано 9 августа · Жалоба Взглянув на заголовок, первым порывом было предложить JimTcl. Но уже при прочтении начального поста выяснилось, что ТС такой вариант рассмотрел и отбросил из-за неподходящей весовой категории Джима. Тогда вспомнил, что пробегало мимо вот такое: Почему Нам Нужен UART-Shell? (или Добавьте в Прошивку Гласность) Там в конце есть ряд ссылок на CLI оболочки, есть вероятность найти в них что-то подходящее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 10 августа Опубликовано 10 августа · Жалоба 12 часов назад, makc сказал: Кто чем пользуется для этих целей? Ну так отладка, это как правило просто вывод в консоль, а если уж что-то сложнее, скрипты и пр, то лучше линукса для этих целей еще никто не придумал)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 24 10 августа Опубликовано 10 августа · Жалоба 11 hours ago, makc said: Что помешало? В частности, не хотелось составлять список обработчиков команд и регистрировать их на старте, как это обычно все делают. У меня команды разбросаны по всему проекту, помечены с помощью макросов, что это обработчик CLI, а таблица собирается python-скриптом на этапе сборки. Ну и это не такая сложная задача, чтобы не делать велосипед, посмотрел сейчас, у меня около 600 строк (как упомянутый tinycli). Но у вас в требованиях скрипты, это существенно усложняет задачу. Надо искать не библиотеку командной строки а в первую очередь интерпретатор какого-то языка влезающий по ресурсам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 10 августа Опубликовано 10 августа · Жалоба 1 час назад, mantech сказал: Ну так отладка, это как правило просто вывод в консоль, а если уж что-то сложнее, скрипты и пр, то лучше линукса для этих целей еще никто не придумал)) Всё верно, но если устройство управляется и тестируется через UART, то возникает потребность чего-то большего, чем отладочная выдача и реакция на ввод отдельных символов для запуска необходимых операций (getch и всё такое). Поэтому мы в таком случае и приходим к реализации консоли или на худой конец TUI, который сильно медленнее консоли. 1 минуту назад, amaora сказал: Но у вас в требованиях скрипты, это существенно усложняет задачу. Надо искать не библиотеку командной строки а в первую очередь интерпретатор какого-то языка влезающий по ресурсам. Скрипты у меня это вариант расширенной сборки, по необходимости. Для простых случаев достаточно консоли с редактированием и историей, далее в более сложных автодополнение, а на сладкое скрипты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 10 августа Опубликовано 10 августа · Жалоба 2 минуты назад, amaora сказал: интерпретатор какого-то языка влезающий по ресурсам. Ну вот когда-то я взял за основу своей системы интерпретатор С4, он сильно примитивный в исходном виде, но простые скрипты на нем делать очень просто... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 7 10 августа Опубликовано 10 августа · Жалоба ESH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 10 августа Опубликовано 10 августа · Жалоба 2 часа назад, mantech сказал: интерпретатор С4 Где именно вы его брали? 2 часа назад, Ozelot сказал: ESH Посмотрел, вы его использовали? Очень похоже на tinycli и похоже не умеет работать со скриптами. Или я что-то упустил? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 10 августа Опубликовано 10 августа (изменено) · Жалоба 4 минуты назад, makc сказал: Или я что-то упустил? Он же вроде под линукс, не? 4 минуты назад, makc сказал: Где именно вы его брали? https://github.com/rswier/c4 Изменено 10 августа пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться