0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

nr_micro_shell介紹及使用方法

MCU開發(fā)加油站 ? 來源:MCU開發(fā)加油站 ? 作者:MCU開發(fā)加油站 ? 2022-06-13 16:58 ? 次閱讀

1

nr_micro_shell介紹

在進(jìn)行調(diào)試和維護(hù)時(shí),常常需要與單片機(jī)進(jìn)行交互,獲取、設(shè)置某些參數(shù)或執(zhí)行某些操作,nr_micro_shell正是為滿足這一需求,針對(duì)資源較少的MCU編寫的基本命令行工具。雖然RT_Thread組件中已經(jīng)提供了強(qiáng)大的finsh命令行交互工具,但對(duì)于ROM、RAM資源較少的單片機(jī),finsh還是略顯的龐大,在這些平臺(tái)上,若仍想保留基本的命令行交互功能,nr_micro_shell是一個(gè)不錯(cuò)的選擇。

nr_micro_shell具有以下優(yōu)點(diǎn)

1.占用資源少,使用簡(jiǎn)單,靈活方便。使用過程只涉及兩個(gè)shell_init()和shell()兩個(gè)函數(shù),無論是使用RTOS還是裸機(jī)都可以方便的應(yīng)用該工具,不需要額外的編碼工作。

2.交互體驗(yàn)好。完全類似于linux shell命令行,當(dāng)串口終端支持ANSI(如Hypertrm終端)時(shí),其不僅支持基本的命令行交互,還提供Tab鍵命令補(bǔ)全,查詢歷史命令,方向鍵移動(dòng)光標(biāo)修改功能。

3.擴(kuò)展性好。nr_micro_shell為用戶提供自定義命令的標(biāo)準(zhǔn)函數(shù)原型,只需要按照命令編寫命令函數(shù),并注冊(cè)命令函數(shù),即可使用命令。

nr_micro_shell和相同配置下的finsh (finsh不使用msh)占用資源對(duì)比

原始工程 添加nr_micro_shell增加量 添加finsh增加量
ROM 63660 +3832 +26908
RAM 4696 +1104 +1304
兩者配置都為
  • 最多3條歷史命令。
  • 支持Tab補(bǔ)全 。
  • 命令行最大長(zhǎng)度為100。
  • 最多10個(gè)命令參數(shù)。
  • 命令行線程堆棧為512字節(jié)。
nr_micro_shell演示效果如下

7d346714-eaf4-11ec-ba43-dac502259ad0.gif7d846872-eaf4-11ec-ba43-dac502259ad0.gif

1.1 目錄結(jié)構(gòu)

名稱 說明
docs 文檔目錄,包含演示的GIF圖片等
examples 例子目錄,包括命令函數(shù)示例:nr_micro_shell_commands.c 和RT_Thread下使用示例 nr_micro_shell_thread.c
inc 頭文件目錄
src 源代碼目錄

1.2 許可證

nr_micro_shell package 遵循 MIT 許可,詳見 LICENSE 文件。

1.3 依賴

無依賴

2

Rt_Thread下ENV工具使用nr_micro_shell

RT_Thread 使用 nr_micro_shell package package 需要在 RT-Thread 的包管理器中選擇它,具體路徑如下:
RT-Threadonlinepackages
toolspackages--->
[*]nr_micro_shell:Lightweightcommandlineinteractiontool.--->
相關(guān)的設(shè)置在按下sapce鍵選中后,按enter可進(jìn)行相關(guān)參數(shù)配置。然后讓 RT-Thread 的包管理器自動(dòng)更新,或者使用 pkgs --update 命令更新包到 BSP 中。若您需要運(yùn)行示例,請(qǐng)保證RT_Thread配置中的Using console for kt_printf.選項(xiàng)是被打開的,kt_printf可以正常工作,且Use components automatically initialization.選項(xiàng)打開。編譯直接下載仿真便可以使用nr_micro_shell。命令行空白時(shí)按Tab,可顯示所有支持的命令,測(cè)試示例命令可見doc/pic下的使用示例動(dòng)圖。自定義命令過程,參照下文3. 裸機(jī)下使用nr_micro_shell package中的方法。

3

裸機(jī)下使用nr_micro_shell package

3.1 配置:

所有配置工作都可以在 nr_micro_shell_config.h 中完成。有關(guān)詳細(xì)信息,請(qǐng)參見文件中的注釋。

3.2 用法:

  • 確保所有文件都已添加到項(xiàng)目中。
  • 確保 nr_micro_shell_config.h 中的宏函數(shù)"shell_printf(),ansi_show_char()"可以在項(xiàng)目中正常使用。
  • 使用示例如下

#include"nr_micro_shell.h"

