在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

線程棧分配惹的禍?系統(tǒng)異常這樣解決!

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

嵌入式操作系統(tǒng)通常被認為有一定的學(xué)習(xí)門檻,為幫助嵌入式工程師降低RTOS的使用難度,RT-Thread提供了文檔教學(xué)中心視頻中心、論壇交流等多種支持。然而在實際項目中,開發(fā)者們?nèi)钥赡軙龅礁鞣N挑戰(zhàn),尤其當(dāng)項目規(guī)模擴大、代碼復(fù)雜度增加時,各種“難以捉摸”的bug便會頻繁出現(xiàn),令工程師們一頭霧水,不知從何入手。這些問題可能涉及內(nèi)存管理、任務(wù)調(diào)度、棧溢出等復(fù)雜內(nèi)容。

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

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

系統(tǒng)莫名其妙進入Hardfault

系統(tǒng)運行過程線程異常掛起

不正確使用內(nèi)核API導(dǎo)致系統(tǒng)異常

系統(tǒng)運行過程發(fā)生斷言

不清楚某些系統(tǒng)組件或軟件包的使用方法

線程棧分配不合理導(dǎo)致系統(tǒng)異常

應(yīng)用代碼不規(guī)范導(dǎo)致系統(tǒng)異常

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

...

作為初學(xué)者非常容易遇到的一個問題是:線程棧分配不合理導(dǎo)致系統(tǒng)異常

1

提出問題

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

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

2

分析問題

從終端輸出的信息我們可以獲取到的關(guān)鍵信息有

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

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

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

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

3) SCB_CFSR_UFSR:0x01 UNDEFINSTR

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

3

解決問題

最終找到問題線程棧太小導(dǎo)致線程棧溢出,同時回到線程入口函數(shù)可以發(fā)現(xiàn)在線程中定義了一個很大的數(shù)組導(dǎo)致了線程棧的溢出,進一步證明了上述的問題。

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

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

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

最終找到問題線程棧太小導(dǎo)致線程棧溢出,同時回到線程入口函數(shù)可以發(fā)現(xiàn)在線程中定義了一個很大的數(shù)組導(dǎo)致了線程棧的溢出,進一步證明了上述的問題。

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

培訓(xùn)時間

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

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

培訓(xùn)內(nèi)容

時間

培訓(xùn)內(nèi)容

2024/11/9

RTOS內(nèi)核

1. 內(nèi)核原理

1.1 RT-Thread系統(tǒng)啟動流程

1.2 RT-Thread線程與線程切換學(xué)習(xí)

1.3 RT-Thread線程與中斷切換學(xué)習(xí)

2. 應(yīng)用編程

2.1 RT-Thread多線程編程

(1)RT-Thread多線程搶占學(xué)習(xí)

(2)RT-Thread多線程輪詢學(xué)習(xí)

(3)RT-Thread多線程調(diào)試實踐

2.2 RT-Thread線程同步

(1)RT-Thread信號量原理,調(diào)試與應(yīng)用實踐

(2)RT-Thread互斥量原理,調(diào)試與應(yīng)用實踐

(3)RT-Thread事件集原理,調(diào)試與應(yīng)用實踐

2.3 RT-Thread線程通信

(1)RT-Thread消息郵箱原理,調(diào)試與應(yīng)用實踐

(2)RT-Thread消息隊列原理,調(diào)試與應(yīng)用實踐

3. RT-Thread動態(tài)內(nèi)存管理

3.1 RT-Thread動態(tài)內(nèi)存管理原理介紹

3.2 RT-Thread動態(tài)內(nèi)存應(yīng)用實踐

2024/11/10

RT-Thread I/O設(shè)備驅(qū)動

1. RT-Thread構(gòu)建與配置系統(tǒng)

1.1 Kconfig配置系統(tǒng)

(1) Kconfig工作機制

(2) Kconfig語法介紹

1.2 Scons構(gòu)建系統(tǒng)

(1) Scons語法介紹

