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

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

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

致敬經(jīng)典:在國產(chǎn)開源操作系統(tǒng) RT-Thread 重溫 UNIX 彩色終端

RT-Thread官方賬號(hào) ? 2024-06-27 08:35 ? 次閱讀

引言


上篇文章里我們向大家介紹了 RT-Thread v5.1.0 的一些新特性。其中包括了終端環(huán)境的進(jìn)一步完善。終端是人機(jī)交互的重要接口。實(shí)用的終端工具可以顯著地提升系統(tǒng)使用者的幸福指數(shù)。舉例來說,當(dāng)我們想要修改一些系統(tǒng)配置,或是編寫腳本時(shí),一個(gè)好用的文本編輯器總是不可或缺。以 UNIX 文本編輯器 Vim 為例子。得益于 v5.1.0 內(nèi)核對(duì)于 POSIX 的支持,我們拉取源碼構(gòu)建燒錄后,就可以在 RT-Thread Smart 上享受到原滋原味的 Vim 編程體驗(yàn)啦。

2216e982-341d-11ef-a655-92fbcf53809c.png

在 smart 上編輯 ./rt-thread/tools/building.py


感覺如何?如果你不滿足于淺嘗輒止,請(qǐng)不要擔(dān)心。接下來的文章里我們將向你繼續(xù)分享 RT-Thread Smart 中的終端環(huán)境組成和使用。

Busybox


被業(yè)內(nèi)稱之為瑞士軍刀的BusyBox,嵌入式Linuxer對(duì)它肯定不會(huì)感到陌生,甚至熟悉到忽略他無時(shí)無刻的存在。它在單一的可執(zhí)行文件中提供了精簡(jiǎn)的Unix工具集,可運(yùn)行于多款POSIX環(huán)境的操作系統(tǒng)。

RT-Thread Smart 已適配了上百種 Busybox 命令。而 Busybox 也是 Smart 當(dāng)前的終端環(huán)境的一個(gè)重要組成部分。其中包括 init 提供的初始化和系統(tǒng)管理,ash提供的命令解釋、腳本執(zhí)行、作業(yè)控制等。接下來我們結(jié)合實(shí)際例子深入探索這些部分的實(shí)際應(yīng)用和能力。

22217bea-341d-11ef-a655-92fbcf53809c.png

Smart 已適配的 Busybox 命令集

init進(jìn)程介紹


init(為英語:initialization的簡(jiǎn)寫)是 Unix 和 類Unix 系統(tǒng)中用來產(chǎn)生其它所有進(jìn)程的程序。它以守護(hù)進(jìn)程的方式存在,其進(jìn)程號(hào)為1。系統(tǒng)在引導(dǎo)時(shí)加載內(nèi)核后,便由內(nèi)核加載init程序,由init程序完成余下的引導(dǎo)過程,比如加載執(zhí)行級(jí)別,加載服務(wù),啟動(dòng)Shell/圖形化界面等等。

init進(jìn)程運(yùn)行之后會(huì)加載解析/etc/inittab文件的內(nèi)容,根據(jù)腳本項(xiàng)目決定接下來的運(yùn)行模式和需要啟動(dòng)的命令。以下是本次體驗(yàn)中使用的 inittab 腳本。

1#Copyright(c)2006-2024,RT-ThreadDevelopmentTeam
2#
3#SPDX-License-Identifier:Apache-2.0
4
5#MountFilesystem
6:mkdir-p/dev/shm/dev/pts/proc
7:mount-a
8
9#Rungetty&login
10console:/sbin/getty115200/dev/console
11
12#Restartbussiness
13:/sbin/init

根據(jù)這個(gè)腳本,init 進(jìn)程會(huì)首先創(chuàng)建掛載點(diǎn),然后通過 mount 命令掛載文件系統(tǒng)。等到上序進(jìn)程都退出后,啟動(dòng) getty 獲得 console TTY 設(shè)備作為會(huì)話控制終端。getty 接著會(huì)啟動(dòng) login。它在 TTY 設(shè)備上等待用戶登錄,并在用戶名、密碼校驗(yàn)成功后啟動(dòng) shell 程序,也就是 busybox ash 。

