色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

哪些工具可以實現基于RTOS的程序bug?

strongerHuang ? 來源:麥克泰技術 ? 作者:麥克泰技術 ? 2021-05-03 12:02 ? 次閱讀

越來越多的嵌入式系統依賴于實時操作系統(RTOS)的使用,以滿足實時需求,減少上市時間,簡化開發,增加代碼可移植性。盡管RTOS有許多好處,但它也有其缺點,如可能引入分配不當的任務優先級、堆棧溢出、饑餓、死鎖、優先級反轉等bug。

一些專門設計的工具,可以幫助基于RTOS的程序開發人員發現一些難以發現的錯誤。

RTOS是什么?

實時操作系統(RTOS或實時內核)是有效地管理CPU時間的軟件。大多數內核使用C編寫,僅需匯編語言編寫小部分代碼,使內核適配不同的CPU體系結構。在使用RTOS內核設計應用程序時,只需將工作分成任務,每個任務負責工作的一部分。任務(也稱為線程)是一個簡單的程序,認為自己完全擁有CPU。在單核CPU上,在任何給定時間內只能執行一個任務。應用代碼還需要根據任務重要性為每個任務分配優先級以及任務堆棧(RAM)。一般來說,增加低優先級任務不會影響系統對高優先級任務的響應。任務實現通常是一個無限循環,內核負責任務的管理,稱為多任務處理。多任務處理是在幾個順序任務之間調度和切換CPU的過程。多任務處理提供了具有多個CPU的錯覺,最大化地使用CPU,如圖1所示。多任務處理還有助于創建模塊化的應用程序。使用實時內核后,應用程序更容易設計和維護。

8aec703c-9ff4-11eb-8b86-12bb97331649.png

大多數商業RTOS都是搶占式調度方式,內核總是運行就緒的最重要的任務。搶占式內核也是事件驅動的,任務被設計為等待事件發生后才能執行。如果任務等待的事件沒有發生,內核將運行其它任務。等待狀態的任務不消耗CPU時間。通過內核API調用來完成事件的發生和等待操作,避免輪詢操作,提高CPU時間的利用率。典型的任務實現示例,如下所示:

8b22bab6-9ff4-11eb-8b86-12bb97331649.png

實時內核提供了許多服務,如多任務處理、中斷管理、任務間通信與同步、資源管理、時間管理、內存分區管理等。RTOS可以用于少量任務的簡單應用,在需要復雜和耗時的通信的應用中,如TCP/IP、USB(主機和/或設備)、CAN藍牙Zigbee應用等,RTOS是一個必備工具。當應用程序需要文件系統來存儲和檢索數據,以及當產品配備了圖形顯示(黑白、灰度或彩色)時,也強烈推薦使用RTOS。

硬件調試端口

ARM Cortex-M內核配備了強大的調試硬件。CoreSight提供了非侵入性的功能,允許工具在不停止CPU的情況下監視和控制實時系統,例如:

動態內存/外設訪問(讀寫)

指令跟蹤(芯片需包括一個執行跟蹤宏單元,ETM)

數據跟蹤

下圖顯示了Core Sight調試端口、CPU和內存外設之間的關系簡化框圖。

8b5a0f0c-9ff4-11eb-8b86-12bb97331649.png

系統測試/調試工具

下圖顯示了CoreSight如何連接到開發環境:

8b6ab65e-9ff4-11eb-8b86-12bb97331649.png

1、嵌入式開發通常使用集成開發環境(IDE),IDE中通常包含代碼編輯器、編譯器、匯編器、鏈接器、調試器等工具。

IDE內置的調試器只提供了最基本的功能:下載代碼、啟動/停止應用、設置斷點等功能。一些調試器允許在目標運行時顯示和更改變量(如Live Watch),但這些功能僅限于數值。許多調試器內置RTOS插件,但通常需要停止應用程序才能檢查RTOS的狀態(對于調試實時系統不太實用)。

2、通過調試器,例如Segger J-Link,將代碼下載到目標系統。

3、J-Link連接到CoreSight調試端口,啟動/停止CPU,下載代碼,編程板載Flash等。即使目標系統正在執行代碼,J-Link也可以讀寫內存。

4、Micrium的μC/Probe是一個獨立的、與CPU無關的Windows應用程序,它讀取工具鏈生成的ELF文件。ELF文件包含下載到目標系統的代碼以及所有全局變量的名稱、數據類型和內存位置。

5、μC/Probe允許用戶在運行時顯示或更改連接的嵌入式目標上的變量或內存位置(包括I/O端口)的值。用戶只需在μC/Probe圖形環境填充量規、數字指示器、表格、圖表、虛擬LED、條形圖、滑塊、開關、按鈕等控件,并將控件與嵌入設備中的變量或內存位置相關聯,即可在運行時顯示或更改變量。通過μC/Probe圖形界面中添加的虛擬滑塊或開關,你可以輕松地更改運行系統的參數(如過濾系數和PID回路增益)或啟動設備并測試I/O端口。