(2) Scons使用示例

1.3 Env工具

(1) Env常用命令使用示例

2. RT-Thread I/O設(shè)備框架

2.1 I/O設(shè)備框架原理

(1) 原廠驅(qū)動庫、RTT HAL庫驅(qū)動、RTT驅(qū)動框架關(guān)系介紹

2.2 I/O設(shè)備框架應(yīng)用實踐

(1) 虛擬驅(qū)動移植實戰(zhàn)

3. RT-Thread 設(shè)備驅(qū)動框架

3.1 PIN設(shè)備

(1) PIN設(shè)備驅(qū)動框架原理

(2) PIN設(shè)備驅(qū)動應(yīng)用實踐

3.2 UART設(shè)備

(1) UART設(shè)備驅(qū)動框架原理

(2) UART設(shè)備驅(qū)動應(yīng)用實踐

3.3 I2C設(shè)備

(1) I2C設(shè)備驅(qū)動框架原理

(2) I2C設(shè)備驅(qū)動應(yīng)用實踐

4. RT-Thread設(shè)備驅(qū)動實戰(zhàn)

4.1 串口設(shè)備組件

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

(2) 串口設(shè)備驅(qū)動應(yīng)用實踐

4.2 I2C設(shè)備驅(qū)動

(1) I2C Tools軟件包介紹

(2) I2C設(shè)備驅(qū)動應(yīng)用實踐

2024/11/11

RT-Thread組件與系統(tǒng)問題排查實踐

1. 系統(tǒng)常見問題排查

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

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

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

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

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

2. 組件分析與實踐

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

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

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

(4)其他相關(guān)軟件包應(yīng)用實踐

3. 綜合實踐

綜合所學(xué)內(nèi)容,手把手從零實現(xiàn)一個IoT設(shè)備。

培訓(xùn)地點

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

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

培訓(xùn)證書

培訓(xùn)結(jié)束后通過考核的將可以獲得RT-Thread出具的結(jié)業(yè)證書和中國電子學(xué)會出具的職業(yè)技能證書-RT-Thread操作系統(tǒng)應(yīng)用開發(fā)

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

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

    關(guān)注

    5082

    文章

    19123

    瀏覽量

    305150
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    504

    瀏覽量

    19682
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1289

    瀏覽量

    40124
