一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-08-01 08:11 ? 次閱讀

一、RT-Thread概述

8877d086-4f9a-11ef-817b-92fbcf53809c.png

RT-Thread 是一款具有顯著優(yōu)勢的開源嵌入式實時操作系統(tǒng)。它不僅具備輕量級、實時性強的特點,還擁有廣泛的開源社區(qū)支持和豐富的應(yīng)用場景。

在輕量級方面,RT-Thread 能夠適應(yīng)資源受限的嵌入式環(huán)境,通過高效的內(nèi)核設(shè)計和資源管理,為設(shè)備節(jié)省寶貴的系統(tǒng)資源。其小巧的內(nèi)核可以在極小的存儲空間中運行,為小型設(shè)備提供了可靠的操作系統(tǒng)選擇。

實時性是 RT-Thread 的核心優(yōu)勢之一。它具備快速的任務(wù)響應(yīng)能力和精確的時間控制,能夠滿足對時間敏感的應(yīng)用需求,如工業(yè)控制、航空航天等領(lǐng)域。

RT-Thread 的開源特性促進了其快速發(fā)展和廣泛應(yīng)用。眾多開發(fā)者能夠參與到其代碼貢獻和改進中,不斷豐富其功能和優(yōu)化性能。

嵌入式系統(tǒng)領(lǐng)域,RT-Thread 得到了廣泛的應(yīng)用。從智能家居中的智能家電控制,到工業(yè)自動化中的生產(chǎn)流程監(jiān)控,再到汽車電子中的車載系統(tǒng),都能看到它的身影。其強大的功能和良好的適應(yīng)性,使得各類嵌入式設(shè)備能夠穩(wěn)定、高效地運行。

總之,RT-Thread 以其開源、輕量級和實時性等特點,在嵌入式系統(tǒng)領(lǐng)域發(fā)揮著重要作用,為開發(fā)者提供了可靠、高效的操作系統(tǒng)解決方案。

二、RT-Thread啟動流程

系統(tǒng)上電后,首先從啟動文件開始運行。啟動文件通常會完成一些基礎(chǔ)的硬件設(shè)置,如初始化時鐘、配置中斷向量表以及初始化堆棧等。

接著,程序跳轉(zhuǎn)至 RT-Thread 的入口函數(shù) rtthread_startup 。在這個函數(shù)中,一系列重要的初始化工作依次展開。

首先是硬件初始化,包括設(shè)置系統(tǒng)時鐘、初始化相關(guān)外設(shè)等,為后續(xù)的系統(tǒng)運行提供硬件基礎(chǔ)。

然后是系統(tǒng)內(nèi)核對象的創(chuàng)建,如定時器、調(diào)度器等。這些內(nèi)核對象的創(chuàng)建為系統(tǒng)的任務(wù)調(diào)度和時間管理提供了支持。

接下來創(chuàng)建 main 線程,同時會對線程棧進行初始化。main 線程通常承擔(dān)著用戶應(yīng)用程序的主要邏輯。

在 rtthread_startup 函數(shù)中,還會進行定時器和調(diào)度器的初始化。定時器初始化確保系統(tǒng)能夠進行精確的定時操作,調(diào)度器初始化則為任務(wù)的合理分配和切換奠定基礎(chǔ)。

在完成這些初始化工作后,系統(tǒng)準(zhǔn)備就緒,等待調(diào)度器啟動,從而開啟系統(tǒng)的正常運行和任務(wù)調(diào)度。

總的來說,RT-Thread 的啟動流程嚴謹有序,通過逐步完成各項初始化工作,為系統(tǒng)的穩(wěn)定運行和高效任務(wù)處理提供了有力保障。

三、程序內(nèi)存分布

Code(代碼段):Code 段存放程序的代碼部分。在編譯時確定其大小,運行時其內(nèi)容不發(fā)生改變。在程序編譯時,代碼段占用一定的 Flash 空間,運行時 CPU 從 Flash 中讀取執(zhí)行代碼。