ash介紹

Almquist shell,經(jīng)常被簡(jiǎn)稱為 A Shell 或 ash,一種Unix shell,源自于Bourne shell,由肯尼斯·艾昆斯特(Kenneth Almquist)在SVR4上建立了這個(gè)分支。它的特色是快而且輕巧,兼容于POSIX,在后來的BSD版本上,它取代了Bourne shell。在BusyBox中,實(shí)現(xiàn)了類似于ash標(biāo)準(zhǔn)的shell的程序。

結(jié)合上文介紹的初始化過程配置,在系統(tǒng)登錄完成后,就會(huì)看到 ash 打印的命令提示符。此時(shí)一個(gè) ash 進(jìn)程就運(yùn)行在 RT-Thread Smart 內(nèi)核中實(shí)現(xiàn)用戶交互,命令解析。


系統(tǒng)登錄并執(zhí)行 top 命令效果


既然來到shell中,那就不得不忽略其強(qiáng)大的腳本執(zhí)行功能。shell 腳本的兼容度對(duì)于批處理、自動(dòng)化測(cè)試來說非常重要。我們通過一個(gè)流行的 shell 腳本單元測(cè)試工具 shUnit2 展示這個(gè)功能。

https://github.com/kward/shunit2

shUnit2 本質(zhì)是一套 shell 腳本庫,包含了眾多預(yù)定義函數(shù)。我們利用它,可以用簡(jiǎn)單的腳本實(shí)現(xiàn)復(fù)雜的單元測(cè)試過程。將克隆下來的倉庫放入根文件系統(tǒng)的 /root 文件夾之后,可以在 ./shunit2/example 下看到一些樣例代碼。這里給出一個(gè)測(cè)試 suite 腳本。

1#!/bin/sh
2#本腳本就是倉庫對(duì)應(yīng)路徑 ./example/suite_test.sh 文件的內(nèi)容。
3#這是一個(gè)測(cè)試套件樣例,允許開發(fā)者將測(cè)試函數(shù)注冊(cè)到shUnit2框架中,
4#使其成為測(cè)試執(zhí)行的一部分。對(duì)應(yīng)的,沒有注冊(cè)的函數(shù)不會(huì)在 report 中體現(xiàn)
5suite(){
6suite_addTestsuite_test_one
7
8suite_test_two
9}
10
11suite_test_one(){
12assertEquals11
13}
14
15suite_test_two(){
16assertNotEquals12
17}
18
19#LoadandrunshUnit2.
20.../shunit2

在 ash 中執(zhí)行這個(gè)文件,我們就成功在 RT-Smart 中運(yùn)行了一個(gè)基于命令解釋器實(shí)現(xiàn)的單元測(cè)試 suite。

22259afe-341d-11ef-a655-92fbcf53809c.png

執(zhí)行測(cè)試套件 suite_test.sh


作業(yè)控制(Job Control)介紹


在解釋作業(yè)控制前,我們先要簡(jiǎn)單介紹一下它的概念。對(duì)于當(dāng)前操作者來說,能夠操作的命令控制臺(tái)終端shell是一個(gè)獨(dú)立的shell,并根據(jù)是否可以直接操作當(dāng)前shell的程序來將shell中的作業(yè)分為前臺(tái)與后臺(tái)兩種狀態(tài)。能夠直接在shell上交互的程序稱為前臺(tái)狀態(tài),而不能直接交互的程序?yàn)楹笈_(tái)狀態(tài)。如果把所有的前后臺(tái)程序都統(tǒng)一稱作作業(yè)(job),那么可以基于當(dāng)前的shell對(duì)所有的job來進(jìn)行作業(yè)控制,從而稱作job control。