收藏 人收藏

    評論

    相關(guān)推薦

    Linux網(wǎng)絡(luò)協(xié)議的實現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的一個重要組成部分,負責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議(Network Stack)負責(zé)實現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用
    的頭像 發(fā)表于 09-10 09:51 ?312次閱讀
    Linux網(wǎng)絡(luò)協(xié)議<b class='flag-5'>棧</b>的實現(xiàn)

    轉(zhuǎn)載 golang內(nèi)存分配

    . 線程擁有一定的 cache, 可用于無鎖分配. 同時 Go 對于 GC 后回收的內(nèi)存頁, 并不是馬上歸還給操作系統(tǒng), 而是會延遲歸還, 用于滿足未來的內(nèi)存需求. ?? ? 在 1.10 以前 go
    的頭像 發(fā)表于 09-05 14:12 ?263次閱讀
    轉(zhuǎn)載 golang內(nèi)存<b class='flag-5'>分配</b>

    CPU線程和程序線程的區(qū)別

    CPU的線程與程序的線程在概念、作用、實現(xiàn)方式以及性能影響等方面存在顯著差異。以下是對兩者區(qū)別的詳細闡述,旨在深入探討這一技術(shù)話題。
    的頭像 發(fā)表于 09-02 11:18 ?1015次閱讀

    rtt工程移植后線程創(chuàng)建不成功怎么解決?

    之前用l431的板子跑10k的采樣后來要提高到100k,更換了f446的芯片,但是根據(jù)新的內(nèi)存地址從0x20000000開始寫入數(shù)據(jù)后,兩個線程創(chuàng)建不成功了,不知道是否是線程的的大小不夠還是內(nèi)存分配不對,求指點
    發(fā)表于 07-18 06:44

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

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

    探索虛擬線程:原理與實現(xiàn)

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

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

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

    FreeRTOS系統(tǒng)使用xTaskCreate產(chǎn)生的任務(wù)與osThreadDef 產(chǎn)生的線程有什么不同?

    請教下是要 FreeRTOS系統(tǒng), 使用 xTaskCreate 產(chǎn)生的任務(wù) 與 osThreadDef產(chǎn)生的線程有什么不同?
    發(fā)表于 04-29 07:20

    ethernetif_input和tcpip協(xié)議線程的作用

    tcpip協(xié)議線程是lwIP協(xié)議的核心線程,負責(zé)處理TCP/IP協(xié)議的各種功能,包括TCP連接管理、IP數(shù)據(jù)報的路由和轉(zhuǎn)發(fā)、以及UDP
    的頭像 發(fā)表于 03-20 10:01 ?1346次閱讀

    嵌入式系統(tǒng)中的線程、進程與任務(wù)概念與區(qū)別

    每個線程與主程序共用地址空間,受限于2GB地址空間; 2)線程之間的同步和加鎖控制比較麻煩;一個線程的崩潰可能影響到整個程序的穩(wěn)定性
    發(fā)表于 03-04 15:03 ?1352次閱讀
    嵌入式<b class='flag-5'>系統(tǒng)</b>中的<b class='flag-5'>線程</b>、進程與任務(wù)概念與區(qū)別

    什么是動態(tài)線程池?動態(tài)線程池的簡單實現(xiàn)思路

    因此,動態(tài)可監(jiān)控線程池一種針對以上痛點開發(fā)的線程池管理工具。主要可實現(xiàn)功能有:提供對 Spring 應(yīng)用內(nèi)線程池實例的全局管控、應(yīng)用運行時動態(tài)變更線程池參數(shù)以及
    的頭像 發(fā)表于 02-28 10:42 ?645次閱讀

    RTThread中main線程有個循環(huán),如果main線程異常退出了,有什么辦法可以監(jiān)測到?

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

    線程是什么的基本單位 進程與線程的本質(zhì)區(qū)別

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

    堆和的區(qū)別和使用注意事項

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

    mcu線程和進程的區(qū)別是什么

    MCU線程和進程是嵌入式系統(tǒng)中常見的并行執(zhí)行的概念,它們之間有許多區(qū)別,包括線程與進程的定義、資源管理、通信機制、執(zhí)行方式等等。下面將詳細介紹MCU線程和進程的區(qū)別。 一、定義與概念
    的頭像 發(fā)表于 01-04 10:45 ?753次閱讀
    主站蜘蛛池模板: 女性一级全黄生活片免费看| 91网视频在线观看| 天天做天天操| tueb69xxxxxhd日本| 四虎永久精品免费网址大全| 国外免费一级| 国产综合免费视频| 一级做a爰片久久毛片看看| 激情午夜婷婷| 日本大片免费观看视频| 久久黄色视屏| 免费又爽又黄的禁片1000部| 久久精品国产99久久72| 免费黄色毛片| 久热国产精品视频| 一级片 在线播放| 日韩大胆| 天天操天天干天天干| 九九re热| 国产三级在线免费观看| 天天操夜夜操视频| 国模极品一区二区三区| 久久99热狠狠色精品一区| 韩国午夜影院| 特级毛片aaaa免费观看| 337p亚洲精品色噜噜狠狠| 在线观看免费视频一区| 欧美日韩国产一区二区三区不卡| 日本xxxxbbbb| 日本不卡视频在线视频观看| 免费一级网站| 国产精品午夜久久| 一色屋精品免费视频 视频| 国产一级特黄aa大片免费| 手机看片www xiao2b cm| 日本一区二区高清免费不卡| 日日操夜夜爱| 五月激情片| 色多多福利网站老司机| 亚洲欧美一区二区久久香蕉| 1717国产精品久久|