RO-data(只讀數(shù)據(jù)段):RO-data 段用于存放程序中定義的常量,如字符串常量等。這些數(shù)據(jù)在編譯時確定,且在運行時不可更改,位于 Flash 中。RO-data 段在編譯時占用 Flash 空間。

RW-data(讀寫數(shù)據(jù)段):RW-data 段存放初始化為非 0 值的全局變量。在編譯時,其占用一定的 Flash 空間;在運行時,由于其中的數(shù)據(jù)需要讀寫操作,所以 RW-data 中的數(shù)據(jù)會被從 Flash 搬運到 RAM 中。

ZI-data(0 數(shù)據(jù)段):ZI-data 段存放未初始化或初始化為 0 的全局變量。ZI-data 段在編譯時不占用 Flash 空間,在運行時根據(jù)編譯器給出的 ZI 地址和大小在 RAM 中分配空間,并將其清零。

總的來說,在編譯時,RO Size 包括 Code 及 RO-data,表示程序占用 Flash 空間的大?。籖W Size 包括 RW-data 及 ZI-data,表示運行時占用的 RAM 大?。?a href="http://www.www27dydycom.cn/tags/rom/" target="_blank">ROM Size 包括 Code、RO Data 以及 RW Data,表示燒寫程序所占用的 Flash 空間大小。程序運行時,CPU 從 Flash 讀取 Code 段和 RO-data 段的內(nèi)容,從 RAM 讀寫 RW-data 段和 ZI-data 段的數(shù)據(jù)。

四、自動初始化機制

RT-Thread 的自動初始化機制通過巧妙的宏定義方式實現(xiàn)。在函數(shù)定義處使用特定的宏聲明初始化函數(shù),這些函數(shù)會在系統(tǒng)啟動過程中自動被執(zhí)行,無需手動調(diào)用。

INIT_BOARD_EXPORT 主要用于非常早期的初始化,例如芯片相關(guān)硬件的初始化,此時調(diào)度器還未啟動。它適用于那些在系統(tǒng)啟動極早期就必須完成的關(guān)鍵硬件初始化操作。

INIT_PREV_EXPORT 用于純軟件的初始化,通常是沒有太多依賴的函數(shù)。比如一些簡單的軟件配置或早期的軟件模塊初始化。

INIT_DEVICE_EXPORT 針對外設(shè)驅(qū)動的初始化,如網(wǎng)卡設(shè)備等。在需要對外設(shè)進行初始化以便后續(xù)系統(tǒng)正常使用時使用。

INIT_COMPONENT_EXPORT 主要用于組件的初始化,像文件系統(tǒng)或者 LWIP 等組件的初始化就可通過此宏。

INIT_ENV_EXPORT 用于系統(tǒng)環(huán)境的初始化,比如掛載文件系統(tǒng)等操作。

INIT_APP_EXPORT 則用于應(yīng)用的初始化,比如 GUI 應(yīng)用等。

通過這些不同類型的自動初始化接口,開發(fā)者能夠根據(jù)具體的初始化需求,將函數(shù)放置在合適的初始化階段,確保系統(tǒng)在啟動過程中有序、高效地完成各項初始化工作,提高了開發(fā)效率和系統(tǒng)的穩(wěn)定性。

五、內(nèi)核對象模型

RT-Thread 的內(nèi)核對象豐富多樣,包括線程、信號量、郵箱、消息隊列、內(nèi)存池等。

線程:是 RT-Thread 中最基本的調(diào)度單位,描述了任務(wù)執(zhí)行的上下文關(guān)系和優(yōu)先等級。線程控制塊存儲了線程的關(guān)鍵信息,如優(yōu)先級、狀態(tài)、棧地址等。

信號量:用于解決線程間的同步和互斥問題。通過信號量的計數(shù)值來控制資源的訪問,當(dāng)計數(shù)值為 0 時,申請資源的線程會被阻塞。

郵箱:實現(xiàn)線程間的消息傳遞,能夠存儲一定量的消息數(shù)據(jù)。

消息隊列:可以存儲多個消息,支持不同線程之間的異步通信