6、μC/Probe向J-Link發送讀取或寫入內存的請求。

7、J-Link請求將轉換為CoreSight命令,獲取變量值并顯示到μC/Probe圖形界面。

8、測試/調試實時嵌入式系統的另一個非常有用的工具是SEGGER的SystemView。此工具通常與RTOS一起工作,按時間順序顯示任務和ISR的執行,可以查看每個任務需要執行的時間(最小/平均/最大),任務何時就緒,每個任務實際開始執行時間,ISR何時執行等。SystemView可以幫助你發現不易發現的錯誤。但SystemView需要向目標系統添加記錄RTOS事件和ISR的駐留代碼(由SEGGER免費提供),SystemView還會消耗少量的RAM來緩存這些事件。

9、J-Link允許多個進程同時訪問CoreSight,因此你可以同時使用這三個工具。

基于RTOS應用中的問題

堆棧溢出

在基于實時內核的應用中,每個任務都需要自己的堆棧。任務所需堆棧的大小取決于應用程序。如果堆棧大于任務要求,則會浪費內存。如果堆棧太小,堆棧可能溢出。我們可以通過分配更多內存來減少堆棧溢出的機會,通常需要25-50%的額外堆棧空間。一些CPU,比如基于ARMv8M架構的CPU,內置了堆棧溢出檢測機制。然而,該特性并不能幫助確定合適的堆棧大小,它只是防止堆棧溢出的負面后果。

堆棧分配時,首先為任務堆棧分配更多空間,然后在已知最壞情況下運行應用程序,監視實際堆棧使用情況。

下圖顯示了μC/Probe對測試應用程序的μ/OS-III內核感知的截圖。Stack Usage列顯示每個任務在給定時間的最大堆棧使用情況。μC/Probe將更新并實時顯示堆棧使用信息,無需停止目標應用。綠色表示最大堆棧使用量一直保持在70%。黃色表示堆棧使用量在70%到90%之間。紅色表示堆棧使用量已超過90%。顯然,使用92%堆棧的任務應該增大堆棧,使其回到70%以下。

8beda6c2-9ff4-11eb-8b86-12bb97331649.png

中斷響應

在臨界代碼處理時,RTOS和應用程序代碼通常必須禁用中斷。關中斷會影響系統對事件的響應,RTOS應用中盡量減少中斷禁用時間。

μC/OS-III會監測每個任務最壞情況下的中斷禁用時間,下圖所示。如果應用需要滿足實時截止時間,這些信息非常有用。

中斷被禁用的時間很大程度上取決于CPU、其時鐘速率、應用程序和調用的RTOS服務。禁用中斷最長的任務用紅色高亮顯示,幫助用戶快速識別潛在的異常值。

8c00be9c-9ff4-11eb-8b86-12bb97331649.png

如果最大中斷禁用時間是由RTOS引起的,可以:

查找并使用中斷禁用時間較低的RTOS API。

增加CPU的時鐘速率。

使用非內核感知中斷來處理高度時間敏感的代碼。

優先級反轉

優先級反轉發生在低優先級任務持有高優先級任務需要的資源時。當中等優先級的任務搶占占用資源的低優先級的任務時,問題就會加劇。“優先級反轉”一詞指的是,低優先級任務似乎比高優先級任務具有更高的優先權,至少在共享該資源時是如此。

優先級反轉是實時系統中的一個問題,當使用基于優先級的搶占式內核時會發生。如下圖所示,SystemView展示了一個優先級反轉場景。

App HPT具有最高優先級,App MPT 具有中優先級,App LPT優先級最低。

8ced1a62-9ff4-11eb-8b86-12bb97331649.png

可以使用RTOS的互斥量機制來解決上面描述的優先級反轉問題。優先級反轉被限定為LPT訪問共享資源所需的時間,下圖所示。LPT和HPT都使用互斥量而非信號量來獲得對共享資源的訪問權。如果沒有SystemView這樣的工具,優先級反轉將很難識別和校正。

8cf8731c-9ff4-11eb-8b86-12bb97331649.png

注意,如果LPT只是HPT的下一個優先級級別,則可以使用信號量。在這種情況下,RTOS不需要更改LPT的優先級,信號量是首選項,它比互斥信號量快。

死鎖

死鎖是至少兩個任務相互等待另一個任務擁有的資源。死鎖可能不會立即發生,它很大程度上取決于兩個任務何時需要彼此的資源。如圖8所示,μC/Probe的內核感知視圖有一列,顯示每個任務的執行頻率(RTOS切換任務的頻率)。通過監視此列可以檢測死鎖。如果至少兩個任務的計數已停止(μC/Prboe在CPU運行時更新這些計數器),則可能存在死鎖。對于這種情況,不需要使用μC/Probe等工具也可以判定鎖定行為,該工具使它更加明顯。