如上所述job control就是基于當(dāng)前的shell前后臺(tái)作業(yè)來實(shí)現(xiàn)作業(yè)管理的,典型的管理有:將一個(gè)前臺(tái)程序ctrl+c終止掉,或?qū)⒁粋€(gè)新的作業(yè)啟動(dòng)放入后臺(tái)(&后綴啟動(dòng)),或?qū)⒁粋€(gè)后臺(tái)程序放入前臺(tái)(fg命令)。其它的操作例如還有:jobs命令查看所有后臺(tái)作業(yè)狀態(tài),ctrl+z暫停一個(gè)前臺(tái)作業(yè)并放入后臺(tái),bg將一個(gè)后臺(tái)作業(yè)轉(zhuǎn)入后臺(tái)運(yùn)行等等。常用的操作命令集如:

●jobs命令

●fg 命令

●bg 命令

●ctrl+c/ctrl+z/ctrl+d/ctrl+\

●& 啟動(dòng)后臺(tái)作業(yè)

那么作業(yè)控制有什么具體的應(yīng)用呢?假設(shè)一個(gè)日常生活中的常見場(chǎng)景,首先我們使用 Vim 創(chuàng)建一個(gè)文件開始編輯。編輯過程中,可能突然需要做別的事情。此時(shí)就可以像 GUI 中的“最小化”操作一樣,通過 Ctrl^z 掛起 Vim 并回到 ash。通過 jobs 命令我們可以看到 Vim 掛起后更新為作業(yè) %1 并處于停止?fàn)顟B(tài)(Stopped)。


Vim 掛起效果

當(dāng)我們想要繼續(xù)編輯時(shí),就可以在 ash 中使用 fg 命令指定 Vim,將其恢復(fù)到前臺(tái)運(yùn)行。這類似 GUI 中的“最大化”操作。當(dāng)我們?cè)?Vim 完成文檔編輯操作并退出后,可以通過 jobs 命令看到作業(yè)已經(jīng)清空。通過 cat 命令我們看到文件已經(jīng)成功保存。


后臺(tái)作業(yè)換入前臺(tái)效果


總結(jié)


基于 Busybox ,我們介紹了 RT-Smart 終端環(huán)境的使用體驗(yàn),看到了“瑞士軍刀” BusyBox 強(qiáng)大的功能。通過實(shí)際的啟動(dòng)腳本示例,展示了 init 進(jìn)程如何加載和初始化系統(tǒng),通過 shUnit2 展示了 ash 提供的強(qiáng)大腳本執(zhí)行能力,并借助 Vim 展示了job control 的前后臺(tái)控制特性。

不知道大家是否對(duì) RT-Smart 的能力有了進(jìn)一步了解。如果您對(duì) RT-Thread Smart 的應(yīng)用和功能感興趣,可以在RT-Thread 官方發(fā)布的 ART-Pi Smart 開發(fā)板上了解、學(xué)習(xí)和開發(fā) RT-Thread Smart 系統(tǒng)與應(yīng)用。這是首個(gè)運(yùn)行 RT-Thread Smart 的 ARM Cortex-A7 開發(fā)板,具有強(qiáng)大的硬件性能和豐富的外設(shè)接口。

222a79ac-341d-11ef-a655-92fbcf53809c.png

ART-Pi Smart 硬件規(guī)格情況

