在使用μC/OS的多任務(wù)應(yīng)用程序中,main()啟動后首先使用系統(tǒng)C棧,在OS啟動后使用任務(wù)棧。
基于μC/OS-II或μC/OS-III編寫應(yīng)用代碼時,用戶必須為每個任務(wù)聲明一個堆棧,用于任務(wù)運行現(xiàn)場及保存任務(wù)上下文(CPU寄存器)。在多任務(wù)處理開始之前執(zhí)行的C代碼將使用C棧。只有當(dāng)應(yīng)用程序的第一個任務(wù)開始運行時,棧才會從C棧中轉(zhuǎn)移到任務(wù)棧。
不同的微控制器棧的實現(xiàn)也不同,許多32位處理器支持多個棧。例如,ARM Cortex-M內(nèi)核有兩個棧指針,分別指向主棧和進程棧。在基于μC/OS-III的應(yīng)用中,多任務(wù)開始前使用主堆棧,其空間為鏈接命令文件中定義的堆棧區(qū)域。當(dāng)應(yīng)用程序調(diào)用OSStart()函數(shù)啟動多任務(wù)時,進程堆棧指針被設(shè)置為第一個任務(wù)堆棧的棧頂?shù)刂罚⑿薷目刂萍拇嫫鳎谷蝿?wù)開始運行時使用該堆棧。同時,主堆棧指針被用來指向μC/OS-III的中斷堆棧OSCfg_ISRStk[]。后續(xù)多任務(wù)系統(tǒng)運行過程中,此堆棧將專門用于中斷和異常處理程序。多任務(wù)啟動后,C堆棧會丟失,導(dǎo)致嵌入式應(yīng)用中可用的RAM量減少,在資源有限的應(yīng)用中,可以重用C堆棧空間,用于任務(wù)堆棧,具體實現(xiàn)可以參考文章:技術(shù)小課堂| μC/OS-III的應(yīng)用中CSTACK重用
由于main()對C堆棧的依賴,必須確保為這個堆棧留出足夠的空間。如上所述,μC/OS-III用戶還必須知道OSCfg_ISRStk[]棧的大小。OSCfg_ISRStk[]是一個數(shù)組,類似于任務(wù)堆棧,其大小由內(nèi)核配置常量OS_CFG_ISR_STK_SIZE決定。另一方面,C堆棧的大小通常直接提供給鏈接器,因此在不同開發(fā)環(huán)境中對該堆棧進行更改的方法是不一樣的。
在Segger Embedded Studio中,Cortex-M的應(yīng)用中main()使用的堆棧通常被命名為stack,可以通過工程options菜單進行堆棧配置,無需直接更改鏈接器文件。
如果基于μC/OS-III官方示例工程開發(fā),通常不需要修改C棧的大小。這些工程已為main()的執(zhí)行分配了足夠的空間。不過,中斷堆棧大小的定義OS_CFG_ISR_STK_SIZE可能需要進行一些調(diào)整。對于使用獨立中斷堆棧的應(yīng)用,如果不在中斷處理程序增加復(fù)雜的函數(shù)調(diào)用,示例的默認大小即可滿足需求。
基于μC/OS構(gòu)建的系統(tǒng)在main()運行過程中依賴C堆棧,一旦調(diào)用OSStart()后,系統(tǒng)就切換到任務(wù)堆棧,以便開始多任務(wù)處理。
審核編輯 :李倩
-
微控制器
+關(guān)注
關(guān)注
48文章
7950瀏覽量
154941 -
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124430 -
堆棧
+關(guān)注
關(guān)注
0文章
183瀏覽量
20125 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3335瀏覽量
59019
原文標(biāo)題:多任務(wù)系統(tǒng)中的堆棧使用
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
多任務(wù)處理卡頓頻發(fā),無風(fēng)扇工控機如何優(yōu)化性能?聚徽廠家一文讀懂
快速入門——LuatOS:sys庫多任務(wù)管理實戰(zhàn)攻略!

嵌入式開發(fā)避坑指南|FreeRTOS的5個\"反直覺\"小技巧
AGV監(jiān)控與任務(wù)管理系統(tǒng)設(shè)計

BEVFusion —面向自動駕駛的多任務(wù)多傳感器高效融合框架技術(shù)詳解

MCU在車載系統(tǒng)中的展望
使用任務(wù)通知提高RTOS應(yīng)用的效率
AUTOSAR中通信堆棧的配置 AUTOSAR通信模塊測試方法
Linux計劃任務(wù)介紹
航電實時測試系統(tǒng)解決方案

自動發(fā)電控制系統(tǒng)的基本任務(wù)
freertos最多支持多少個任務(wù)
堆棧和內(nèi)存的基本知識

如何使用Polyspace Code Prover來統(tǒng)計堆棧

評論