嵌入式操作系統(tǒng)通常被認為有一定的學習門檻,為幫助嵌入式工程師降低RTOS的使用難度,RT-Thread提供了文檔教學中心、視頻中心、論壇交流等多種支持。然而在實際項目中,開發(fā)者們仍可能會遇到各種挑戰(zhàn),尤其當項目規(guī)模擴大、代碼復雜度增加時,各種“難以捉摸”的bug便會頻繁出現(xiàn),令工程師們一頭霧水,不知從何入手。這些問題可能涉及內存管理、任務調度、棧溢出等復雜內容。
這些問題是否也在你的項目中時常困擾著你?
系統(tǒng)莫名其妙進入Hardfault
系統(tǒng)運行過程線程異常掛起
不正確使用內核API導致系統(tǒng)異常
系統(tǒng)運行過程發(fā)生斷言
不清楚某些系統(tǒng)組件或軟件包的使用方法
線程棧分配不合理導致系統(tǒng)異常
應用代碼不規(guī)范導致系統(tǒng)異常
如何修改Scons腳本,Kconfig...
...
作為初學者非常容易遇到的一個問題是:線程棧分配不合理導致系統(tǒng)異常。
1
提出問題
剛開始接觸RT-Thread的小伙伴在創(chuàng)建線程時,常常會遇到下述問題:
2
分析問題
從終端輸出的信息我們可以獲取到的關鍵信息有
1) 在發(fā)生異常的線程為entry
2) 該線程的棧空間為0x100
3) SCB_CFSR_UFSR:0x01 UNDEFINSTR
UNDEFINSTR通常是PC指針指向非法地址執(zhí)行指令導致,通過1)點可以定位到問題發(fā)生在entry線程,第2)點可以看出entry線程的棧空間有點小,因此初步定位線程棧溢出。
3
解決問題
最終找到問題線程棧太小導致線程棧溢出,同時回到線程入口函數(shù)可以發(fā)現(xiàn)在線程中定義了一個很大的數(shù)組導致了線程棧的溢出,進一步證明了上述的問題。
解決問題就是依據(jù)經(jīng)驗和工具進行分析嘗試的一個過程。
1)將線程棧改大一些,entry線程正常運行。
2)使能內核的堆棧溢出檢查,運行輸出msh >thread:entry stack overflow
最終找到問題線程棧太小導致線程棧溢出,同時回到線程入口函數(shù)可以發(fā)現(xiàn)在線程中定義了一個很大的數(shù)組導致了線程棧的溢出,進一步證明了上述的問題。
RT-Thread開班啦,技術專家團隊手把手帶您上手RT-Thread嵌入式操作系統(tǒng),我們開放了為期三天的嵌入式操作系統(tǒng)專業(yè)培訓班!本次培訓將會深入講解RT-Thread嵌入式實時操作系統(tǒng)的核心概念、實戰(zhàn)技巧、應用場景、嵌入式開發(fā)疑難雜癥分析與答疑!
培訓時間
2024/11/9-2024/11/11(3天時間)
本次培訓是付費培訓,培訓費用:2918元 - 含稅 (3日),提供培訓手冊+硬件平臺。培訓費用同時也包含午餐。
培訓內容
時間 | 培訓內容 |
2024/11/9 RTOS內核 | 1. 內核原理 1.1 RT-Thread系統(tǒng)啟動流程 1.2 RT-Thread線程與線程切換學習 1.3 RT-Thread線程與中斷切換學習 2. 應用編程 2.1 RT-Thread多線程編程 (1)RT-Thread多線程搶占學習 (2)RT-Thread多線程輪詢學習 (3)RT-Thread多線程調試實踐 2.2 RT-Thread線程同步 (1)RT-Thread信號量原理,調試與應用實踐 (2)RT-Thread互斥量原理,調試與應用實踐 (3)RT-Thread事件集原理,調試與應用實踐 2.3 RT-Thread線程通信 (1)RT-Thread消息郵箱原理,調試與應用實踐 (2)RT-Thread消息隊列原理,調試與應用實踐 3. RT-Thread動態(tài)內存管理 3.1 RT-Thread動態(tài)內存管理原理介紹 3.2 RT-Thread動態(tài)內存應用實踐 |
2024/11/10 RT-Thread I/O設備驅動 | 1. RT-Thread構建與配置系統(tǒng) 1.1 Kconfig配置系統(tǒng) (1) Kconfig工作機制 (2) Kconfig語法介紹 1.2 Scons構建系統(tǒng) (1) Scons語法介紹 (2) Scons使用示例 1.3 Env工具 (1) Env常用命令使用示例 2. RT-Thread I/O設備框架 2.1 I/O設備框架原理 (1) 原廠驅動庫、RTT HAL庫驅動、RTT驅動框架關系介紹 2.2 I/O設備框架應用實踐 (1) 虛擬驅動移植實戰(zhàn) 3. RT-Thread 設備驅動框架 3.1 PIN設備 (1) PIN設備驅動框架原理 (2) PIN設備驅動應用實踐 3.2 UART設備 (1) UART設備驅動框架原理 (2) UART設備驅動應用實踐 3.3 I2C設備 (1) I2C設備驅動框架原理 (2) I2C設備驅動應用實踐 4. RT-Thread設備驅動實戰(zhàn) 4.1 串口設備組件 (1) 串口類設備組件介紹 (2) 串口設備驅動應用實踐 4.2 I2C設備驅動 (1) I2C Tools軟件包介紹 (2) I2C設備驅動應用實踐 |
2024/11/11 RT-Thread組件與系統(tǒng)問題排查實踐 | 1. 系統(tǒng)常見問題排查 (1)基礎問題排查方法與實踐示例 (2)內存泄漏問題排查方法與實踐示例 (3)棧溢出問題排查方法與實踐示例 (4)線程死鎖問題排查方法與實踐示例 (5)HardFault問題排查方法與實踐示例 2. 組件分析與實踐 (1)MQTT軟件包原理與應用實踐 (2)SAL抽象層原理與應用實踐 (3)傳感器軟件包應用實踐 (4)其他相關軟件包應用實踐 3. 綜合實踐 綜合所學內容,手把手從零實現(xiàn)一個IoT設備。 |
培訓地點
深圳福田區(qū)天安數(shù)碼城天吉大廈AB座7樓7B2知了會議中心M6會議室
地鐵:1、7、9、11號線到達車公廟地鐵站,可從G口出,右轉步行100米左右到達知了會議中心。
培訓證書
培訓結束后通過考核的將可以獲得RT-Thread出具的結業(yè)證書和中國電子學會出具的職業(yè)技能證書-RT-Thread操作系統(tǒng)應用開發(fā)
-
嵌入式
+關注
關注
5145文章
19597瀏覽量
316124 -
線程
+關注
關注
0文章
508瀏覽量
20130 -
RT-Thread
+關注
關注
32文章
1385瀏覽量
41669
發(fā)布評論請先 登錄
深度剖析 RT-Thread 線程調度流程

機器學習異常檢測實戰(zhàn):用Isolation Forest快速構建無標簽異常檢測系統(tǒng)

多線程的安全注意事項
鴻蒙5開發(fā)寶藏案例分享---跨線程性能優(yōu)化指南
main線程的棧大小設置成2048的時候rt_memset導致hardfault,為什么?
ZLG嵌入式筆記(連載36) | 工業(yè)現(xiàn)場掉電,系統(tǒng)異常如何破解?

golang內存分配

進程、線程、協(xié)程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!
socket 多線程編程實現(xiàn)方法
Linux網(wǎng)絡協(xié)議棧的實現(xiàn)

轉載 golang內存分配

評論