1. gzyueqian
      13352868059

      嵌入式開發:RTOS調試——處理計時問題

      更新時間: 2022-11-18 14:11:34來源: 粵嵌教育瀏覽量:7510

        毫無疑問,當你開始在嵌入式開發中使用實時操作系統(RTOS)時,會有一個學習曲線。你將在更高的抽象層次上工作,使用或多或少的并行任務,而不僅僅是子例程,并且你需要考慮你的任務應該如何彼此共享數據和處理器時間。你需要為這些任務分配運行時優先級,而最佳解決方案并不明顯。

        最后但同樣重要的是,你需要學習如何使用RTOS本身,比如配置和用于控制任務和任務間通信的API函數。

        一旦你掌握了所有這些,并且你正在編寫你的代碼,是時候進入下一個學習曲線了——你現在也必須學習如何調試你的代碼。

        調試RTOS系統(通常使用搶占式多任務處理)與調試單線程“超級循環”系統(所有代碼都是你自己編寫的)不同,這有幾個原因,最重要的兩個原因是:

        l 隨著多個任務相互作用并爭奪共享資源,軟件行為可能會受到軟件定時和RTOS調度行為的影響,而這在源代碼中是不可見的。

        l 你不再直接控制程序流——任務開關可能在任何地方、任何時間觸發。

        這些問題真的沒有辦法解決,你必須處理這些問題,因為你必須信任操作系統來安排任務和管理計時器。某些任務切換可能是可預測的,因此是已知的,但通常你不知道它們將在程序流中的何處發生。在嵌入式開發中,隨著系統中任務/線程的數量增加,組合的數量也會增加——可能會有大量可能的執行場景,具有不同的時間和執行順序,其中大多數都會正常工作。

        


        下面列出了一些典型的癥狀,如果你有RTOS相關的計時錯誤,你可能會看到這些癥狀。請注意,這些問題中的許多通常具有一定程度的隨機性;這個問題有時會出現,但并不總是出現。

        與RTOS相關的計時錯誤的一些典型癥狀

        l 任務單獨工作很好,但作為一個完整的系統就不行了

        l 緩慢的性能

        l 系統鎖定,或者有時停止響應

        l 系統看起來很脆弱——微小的改變會導致奇怪的錯誤

        l 輸出時序的隨機變化

        l 有時損壞的數據,或錯誤的輸出

        l 隨機崩潰/硬故障

        依賴于時間的錯誤可能很難再現或發現,尤其是因為大多數調試工具對多任務問題幾乎沒有支持。在嵌入式開發中,大多數工具仍然專注于靜態暫停系統,而不是動態軟件行為。相比之下,許多系統都有實時要求,無法停止調試。

        除了尋找癥狀之外,你當然應該使用你擁有的任何工具及其提供的工具來檢查RTOS和應用程序是否存在錯誤和不當行為。例如,IDE可能支持在調試期間(有時通過插件)輕松檢查RTOS對象,甚至可以分析任務的堆棧使用情況。RTOS可以讓你在較高的水平上測量CPU使用率,從而確定每個任務平均需要多少CPU時間。一些調試器可以在系統執行時實時顯示變量(“實時觀察”),盡管這可能不適合快速變化的變量。

        在嵌入式開發中,如果你想了解應用程序和RTOS內部實際發生的事情的可靠時間線,你需要一個能夠感知RTOS的跟蹤,在事情發生時記錄下來,還需要一個工具來幫助你理解跟蹤信息。

        站長幫手網(www.linkhelper.cn)

        文章格式化編輯

        繁簡體相互轉換

        文字挑錯功能(1000個錯別字詞庫)

        可定制段前是否空格

        只需鼠標點擊

        全傻瓜式操作

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 免费玖玖精品视频 | 在线一区二区三区免费视频 | 亚洲一区二区中文字幕 | 在线看片免费人成视频网 | 日本熟女乱子视频 | 亚洲日本va午夜在线电影 |