使用 RT-Thread的FinSH 對硬體進行編程

2020年09月30日19:52:12 科技 1747

使用 RT-Thread的FinSH 對硬體進行編程 - 天天要聞

導讀:由於物聯網(IoT)的興起,對硬體進行編程變得越來越普遍。RT-Thread 可以讓你可以用 FinSH 從 Linux 命令行與設備進行溝通、

本文字數:6259,閱讀時長大約:7分鐘

https://linux.cn/article-12667-1.html

作者:Alan Smithee

譯者:Xingyu.Wang

RT-Thread 是一個開源的實時操作系統,用於對物聯網(IoT)設備進行編程。FinSH 是RT-Thread的命令行組件,它提供了一套操作界面,使用戶可以從命令行與設備進行溝通。它主要用於調試或查看系統信息。

通常情況下,開發調試使用硬體調試器和  日誌來顯示。但在某些情況下,這兩種方法並不是很有用,因為它是從運行的內容中抽象出來的,而且它們可能很難解析。不過 RT-Thread 是一個多線程系統,當你想知道一個正在運行的線程的狀態,或者手動控制系統的當前狀態時,這很有幫助。因為它是多線程的,所以你能夠擁有一個互動式的 shell,你可以直接在設備上輸入命令、調用函數來獲取你需要的信息,或者控制程序的行為。如果你只習慣於 Linux 或 BSD 等現代操作系統,這在你看來可能很普通,但對於硬體黑客來說,這是極其奢侈的,遠超將串列電纜直接連線到電路板上以獲取一絲錯誤的做法。

FinSH 有兩種模式。

◈ C 語言解釋器模式,稱為 c-style。

◈ 傳統的命令行模式,稱為 msh(模塊 shell)。

在 C 語言解釋器模式下,FinSH 可以解析執行大部分 C 語言的表達式,並使用函數調用訪問系統上的函數和全局變數。它還可以從命令行創建變數。

在 msh 模式下,FinSH 的操作與 Bash 等傳統 shell 類似。

GNU 命令標準

當我們在開發 FinSH 時,我們了解到,在編寫命令行應用程序之前,你需要熟悉 GNU 命令行標準。這個標準實踐的框架有助於給界面帶入熟悉感,這有助於開發人員在使用時感到舒適和高效。

一個完整的 GNU 命令主要由四個部分組成。

1. 命令名(可執行文件):命令行程序的名稱;

2. 子命令:命令程序的子函數名稱。

3. 選項:子命令函數的配置選項。

4. 參數:子命令函數配置選項的相應參數。

你可以在任何命令中看到這一點。以 Git 為例:

這一點可以分解為:

GNU command line standards

可執行的命令是 ,子命令是 ,使用的選項是 ,參數是 。

再舉個例子:

可執行的命令是 ,子命令是 ,選項是 ,參數是 。

想像一下,你想用 RT-Thread 編寫一個符合 GNU 標準的命令行程序。FinSH 擁有你所需要的一切,並且會按照預期運行你的代碼。更棒的是,你可以依靠這種合規性,讓你可以自信地移植你最喜歡的 Linux 程序。

編寫一個優雅的命令行程序

下面是一個 RT-Thread 運行命令的例子,RT-Thread 開發人員每天都在使用這個命令:

正如你所看到的那樣,它看起來很熟悉,行為就像你可能已經在 Linux 或 BSD 上運行的大多數 POSIX 應用程序一樣。當使用不正確或不充分的語法時,它會提供幫助,它支持長選項和短選項。這種通用的用戶界面對於任何使用過 Unix 終端的人來說都是熟悉的。

選項種類

選項的種類很多,按長短可分為兩大類。

1. 短選項:由一個連字元加一個字母組成,如  中的  選項。

2. 長選項:由兩個連字元加上單詞或字母組成,例如, 中的  選項。

你可以把這些選項分為三類,由它們是否有參數來決定。

1. 沒有參數:該選項後面不能有參數。

2. 參數必選:選項後面必須有參數。

3. 參數可選:選項後可以有參數,但不是必需的。

正如你對大多數 Linux 命令的期望,FinSH 的選項解析非常靈活。它可以根據空格或等號作為定界符來區分一個選項和一個參數,或者僅僅通過提取選項本身並假設後面的內容是參數(換句話說,完全沒有定界符)。