8d073262-9ff4-11eb-8b86-12bb97331649.png

可以通過以下方法來避免死鎖:

1、任務先獲取所有必需的資源,以相同的順序獲取它們,以相反的順序釋放它們。

2、在RTOS API調用中使用超時機制,以避免永遠等待資源可用。檢查RTOS API返回的錯誤代碼,以確保對所需資源的請求成功。

任務饑餓

饑餓指高優先級任務消耗了所有CPU帶寬,低優先級任務沒有CPU時間或很少。饑餓的影響是響應性和產品特性的下降,例如嵌入式目標的顯示更新緩慢、通信堆棧中的數據包丟失、操作界面響應遲緩等。為解決饑餓問題,可以:

1、優化消耗大多數CPU帶寬的代碼。

2、提高CPU的時鐘速度。

8d171ede-9ff4-11eb-8b86-12bb97331649.png

總結

IDE內置的調試器通常不足以調試基于RTOS的實時系統。

幸運的是,有專門為調試基于RTOS的系統而設計的工具。其中一個工具是Segger的SystemView,它會按時間順序顯示ISR和任務的執行,收集運行時統計數據,如最小和最大執行時間、ISR與任務之間的關系、CPU負載等。

另一個可以補充SystemView的工具是Micrium的μC/Probe,這是一個通用工具,它允許開發人員在不干擾CPU的情況下,可視化和改變正在運行的嵌入式目標的行為。μC/Probe可以用于裸機或基于RTOS的應用中。對于基于RTOS的應用程序,μC/Probe包括非侵入性的、實時內核感知以及TCP/IP協議棧感知功能。SystemView和μC/Probe可以在整個開發周期中使用,提供關于嵌入式目標的運行時行為的反饋。

原文標題:幾種基于RTOS的實用工具

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    5086

    文章

    19140

    瀏覽量

    305867
  • RTOS
    +關注

    關注

    22

    文章

    815

    瀏覽量

    119702

