一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多任務(wù)系統(tǒng)中的堆棧使用

麥克泰技術(shù) ? 來(lái)源:麥克泰技術(shù) ? 作者:麥克泰技術(shù) ? 2022-12-02 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在使用μC/OS的多任務(wù)應(yīng)用程序中,main()啟動(dòng)后首先使用系統(tǒng)C棧,在OS啟動(dòng)后使用任務(wù)棧。

基于μC/OS-II或μC/OS-III編寫(xiě)應(yīng)用代碼時(shí),用戶必須為每個(gè)任務(wù)聲明一個(gè)堆棧,用于任務(wù)運(yùn)行現(xiàn)場(chǎng)及保存任務(wù)上下文(CPU寄存器)。在多任務(wù)處理開(kāi)始之前執(zhí)行的C代碼將使用C棧。只有當(dāng)應(yīng)用程序的第一個(gè)任務(wù)開(kāi)始運(yùn)行時(shí),棧才會(huì)從C棧中轉(zhuǎn)移到任務(wù)棧。

不同的微控制器棧的實(shí)現(xiàn)也不同,許多32位處理器支持多個(gè)棧。例如,ARM Cortex-M內(nèi)核有兩個(gè)棧指針,分別指向主棧和進(jìn)程棧。在基于μC/OS-III的應(yīng)用中,多任務(wù)開(kāi)始前使用主堆棧,其空間為鏈接命令文件中定義的堆棧區(qū)域。當(dāng)應(yīng)用程序調(diào)用OSStart()函數(shù)啟動(dòng)多任務(wù)時(shí),進(jìn)程堆棧指針被設(shè)置為第一個(gè)任務(wù)堆棧的棧頂?shù)刂?,并修改控制寄存器,使任?wù)開(kāi)始運(yùn)行時(shí)使用該堆棧。同時(shí),主堆棧指針被用來(lái)指向μC/OS-III的中斷堆棧OSCfg_ISRStk[]。后續(xù)多任務(wù)系統(tǒng)運(yùn)行過(guò)程中,此堆棧將專門(mén)用于中斷和異常處理程序。多任務(wù)啟動(dòng)后,C堆棧會(huì)丟失,導(dǎo)致嵌入式應(yīng)用中可用的RAM量減少,在資源有限的應(yīng)用中,可以重用C堆棧空間,用于任務(wù)堆棧,具體實(shí)現(xiàn)可以參考文章:技術(shù)小課堂| μC/OS-III的應(yīng)用中CSTACK重用

由于main()對(duì)C堆棧的依賴,必須確保為這個(gè)堆棧留出足夠的空間。如上所述,μC/OS-III用戶還必須知道OSCfg_ISRStk[]棧的大小。OSCfg_ISRStk[]是一個(gè)數(shù)組,類似于任務(wù)堆棧,其大小由內(nèi)核配置常量OS_CFG_ISR_STK_SIZE決定。另一方面,C堆棧的大小通常直接提供給鏈接器,因此在不同開(kāi)發(fā)環(huán)境中對(duì)該堆棧進(jìn)行更改的方法是不一樣的。

在Segger Embedded Studio中,Cortex-M的應(yīng)用中main()使用的堆棧通常被命名為stack,可以通過(guò)工程options菜單進(jìn)行堆棧配置,無(wú)需直接更改鏈接器文件。

30bfb07e-71ee-11ed-8abf-dac502259ad0.png

如果基于μC/OS-III官方示例工程開(kāi)發(fā),通常不需要修改C棧的大小。這些工程已為main()的執(zhí)行分配了足夠的空間。不過(guò),中斷堆棧大小的定義OS_CFG_ISR_STK_SIZE可能需要進(jìn)行一些調(diào)整。對(duì)于使用獨(dú)立中斷堆棧的應(yīng)用,如果不在中斷處理程序增加復(fù)雜的函數(shù)調(diào)用,示例的默認(rèn)大小即可滿足需求。

基于μC/OS構(gòu)建的系統(tǒng)在main()運(yùn)行過(guò)程中依賴C堆棧,一旦調(diào)用OSStart()后,系統(tǒng)就切換到任務(wù)堆棧,以便開(kāi)始多任務(wù)處理。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7932

    瀏覽量

    154022
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5430

    瀏覽量

    123914
  • 堆棧
    +關(guān)注

    關(guān)注

    0

    文章

    183

    瀏覽量

    20078
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3328

    瀏覽量

    58875

