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

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

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

使用專門的RTOS工具發(fā)現(xiàn)實(shí)時錯誤

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Jean Labrosse ? 2022-06-30 10:15 ? 次閱讀

越來越多的嵌入式系統(tǒng)依賴使用實(shí)時操作系統(tǒng) (RTOS) 來:滿足實(shí)時要求、縮短上市時間、簡化開發(fā)、增加代碼可移植性和簡化開發(fā)。盡管有很多好處,但 RTOS 也有其缺點(diǎn),其中之一是可能引入不正確分配的任務(wù)優(yōu)先級、堆棧溢出、饑餓、死鎖、優(yōu)先級反轉(zhuǎn)和其他難以發(fā)現(xiàn)的錯誤。

在本文中,我們將研究專門設(shè)計(jì)用于幫助基于 RTOS 的應(yīng)用程序開發(fā)人員發(fā)現(xiàn)其中一些難以捉摸的錯誤、識別問題并提供糾正措施的工具。這些工具很容易獲得,但嵌入式開發(fā)人員通常不知道。

什么是實(shí)時操作系統(tǒng)?

實(shí)時操作系統(tǒng)(也稱為 RTOS 或?qū)崟r內(nèi)核)是盡可能高效地管理 CPU(中央處理單元)時間的軟件。大多數(shù)內(nèi)核都是用 C 語言編寫的,并且需要一小部分用匯編語言編寫的代碼才能使內(nèi)核適應(yīng)不同的 CPU 架構(gòu)。當(dāng)您使用 RTOS 內(nèi)核設(shè)計(jì)應(yīng)用程序(您的代碼)時,您只需將工作拆分為任務(wù),每個任務(wù)負(fù)責(zé)一部分工作。任務(wù)(也稱為線程)是一個簡單的程序,它認(rèn)為自己完全擁有 CPU。在單個 CPU 上,在任何給定時間只能執(zhí)行一個任務(wù)。您的應(yīng)用程序代碼還需要根據(jù)任務(wù)重要性以及每個任務(wù)的堆棧 (RAM) 為每個任務(wù)分配優(yōu)先級。一般來說,添加低優(yōu)先級任務(wù)不會影響系統(tǒng)對高優(yōu)先級任務(wù)的響應(yīng)。任務(wù)通常也實(shí)現(xiàn)為無限循環(huán)。內(nèi)核負(fù)責(zé)任務(wù)的管理。這稱為多任務(wù)處理。多任務(wù)處理是在多個順序任務(wù)之間調(diào)度和切換 CPU 的過程。多任務(wù)處理提供了擁有多個 CPU 的錯覺,并最大限度地利用了 CPU,如下所示。多任務(wù)處理還有助于創(chuàng)建模塊化應(yīng)用程序。使用實(shí)時內(nèi)核,應(yīng)用程序更易于設(shè)計(jì)和維護(hù)。多任務(wù)處理提供了擁有多個 CPU 的錯覺,并最大限度地利用了 CPU,如下所示。多任務(wù)處理還有助于創(chuàng)建模塊化應(yīng)用程序。使用實(shí)時內(nèi)核,應(yīng)用程序更易于設(shè)計(jì)和維護(hù)。多任務(wù)處理提供了擁有多個 CPU 的錯覺,并最大限度地利用了 CPU,如下所示。多任務(wù)處理還有助于創(chuàng)建模塊化應(yīng)用程序。使用實(shí)時內(nèi)核,應(yīng)用程序更易于設(shè)計(jì)和維護(hù)。

pYYBAGK9B02AZFU-AAEBYD1r2P8657.png

大多數(shù)商業(yè) RTOS 都是搶占式的,這意味著內(nèi)核始終運(yùn)行最重要的可立即運(yùn)行的任務(wù)。搶占式內(nèi)核也是事件驅(qū)動的,這意味著任務(wù)被設(shè)計(jì)為等待事件發(fā)生才能執(zhí)行。如果任務(wù)等待的事件沒有發(fā)生,內(nèi)核運(yùn)行其他任務(wù)。等待任務(wù)消耗零 CPU 時間。發(fā)送信號和等待事件是通過內(nèi)核應(yīng)用程序編程接口 (API) 調(diào)用完成的。內(nèi)核允許您避免輪詢循環(huán),這會浪費(fèi) CPU 的時間。以下是如何實(shí)現(xiàn)典型任務(wù)的示例:

poYBAGK9B1WAf5u5AAC3kTgRW_U317.png

內(nèi)核為程序員提供了許多有用的服務(wù),例如多任務(wù)處理、中斷管理、任務(wù)間通信和信令、資源管理、時間管理、內(nèi)存分區(qū)管理等等。RTOS 可用于只有少量任務(wù)的簡單應(yīng)用程序,但它是需要復(fù)雜且耗時的通信堆棧的應(yīng)用程序的必備工具,例如 TCP/IP、USB(主機(jī)和/或設(shè)備) )、CAN藍(lán)牙Zigbee 等。當(dāng)應(yīng)用程序需要文件系統(tǒng)來存儲和檢索數(shù)據(jù)以及產(chǎn)品配備某種圖形顯示(黑白、灰度或彩色)時,強(qiáng)烈建議使用 RTOS。

內(nèi)置調(diào)試端口

ARM Cortex.-M 處理器配備了內(nèi)置于每個芯片上的特殊且非常強(qiáng)大的調(diào)試硬件。CoreSight 提供非侵入式功能,允許工具在不停止 CPU 的情況下監(jiān)視和控制實(shí)時系統(tǒng),例如:

動態(tài)內(nèi)存/外設(shè)訪問(讀取和寫入)

指令跟蹤(要求芯片還包括一個執(zhí)行跟蹤宏單元,ETM)

數(shù)據(jù)追蹤

使用分析計(jì)數(shù)器進(jìn)行分析

下圖顯示了 CoreSight 調(diào)試端口、CPU 和內(nèi)存/外設(shè)之間關(guān)系的簡化框圖。

poYBAGK9B1yAYuXmAAJ0T2PUqic459.png

用于測試/調(diào)試實(shí)時系統(tǒng)的工具

下圖顯示了 CoreSight 如何連接到您的開發(fā)環(huán)境:

poYBAGK9B2iAWNSSAAIz0v3vR28368.png

1 - 嵌入式開發(fā)人員經(jīng)常使用集成開發(fā)環(huán)境 (IDE),其中包括代碼編輯器、編譯器、匯編器、鏈接器、調(diào)試器和可能的其他工具。

IDE 中內(nèi)置的調(diào)試器只提供最基本的必需品:下載代碼、啟動/停止、設(shè)置斷點(diǎn)和其他一些簡單功能。一些調(diào)試器更進(jìn)一步,允許您在目標(biāo)運(yùn)行時顯示和更改變量(也稱為 Live Watch),但功能僅限于數(shù)值。包含內(nèi)置 RTOS 感知功能的調(diào)試器也很常見,但通常需要您暫停應(yīng)用程序以檢查 RTOS 的狀態(tài)(對于調(diào)試實(shí)時系統(tǒng)不太實(shí)用)。

2 - 當(dāng)您準(zhǔn)備好調(diào)試應(yīng)用程序時,通過 Debugger Probe(例如 Segger J-Link )將代碼下載到目標(biāo)。

3 - J-Link 連接到 CoreSight 調(diào)試端口,能夠啟動/停止 CPU、下載代碼、對板載 Flash 進(jìn)行編程等。即使目標(biāo)正在執(zhí)行代碼,J-Link 也可以根據(jù)需要直接讀取和寫入內(nèi)存。

4 - Micrium 的 μC/Probe是一個獨(dú)立的、與 CPU 供應(yīng)商無關(guān)的、基于 Windows 的應(yīng)用程序,可讀取工具鏈生成的 ELF 文件。ELF 文件包含下載到目標(biāo)的代碼以及所有全局可訪問變量的名稱、它們的數(shù)據(jù)類型以及它們在目標(biāo)內(nèi)存中的物理內(nèi)存位置。

5 - μC/Probe 允許用戶在運(yùn)行時(即實(shí)時)顯示或更改連接的嵌入式目標(biāo)上幾乎任何變量或內(nèi)存位置(包括 I/O 端口)的值。用戶只需從儀表、數(shù)字指示器、表格、圖形、虛擬 LED、條形圖、滑塊、開關(guān)、按鈕和其他組件的庫中填充 μC/Probe 的圖形環(huán)境,并將其中的每一個與變量或內(nèi)存位置相關(guān)聯(lián)嵌入式設(shè)備。μC/Probe 不需要您檢測目標(biāo)代碼以在運(yùn)行時顯示或更改變量。通過在 μC/Probe 的屏幕上添加虛擬滑塊或開關(guān),您可以輕松更改運(yùn)行系統(tǒng)的參數(shù)(例如濾波器系數(shù)和 PID 回路增益)或驅(qū)動設(shè)備和測試 I/O 端口。

