RT Thread FinSH(msh)調度邏輯

文章目錄

    • 概要
    • FinSH功能
    • FinSH調度邏輯細節
    • 小結

概要

RT-Thread(Real-Time Thread)作為一款開源的嵌入式實時操作系統,在嵌入式設備領域得到了廣泛應用。

該系統不僅具備強大的任務調度功能,還集成了 FinSH命令行系統,為開發者提供了便捷的設備交互方式,可通過命令行直接與嵌入式設備進行通信。

FinSH為開發者與系統管理員提供了便捷的命令行交互界面,通過直接與操作系統進行指令交互,顯著提升了系統的調試與維護效率。
在這里插入圖片描述

提示:FinSH(msh)和Linux在使用功能上非常相似。

FinSH(Fin Shell)是RT-Thread實時操作系統中的嵌入式Shell組件。

FinSH功能

FinSH 命令行系統
FinSH 是 RT-Thread 嵌入式操作系統中的輕量級命令行交互系統,為開發者提供了便捷的設備控制接口。通過簡潔的命令行界面,開發者可以實時監控系統運行狀態、執行特定任務等操作。

其功能包括:

a. 實時查看系統運行狀態(通過 list_thread 命令,類似于 Windows 系統的任務管理器) b.
程序運行狀態檢測(具備錯誤檢測功能,若程序無法正常運行將即時反饋錯誤信息)

FinSH 調度邏輯
啟動:當系統啟動時,finsh 組件會被初始化。這包括解析配置文件、注冊命令等。

命令注冊:開發者可以通過編程方式向 finsh 系統注冊自己的命令。例如,可以定義一個函數,并通過 MSH_CMD_EXPORT 宏注冊這個函數為一個 finsh 命令。

#include <finsh.h>int example_cmd(int argc, char **argv) {// 命令實現return 0;
}
MSH_CMD_EXPORT(example_cmd, example command);

命令執行:當用戶在 finsh 命令行中輸入一個命令時,finsh 系統會解析這個命令,查找相應的函數,并調用它。

交互:finsh 提供了與用戶交互的能力,用戶可以通過輸入命令查看系統狀態、控制設備等。

FinSH調度邏輯細節

輸入處理:用戶通過串口或其他輸入設備輸入命令。輸入的數據被 finsh 系統捕獲并解析。

命令解析:finsh 系統解析輸入的字符串,查找與之匹配的命令及其參數。

任務切換:在執行命令的過程中,如果命令需要執行某些操作(例如啟動一個新的任務或中斷當前任務),finsh 會暫時掛起當前的任務(如果當前任務是 finsh 任務本身),切換到相應的任務或中斷處理程序上執行。

結果返回:命令執行完成后,控制權返回到 finsh 系統,用戶可以看到執行結果或提示信息。

返回交互模式:如果命令執行成功,finsh 會返回到等待用戶輸入的交互模式。

示例代碼
假設我們有一個簡單的 finsh 命令用于打印一條消息:

#include <finsh.h>int print_hello(int argc, char **argv) {rt_kprintf("Hello, RT-Thread!\n");return 0;
}

MSH_CMD_EXPORT(print_hello, print hello message); 或者
MSH_CMD_EXPORT_ALIAS(print_hello, print_hello_alias, “print hello
message”);

當用戶在 finsh 提示符中輸入"print_hello"并按下回車鍵時,系統將自動調用 print_hello 函數,并輸出相應的提示信息。

小結

FinSH 作為 RT-Thread 的核心組件,其調度機制主要圍繞命令的注冊、解析和執行三個環節展開。

這一設計使開發者能夠通過簡潔的命令行界面與嵌入式設備進行高效交互,極大地提升了嵌入式開發的便捷性,成為開發過程中不可或缺的實用工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81244.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我司助力高校打造「智慧創新AI學習中心」

為推動AI教育融合跨領域應用&#xff0c;東吳大學于2025年4月舉行「智慧創新AI學習中心」揭牌儀式&#xff0c;并宣布正式啟動AI特色課程與教學空間建置計畫。此次建置由我司協助整體教室空間與設備規劃&#xff0c;導入最新NVIDIA GeForce RTX 50系列桌上型電腦&#xff0c;并…

給你的matplotlib images添加scale Bar

?Scale Bar&#xff08;比例尺&#xff09;用于直觀表示圖像與實際物理尺寸&#xff08;如微米、毫米等&#xff09;的對應關系。例如&#xff0c;在顯微鏡圖像中&#xff0c;比例尺可以標注“75μm”表示圖中某線段對應的實際長度。 這里分享使用matplotlib中的imshow結合ma…

基于React的高德地圖api教程004:線標記繪制、修改、刪除功能實現

文章目錄 4、線繪制4.1 繪制線標記4.1.1 開啟線標記繪制模式4.1.2 繪制線標記4.1.3 關閉線標記模式4.2 可視化線標記數據面板4.3 修改線標記4.3.1 修改線標記路徑4.3.2 修改線標記名稱和顏色4.4 刪除線標記4.5 定位線標記4.6 代碼下載4.04、線繪制 4.1 繪制線標記 4.1.1 開啟…

lc42接雨水

1.原題 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖&#xff0c;計算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2.題目解析 這一題是經常被考到的一道算法題&#xff0c;其中最簡單最好用的方法就是雙指…

【讀代碼】端到端多模態語言模型Ultravox深度解析

一、項目基本介紹 Ultravox是由Fixie AI團隊開發的開源多模態大語言模型,專注于實現音頻-文本的端到端實時交互。項目基于Llama 3、Mistral等開源模型,通過創新的跨模態投影架構,繞過了傳統語音識別(ASR)的中間步驟,可直接將音頻特征映射到語言模型的高維空間。 核心優…