聲明:本文內(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)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6689

    瀏覽量

    123142
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41393
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3218

    瀏覽量

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

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39842
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【本周六-深圳】RT-Thread嵌入式操作系統(tǒng)專業(yè)培訓(xùn)班正式開班

    RT-Thread官方本周六將發(fā)起為期三天的嵌入式操作系統(tǒng)專業(yè)培訓(xùn)班!本次培訓(xùn)將會(huì)深入講解RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)的核心概念、
    的頭像 發(fā)表于 11-08 01:07 ?70次閱讀
    【本周六-深圳】<b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作系統(tǒng)</b>專業(yè)培訓(xùn)班正式開班

    混合部署 | 迅為RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)

    RT-Thread介紹 RT-Thread 是一個(gè)高安全性、實(shí)時(shí)性的操作系統(tǒng),廣泛應(yīng)用于任務(wù)關(guān)鍵領(lǐng)域,例如電力、軌道交通、車載系統(tǒng)、工業(yè)控制和新能源等。它的加入讓 RK3568 能夠
    發(fā)表于 11-01 10:31

    開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會(huì)報(bào)名啟動(dòng)!

    開發(fā)者大會(huì)將以“開源共生,商業(yè)共贏”為主題,將于2024年12月21日全天在上海臨港中心舉行。開源RT-Thread如何實(shí)現(xiàn)商業(yè)化?這一直是外界對(duì)RT-Thread
    的頭像 發(fā)表于 10-29 08:06 ?162次閱讀
    <b class='flag-5'>開源</b>共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開發(fā)者大會(huì)報(bào)名啟動(dòng)!

    睿賽德科技正式推出RT-Thread開源 4+服務(wù),助力企業(yè)用戶發(fā)展

    RT-Thread始于2006年,是100%由中國開發(fā)者編寫的開源嵌入式操作系統(tǒng)。經(jīng)過10多年的發(fā)展,已經(jīng)成為國內(nèi)最流行的嵌入式操作系統(tǒng),廣泛應(yīng)用于工業(yè)、電力、軌道交通、智慧城市、智能
    的頭像 發(fā)表于 10-15 08:07 ?236次閱讀
    睿賽德科技正式推出<b class='flag-5'>RT-Thread</b><b class='flag-5'>開源</b> 4+服務(wù),助力企業(yè)用戶發(fā)展

    混合部署 | 迅為RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)

    RT-Thread介紹 RT-Thread 是一個(gè)高安全性、實(shí)時(shí)性的操作系統(tǒng),廣泛應(yīng)用于任務(wù)關(guān)鍵領(lǐng)域,例如電力、軌道交通、車載系統(tǒng)、工業(yè)控制和新能源等。它的加入讓 RK3568 能夠
    發(fā)表于 09-18 10:54

    新書發(fā)布——《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

    我們非常高興地宣布,由鄭苗秀、沈鴻飛和廖建尚編著的《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》一書正式發(fā)布。本書的編寫團(tuán)隊(duì)由多位在嵌入式和實(shí)時(shí)操作系統(tǒng)領(lǐng)域有著豐富經(jīng)驗(yàn)的專家組
    的頭像 發(fā)表于 09-03 08:06 ?418次閱讀
    新書發(fā)布——《<b class='flag-5'>RT-Thread</b>嵌入式實(shí)時(shí)<b class='flag-5'>操作系統(tǒng)</b>內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

    RT-Thread內(nèi)部機(jī)制大揭秘,帶你深入操作系統(tǒng)內(nèi)核

    一、RT-Thread概述RT-Thread是一款具有顯著優(yōu)勢(shì)的開源嵌入式實(shí)時(shí)操作系統(tǒng)。它不僅具備輕量級(jí)、實(shí)時(shí)性強(qiáng)的特點(diǎn),還擁有廣泛的開源
    的頭像 發(fā)表于 08-01 08:11 ?2800次閱讀
    <b class='flag-5'>RT-Thread</b>內(nèi)部機(jī)制大揭秘,帶你深入<b class='flag-5'>操作系統(tǒng)</b>內(nèi)核

    擁抱現(xiàn)代:國產(chǎn)操作系統(tǒng)RT-Thread體驗(yàn)tmux終端復(fù)用的魅力

    它,我們可以輕松復(fù)用豐富的RT-ThreadSmart系統(tǒng)組件以及POSIX,UNIX,GNU生態(tài)的軟件棧,實(shí)現(xiàn)更高效的驗(yàn)證和功能開發(fā)。我們通過終端環(huán)境中功能強(qiáng)大
    的頭像 發(fā)表于 07-28 08:35 ?763次閱讀
    擁抱現(xiàn)代:<b class='flag-5'>在</b><b class='flag-5'>國產(chǎn)</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>RT-Thread</b>體驗(yàn)tmux<b class='flag-5'>終端</b>復(fù)用的魅力

    睿賽德科技CEO熊譜翔 ——基于RT-Thread操作系統(tǒng)的安全車控系統(tǒng)實(shí)踐

    操作系統(tǒng)非??粗厣鷳B(tài),RT-ThreadSafetyAuto操作系統(tǒng)也是這樣,通過兼容開源RT-Thread
    的頭像 發(fā)表于 07-13 08:35 ?1293次閱讀
    睿賽德科技CEO熊譜翔 ——基于<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統(tǒng)</b>的安全車控<b class='flag-5'>系統(tǒng)</b>實(shí)踐

    RT-Thread 新里程碑達(dá)成——GitHub Star 破萬!

    RT-Thread實(shí)時(shí)操作系統(tǒng)開源項(xiàng)目GitHub上的star數(shù)量突破一萬!截止發(fā)文,RT-Thread作為實(shí)時(shí)
    的頭像 發(fā)表于 07-04 08:35 ?378次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達(dá)成——GitHub Star 破萬!

    實(shí)時(shí)操作系統(tǒng)RT-Thread及FreeRTOS

    RT-Thread與其他很多RTOS如FreeRTOS的主要區(qū)別之一是,它不僅僅是一個(gè)實(shí)時(shí)內(nèi)核,還具備豐富的中間層組件,如下圖所示。FreeRTOS和RT-Thread是兩種常見的嵌入式實(shí)時(shí)操作系統(tǒng)
    的頭像 發(fā)表于 05-29 08:10 ?3398次閱讀
    實(shí)時(shí)<b class='flag-5'>操作系統(tǒng)</b>之<b class='flag-5'>RT-Thread</b>及FreeRTOS

    新書發(fā)布——《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù):RT-Thread與ARM編程實(shí)踐》

    RT-Thread又一本新書《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)——基于RT-Thread與ARM的編程實(shí)踐》發(fā)布,標(biāo)志著RT-Thread生態(tài)和實(shí)時(shí)操作系統(tǒng)
    的頭像 發(fā)表于 05-11 08:35 ?691次閱讀
    新書發(fā)布——《實(shí)時(shí)<b class='flag-5'>操作系統(tǒng)</b>應(yīng)用技術(shù):<b class='flag-5'>RT-Thread</b>與ARM編程實(shí)踐》

    RT-Thread 操作系統(tǒng)應(yīng)用開發(fā)線上師資培訓(xùn)通知

    的標(biāo)準(zhǔn)配置?;赗TOS的編程技術(shù)將更加深入到高校電子信息類、計(jì)算機(jī)類、軟件工程類、自動(dòng)化類,以及人工智能與物聯(lián)網(wǎng)等方向的教學(xué)實(shí)踐中。RT-Thread作為國產(chǎn)開源
    的頭像 發(fā)表于 04-30 08:35 ?286次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>操作系統(tǒng)</b>應(yīng)用開發(fā)線上師資培訓(xùn)通知

    RT-Thread榮獲“最具影響力IoT操作系統(tǒng)獎(jiǎng)”

    2024年3月30日,第十一屆開源操作系統(tǒng)年度技術(shù)會(huì)議(OS2ATC)西郊賓館舉辦!RT-Thread作為國內(nèi)領(lǐng)先的開源
    的頭像 發(fā)表于 04-12 08:37 ?388次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲“最具影響力IoT<b class='flag-5'>操作系統(tǒng)</b>獎(jiǎng)”

    RT-Thread斬獲“最具影響力IoT操作系統(tǒng)獎(jiǎng)”

    2024年3月30日,第十一屆開源操作系統(tǒng)年度技術(shù)會(huì)議(OS2ATC)西郊賓館舉辦!RT-Thread作為國內(nèi)領(lǐng)先的開源
    的頭像 發(fā)表于 04-10 09:51 ?526次閱讀