首頁 > 軟體

你需要知道這些Linux命令列中的程式硬體

2021-05-29 21:00:07

RT-Thread是用於對物聯網(IoT)裝置進行程式設計的開源實時作業系統。 FinSH是RT-Thread的命令列元件,它提供了一組操作介面,使使用者可以從命令列聯絡裝置。主要用於偵錯或檢視系統資訊。

通常,使用硬體偵錯程式和printf日誌顯示開發偵錯資訊。然而,在某些情況下,這兩種方法不是很有用,並且很難解析。但是,RT-Thread是一個多執行緒系統,當您想了解正在運行的執行緒的狀態或手動控制系統的當前狀態時,這很有用。因為它是多執行緒的,所以您可以擁有一個互動式外殼,因此您可以輸入命令,直接在裝置上呼叫函數以獲取所需的資訊或控制程式的行為。如果您僅習慣於Linux或BSD等現代作業系統,這對您來說似乎很普通。

FinSH有兩種模式:

一種C語言直譯器模式,稱為c-style

傳統的命令列模式,稱為msh

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

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

GNU命令

在開發FinSH時,我們瞭解到在編寫命令列應用程式之前,您需要熟悉GNU命令列標準。這種標準實踐框架有助於使介面變得更直觀,從而使開發人員在使用該介面時感到舒適。

完整的GNU命令包括四個主要部分:

命令名稱(可執行):命令列程式的名稱

子命令:命令程式的子函數名

選項:子命令功能的配置選項

Arguments:子命令函數的配置選項對應的參數

可執行命令是systemctl,子命令是enable,選項是--now,自變數是firewalld。

想象一下,您想使用 RT-Thread 編寫一個符合 GNU 標準的命令列程式。 FinSH 擁有您需要的一切,並將按預期運行您的程式碼。更重要的是,您可以依賴這種合規性,以便您可以自信地移植您喜歡的 Linux 程式。

選項種類

選項有很多種,按長度可以分為兩個主要類別:

短選項:由一個連字元加一個字母組成,例如 pkgs -h 中的 -h 選項

長選項:由兩個連字元加單詞或字母組成,例如scons中的--target選項---target-mdk5

您可以將這些選項分為三類,具體取決於它們是否具有參數:

無參數:選項後不能有參數

必須包含參數:選項後必須跟參數

可選參數:允許但不要求選項後的參數

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

wavplay -v 50

wavplay --vol=50

Using optparse

如果您曾經編寫過命令列應用程式,則可能會知道通常有一個庫或模組供您選擇的語言稱為optparse。它提供給程式設計師,以便可以相對於命令的其餘部分來解析作為命令的一部分輸入的選項(例如-v或--verbose)。它可以幫助您的程式碼瞭解子命令或自變數中的選項。

程式設計硬體似乎令人生畏,但對於物聯網來說,它變得越來越普遍。並非所有內容都可以或應該在Raspberry Pi上運行,但是藉助FinSH,藉助RT-Thread,您可以保持熟悉的Linux感覺。

好了,本文到此結束。如果對程式設計、計算機、程式設計師方面感興趣的話,歡迎私信聯絡我,隨時交流!點個關注,是對我莫大的鼓勵!


IT145.com E-mail:sddin#qq.com