內(nèi)存池:用于高效地管理內(nèi)存分配和釋放,提高內(nèi)存使用效率。

內(nèi)核對象管理框架通過鏈表來管理各類對象。每個內(nèi)核對象類型都有對應(yīng)的鏈表,對象通過鏈表節(jié)點進行連接。例如,線程對象通過線程鏈表進行管理。

對象的派生和繼承關(guān)系帶來了顯著的優(yōu)勢。一方面,提高了系統(tǒng)的可重用性和擴展性。新的對象類別可以在繼承通用屬性的基礎(chǔ)上進行少量擴展即可創(chuàng)建,降低了開發(fā)難度。另一方面,提供了統(tǒng)一的對象操作方式,簡化了具體對象的操作流程,提高了系統(tǒng)的可靠性和穩(wěn)定性。例如,線程控制塊在繼承通用對象結(jié)構(gòu)的基礎(chǔ)上,增加了線程特有的屬性,使得線程管理更加精準(zhǔn)和高效。

六、線程管理

6.1 多線程的基本概念與 RT-Thread 中的實現(xiàn)

在操作系統(tǒng)中,多線程是將一個大型任務(wù)分解為多個可獨立執(zhí)行的小任務(wù),從而提高系統(tǒng)的并發(fā)處理能力。在 RT-Thread 中,通過線程控制塊來管理線程,每個線程都有自己的執(zhí)行環(huán)境和優(yōu)先級。線程之間可以通過共享資源和通信機制進行協(xié)作。

6.2 線程的相關(guān)屬性

線程棧:RT-Thread 中線程具有獨立的棧,用于存儲線程運行時的局部變量和上下文信息。線程切換時,上下文會保存到棧中,恢復(fù)運行時再從棧中讀取。

線程狀態(tài):線程存在初始、就緒、運行、掛起和關(guān)閉這五種狀態(tài)。初始狀態(tài)表示線程剛創(chuàng)建未運行;就緒狀態(tài)意味著線程準(zhǔn)備好等待被調(diào)度執(zhí)行;運行狀態(tài)表示線程正在占用 CPU 執(zhí)行;掛起狀態(tài)通常是由于資源不可用或主動延時導(dǎo)致線程暫時不參與調(diào)度;關(guān)閉狀態(tài)則表示線程已結(jié)束。

線程優(yōu)先級:RT-Thread 支持最多 256 個優(yōu)先級,數(shù)值越小優(yōu)先級越高,0 為最高優(yōu)先級??筛鶕?jù)實際需求為不同線程設(shè)置優(yōu)先級,以決定線程被調(diào)度的先后順序。

時間片:時間片僅對相同優(yōu)先級的就緒態(tài)線程有效。它決定了同一優(yōu)先級線程每次被調(diào)度執(zhí)行的時長,影響系統(tǒng)的響應(yīng)性和任務(wù)切換頻率。

6.3 系統(tǒng)線程

空閑線程:空閑線程是系統(tǒng)中優(yōu)先級最低的線程,其狀態(tài)永遠為就緒態(tài)。當(dāng)系統(tǒng)中無其他就緒線程時,調(diào)度器會調(diào)度空閑線程。它通常是一個死循環(huán),用于執(zhí)行一些后臺任務(wù),如資源回收、功耗管理等。

主線程:在系統(tǒng)啟動時創(chuàng)建,入口函數(shù)為 main_thread_entry 。用戶的應(yīng)用入口函數(shù) main 從這里開始,用戶可在 main 函數(shù)中添加應(yīng)用程序的初始化代碼。

6.4 線程調(diào)度的相關(guān)API

啟動:通過 rt_thread_startup 函數(shù)將創(chuàng)建或初始化后的線程調(diào)入相應(yīng)優(yōu)先級的就緒隊列,等待被調(diào)度執(zhí)行。

獲取當(dāng)前:使用 rt_thread_self 函數(shù)可以獲取當(dāng)前正在執(zhí)行的線程句柄。

讓出資源:rt_thread_yield 函數(shù)使當(dāng)前線程讓出 CPU 資源,相同優(yōu)先級的其他線程將被執(zhí)行。