6 - μC/Probe 向 J-Link 發(fā)送請求以讀取或?qū)懭雰?nèi)存。

7 - J-Link 請求被轉(zhuǎn)換為 CoreSight 命令以獲取變量值并將其以圖形方式顯示在 μC/Probe 的屏幕上。

8 -另一個用于測試/調(diào)試實(shí)時嵌入式系統(tǒng)的非常有用的工具是 SEGGER 的 SystemView 。此工具通常與 RTOS 結(jié)合使用,并在時間線上顯示任務(wù)和 ISR 的執(zhí)行配置文件,以便您可以查看每個任務(wù)執(zhí)行所需的時間(最小/平均/最大),任務(wù)何時準(zhǔn)備好運(yùn)行,當(dāng)每個任務(wù)實(shí)際開始執(zhí)行時,當(dāng) ISR 執(zhí)行時等等。SystemView 可以幫助您發(fā)現(xiàn)可能多年未被注意到的錯誤。但是,SystemView 要求您將代碼添加到記錄 RTOS 事件和 ISR 的目標(biāo)(由 SEGGER 免費(fèi)提供)。SystemView 還消耗少量 RAM 來緩沖這些事件。

9 - J-Link 允許多個進(jìn)程同時訪問 CoreSight,因此您可以同時使用所有三個工具。

審核編輯:郭婷

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

    關(guān)注

    5089

    文章

    19169

    瀏覽量

    306745
  • 濾波器
    +關(guān)注

    關(guān)注

    161

    文章

    7857

    瀏覽量

    178616
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    806

    瀏覽量

    31248