力扣HOT100之二叉樹:98. 驗證二叉搜索樹

這道題之前也刷過&#xff0c;自己做了一遍&#xff0c;發現卡在了第70多個樣例&#xff0c;才發現自己沒有利用二叉搜索樹的性質&#xff0c;但凡涉及到二叉搜索樹&#xff0c;應該首先考慮中序遍歷&#xff01;&#xff01;&#xff01; 被卡住的測試樣例是這樣的&#xff1a…

Centos7.9同步外網yum源至內網

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache yum repolist安裝軟件 yum install -y yum-utils createrepo # yum-utils包含re…

HMDB51數據集劃分

生成訓練集、驗證集和測試集 每個split文件應該包含&#xff1a; 訓練集(id1): 70個視頻測試集(id2): 30個視頻未使用(id0): 剩余視頻 這是一個70/30的訓練/測試分割比例。標記為0的視頻被排除在當前實驗之外。實際上訓練集&#xff08;id1&#xff09;&#xff0c;驗證集&am…

Spring Boot 項目的計算機專業論文參考文獻

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

【Linux】Linux安裝并配置MongoDB

目錄 1.添加倉庫 2.安裝 MongoDB 包 3.啟動 MongoDB 服務 4. 驗證安裝 5.配置 5.1.進入無認證模式 5.2.1創建用戶 5.2.2.開啟認證 5.2.3重啟 5.2.4.登錄 6.端口變更 7.卸載 7.1.停止 MongoDB 服務 7.2.禁用 MongoDB 開機自啟動 7.3.卸載 MongoDB 包 7.4.刪除數…

2025/517學習

對離群值怎么操作。這個就是擬合操作的。用更彎曲的曲線去擬合&#xff0c;如常見函數log 多元回歸和單元回歸 如題&#xff0c;如果我有多個自變量&#xff0c;來對一個因變量進行OLS回歸&#xff0c;有沒有operator可以做到&#xff1f;(ts_regression似乎只支持一個…

RKNN開發環境搭建(ubuntu22.04)

以下情況在RV1106G3的平臺上驗證正常。 1、conda安裝 1&#xff09;conda --version//確認是否安裝 2&#xff09;創建一個安裝目錄&#xff0c;進行下一步 3&#xff09;wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…

Flutter到HarmonyOS Next 的跨越:memory_info庫的鴻蒙適配之旅

Flutter到鴻蒙的跨越&#xff1a;memory_info庫的鴻蒙適配之旅 本項目作者&#xff1a;kirk/堅果 您可以使用這個Flutter插件來更改應用程序圖標上的角標 作者倉庫&#xff1a;https://github.com/MrOlolo/memory_info/tree/master/memory_info 在數字化浪潮的推動下&#…

VLAN擴展技術

端口隔離 &#x1f310; 一、原理總結&#xff1a; 端口隔離功能&#xff1a;實現同一VLAN內端口之間的二層隔離。 用戶只需將端口加入同一個隔離組&#xff08;Port-isolate group&#xff09;&#xff0c;即可實現這些端口之間不能互通。 實現效果&#xff1a;更安全、更加…

設計模式 - 單例模式 - Tips

為什么雙重檢查會帶來空指針異常問題&#xff1f; if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } …

【Ragflow】22.RagflowPlus(v0.3.0):用戶會話管理/文件類型拓展/諸多優化更新

概述 在歷經三周的階段性開發后&#xff0c;RagflowPlus順利完成既定計劃&#xff0c;正式發布v0.3.0版本。 開源地址&#xff1a;https://github.com/zstar1003/ragflow-plus 新功能 1. 用戶會話管理 在后臺管理系統中&#xff0c;新增用戶會話管理菜單。在此菜單中&…

c++重要知識點匯總(不定期更新)

前言 真心希望各位dalao點贊收藏~ 樹狀數組 作用&#xff1a;高效求出區間前綴和&#xff0c;允許進行修改操作。 舉個栗子&#xff1a; 剛開始有8項&#xff0c;分別為1-8。 首先構建二叉樹&#xff1a; 1-8/ |/ |/ |/ |/ |1-4 5-8/ | / |/ | / |1-…

Predict Podcast Listening Time-(回歸+特征工程+xgb)

Predict Podcast Listening Time 題意&#xff1a; 給你沒個播客的信息&#xff0c;讓你預測觀眾的聆聽時間。 數據處理&#xff1a; 1.構造新特征收聽效率進行分組 2.對數據異常處理 3.對時間情緒等進行數值編碼 4.求某特征值求多項式特征 5.生成特征組合 6.交叉驗證并enc…

Class類的詳細說明

Class類的詳細說明 Class 類是Java反射機制的核心&#xff0c;每個Java類或接口在JVM中都有一個對應的 Class 對象&#xff0c;用于表示該類的元數據&#xff08;如類名、方法、字段、構造器等&#xff09;。以下是其核心知識點&#xff1a; 1. 獲取Class對象的三種方式 方式…

[逆向工程]C++實現DLL注入:原理、實現與防御全解析(二十五)

[逆向工程]C實現DLL注入&#xff1a;原理、實現與防御全解析&#xff08;二十五&#xff09; 引言 DLL注入&#xff08;DLL Injection&#xff09;是Windows系統下實現進程間通信、功能擴展、監控調試的核心技術之一。本文將從原理分析、代碼實現、實戰調試到防御方案&#x…