intmain(void)
{
/*初始化*/
shell_init();

while(1)
{
if(USARTGETACHAR'c')
{
/*nr_micro_shell接收字符*/
shell(c);
}
}
}
議直接使用硬件輸入前,建議使用如下代碼(確??梢哉4蛴⌒畔?,驗(yàn)證nr_micro_shell是否可以正常運(yùn)行
#include"nr_micro_shell.h"

intmain(void)
{
unsignedinti=0;
//匹配好結(jié)束符配置NR_SHELL_END_OF_LINE0
chartest_line[]="test123
"
/*初始化*/
shell_init();

/*初步測(cè)試代碼*/
for(i=0;isizeof(test_line)-1;i++)
{
shell(test_line[i]);
}

/*正式工作代碼*/
while(1)
{
if(USARTGETACHAR'c')
{
/*nr_micro_shell接收字符*/
shell(c);
}
}
}

3.3 添加自己的命令

STEP1:

您需要在nr_micro_shell_commands.c*中實(shí)現(xiàn)一個(gè)命令函數(shù)。命令函數(shù)的原型如下

voidyour_command_funtion(charargc,char*argv)
{
.....
}

argc是參數(shù)的數(shù)目。argv存儲(chǔ)每個(gè)參數(shù)的起始地址和內(nèi)容。如果輸入字符串是

test-a1

argc為3,argv的內(nèi)容為

-------------------------------------------------------------
0x03|0x08|0x0b|'t'|'e'|'s'|'t'|''|'-'|'a'|''|'1'|''|
-------------------------------------------------------------

如果想知道第一個(gè)或第二個(gè)參數(shù)的內(nèi)容,應(yīng)該使用

/*"-a"*/
printf(argv[argv[1]])
/*"1"*/
printf(argv[argv[2]])
STEP2:在使用命令前需要注冊(cè)命令,共有兩種方法注冊(cè)命令1.當(dāng)配置文件中NR_SHELL_USING_EXPORT_CMD未被定義,在 static_cmd[] 表中寫入
conststatic_cmd_ststatic_cmd[]=
{
.....
{"your_command_name",your_command_funtion},
.....
{"",NULL}
};
注意:不要?jiǎng)h除{"",NULL}!

2.當(dāng)配置文件中NR_SHELL_USING_EXPORT_CMD被定義,且NR_SHELL_CMD_EXPORT()支持使用的編譯器時(shí),可以使用以下方式注冊(cè)命令

NR_SHELL_CMD_EXPORT(your_command_name,your_command_funtion);

4

Linux下使用nr_micro_shell仿真

在工程./examples/simulator/目錄下存放著nr_micro_shell仿真代碼,仍在./examples/nr_micro_shell_commands.c文件中按上述方式添加自定義命令,添加完成后可以使用make命令編譯源碼,生產(chǎn)的可執(zhí)行文件為./examples/simulator/out/nr_micro_shell./examples/simulator/out/nr_micro_shell_db。可使用的make命令如下

#編譯可執(zhí)行文件
make
#編譯可仿真執(zhí)行文件
makedebug
#清除編譯生成文件
makeclean

5

注意事項(xiàng)

根據(jù)你的使用習(xí)慣使用NR_SHELL_USING_EXPORT_CMD選擇命令注冊(cè)方式。使用注冊(cè)表注冊(cè)命令時(shí),確保您的工程中存在注冊(cè)表
conststatic_cmd_ststatic_cmd[]=
{
.....
{"",NULL}
};
使用NR_SHELL_CMD_EXPORT()時(shí)確保,NR_SHELL_CMD_EXPORT()支持使用的編譯器,否則會(huì)報(bào)錯(cuò)。

nr_micro_shell 不支持ESC鍵等控制鍵(控制符)。


原文標(biāo)題:一個(gè)開源MCU級(jí)命令行交互組件

文章出處:【微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16792

    瀏覽量

    349319
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208459
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    360

    瀏覽量

    23234
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1249

    瀏覽量

    39717

