五月色综合_娇妻卧室含辱迎接领导h_美女ppp_亚洲欧美aaa_天天在线综合_91午夜激情_裸体裸乳免费看_国产精品无码99re_日韩午夜视频在线观看_色爽 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)和其他中斷仍需要特權模式的權限。如果中斷服務程序試圖訪問受限區域,可能導致線程無法運行。


主站蜘蛛池模板: 依兰县| 扶余县| 麦盖提县| 珠海市| 芮城县| 遂宁市| 禄劝| 霍山县| 屯昌县| 乌鲁木齐县| 荥经县| 东乌| 东丰县| 肥城市| 防城港市| 清涧县| 页游| 涿鹿县| 方山县| 嵊泗县| 曲阜市| 固始县| 罗山县| 云霄县| 定远县| 台州市| 虎林市| 尚义县| 西贡区| 晋宁县| 永川市| 九寨沟县| 甘泉县| 蓬溪县| 武穴市| 分宜县| 五大连池市| 五河县| 密山市| 长白| 什邡市|