精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

RT-Thread操作系統的問題及解決方案

RTThread物聯網操作系統 ? 來源:古月居 ? 作者:better_coder ? 2021-04-07 17:07 ? 次閱讀

現在的裸機程序已經不能滿足嵌入式機器人所需的代碼結構要求了,因為一個嵌入式機器人的系統是非常龐大的,分別由感知算法,決策算法和控制算法等組成,這還沒有算上一些需要聯網的程序。龐大的代碼需要一個芯片級的操作系統來屏蔽掉硬件對于上層算法的影響,同時向上層提供API,幫助上層的算法調用底層硬件,因此一個芯片級操作系統就十分重要了,而RT-Thread是一種國產的芯片級操作系統,而我的課程剛好也涉及到了該系統,所以我準備寫一系列的博客來記錄下我在學習這個操作系統過程中的種種問題,希望能帶給大家一些幫助~

問題現象

這學期我們在上嵌入式的課程,學習了一個新的輕量級操作系統——RT-Thread(后面簡稱為rtt),這是一個國產的操作系統,這個操作系統的特點就是只有線程,沒有進程,那么我們要使用這個系統的話只需要操作相應的線程就可以了,那么我們用好這個系統的方法就很簡單了,我們只需要實現各個線程間的協調工作就可以了。

言歸正傳,在我學習這個rtt的時候我出現了一個問題,那就是當我的main函數的while(1)里面啥東西也不放,空跑的時候,整個芯片就宕機了,代碼如圖:

3723a6f6-93fa-11eb-8b86-12bb97331649.jpg

原因及解決辦法

【走過的彎路】

開始的時候我以為這個原因就是在我的整個工程中main線程的優先級比較高,其他線程的優先級都是最低的(我這里設置的是25),那么在線程調度的時候高優先級的線程會先被調度,main線程作為我的系統中優先級最高的線程,而且是在空跑的一個線程,那么就是這個main線程在一直占用著系統資源,其他線程都不能被調度,因此出現了類似于系統宕機的現象。

說到這里就不得不說一下我們這張rtt系統的線程調度的狀態流轉圖了。

3747aa74-93fa-11eb-8b86-12bb97331649.jpg

在普通的操作系統中,這些狀態之間的流轉還是比較好理解的,但是在rtt中,它有一個與其他操作系統所不同的地方,這我在前面也已經講過了,那就是它是沒有進程這個東西的,因此在rtt操作系統中,就緒狀態=運行狀態。也就是說圖中的2號圓圈代表的循環就相當于等價。

但是,這樣就出現問題了,因為如果按照我這個邏輯的話,不止是在空跑main線程的while(1)的時候會出現系統宕機的情況,就算main線程的while(1)里面加入了任務程序,那么我們整個rtt系統也是會根據系統進程的調度機制(高優先級的線程一定會先被調度)來不停的循環調用main線程里while(1)里面的任務,同樣其他的線程也是不會被調用的,這樣肯定是不行的,于是我就去rtt的官網查詢相關資料,最終解開了這個問題背后的謎團。

恍然大悟

首先讓我們來rtt系統中明確一些概念。

我們以下面這個代碼段來舉例說明:

void thread_entry(void* paramenter) { /* 等待事件的發生 */ /* 對事件進行服務、進行處理 */ }

線程就緒/運行

這個代碼是線程的實體函數,那rtt系統屆時會怎樣執行這個程序呢?我畫一個形象的圖給大家解釋一下。

3765d512-93fa-11eb-8b86-12bb97331649.jpg

如果這個線程優先級夠高的話,rtt系統會一直執行這個線程,也就不會執行其他線程了,因為該線程運行結束之后會進入就緒狀態,又因為該線程有最高優先級,所以進入線程調度池之后馬上又會被調度運行,進入運行狀態,但是在rtt 中,實際上(實現過程中)線程并不存在運行狀態,就緒狀態和運行狀態是等同的,但是在理解機制時照上面說的來理解較為方便。

