青青av-亚洲激情一区二区-欧洲色综合-看片网址国产福利av中文字幕-成人精品毛片-亚洲黄色免费观看-国产夫妻在线观看-69av电影-久久性片-中文字幕av影片-色综合久久久久无码专区

【ARM】解決MDK中開啟MPU后RTX的線程無法正常啟動的問題

1、 文檔目標

在嵌入式開發領域,尤其是在使用ARM Cortex-M系列微控制器時,MDK(Keil Microcontroller Development Kit)是開發者最常用的集成開發環境之一。而RTX(Real-Time eXecutive)作為一款輕量級實時操作系統內核,廣泛應用于需要高效任務調度和資源管理的場景中。然而,在某些復雜的應用環境中,例如啟用了MPU(Memory Protection Unit)后,可能會遇到RTX線程無法正常啟動的問題。這種問題不僅會影響系統的功能實現,還可能對項目的開發進度造成顯著影響。因此,深入分析該問題的成因并提出有效的解決方案,具有重要的實踐意義。


2、 問題場景

在Keil MDK中,用RTOS2后,在Main函數中開啟MPU初始化后,RTX5的線程無法正常啟動,如圖2-1所示:



圖2-1

3、軟硬件環境

1)、軟件版本:Keil MDK5.41

2)、電腦環境:Windows 11

3)、外設硬件:無


4、解決方法

方法1:

打開工程的main函數中的MPU的初始化代碼,把“MPU_InitStruct.Size“設置為”MPU_REGION_SIZE_4GB”,如圖4-1所示:


圖4-1

注:當MPU的區域大小設置為MPU_REGION_SIZE_4GB時,它覆蓋了一個非常大的內存區域,這通常包括了整個地址空間,因此不太可能限制到RTX線程所需的特定內存區域。而當設置為MPU_REGION_SIZE_512KB時,覆蓋的內存區域較小,如果這個區域沒有正確覆蓋RTX線程的棧空間或需要訪問的內存區域,就可能導致線程無法正常啟動。


方法2:

如果不修改“MPU_InitStruct.Size”的值,打開RTX的配置文件把默認線程的模式修改為特權模式,如圖4-2所示:



圖4-2

注:在非特權模式下運行線程時,系統定時器(SysTick)和其他中斷仍需要特權模式的權限。如果中斷服務程序試圖訪問受限區域,可能導致線程無法運行。


主站蜘蛛池模板: 绥滨县| 桃江县| 延边| 红河县| 贡嘎县| 泰州市| 黑龙江省| 宽城| 浠水县| 乡宁县| 东海县| 龙江县| 安平县| 凤山市| 高阳县| 白河县| 广州市| 垣曲县| 蕲春县| 基隆市| 海口市| 津南区| 齐齐哈尔市| 镇江市| 宁远县| 易门县| 平凉市| 杭锦旗| 黎川县| 隆安县| 汶上县| 苍溪县| 大悟县| 遂溪县| 勃利县| 巧家县| 斗六市| 衢州市| 蓬莱市| 乐至县| 类乌齐县|