收藏 人收藏

    評論

    相關(guān)推薦

    RTOS中的錯誤檢查機(jī)制

    在嵌入式應(yīng)用中,有可能發(fā)生各種各樣的錯誤,系統(tǒng)必須能夠檢測到這些錯誤并作出適當(dāng)?shù)捻憫?yīng)。RTOS通常內(nèi)置了一些錯誤檢查功能,用于檢測錯誤并向應(yīng)
    的頭像 發(fā)表于 01-03 14:44 ?332次閱讀

    RTOS正在縮小與Linux的差距

    RTOS與Linux的物聯(lián)網(wǎng)設(shè)備操作系統(tǒng)之爭已經(jīng)持續(xù)了很多年。Linux以其強(qiáng)大的計(jì)算能力和豐富的軟件生態(tài),在需要復(fù)雜處理和軟件支持的物聯(lián)網(wǎng)設(shè)備上占據(jù)一席之地;RTOS憑借實(shí)時響應(yīng)和資源節(jié)約的特性
    的頭像 發(fā)表于 09-10 08:07 ?814次閱讀
    <b class='flag-5'>RTOS</b>正在縮小與Linux的差距

    freertos和rtos區(qū)別是什么

    FreeRTOS 和 RTOS實(shí)時操作系統(tǒng))是兩個不同的概念,但它們之間有緊密的聯(lián)系。FreeRTOS 是一個特定的開源實(shí)時操作系統(tǒng),而 RTOS
    的頭像 發(fā)表于 09-02 14:18 ?1418次閱讀

    RTOS與Linux有什么區(qū)別

    RTOS(Real-Time Operating System,實(shí)時操作系統(tǒng))與Linux是兩種在不同應(yīng)用場景下發(fā)揮重要作用的操作系統(tǒng),它們在設(shè)計(jì)理念、功能特性、應(yīng)用場景以及性能表現(xiàn)等方面存在顯著差異。以下是對RTOS與Linu
    的頭像 發(fā)表于 08-20 16:05 ?4068次閱讀

    RTOS的特性和類型

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

    簡單認(rèn)識RTOS實(shí)時操作系統(tǒng)

    RTOS(Real Time Operating System,實(shí)時操作系統(tǒng))是一種專門設(shè)計(jì)用于在嚴(yán)格時間限制內(nèi)處理任務(wù)的操作系統(tǒng)。它以其高實(shí)時性、多任務(wù)處理能力和資源管理能力在工業(yè)自
    的頭像 發(fā)表于 08-20 11:20 ?3045次閱讀

    編譯運(yùn)行ESP8266_RTOS_SDK-master,發(fā)現(xiàn)程序并沒有正確執(zhí)行,為什么?

    ,eagle.irom0text.bin---->0x20000燒寫到相應(yīng)地址,程序運(yùn)行后,發(fā)現(xiàn)并沒有正確執(zhí)行,請問是否燒寫地址錯誤,或者是配置FLASH錯誤
    發(fā)表于 07-12 08:21

    ESP8266_RTOS_SDK編譯錯誤的原因?

    “i2c_master_gpio_init”中: /home/esp8266/ESP8266_RTOS_SDK/include/espressif/esp8266/pin_mux_register.h:149:47:錯誤
    發(fā)表于 07-12 08:04

    RTOS SDK v. 1.5編譯錯誤的原因?

    _sdk/tree/master并嘗試編譯它,但出現(xiàn)錯誤: c:/樂鑫/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Lc:/樂鑫/ESP8266_RTOS_SDK/lib
    發(fā)表于 07-10 08:19

    ESP8266_RTOS_SDK-v3.4的構(gòu)建錯誤如何解決?

    我嘗試將 SDK3.4 導(dǎo)入 Aithinker windows IDE 程序,然后構(gòu)建它。不幸的是,我收到以下錯誤: LD /d/8266/ESP8266_RTOS
    發(fā)表于 07-08 07:59

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤

    硬件調(diào)試中會經(jīng)常遇到各種意想不到的問題,有些調(diào)試花了幾個月,各種能想到的辦法都嘗試了,最后發(fā)現(xiàn)卻是一個非常低級的錯誤,有多低級?請看今天的內(nèi)文介紹。
    的頭像 發(fā)表于 07-03 12:00 ?396次閱讀
    說說硬件調(diào)試中<b class='flag-5'>發(fā)現(xiàn)</b>的那些低級<b class='flag-5'>錯誤</b>

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

    設(shè)計(jì)、中斷響應(yīng)速度以及RTOS的調(diào)度策略。 一些RISC-V MCU可能具有特定的硬件特性(如快速中斷響應(yīng)、低延遲I/O等),這些特性可以增強(qiáng)RTOS實(shí)時性能。 軟件生態(tài)和工具
    發(fā)表于 05-27 16:26

    keil用c++編譯含有rtos模塊時的錯誤問題怎么解決?

    rtos,設(shè)置使用cpp編譯,c99通過的程序編譯錯誤一大堆,主要在usb和cmsis_os里,這里隨便粘貼其中一條錯誤C:/Users/ME/STM32Cube/Repository
    發(fā)表于 05-09 08:29

    帶你認(rèn)識實(shí)時操作系統(tǒng)(rtos)

    實(shí)時操作系統(tǒng)(RTOS)是為嵌入式系統(tǒng)和實(shí)時應(yīng)用提供一個穩(wěn)定、可預(yù)測和高效運(yùn)行環(huán)境的操作系統(tǒng)。實(shí)時操作系統(tǒng)確保了系統(tǒng)能夠在嚴(yán)格的時間限制內(nèi)響應(yīng)外部事件和處理任務(wù),這是許多關(guān)鍵應(yīng)用領(lǐng)域所
    的頭像 發(fā)表于 04-16 16:30 ?1399次閱讀
    帶你認(rèn)識<b class='flag-5'>實(shí)時</b>操作系統(tǒng)(<b class='flag-5'>rtos</b>)

    虹科技術(shù) | PCAN View功能細(xì)講:從實(shí)時監(jiān)測到錯誤幀分析

    相信使用過PCAN工具的朋友都知道虹科PCAN-View這款免費(fèi)軟件,它具有直觀的用戶界面,可以實(shí)時監(jiān)測和分析CAN總線上的數(shù)據(jù)幀,并提供過濾、發(fā)送和報(bào)文記錄。但你知道嗎?它其實(shí)不只是簡單收發(fā)報(bào)文,虹科PCAN-View還能自動檢測和報(bào)告CAN總線上的
    的頭像 發(fā)表于 03-18 13:48 ?1379次閱讀
    虹科技術(shù) | PCAN View功能細(xì)講:從<b class='flag-5'>實(shí)時</b>監(jiān)測到<b class='flag-5'>錯誤</b>幀分析