0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread finsh组件工作流程详解

RTThread物联网操作系统 来源:网络整理 作者:工程师陈翠 2018-09-23 11:04 次阅读

finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试、查看系统信息。在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用。比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中的线程运行状态、手动控制系统状态。如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为。这无疑会十分方便。

finsh支持两种模式:

1. C语言解释器模式, 为行文方便称之为c-style;

2. 传统命令行模式,此模式又称为msh(module shell)。C语言表达式解释模式下, finsh能够解析执行大部分C语言的表达式,并使用类似C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。在msh模式下,finsh运行方式类似于dos/bash等传统shell。

大致工作流程

一、finsh组件初始化函数finsh_system_init(),并且添加了INIT_COMPONENT_EXPORT(finsh_system_init),支持组件初始化;

这个函数会初始化finsh组件,包括一些finsh变量以及相关数据结构。

然后它会创建一个线程,代码如下:

可以看到,线程函数是finsh_thread_entry,在下一节中我们将分析它具体工作流程。

二、void finsh_set_device(const char* device_name)函数为finsh设置终端设备,在stm32中主要设置串口设备为终端。该函数一般放在组件初始化函数rt_component_init()后面,因为要先完成finsh组件初始化才能设置终端设备。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3550

    浏览量

    129087
  • 组件
    +关注

    关注

    1

    文章

    503

    浏览量

    17782

原文标题:RT-Thread finsh组件工作流程

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Thread记录(二、RT-Thread内核启动流程

    在前面我们RT-Thread Studio工程基础之上讲一讲RT-Thread内核启动流程.
    的头像 发表于 06-20 00:30 4932次阅读
    <b class='flag-5'>RT-Thread</b>记录(二、<b class='flag-5'>RT-Thread</b>内核启动<b class='flag-5'>流程</b>)

    RT-Thread学习笔记和finsh shell配置方法

    RT-Thread finsh 同时支持:c-style 模式与msh 模式,但是默认进入c-style模式,执行[ msh() ]即可切换到msh 模式。在msh 模式下执行[ exit ]后即
    发表于 02-12 00:01

    RT-Thread Studio 上使用 RT-Thread Nano

    _hw_console_output() ,默认可以进行打印。打开串口终端,可以发现在终端中执行了打印。基于 Nano 添加 FinSH双击 RT-Thread Settings 进入配置,打开组件,勾选
    发表于 05-18 15:59

    【每日一练】RT-Thread Nano-Finsh组件支持(第四节学习视频)

    Nano-启动运行流程分析(第二节学习视频)【每日一练】RT-Thread Nano-rt_kprintf支持(第三节视频学习)
    发表于 05-20 09:52

    RT-Thread FinSH 控制台

    ɪnʃ]。读完本章,我们会对 FinSH工作方式以及如何导出自己的命令到 FinSH 有更加深入的了解。FinSH 简介FinSH
    发表于 05-20 18:10

    rt-thread studio如何配置finsh组件

    为什么rt-thread studio没有配置finsh组件的?
    发表于 03-28 14:21

    RT-ThreadFinSH命令行组件原理是什么

    1、FinSH组件介绍FinSHRT-Thread 的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它
    发表于 04-26 16:00

    RT-Thread FinSH命令行组件导出自定义msh命令

    1、RT-Thread FinSH控制台添加自定义msh命令原理FinSHRT-Thread 的命令行组件,提供一套供用户在命令行调用
    发表于 05-27 16:08

    HC32F460移植RT-Thread Nano+FinSh工程源码下载

    HC32F460移植RT-Thread Nano+FinSh工程源码下载
    发表于 01-05 10:30 6次下载

    RT-Thread 应用笔记 - RTC Alarm 组件的使用

    RT-Thread 应用笔记 - 不正确使用LOG也会引发hard faultRT-Thread 应用笔记 - RTC Alarm 组件的使用RT-Thread 应用笔记 - free
    发表于 01-25 18:18 10次下载
    <b class='flag-5'>RT-Thread</b> 应用笔记 - RTC Alarm <b class='flag-5'>组件</b>的使用

    RT-Thread全球技术大会:Kconfig在RT-Thread中的工作机制

    RT-Thread全球技术大会:Kconfig在RT-Thread中的工作机制               审核编辑:彭静
    的头像 发表于 05-27 14:49 1483次阅读
    <b class='flag-5'>RT-Thread</b>全球技术大会:Kconfig在<b class='flag-5'>RT-Thread</b>中的<b class='flag-5'>工作</b>机制

    RT-Thread全球技术大会:如何使用组件以及自动初始化流程

    RT-Thread全球技术大会:如何使用组件和自动初始化流程           审核编辑:彭静
    的头像 发表于 05-27 15:16 887次阅读
    <b class='flag-5'>RT-Thread</b>全球技术大会:如何使用<b class='flag-5'>组件</b>以及自动初始化<b class='flag-5'>流程</b>

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 9次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP 介绍与移植

    RT-Thread文档_FinSH 控制台

    RT-Thread文档_FinSH 控制台
    发表于 02-22 18:41 0次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>FinSH</b> 控制台

    RT-Thread文档_FAL 组件

    RT-Thread文档_FAL 组件
    发表于 02-22 18:41 0次下载
    <b class='flag-5'>RT-Thread</b>文档_FAL <b class='flag-5'>组件</b>