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