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

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

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

3天內不再提示

線程棧分配惹的禍?系統異常這樣解決!

RT-Thread官方賬號 ? 2024-10-31 08:08 ? 次閱讀

嵌入式操作系統通常被認為有一定的學習門檻,為幫助嵌入式工程師降低RTOS的使用難度,RT-Thread提供了文檔教學中心視頻中心、論壇交流等多種支持。然而在實際項目中,開發者們仍可能會遇到各種挑戰,尤其當項目規模擴大、代碼復雜度增加時,各種“難以捉摸”的bug便會頻繁出現,令工程師們一頭霧水,不知從何入手。這些問題可能涉及內存管理、任務調度、棧溢出等復雜內容。

這些問題是否也在你的項目中時常困擾著你?

51ac409a-971c-11ef-8084-92fbcf53809c.png

系統莫名其妙進入Hardfault

系統運行過程線程異常掛起

不正確使用內核API導致系統異常

系統運行過程發生斷言

不清楚某些系統組件或軟件包的使用方法

線程棧分配不合理導致系統異常

應用代碼不規范導致系統異常

如何修改Scons腳本,Kconfig...

...

作為初學者非常容易遇到的一個問題是:線程棧分配不合理導致系統異常

1

提出問題

剛開始接觸RT-Thread的小伙伴在創建線程時,常常會遇到下述問題:

51d1a9ac-971c-11ef-8084-92fbcf53809c.png

2

分析問題

從終端輸出的信息我們可以獲取到的關鍵信息有

1) 在發生異常的線程為entry

51dd8970-971c-11ef-8084-92fbcf53809c.png

2) 該線程的棧空間為0x100

51eac478-971c-11ef-8084-92fbcf53809c.png

3) SCB_CFSR_UFSR:0x01 UNDEFINSTR

UNDEFINSTR通常是PC指針指向非法地址執行指令導致,通過1)點可以定位到問題發生在entry線程,第2)點可以看出entry線程的棧空間有點小,因此初步定位線程棧溢出。

3

解決問題

最終找到問題線程棧太小導致線程棧溢出,同時回到線程入口函數可以發現在線程中定義了一個很大的數組導致了線程棧的溢出,進一步證明了上述的問題。

解決問題就是依據經驗和工具進行分析嘗試的一個過程。

1)將線程棧改大一些,entry線程正常運行。

2)使能內核的堆棧溢出檢查,運行輸出msh >thread:entry stack overflow

最終找到問題線程棧太小導致線程棧溢出,同時回到線程入口函數可以發現在線程中定義了一個很大的數組導致了線程棧的溢出,進一步證明了上述的問題。

RT-Thread開班啦,技術專家團隊手把手帶您上手RT-Thread嵌入式操作系統,我們開放了為期三天的嵌入式操作系統專業培訓班!本次培訓將會深入講解RT-Thread嵌入式實時操作系統的核心概念、實戰技巧、應用場景、嵌入式開發疑難雜癥分析與答疑!

培訓時間

2024/11/9-2024/11/11(3天時間)

本次培訓是付費培訓,培訓費用:2918元 - 含稅 (3日),提供培訓手冊+硬件平臺。培訓費用同時也包含午餐。

培訓內容

時間

培訓內容

2024/11/9

RTOS內核

1. 內核原理

1.1 RT-Thread系統啟動流程

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動態內存管理

3.1 RT-Thread動態內存管理原理介紹

3.2 RT-Thread動態內存應用實踐

2024/11/10

RT-Thread I/O設備驅動

1. RT-Thread構建與配置系統

1.1 Kconfig配置系統

(1) Kconfig工作機制

(2) Kconfig語法介紹

1.2 Scons構建系統

(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) 虛擬驅動移植實戰

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設備驅動實戰

4.1 串口設備組件

(1) 串口類設備組件介紹

(2) 串口設備驅動應用實踐

4.2 I2C設備驅動

(1) I2C Tools軟件包介紹

(2) I2C設備驅動應用實踐

2024/11/11

RT-Thread組件與系統問題排查實踐

1. 系統常見問題排查

(1)基礎問題排查方法與實踐示例

(2)內存泄漏問題排查方法與實踐示例

(3)棧溢出問題排查方法與實踐示例

(4)線程死鎖問題排查方法與實踐示例

(5)HardFault問題排查方法與實踐示例

2. 組件分析與實踐

(1)MQTT軟件包原理與應用實踐

(2)SAL抽象層原理與應用實踐

(3)傳感器軟件包應用實踐

(4)其他相關軟件包應用實踐

3. 綜合實踐

綜合所學內容,手把手從零實現一個IoT設備。

培訓地點

深圳福田區天安數碼城天吉大廈AB座7樓7B2知了會議中心M6會議室

地鐵:1、7、9、11號線到達車公廟地鐵站,可從G口出,右轉步行100米左右到達知了會議中心。

培訓證書

培訓結束后通過考核的將可以獲得RT-Thread出具的結業證書和中國電子學會出具的職業技能證書-RT-Thread操作系統應用開發

