Обновить

Какой Может быть UART-CLI в Микроконтроллере (или Курс Молодого Бойца)

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели10K
Всего голосов 25: ↑24 и ↓1+32
Комментарии16

Комментарии 16

Вообще восторг. Честно говоря, не думал что в cli можно добавить калькулятор чисел и емкости, идея прикольная конечно. Большинство функций невероятно полезные, а часть непонятно зачем делать на контроллере. Идейно ничего не мешает, а с другой стороны что-то в голове против такого подхода для использования другими людьми, то есть не для разработки.

Я стараюсь двигаться в сторону web-морды прямо на мк если это esp32, или в сторону кастомного оконного gui на pyqt или js если ресурсов меньше. Программистам легко обьяснить как работать в терминале, но разрабатываемые мной устройства редко попадают в руки программистов. Обычным людям нужно что-то попроще, чтобы был какой-то пароль на входе и кнопочки чтобы потыкать.

У вас понятная правильная статья про разработку и она заслуживает плюсик. А расскажете что делаете для юзеров, а не для себя?

Так уж вышло, что в основном пишу прошивки для приборов категории B2B.

Целевая аудитория тоже разработчики и интеграторы.

вот web-морда для мк будет действительно классным решением! На веб-морде можно сделать в том числе вкладку в которой будет консоль, а можно сколько нужно (сколько в мк определено категорий) вкладок по категориям регистров...

Этих вкладок будет сотни

а какая альтернатива, держать эти сотни в голове, сотни адресов/категорий?

Но на самом деле при правильной организации интерфейса сотен там не будет, будут десятки, ДО сотни, примерно, может чуть больше если это все таки десктопный процессор. А для проца, действительно, уровня МК будет не больше пары-тройки десятков. А в реальной работе, для реальной задачи никогда не используется больше десятка, а значит нет софта для отображения большего количества категорий, а в браузере надо отображать только то что МК поддерживает, а не все подряд на все случаи жизни.

Все эти возможности прекрасны, но сколько же надо места и тактов на МК для их реализации? Разве не было бы идейно правильно оставить в МК только интерфейс доступа к информации (фактически API дебаггера), а сам интерпретатор и команды CLI хранить и исполнять на компе, формируя и передавая поток в стандартный эмулятор терминала?

Не слишком навороченно сформулировал? Вечно пытаюсь всё впихнуть в одну фразу...

Тогда пришлось бы фактически писать две программы: прошивку и клиентскую утилиту.

А в случае с uart cli достаточно написания одной только прошивки.

Хочу отдать должное - команды лаконичные и набор их удобный, насколько могу судить, хэлп - вообще песня. Работать с этим, наверняка, удобно и приятно. Статья ведь именно об интерфейсе, а не о реализации, правильно понимаю? Так вот, в этом смысле точно всё хорошо.

Все эти возможности прекрасны, но сколько же надо места и тактов на МК для их реализации?

Дак сейчас и МК тоже мощные. У меня сейчас МК с мегабайтным флешем. До этого был МК 6 мегабайт .

Cli хороша тем, что не можно насыпать по одной команде .

Гибко настраивается под каждую сборку.

Понятно. Ожидаемый ответ, конечно. Но это уже не эмбеддерство, как по мне. У вас под рукой то, что в конце 80-х называлось мэйнфрэймом, только подключен один терминал, а не несколько десятков. И теперь это микроконтроллер, видите ли. Только вот маленькие микроконтроллеры по-прежнему в ходу. И там хоть тоже уже не считают байты, но для полноценной системы по-прежнему места нет и каждый килобайт на счету. Вот там эмбеддерство, а ваше направление надо уже как-то по-другому называть - совсем другой стиль и подход.

Не так давно встретил описание поилки для котика, который не хочет пить из миски, а хочет лизать струйку. История реальная. Нужно было сделать так, чтобы, когда котик пришёл пить, включался насосик и выдавал струйку воды. Думаете чел поставил микрик под полом водопоя? Неееет! Поставил Pi с камерой, натаскал нейронку... А что, говорит, у меня пишка и камера без дела валялись, а дощечку пилить надо, в интерьер вписывать.

Если бы я был котом ,то пил бы только из струек с ламинарным потоком.

Ну учитывая что у нас мк нынче многоядерные, и я подозреваю работают на ГИГА-герцах:

В CLI можно просмотреть процент заполнения стековой памяти по всем ядрам. Это команда cd (core_diag)

места и тактов на таких МК некуда девать! Каких то 25 лет назад мы на более слабых МК играли в Qвейк по сети под виндой :) ! А теперь мы не стесняемся программирование под них называть эмбеддед разработкой и называть их Микроконтроллерами :) , хотя на самом деле это среднего уровня десктопные процы, просто с подключением узко-специальных последовательных шин/ аппаратных портов/... специальной переферии.

Что называется: зажрались эмбеддед разработчики :) .

Надеюсь, это всё отключается флагами условной компиляции и не попадает в релизную прошивку?

Да. Uart-cli нужна только в debug версии прошивки.

Довольно много проектов по высовыванию в CLI интерпретаторов Бейсика, похожих на классические. Работают на железках начиная с Nano 328p. Для RP2040 сделали CLI, имитирующий COMMAND.COM с возможностью запуска BAT-файлов (синтаксис во многом совпадает) и обращения оттуда к Python-скриптам и файлам на Бейсике, интерпретатор для которых тоже предусмотрен.

Или вот, типичная ситуация. Есть у Вас два набора регистров. На одном наборе устройство работает. На другом наборе регистров устройство не работает. Надо понять в чем, собственно, дело.

У меня подобную роль исполняет gdb'шная консоль отладчика и дубовый printf, разницу не посчитает конечно, но регистры в удобоваримом виде получить можно:

000000000000  0000.00.00 00:00:00.000 ETH Main >Boot message: 0.

Breakpoint 6, main () at Core/Src/Commons/main.c:236
236    InitRS485();
source dump_usart.batch
LPUART1 CR1=0x0000000d, UE=1, TE=1, RE=1, M=0, PCE=0
LPUART1 CR2=0x00000000, STOP=0
LPUART1 CR3=0x00000300, RTSE=1, CTSE=1
LPUART1 BRR=0x00022b8e
LPUART1 RDR=0x00000000
LPUART1 TDR=0x00000000
LPUART1 ISR=0x006000d0, TXE=1, TC=1, RXNE=0, ORE=0


LPUART2 CR1=0x0000000d, UE=1, TE=1, RE=1, M=0, PCE=0
LPUART2 CR2=0x00000000, STOP=0
LPUART2 CR3=0x00000000, RTSE=0, CTSE=0
LPUART2 BRR=0x000d0555
LPUART2 RDR=0x00000000
LPUART2 TDR=0x00000000
LPUART2 ISR=0x006000d4, TXE=1, TC=1, RXNE=0, OR

Но после статьи серьёзно задумался насчёт интеграции подобного cli в проекты

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации