RTX5 | 配置文件RTX_Config.h(二)
文章目錄
- 一、前言
- 二、Thread Configuration
- 2.1、Object specific Memory allocation(對象特定的內存分配)
- 2.1.1、Number of user Threads(用戶線程的數量)
- 2.1.2、Number of user Threads with default Stack size(使用默認堆棧大小的用戶線程的數量)
- 2.1.3、Total Stack size[bytes] for user Threads with user-provided Stack size(提供給用戶線程的總堆棧大小)
- 2.2、Default Thread Stack size(線程的默認堆棧大小)
- 2.3、Idle Thread Stack size(空閑線程的堆棧大小)
- 2.4、Idle Thread TrustZone Module Identifier(空閑線程信任區域模塊標識符)
- 2.5、Stack overrun checking (堆棧溢出檢查)
- 2.6、Stack usage watermark(堆棧使用水印)
- 2.7、Processor mode for Thread execution(線程執行的處理器模式)
一、前言
上一次學習System Configuration之后,接著繼續學習RTX_Config.h剩下的內容。
RTX5 | 配置文件RTX_Config.h(一)
二、Thread Configuration
2.1、Object specific Memory allocation(對象特定的內存分配)
Object specific Memory allocation為每一個RTX5的對象創建一個專用的固定大小的內存塊,可以有效防止內存碎片化,并簡化內存不足情況的處理。并且,在專用的內存里創建對象與刪除對象的時間都是完全確定的。
默認的配置下,不勾選Object Specific Memory allocation。此時,當我們創建RTX5的對象時,會在全局內存池里申請一段內存。有線程對象,有消息隊列對象,有信號量對象等等,按申請內存的時間順序一個個放入Global Memory Pool(全局內存池)里。這種情況下,內存肯定會有一點亂。
2.1.1、Number of user Threads(用戶線程的數量)
定義同一時間上最多可以運行多少個用戶線程。實際測試一下,當前我的程序創建了4個線程。接著,我將Number of user Thread設置3,看看效果如何。
2.1.2、Number of user Threads with default Stack size(使用默認堆棧大小的用戶線程的數量)
系統的默認是3072Byte。不建議使用默認的堆棧大小,每一個線程都應該有合適的內存大小。
2.1.3、Total Stack size[bytes] for user Threads with user-provided Stack size(提供給用戶線程的總堆棧大小)
使用默認值0,應該是不設置的意思。(畢竟,我一直使用默認值0也能順利創建多個線程)
2.2、Default Thread Stack size(線程的默認堆棧大小)
創建線程時不指定堆棧大小,就會使用Default Thread Stack Size的值來創建線程。
2.3、Idle Thread Stack size(空閑線程的堆棧大小)
看空閑線程的設計需要多大的內存,默認的空閑線程只需256KB。
2.4、Idle Thread TrustZone Module Identifier(空閑線程信任區域模塊標識符)
Armv8-M/v8.1-M架構的單片機才有。
2.5、Stack overrun checking (堆棧溢出檢查)
一定要勾選,堆棧真的很容易溢出。
2.6、Stack usage watermark(堆棧使用水印)
使用水印模式初始化線程堆棧以分析堆棧使用情況。 啟用此選項會顯著增加線程創建的執行時間。我覺得沒必要勾選這一項,在DEBUG模式下,使用Keil的RTX RTOS也能看到堆棧的使用情況。
2.7、Processor mode for Thread execution(線程執行的處理器模式)
必須使用privileged mode,不然功能可能會受到限制:
總結
以上是生活随笔為你收集整理的RTX5 | 配置文件RTX_Config.h(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python16进制转10进制_pyth
- 下一篇: Python | threading01