RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
文章目錄
- 一、前言
- 二、代碼
- 2.1、main.h
- 2.1、main.c
- 三、DEBUG
- 四、細(xì)節(jié)補(bǔ)充
- 4.1、使用靜態(tài)堆棧方式創(chuàng)建的線程只占用一點點RTX5上的內(nèi)存
- 4.2、通過RTX RTOS窗口,可以觀察線程的細(xì)節(jié)。
- 4.3、不建議將控制塊定義為全局變量,應(yīng)該由RTX動態(tài)分配。
一、前言
RTX5與其他RTOS一樣,創(chuàng)建線程的方式分別靜態(tài)堆棧與動態(tài)堆棧兩種。
今天先學(xué)習(xí)使用靜態(tài)堆棧方式創(chuàng)建RTX5線程,分別是LED線程與Start線程。LED線程用于翻轉(zhuǎn)兩個LED,Start線程用于創(chuàng)建其他線程,并printf一些信息出來。
靜態(tài)堆棧方式創(chuàng)建線程,線程的內(nèi)存由用戶自己分配,但RTX5也要繼續(xù)為線程分配80bytes的內(nèi)存。如果喜歡用靜態(tài)堆棧方式創(chuàng)建線程的話,可以將RTX5的Global Dynamic Memory size設(shè)置小一些,因為Global Dynamic Memory是用于動態(tài)堆棧方式,且RTX5默認(rèn)將它設(shè)置32K啊。所以,如果只用靜態(tài)堆棧方式創(chuàng)建線程的話,必須將Global Dynamic Memory設(shè)小一些,將內(nèi)存預(yù)留出來。
一定要多看官方手冊。官方手冊上對應(yīng)的內(nèi)容:
二、代碼
2.1、main.h
可以不包含 “rtx_os.h”,因為不需要使用控制塊方式創(chuàng)建線程。
2.1、main.c
至于,堆棧的類型為什么是uint64_t,官方有說明:
最后,編譯程序。
三、DEBUG
從Event Recorder的Debug Viewer看到Start線程正在運行。觀察板子,兩個LED也在閃爍。
四、細(xì)節(jié)補(bǔ)充
4.1、使用靜態(tài)堆棧方式創(chuàng)建的線程只占用一點點RTX5上的內(nèi)存
靜態(tài)堆棧方式創(chuàng)建線程,相當(dāng)于用戶自己為線程分配內(nèi)存。雖然說靜態(tài)堆棧方式創(chuàng)建線程時,線程的內(nèi)存由用戶自己分配,但是并不代表完全不需要RTX5為線程繼續(xù)分配內(nèi)存。經(jīng)過使用Event Recorder調(diào)試發(fā)現(xiàn),靜態(tài)堆棧方式創(chuàng)建線程,RTX5也需要繼續(xù)為此線程分配80bytes內(nèi)存。
4.2、通過RTX RTOS窗口,可以觀察線程的細(xì)節(jié)。
4.3、不建議將控制塊定義為全局變量,應(yīng)該由RTX動態(tài)分配。
osThreadAttr_t結(jié)構(gòu)體的成員cb_mem使用默認(rèn)NULL,cb_size使用默認(rèn)0。它們都使用默認(rèn),RTX5負(fù)責(zé)管理控制塊。
cb_mem與cb_size不使用默認(rèn)值時,將無法在RTX RTOS上查看到線程的細(xì)節(jié)。
總結(jié)
以上是生活随笔為你收集整理的RTX5 | 线程管理01 - 创建线程(静态堆栈方式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7卸载python2.7_win7
- 下一篇: redis stream java消息队