線程掛起

rtt官網有對其較為詳細,清楚的描述,我這里做了一個搬運,侵刪。

377cd352-93fa-11eb-8b86-12bb97331649.jpg

這段話里面重要的就是這句話,線程不參與調度,也就是說不論該線程優先級有多高,他都不會進入到線程調度池里面,根據表格中的描述,導致線程掛起的條件有2個資源不可用。

線程主動延時一段時間

解決問題

main線程就是一個特殊的線程,所以他肯定也符合rtt系統管理線程的機制。

那我們這個問題就很好說明了。當main線程的while(1)循環內程序沒有發生資源不可用或者線程主動延時的操作時,該線程一直會處于運行/就緒階段,又因為我的程序中,main線程優先級最高,所以我的main線程一直霸占著系統資源,造成了系統宕機的假象。但是如果我在main線程的while(1)循環中插入一段延時程序,main線程就會進入掛起狀態,讓出系統資源,從而使其他線程有機會得到調度,使得該系統能穩定運行。

原文標題:機器人”大腦”:RT-Thread的main線程“卡死”的一種可能原因及解決方案

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    210

    文章

    28224

    瀏覽量

    206594
  • 操作系統
    +關注

    關注

    37

    文章

    6743

    瀏覽量

    123198
  • RT-Thread
    +關注

    關注

    31

    文章

    1273

    瀏覽量

    39933
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    40811