使用 optparse

如果你曾經寫過命令行程序,你可能會知道,一般來說,你所選擇的語言有一個叫做 optparse 的庫或模塊。它是提供給程序員的,所以作為命令的一部分輸入的選項(比如  或 )可以與命令的其他部分進行解析。這可以幫助你的代碼從一個子命令或參數中獲取一個選項。

當為 FinSH 編寫一個命令時, 包希望使用這種格式:

你可以使用長形式或短形式,或者同時使用兩種形式來實現選項。例如:

創建完選項後,寫出每個選項及其參數的命令和說明:

下一步是解析。雖然你還沒有實現它的功能,但解析後的代碼框架是一樣的:

這裡是函數頭文件:

然後,編譯並下載到設備上。

使用 RT-Thread的FinSH 對硬體進行編程 - 天天要聞

Output

硬體黑客

對硬體進行編程似乎很嚇人,但隨著物聯網的發展,它變得越來越普遍。並不是所有的東西都可以或者應該在樹莓派上運行,但在 RT-Thread,FinSH 可以讓你保持熟悉的 Linux 感覺。

如果你對在裸機上編碼感到好奇,不妨試試 RT-Thread。

via:https://opensource.com/article/20/9/hardware-command-line

作者:Alan Smithee選題:lujun9972譯者:wxy校對:wxy

本文由LCTT原創編譯,Linux中國榮譽推出

科技分類資訊推薦

特斯拉「擎天柱」人形機器人項目負責人宣布離職 - 天天要聞

特斯拉「擎天柱」人形機器人項目負責人宣布離職

中新網6月7日電(吳家駒)綜合外媒報道,特斯拉「擎天柱」(Optimus)人形機器人項目負責人米蘭·科瓦奇(Milan Kovac)周五表示,他將離開公司。 科瓦奇在X平台上發文稱,「我不得不做出一生中最艱難的決定,我將離開我的職位。我離家太久了,需要花更多的時間和國外的家人在一起。」科瓦奇稱,這是「唯一的原因,與其他任何事情...
512GB售價2039元!3840HZ+7550mAh+極窄直屏,紅米手機價格親民了 - 天天要聞

512GB售價2039元!3840HZ+7550mAh+極窄直屏,紅米手機價格親民了

卡頓可以說是很多消費者使用手機時遇到的最為頭疼的情況,好在就如今新發布的機型就算是在長時間的使用之下,也並不會讓你出現如此的情況,這就比如說紅米Turbo 4 Pro這款機型就是如此,這款機型不僅性能狂飆、續航超長,更有旗艦級配置和貼心細節
用打火機燒死野生鳥類!一抖音用戶被禁言 - 天天要聞

用打火機燒死野生鳥類!一抖音用戶被禁言

抖音黑板報發布:經核查,相關賬號涉及虐待動物,違反《抖音社區自律公約》,已被禁言。對疑似違規飼養國家保護動物的行為,平台將收集相關信息上報有關部門,積極配合跟進處置。 ​​​來源:抖音黑板報...
所謂的【信息差】【信息繭房】不過是「傻子共振」! - 天天要聞

所謂的【信息差】【信息繭房】不過是「傻子共振」!

又在網上學到新知識了,網路新名詞「傻子共振」大家都知道了嗎?傻子共振是一種網路現象,指的是在互聯網環境下,人們因缺乏理性思考和信息繭房效應而形成的一種虛假共識。在封閉的網路圈子中,相似的觀點不斷被重複和強化,導致群體的認知偏差。
11家創新公司亮相金隅智薈中心,共探智能製造新機遇 - 天天要聞

11家創新公司亮相金隅智薈中心,共探智能製造新機遇

當前,全球製造業正邁向一個全新的階段。人工智慧、物聯網、數字孿生以及生成式 AI 等技術的飛速發展,為製造業帶來了前所未有的變革機遇。從智能工廠到 Industry 5.0 的人機協同模式,智能製造正在重新定義生產效率、創新能力與可持續發展路徑。為了深度發掘智能製造領域的新銳力量,助力優秀企業加速成長,2025 年 6 月 ...