5254a974-971c-11ef-8084-92fbcf53809c.png

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

    關注

    5071

    文章

    19026

    瀏覽量

    303492
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19653
  • RT-Thread
    +關注

    關注

    31

    文章

    1274

    瀏覽量

    39940
收藏 人收藏

    評論

    相關推薦

    STM32F072VBT6.icf文件堆棧分配異常的原因?

    STM32F072VBT6.icf文件堆棧分配異常
    發表于 07-05 08:10

    探索虛擬線程:原理與實現

    的開銷。首先,創建成本不菲,因為每當操作系統需要創建一個新的平臺線程時,它必須分配大量的內存(通常以兆字節計)來存儲線程的上下文信息、本機
    的頭像 發表于 06-24 11:35 ?265次閱讀
    探索虛擬<b class='flag-5'>線程</b>:原理與實現

    MQTT客戶端大小分配過大而導致無法初始化怎么處理?

    102400.但是這樣就導致esp_mqtt_client_start()這個函數無法返回,且報錯E (7296) MQTT_CLIENT: Error create mqtt task;我想咨詢一下,idf(v4.1)對MQTT的大小有最大限制么?最大可以設多大呢?
    發表于 06-21 12:54

    ethernetif_input和tcpip協議線程的作用

    tcpip協議線程是lwIP協議的核心線程,負責處理TCP/IP協議的各種功能,包括TCP連接管理、IP數據報的路由和轉發、以及UDP
    的頭像 發表于 03-20 10:01 ?1222次閱讀

    RTThread中main線程有個循環,如果main線程異常退出了,有什么辦法可以監測到?

    RTThread中main線程有個循環,如果main線程異常退出了,有什么辦法可以監測到?
    發表于 02-22 08:15

    線程是什么的基本單位 進程與線程的本質區別

    線程是操作系統中處理器調度的基本單位,它代表著獨立的執行流。在一個進程中,可以包含多個線程,這些線程共享相同的進程資源,如內存空間、文件描述符等。 進程是操作
    的頭像 發表于 02-02 16:30 ?866次閱讀

    堆和的區別和使用注意事項

    堆和是在計算機科學中廣泛使用的兩種數據結構,它們具有不同的用途和特點。堆和的區別涉及到內存分配、訪問方式、數據存儲等方面。在使用堆和時,還需要注意一些細節,以確保程序的正確性和效
    的頭像 發表于 01-18 17:24 ?2075次閱讀

    jvm內存區域中,哪一塊是屬于線程共享

    是如何劃分的。JVM內存區域主要分為以下幾個部分:程序計數器、Java虛擬機、本地方法、堆、方法區和運行時常量池。其中,程序計數器、Java虛擬機、本地方法
    的頭像 發表于 12-05 14:14 ?1328次閱讀

    Java oom異常的原因分析

    據,而內存用于存儲方法調用和局部變量。 當程序需要使用更多內存時,會向操作系統請求更多的內存空間。如果操作系統無法分配足夠的內存空間,就會導致OOM
    的頭像 發表于 12-05 13:43 ?749次閱讀

    redis多線程還能保證線程安全嗎

    Redis是一種使用C語言編寫的高性能鍵值存儲系統,它是單線程的,因為使用了多路復用的方式來處理并發請求。這樣的實現方式帶來了很好的性能,但同時也引發了一些線程安全方面的問題。 在Re
    的頭像 發表于 12-05 10:28 ?1710次閱讀

    線程池的創建方式有幾種

    線程池是一種用于管理和調度線程的技術,能夠有效地提高系統的性能和資源利用率。它通過預先創建一組線程并維護一個工作隊列,將任務提交給線程池來處
    的頭像 發表于 12-04 16:52 ?829次閱讀

    線程池七大核心參數執行順序

    線程池是一種用于管理和調度線程執行的技術,通過將任務分配線程池中的線程進行處理,可以有效地控制并發線程
    的頭像 發表于 12-04 16:45 ?977次閱讀

    Xen雙系統GPU資源分配過程

    i.MX8 有兩個 GPU,型號為 GC7000,這兩個 GPU 可以同時分給 Kernel 系統,也可以同時分給 Android 系統,也可以一邊分配一個,Kernel 和 Android 一邊
    的頭像 發表于 12-04 13:53 ?616次閱讀
    Xen雙<b class='flag-5'>系統</b>GPU資源<b class='flag-5'>分配</b>過程

    如何設定RTOS中的任務線程)大小呢?

    首先說明的是,在 `RT-Thread` 中,將本文提及的 `任務` 稱之為 `線程`。
    的頭像 發表于 12-01 16:40 ?1846次閱讀

    核心線程數和最大線程數怎么設置

    核心線程數和最大線程數是Java線程池中重要的參數,用來控制線程池中線程的數量和行為。正確地設置這兩個參數可以優化
    的頭像 發表于 12-01 13:50 ?8816次閱讀