原文標(biāo)題:一個(gè)開源MCU級(jí)命令行交互組件

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux shell函數(shù)簡(jiǎn)介和使用方法

    作為一個(gè)嵌入式 Linux 工程師,肯定需要編寫 shell 腳本進(jìn)行一些自動(dòng)化工作。剛好,我最近就有類似需求——一鍵交叉編譯 DDS。本著“編寫漂亮代碼的原則”,我用到了 shell 函數(shù) 。
    發(fā)表于 08-25 16:21 ?1115次閱讀
    Linux <b class='flag-5'>shell</b>函數(shù)簡(jiǎn)介和<b class='flag-5'>使用方法</b>

    Linux Shell學(xué)習(xí):uniq命令使用方法介紹

    Linux Shell學(xué)習(xí):uniq命令使用方法介紹uniq命令的作用:顯示唯一的行,對(duì)于那些連續(xù)重復(fù)的行只顯示一次! 接下來通過實(shí)踐實(shí)例說明: [root@stu100 ~]# cat test
    發(fā)表于 06-06 12:24

    英飛凌MEMTOOL軟件介紹使用方法

    ,附件中詳細(xì)介紹了這款軟件支持的操作系統(tǒng)平臺(tái)、支持燒錄的英飛凌MCU系列和具體型號(hào),并詳細(xì)介紹了軟件的使用方法。MEMTOOL軟件介紹使用方法
    發(fā)表于 12-14 09:39

    Micro:bit的使用方法

    Micro:bit全稱為BBC Micro:bit,是一款英國(guó)廣播公司(BBC)推出的,用于青少年編程教育的ARM開發(fā)版,接下來,讓我們一起認(rèn)識(shí)Micro:bit,學(xué)習(xí)Micro:bi
    發(fā)表于 11-04 06:46

    介紹示波器的特殊使用方法

    本文介紹了示波器的特殊使用方法
    發(fā)表于 05-06 10:36

    nr_micro_shell的優(yōu)點(diǎn)是什么

    nr_micro_shell — 在單片機(jī)上體驗(yàn)linux shell命令行,自動(dòng)補(bǔ)全,歷史命令,自定義命令單片機(jī)在進(jìn)行實(shí)際調(diào)試和維護(hù)時(shí),常常需要與單片機(jī)進(jìn)行交互,獲取或設(shè)置某些參數(shù),以了解系統(tǒng)工作
    發(fā)表于 01-12 06:58

    介紹SPI的使用方法

    寫在最前使用RT-Thread Studio開發(fā)環(huán)境開發(fā)STM32單片機(jī)程序,與MDK使用env有一定的差別,對(duì)于剛開始使用的程序員來說,主要是找不到配置選項(xiàng)在哪里,上一篇介紹了TIM設(shè)備的使用方法
    發(fā)表于 02-17 06:32

    【CW32飯盒派開發(fā)板試用體驗(yàn)】+ 串口nr_micro_shell移植

    */ } 這樣串口的發(fā)送和接收都搞定了。下面就利用串口移植一個(gè)shell功能測(cè)試一下。 本次就選用了nr_micro_shell這一個(gè)開源的shell庫。這個(gè)簡(jiǎn)單方便,用的也挺多的。其實(shí)聽說還有個(gè)
    發(fā)表于 05-07 16:48

    shell編程使用方法

    Shell編程的基本格式:Shell腳本的文件名后綴通常是.sh (當(dāng)然你也可以使用其他后綴或者沒有后綴,.sh是為了規(guī)范)。程序編寫格式:[java] view plain copy#!/bin/bash
    發(fā)表于 12-12 15:28 ?3039次閱讀
    <b class='flag-5'>shell</b>編程<b class='flag-5'>使用方法</b>

    面包板的結(jié)構(gòu)和使用方法詳細(xì)介紹

    面包板是實(shí)驗(yàn)室中用于搭接電路的重要工具,熟練掌握面包板的使用方法是提高實(shí)驗(yàn)效率,減少實(shí)驗(yàn)故障出現(xiàn)幾率的重要基礎(chǔ)之一。下面就面包板的結(jié)構(gòu)和使用方法做簡(jiǎn)單介紹。
    發(fā)表于 10-31 08:00 ?0次下載
    面包板的結(jié)構(gòu)和<b class='flag-5'>使用方法</b>詳細(xì)<b class='flag-5'>介紹</b>

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點(diǎn)在于正確使用示波器的使用方法。往期文章中,小編對(duì)模擬示波器的使用方法和數(shù)字示波器的使用方法均有所介紹。為增進(jìn)大
    的頭像 發(fā)表于 12-24 20:37 ?3087次閱讀

    【國(guó)民技術(shù)N32項(xiàng)目移植】N32L43XRL-STB串口調(diào)試 nr_micro_shell移植

    【國(guó)民技術(shù)N32項(xiàng)目移植】N32L43XRL-STB串口調(diào)試 nr_micro_shell移植
    的頭像 發(fā)表于 01-05 09:10 ?1957次閱讀
    【國(guó)民技術(shù)N32項(xiàng)目移植】N32L43XRL-STB串口調(diào)試 <b class='flag-5'>nr_micro_shell</b>移植

    分享一個(gè)開源輕量級(jí)單片機(jī)命令行交互組件

    在進(jìn)行調(diào)試和維護(hù)時(shí),常常需要與單片機(jī)進(jìn)行交互,獲取、設(shè)置某些參數(shù)或執(zhí)行某些操作,nr_micro_shell正是為滿足這一需求,針對(duì)資源較少的MCU編寫的基本命令行工具。
    的頭像 發(fā)表于 01-29 10:43 ?1151次閱讀

    如何在單片機(jī)中實(shí)現(xiàn)命令交互

    在進(jìn)行調(diào)試和維護(hù)時(shí),常常需要與單片機(jī)進(jìn)行交互,獲取、設(shè)置某些參數(shù)或執(zhí)行某些操作,nr_micro_shell正是為滿足這一需求,針對(duì)資源較少的MCU編寫的基本命令行工具。
    發(fā)表于 09-27 09:31 ?1024次閱讀
    如何在單片機(jī)中實(shí)現(xiàn)命令交互

    python shell怎么用

    Python Shell使用方法、功能和一些常見的操作技巧。 Python Shell的啟動(dòng): Python Shell可以通過在命令行中輸入 python 命令來啟動(dòng)。在Windo
    的頭像 發(fā)表于 11-29 14:36 ?1021次閱讀