原文標題:機器人”大腦”:RT-Thread的main線程“卡死”的一種可能原因及解決方案

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RT-Thread聯合河北大學發起嵌入式操作系統專業班-保定站

    RT-Thread官方將在11月23至24日河北省保定市(河北大學)發起為期兩天的嵌入式操作系統專業培訓班暨RT-Thread師資培訓!本次培訓將會深入講解RT-Thread嵌入式實時
    的頭像 發表于 11-16 01:09 ?165次閱讀
    <b class='flag-5'>RT-Thread</b>聯合河北大學發起嵌入式<b class='flag-5'>操作系統</b>專業班-保定站

    【本周六-深圳】RT-Thread嵌入式操作系統專業培訓班正式開班

    RT-Thread官方在本周六將發起為期三天的嵌入式操作系統專業培訓班!本次培訓將會深入講解RT-Thread嵌入式實時操作系統的核心概念、實戰技巧和應用場景!無論企業團隊/工程師是剛
    的頭像 發表于 11-08 01:07 ?164次閱讀
    【本周六-深圳】<b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作系統</b>專業培訓班正式開班

    混合部署 | 在迅為RK3568上同時部署RT-Thread和Linux系統

    RT-Thread介紹 RT-Thread 是一個高安全性、實時性的操作系統,廣泛應用于任務關鍵領域,例如電力、軌道交通、車載系統、工業控制和新能源等。它的加入讓 RK3568 能夠在
    發表于 11-01 10:31

    喜報|睿賽德科技RT-Thread操作系統成功入選上海市重點推薦目錄

    近日,經企業自主申報、資料審查、專家評審、產品測試等環節,上海睿賽德電子科技有限公司自主研發的RT-Thread嵌入式實時操作系統成功入選《2024年度上海市重點產業和領域數字化產品和解決方案
    的頭像 發表于 10-18 08:08 ?495次閱讀
    喜報|睿賽德科技<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統</b>成功入選上海市重點推薦目錄

    混合部署 | 在迅為RK3568上同時部署RT-Thread和Linux系統

    RT-Thread介紹 RT-Thread 是一個高安全性、實時性的操作系統,廣泛應用于任務關鍵領域,例如電力、軌道交通、車載系統、工業控制和新能源等。它的加入讓 RK3568 能夠在
    發表于 09-18 10:54

    新書發布——《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》

    我們非常高興地宣布,由鄭苗秀、沈鴻飛和廖建尚編著的《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》一書正式發布。本書的編寫團隊由多位在嵌入式和實時操作系統領域有著豐富經驗的專家組
    的頭像 發表于 09-03 08:06 ?486次閱讀
    新書發布——《<b class='flag-5'>RT-Thread</b>嵌入式實時<b class='flag-5'>操作系統</b>內核、驅動和應用開發技術》

    RT-Thread內部機制大揭秘,帶你深入操作系統內核

    一、RT-Thread概述RT-Thread是一款具有顯著優勢的開源嵌入式實時操作系統。它不僅具備輕量級、實時性強的特點,還擁有廣泛的開源社區支持和豐富的應用場景。在輕量級方面,RT-Thre
    的頭像 發表于 08-01 08:11 ?3108次閱讀
    <b class='flag-5'>RT-Thread</b>內部機制大揭秘,帶你深入<b class='flag-5'>操作系統</b>內核

    睿賽德科技CEO熊譜翔 ——基于RT-Thread操作系統的安全車控系統實踐

    操作系統非常看重生態,RT-ThreadSafetyAuto操作系統也是這樣,通過兼容開源RT-Thread操作系統的API來復用已有的生
    的頭像 發表于 07-13 08:35 ?1369次閱讀
    睿賽德科技CEO熊譜翔 ——基于<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統</b>的安全車控<b class='flag-5'>系統</b>實踐

    RT-Thread 新里程碑達成——GitHub Star 破萬!

    RT-Thread實時操作系統開源項目在GitHub上的star數量突破一萬!截止發文,RT-Thread作為實時操作系統在業界Star數量排名第一!倉庫地址:https://gith
    的頭像 發表于 07-04 08:35 ?404次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達成——GitHub Star 破萬!

    基于 RT-Thread專業版的EtherCAT主站方案

    特點。在RT-Thread實時操作系統上運行EtherCAT主站協議,大大提高了實時性,極大降低了循環同步抖動時間,可滿足各種對實時性要求苛刻的應用場景。以下是在瑞
    的頭像 發表于 06-19 08:35 ?804次閱讀
    基于 <b class='flag-5'>RT-Thread</b>專業版的EtherCAT主站<b class='flag-5'>方案</b>

    開發者分享 | 基于先楫RT-Thread BSP,使用CLion開發應用

    ,搭載RT-Thread實時操作系統,使用RT-ThreadStudio進行開發。RT-Thread是一個偉大的操作系統,但是,
    的頭像 發表于 06-07 08:17 ?2685次閱讀
    開發者分享 | 基于先楫<b class='flag-5'>RT-Thread</b> BSP,使用CLion開發應用

    實時操作系統RT-Thread及FreeRTOS

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

    新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐》

    RT-Thread又一本新書《實時操作系統應用技術——基于RT-Thread與ARM的編程實踐》發布,標志著RT-Thread生態和實時操作系統
    的頭像 發表于 05-11 08:35 ?744次閱讀
    新書發布——《實時<b class='flag-5'>操作系統</b>應用技術:<b class='flag-5'>RT-Thread</b>與ARM編程實踐》

    RT-Thread榮獲“最具影響力IoT操作系統獎”

    2024年3月30日,第十一屆開源操作系統年度技術會議(OS2ATC)在西郊賓館舉辦!RT-Thread作為國內領先的開源操作系統斬獲了“最具影響力IoT操作系統獎”。該獎項是對
    的頭像 發表于 04-12 08:37 ?403次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲“最具影響力IoT<b class='flag-5'>操作系統</b>獎”

    RT-Thread斬獲“最具影響力IoT操作系統獎”

    2024年3月30日,第十一屆開源操作系統年度技術會議(OS2ATC)在西郊賓館舉辦!RT-Thread作為國內領先的開源操作系統斬獲了“最具影響力IoT操作系統獎”。
    的頭像 發表于 04-10 09:51 ?560次閱讀