原文標題:幾種基于RTOS的實用工具

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用任務通知提高RTOS應用的效率

    在實時嵌入式系統中,性能和資源效率是決定設計成敗的關鍵因素。傳統的實時操作系統(RTOS)提供了如隊列、信號量和事件組機制,實現任務之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過程更快、更輕量化,
    的頭像 發表于 12-27 14:54 ?221次閱讀

    一種實現亞毫秒定時分辨率的RTOS新方法

    你在使用實時操作系統(RTOS)時是否發現無法將任務調度或延遲精度降到毫秒以下?你可能不得不在RTOS之外編寫大量應用代碼。雖然這種方式可行,但這會讓你懷疑應用程序是否滿足其截止期限,是否可維護和可
    的頭像 發表于 12-17 13:58 ?108次閱讀
    一種<b class='flag-5'>實現</b>亞毫秒定時分辨率的<b class='flag-5'>RTOS</b>新方法

    freertos和rtos區別是什么

    FreeRTOS 和 RTOS(實時操作系統)是兩個不同的概念,但它們之間有緊密的聯系。FreeRTOS 是一個特定的開源實時操作系統,而 RTOS 是實時操作系統的一般概念。 概念定義 RTOS
    的頭像 發表于 09-02 14:18 ?1313次閱讀

    RTOS的特性和類型

    實時操作系統(RTOS)是一種可運行實時計算應用程序的軟件平臺,用于處理具有明確時間約束的事件和數據。與通用操作系統(GPOS)不同,RTOS必須在有限的硬件資源上調度應用程序之間的處
    的頭像 發表于 08-20 11:29 ?611次閱讀

    RTOS開發最佳實踐

    基于RTOS編寫應用程序時,有一些要注意事項。在本節中,您將學習RTOS開發最佳實踐,例如POSIX合規性、安全性和功能安全認證。
    的頭像 發表于 08-20 11:24 ?467次閱讀

    什么是實時操作系統(3)-在 RTOS可以期待什么?

    RTOS使用各種機制來管理任務、事件和內存,以確保嵌入式系統滿足時間約束。在本節中,您將了解構建嵌入式應用程序時需要考慮的RTOS功能,例如確定性、空間和時間分離、調度、內存管理和進程間通信。
    的頭像 發表于 07-23 12:00 ?1048次閱讀
    什么是實時操作系統(3)-在 <b class='flag-5'>RTOS</b> 中<b class='flag-5'>可以</b>期待什么?

    請問從哪里獲得ESP8266 RTOS SDK的SPI驅動程序

    我計劃將ESP8266用作SPI從設備,它可以根據功能從某些SPI主設備進行操作。我已經檢查了 NON OS SDK 中有 SPI 驅動程序ESP8266但 RTOS SDK ESP8266沒有任何源。 那么,有沒有人知道我
    發表于 07-12 07:28

    助力程序員告別困擾已久的夢魘-Bug

    程序員的噩夢是什么?不用懷疑,就是讓你加班到崩潰的Bug!下面是經過業界大佬們“長期加班”積累的小妙招,助力你離早下班又進一步~一、定位Bug范圍及性質要有效解決問題,首先要縮小范圍,集中關注最近
    的頭像 發表于 07-02 08:10 ?336次閱讀
    助力<b class='flag-5'>程序</b>員告別困擾已久的夢魘-<b class='flag-5'>Bug</b>

    為昕科技VXIN原理圖工具Jupiter使用發現問題BUG

    申請使用上海為昕科技VXIN原理圖工具Jupiter和元件設計工具Venues已經有兩周了,現將發現BUG用表單發給廠家供參考。
    發表于 06-12 00:21

    risc-v的mcu對RTOS兼容性如何

    關鍵點和歸納: 指令集兼容性 : RISC-V是一個開源的指令集架構(ISA),這意味著不同的MCU制造商可以根據自己的需求實現RISC-V的不同版本或變種。因此,RTOS的兼容性首先取決于R
    發表于 05-27 16:26

    【從0開始創建AWTK應用程序】編譯應用到RTOS平臺

    AWStudio上編寫好AWTK應用程序后,部署到RTOS平臺(如STM32)是很方便的,下面就以STM32F429型號為例子來介紹如何編譯AWTK應用到RTOS
    的頭像 發表于 03-21 08:23 ?628次閱讀
    【從0開始創建AWTK應用<b class='flag-5'>程序</b>】編譯應用到<b class='flag-5'>RTOS</b>平臺

    基于RTOS的應用進程中的典型線程

    RTOS中的關鍵因素是最小的中斷延遲和最小的線程切換延遲。RTOS的價值在于它的響應速度或可預測性,而不是它在給定時間段內可以執行的工作量。
    發表于 03-05 09:32 ?641次閱讀
    基于<b class='flag-5'>RTOS</b>的應用進程中的典型線程

    使用TSIP驅動程序(Azure RTOS)的TLS實現示例

    電子發燒友網站提供《使用TSIP驅動程序(Azure RTOS)的TLS實現示例.pdf》資料免費下載
    發表于 01-31 10:13 ?3次下載
    使用TSIP驅動<b class='flag-5'>程序</b>(Azure <b class='flag-5'>RTOS</b>)的TLS<b class='flag-5'>實現</b>示例

    FreeRTOS如何刪除clib支持和抽象rtos

    我目前在我的項目中使用FreeRTOS,但只使用了其最少的功能。 我需要刪除 clib 支持和抽象 rtos,只保留 FreeRTOS。 這是為了實現更輕的應用程序并最大限度地減少依賴關系。 我怎么能那樣做?
    發表于 01-25 06:19

    Zephyr RTOS簡介及代碼下載編譯運行

    說起來RTOS,第一印象就是單片機程序、ARM M核、微控制器低頻運行處理程序,甚至其不能算一個真正的OS。但是隨著時代發展,這些單片機程序在有限的硬件機制下非常接近像Linux這種的
    的頭像 發表于 01-10 09:12 ?6313次閱讀
    Zephyr <b class='flag-5'>RTOS</b>簡介及代碼下載編譯運行
    主站蜘蛛池模板: 亚洲蜜桃AV色情精品成人| 日韩性大片| 欧美丝袜女同| 1234成人网| 久久国产精品久久国产精品| 天天综合亚洲综合网站| yellow免费| 人人干人人爽| 宝贝你骚死哥了好爽| 欧美97色伦综合网| 95国产欧洲精华液| 美女用手扒开粉嫩的屁股| 最近中文字幕无吗免费高清| 久久久久综合网久久| 中国午夜伦理片| 麻豆免费版| 9久久99久久久精品齐齐综合色圆 9久高清在线不卡免费无吗视频 | 六度影院最新| 99国产精品| 欧洲老妇人bb| 工口肉肉彩色不遮挡| 窝窝色资源站| 加勒比一本之道高清视频在线观看| 亚洲天堂av2017| 乐乐亚洲精品综合影院| 99久免费精品视频在线观看2| 欧美四虎精品二区免费| 丰满五十老女人性视频| 亚洲精品国产乱码AV在线观看| 精品综合久久久久久8888| 最新无码国产在线视频| 日本不卡一二三| 国产色综合久久无码有码| 一个人免费视频在线观看高清版| 巨污全肉np一女多男| silk118中文字幕无删减| 偷偷要色偷偷| 快穿之诱受双性被灌满h| YY8090福利午夜理论片| 天天爽夜夜爽夜夜爽| 久久精品中文字幕|