睡眠:rt_thread_sleep 、 rt_thread_delay 和 rt_thread_mdelay 等函數(shù)可使當(dāng)前線程掛起指定時間,時間結(jié)束后線程重新進入就緒狀態(tài)。

掛起和恢復(fù):rt_thread_suspend 函數(shù)掛起線程, rt_thread_resume 函數(shù)恢復(fù)被掛起的線程。

控制:rt_thread_control 函數(shù)可用于動態(tài)更改線程的優(yōu)先級等屬性。

七、時鐘管理

7.1 時鐘節(jié)拍的概念和作用

時鐘節(jié)拍(OS Tick)是 RT-Thread 操作系統(tǒng)的最小時間單位,它就如同系統(tǒng)的心跳,為系統(tǒng)處理各種與時間相關(guān)的事件提供了基準(zhǔn)。在 RT-Thread 中,時鐘節(jié)拍被廣泛應(yīng)用于線程延時、時間片輪轉(zhuǎn)以及定時器超時等方面。

在線程延時方面,通過時鐘節(jié)拍來精確控制線程暫停的時間,確保線程按照預(yù)定的時間間隔執(zhí)行。

對于時間片輪轉(zhuǎn)調(diào)度,時鐘節(jié)拍用于確定每個線程占用 CPU 的時間片長度,實現(xiàn)線程之間的公平輪轉(zhuǎn)執(zhí)行,提高系統(tǒng)的并發(fā)處理能力。

而在定時器超時方面,時鐘節(jié)拍的作用至關(guān)重要。當(dāng)定時器設(shè)定的時間達到對應(yīng)的時鐘節(jié)拍數(shù)時,就會觸發(fā)超時操作,執(zhí)行相應(yīng)的回調(diào)函數(shù)。

7.2 時鐘節(jié)拍的實現(xiàn)原理

RT-Thread 中時鐘節(jié)拍的實現(xiàn)依賴于硬件定時器的觸發(fā)。通常,系統(tǒng)會配置一個硬件定時器為中斷觸發(fā)模式,比如對于 Cortex-M 芯片來說,常用的是滴答定時器 Systick。

當(dāng)中斷產(chǎn)生時,會調(diào)用一系列函數(shù)進行計數(shù)和處理。在中斷服務(wù)函數(shù)中,會執(zhí)行關(guān)鍵的操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313199
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1403

    瀏覽量

    40965
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7025

    瀏覽量

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

    關(guān)注

    31

    文章

    1348

    瀏覽量

    41376