原文標(biāo)題:多任務(wù)系統(tǒng)中的堆棧使用

文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    多任務(wù)處理卡頓頻發(fā),無(wú)風(fēng)扇工控機(jī)如何優(yōu)化性能?聚徽廠家一文讀懂

    在工業(yè)自動(dòng)化、物聯(lián)網(wǎng)等領(lǐng)域的深度應(yīng)用,無(wú)風(fēng)扇工控機(jī)常常需要同時(shí)運(yùn)行數(shù)據(jù)采集、實(shí)時(shí)監(jiān)控、程序控制等多個(gè)任務(wù)。然而,頻繁出現(xiàn)的多任務(wù)處理卡頓問(wèn)題,不僅影響生產(chǎn)效率,還可能導(dǎo)致數(shù)據(jù)丟失、系統(tǒng)
    的頭像 發(fā)表于 06-03 15:25 ?222次閱讀

    快速入門(mén)——LuatOS:sys庫(kù)多任務(wù)管理實(shí)戰(zhàn)攻略!

    在嵌入式開(kāi)發(fā),多任務(wù)管理是提升系統(tǒng)效率的關(guān)鍵。本教程專為快速入門(mén)設(shè)計(jì),聚焦LuatOS的sys庫(kù),通過(guò)實(shí)戰(zhàn)案例帶你快速掌握多任務(wù)創(chuàng)建、調(diào)度與同步技巧。無(wú)論你是零基礎(chǔ)新手還是希望快速提
    的頭像 發(fā)表于 05-29 14:36 ?169次閱讀
    快速入門(mén)——LuatOS:sys庫(kù)<b class='flag-5'>多任務(wù)</b>管理實(shí)戰(zhàn)攻略!

    AGV監(jiān)控與任務(wù)管理系統(tǒng)設(shè)計(jì)

    AGV在智能物流核心,助力工業(yè)4.0和中國(guó)制造2025。AGV管理監(jiān)控調(diào)度系統(tǒng)實(shí)時(shí)監(jiān)控、任務(wù)管理、路徑規(guī)劃,確保高效便捷。AGV市場(chǎng)前景廣闊,解決人口紅利喪失、勞動(dòng)力成本上升等問(wèn)題,物流裝備業(yè)迎來(lái)機(jī)遇。
    的頭像 發(fā)表于 03-05 12:10 ?276次閱讀
    AGV監(jiān)控與<b class='flag-5'>任務(wù)</b>管理<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

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

    BEVFusion 技術(shù)詳解總結(jié)——面向自動(dòng)駕駛的多任務(wù)多傳感器高效融合框架原始論文:*附件:bevfusion.pdf介紹(Introduction)背景:自動(dòng)駕駛系統(tǒng)配備了多種傳感器,提供互補(bǔ)
    的頭像 發(fā)表于 02-26 20:33 ?3785次閱讀
    BEVFusion —面向自動(dòng)駕駛的<b class='flag-5'>多任務(wù)</b>多傳感器高效融合框架技術(shù)詳解

    MCU在車載系統(tǒng)的展望

    和實(shí)時(shí)性表現(xiàn),以滿足車載系統(tǒng)多任務(wù)處理的需求,如自動(dòng)駕駛輔助系統(tǒng)同時(shí)處理多個(gè)傳感器數(shù)據(jù),信息娛樂(lè)系統(tǒng)
    發(fā)表于 01-17 12:11

    使用任務(wù)通知提高RTOS應(yīng)用的效率

    在實(shí)時(shí)嵌入式系統(tǒng),性能和資源效率是決定設(shè)計(jì)成敗的關(guān)鍵因素。傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)(RTOS)提供了如隊(duì)列、信號(hào)量和事件組機(jī)制,實(shí)現(xiàn)任務(wù)之間的同步和通信。FreeRTOS/SAFERTOS
    的頭像 發(fā)表于 12-27 14:54 ?669次閱讀

    AUTOSAR通信堆棧的配置 AUTOSAR通信模塊測(cè)試方法

    )的開(kāi)發(fā)和生產(chǎn)。通信堆棧是AUTOSAR架構(gòu)的關(guān)鍵組成部分,負(fù)責(zé)處理ECU之間的通信。 AUTOSAR通信堆棧的配置 通信模型 : AUTOSAR定義了一種分層的通信模型,包括應(yīng)用
    的頭像 發(fā)表于 12-17 15:01 ?882次閱讀

    航電實(shí)時(shí)測(cè)試系統(tǒng)解決方案

    航電實(shí)時(shí)測(cè)試系統(tǒng)主要應(yīng)用于航空座艙的實(shí)時(shí)測(cè)試。座艙測(cè)試過(guò)程,輸入和輸出信號(hào)的實(shí)時(shí)性至關(guān)重要,尤其是在多任務(wù)操作時(shí),必須保證系統(tǒng)穩(wěn)定的loop時(shí)間。為了滿足這一需求,客戶選擇了基于Li
    的頭像 發(fā)表于 10-23 15:34 ?674次閱讀
    航電實(shí)時(shí)測(cè)試<b class='flag-5'>系統(tǒng)</b>解決方案

    自動(dòng)發(fā)電控制系統(tǒng)的基本任務(wù)

    自動(dòng)發(fā)電控制系統(tǒng)(Automatic Generation Control,簡(jiǎn)稱AGC)在電力系統(tǒng)扮演著至關(guān)重要的角色,其基本任務(wù)可以歸納為以下幾個(gè)方面:   發(fā)電機(jī)輸出功率與
    的頭像 發(fā)表于 10-03 15:03 ?1431次閱讀

    freertos最多支持多少個(gè)任務(wù)

    以下幾個(gè)因素: 系統(tǒng)資源 :FreeRTOS能夠支持的任務(wù)數(shù)量受到系統(tǒng)硬件資源的限制,特別是處理器的RAM大小和性能。RAM用于存儲(chǔ)任務(wù)的控制塊(TCB)和
    的頭像 發(fā)表于 09-02 14:21 ?2162次閱讀

    堆棧和內(nèi)存的基本知識(shí)

    本文主要聊聊關(guān)于堆棧的內(nèi)容。包括堆棧和內(nèi)存的基本知識(shí)。常見(jiàn)和堆棧相關(guān)的 bug,如棧溢出,內(nèi)存泄漏,堆內(nèi)存分配失敗等。后面介紹軟件堆棧統(tǒng)計(jì)
    的頭像 發(fā)表于 08-29 14:10 ?1002次閱讀
    <b class='flag-5'>堆棧</b>和內(nèi)存的基本知識(shí)

    如何使用Polyspace Code Prover來(lái)統(tǒng)計(jì)堆棧

    前一篇文章介紹了堆棧和內(nèi)存的一些背景知識(shí)。本次介紹如何使用 Polyspace Code Prover來(lái)統(tǒng)計(jì)堆棧,如何使用這些數(shù)據(jù)為軟件優(yōu)化服務(wù)。
    的頭像 發(fā)表于 07-25 14:06 ?1139次閱讀
    如何使用Polyspace Code Prover來(lái)統(tǒng)計(jì)<b class='flag-5'>堆棧</b>

    xTaskCreate能否把堆棧上限調(diào)整為2K或者1k?

    RTOS SDK 的系統(tǒng)任務(wù)優(yōu)先級(jí)為 15 ,創(chuàng)建任務(wù)的接?口 xTaskCreate 為 freeRTOS ?自帶接?口,使 ?用 xTaskCreate 創(chuàng)建任務(wù)時(shí),
    發(fā)表于 07-22 06:31

    請(qǐng)問(wèn)est_printf為什么要使用堆棧空間?

    發(fā)送大量與 malloc/free 相關(guān)的調(diào)試消息后,任務(wù)堆棧之一已溢出。 我的問(wèn)題是,誰(shuí)能告訴我為什么除了調(diào)用ets_printf本身之外,堆棧還會(huì)發(fā)揮作用?
    發(fā)表于 07-09 07:47

    如何使用freeRTOS在兩個(gè)任務(wù)之間傳輸任務(wù)數(shù)據(jù)?

    大家好, 我是 PSoC6 的新手,并嘗試以運(yùn)行第二個(gè)任務(wù)的方式調(diào)整“ PSoC? 6 MCU:emFile 文件系統(tǒng)”,該任務(wù)作為 I2C 主控運(yùn)行。 i2C Master 正在讀取傳感器的溫度
    發(fā)表于 07-03 07:55