收藏 人收藏

    評論

    相關(guān)推薦

    如何對RT-Thread內(nèi)核有基本的了解?

    RT-Thread 的時鐘管理以時鐘節(jié)拍為基礎(chǔ),時鐘節(jié)拍是 RT-Thread 操作系統(tǒng)中最小的時鐘單位。
    的頭像 發(fā)表于 07-19 10:12 ?7334次閱讀
     如何對<b class='flag-5'>RT-Thread</b><b class='flag-5'>內(nèi)核</b>有基本的了解?

    一文讀懂RT-Thread操作系統(tǒng)的郵箱機制

    RT-Thread操作系統(tǒng)的郵箱有何作用?RT-Thread操作系統(tǒng)的郵箱機制管理數(shù)據(jù)結(jié)構(gòu)是怎樣的?
    發(fā)表于 02-28 08:10

    基于RT-Thread操作系統(tǒng)衍生rt-smart實時操作系統(tǒng)簡介

    ,例如 ARM Cortex-A 系列芯片,MIPS 芯片,帶 MMU 的 RISC-V 芯片等。rt-smart 在 RT-Thread 操作系統(tǒng)的基礎(chǔ)上啟用獨立、完整的進程方式,同時以混合微
    發(fā)表于 06-22 17:56

    RT-Thread操作系統(tǒng)有哪些優(yōu)勢?

    RT-thread是一個輕量級的操作系統(tǒng),很小,但是也是一個操作系統(tǒng)。主要優(yōu)勢有這些: 跨芯片平臺:支持所有主流微控制器,解決設(shè)備碎片化問題。 實時操作系統(tǒng)
    發(fā)表于 06-28 08:16

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實時操作系統(tǒng),本文是RT
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread Smart微內(nèi)核操作系統(tǒng)發(fā)布!

    9月1日,由上海睿賽德電子科技有限公司舉辦的RT-Thread Smart微內(nèi)核操作系統(tǒng)發(fā)布會于北京圓滿落幕,發(fā)布會以見微為主題,邀請到中國工程院院士、產(chǎn)業(yè)專家、高校教授及行業(yè)從業(yè)人員100余位蒞臨
    的頭像 發(fā)表于 09-09 10:49 ?2881次閱讀

    國民技術(shù)攜手RT-Thread共同推進MCU與RT-Thread操作系統(tǒng)廣泛適配

    日前,國民技術(shù)股份有限公司與知名物聯(lián)網(wǎng)操作系統(tǒng)廠商睿賽德科技(RT-Thread)簽署會員合作協(xié)議,正式成為RT-Thread高級會員。國民技術(shù)將基于通用MCU和RT-Thread物聯(lián)
    的頭像 發(fā)表于 12-16 09:56 ?2564次閱讀

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)
    發(fā)表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>內(nèi)核</b>學(xué)習(xí)筆記 - <b class='flag-5'>內(nèi)核</b>對象鏈表結(jié)構(gòu)<b class='flag-5'>深入</b>理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象操作API

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)
    發(fā)表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>內(nèi)核</b>學(xué)習(xí)筆記 - <b class='flag-5'>內(nèi)核</b>對象<b class='flag-5'>操作</b>API

    RT-Thread實時操作系統(tǒng)安裝向?qū)?/a>

    RT-Thread 是一個集實時操作系統(tǒng)(RTOS)內(nèi)核、中間件組件和開發(fā)者社區(qū)于一體的技術(shù)平臺,由熊譜翔先生帶領(lǐng)并集合開源社區(qū)力量開發(fā)而成,RT-Thread 也是一個組件完整豐富、
    發(fā)表于 04-02 09:43 ?7次下載

    大佬帶你理解RT-Thread內(nèi)核并上手實踐

    內(nèi)核操作系統(tǒng)最重要的部分,學(xué)習(xí)RT-Thread也是從最基本的內(nèi)核開始。 ? RT-Thread內(nèi)核
    發(fā)表于 06-30 17:10 ?1475次閱讀

    RT-Thread操作系統(tǒng)的FreeRTOS兼容層

    的兼容項目中。 1 概述 這是一個針對RT-Thread國產(chǎn)操作系統(tǒng)的FreeRTOS操作系統(tǒng)兼容層,可以讓原有基于FreeRTOS操作系統(tǒng)的項目快速、無感地遷移到
    的頭像 發(fā)表于 01-14 00:55 ?1858次閱讀

    如何深入理解RT-Thread內(nèi)核并上手實踐,看完這篇有答案了!

    內(nèi)核操作系統(tǒng)最重要的部分,學(xué)習(xí)RT-Thread也是從最基本的內(nèi)核開始。RT-Thread內(nèi)核
    的頭像 發(fā)表于 06-27 09:36 ?2853次閱讀
    如何<b class='flag-5'>深入</b>理解<b class='flag-5'>RT-Thread</b><b class='flag-5'>內(nèi)核</b>并上手實踐,看完這篇有答案了!

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

    ——王宜懷的教授繼《嵌入式實時操作系統(tǒng)——基于RT-Thread的EAI&IoT系統(tǒng)開發(fā)》之后的又一力作,不僅內(nèi)容豐富實用,而且講解方式深入淺出,適合不同層次的學(xué)習(xí)
    的頭像 發(fā)表于 05-11 08:35 ?1098次閱讀
    新書發(fā)布——《實時<b class='flag-5'>操作系統(tǒng)</b>應(yīng)用技術(shù):<b class='flag-5'>RT-Thread</b>與ARM編程實踐》

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

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