精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

多任務系統中的堆棧使用

麥克泰技術 ? 來源:麥克泰技術 ? 作者:麥克泰技術 ? 2022-12-02 11:15 ? 次閱讀

在使用μC/OS的多任務應用程序中,main()啟動后首先使用系統C棧,在OS啟動后使用任務棧。

基于μC/OS-II或μC/OS-III編寫應用代碼時,用戶必須為每個任務聲明一個堆棧,用于任務運行現場及保存任務上下文(CPU寄存器)。在多任務處理開始之前執行的C代碼將使用C棧。只有當應用程序的第一個任務開始運行時,棧才會從C棧中轉移到任務棧。

不同的微控制器棧的實現也不同,許多32位處理器支持多個棧。例如,ARM Cortex-M內核有兩個棧指針,分別指向主棧和進程棧。在基于μC/OS-III的應用中,多任務開始前使用主堆棧,其空間為鏈接命令文件中定義的堆棧區域。當應用程序調用OSStart()函數啟動多任務時,進程堆棧指針被設置為第一個任務堆棧的棧頂地址,并修改控制寄存器,使任務開始運行時使用該堆棧。同時,主堆棧指針被用來指向μC/OS-III的中斷堆棧OSCfg_ISRStk[]。后續多任務系統運行過程中,此堆棧將專門用于中斷和異常處理程序。多任務啟動后,C堆棧會丟失,導致嵌入式應用中可用的RAM量減少,在資源有限的應用中,可以重用C堆棧空間,用于任務堆棧,具體實現可以參考文章:技術小課堂| μC/OS-III的應用中CSTACK重用

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

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

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

如果基于μC/OS-III官方示例工程開發,通常不需要修改C棧的大小。這些工程已為main()的執行分配了足夠的空間。不過,中斷堆棧大小的定義OS_CFG_ISR_STK_SIZE可能需要進行一些調整。對于使用獨立中斷堆棧的應用,如果不在中斷處理程序增加復雜的函數調用,示例的默認大小即可滿足需求。

基于μC/OS構建的系統在main()運行過程中依賴C堆棧,一旦調用OSStart()后,系統就切換到任務堆棧,以便開始多任務處理。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7496

    瀏覽量

    151083
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • 堆棧
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19734
  • 應用程序
    +關注

    關注

    37

    文章

    3245

    瀏覽量

    57614

原文標題:多任務系統中的堆棧使用

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    freertos最多支持多少個任務

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

    堆棧和內存的基本知識

    本文主要聊聊關于堆棧的內容。包括堆棧和內存的基本知識。常見和堆棧相關的 bug,如棧溢出,內存泄漏,堆內存分配失敗等。后面介紹軟件堆棧統計
    的頭像 發表于 08-29 14:10 ?388次閱讀
    <b class='flag-5'>堆棧</b>和內存的基本知識

    xTaskCreate能否把堆棧上限調整為2K或者1k?

    RTOS SDK 的系統任務優先級為 15 ,創建任務的接?口 xTaskCreate 為 freeRTOS ?自帶接?口,使 ?用 xTaskCreate 創建任務時,
    發表于 07-22 06:31

    請問est_printf為什么要使用堆棧空間?

    發送大量與 malloc/free 相關的調試消息后,任務堆棧之一已溢出。 我的問題是,誰能告訴我為什么除了調用ets_printf本身之外,堆棧還會發揮作用?
    發表于 07-09 07:47

    esp32-c3工程怎么創建多個freertos任務?

    ESP-IDF給出的ESP32-C3的例程都只有一個任務。即void app_main() 而且沒看見這個app_main任務是在哪里被創建的??? 如果我想建一個ESP32-C3的多任務
    發表于 06-27 06:37

    esp32S2創建任務時,若任務堆棧大小配置超過 4096*6 ,該任務會創建失敗,如何解決?

    esp32S2創建任務時,若任務堆棧大小配置超過 4096*6 ,該任務會創建失敗, xTaskCreat 返回 xReturn = ffffffff。是否應該修改FreeRTOSCo
    發表于 06-20 08:26

    系統的latency是如何產生的

    在當今數字時代,手機已成為人們日常生活不可或缺,多任務處理和實時響應對于用戶體驗越來越重要,搶占(preemption)機制在提升系統性能和用戶體驗方面發揮了至關重要的作用。內核搶占機制使得
    的頭像 發表于 06-04 09:18 ?582次閱讀
    <b class='flag-5'>系統</b><b class='flag-5'>中</b>的latency是如何產生的

    求助,關于stm32f1使用freeRTOS和Fatfs時任務堆棧大小問題求解

    哪位使用過freeRTOS和Fatfs時,使用Fatfs系統的函數如f_open()等等時,此任務堆棧大小大致需要多大,當前MAX_SS 定義為4096,我分配12K軟件都跑飛了,請哪位使用分享一下經驗,謝謝!~~?
    發表于 05-09 06:50

    IAR調試freertos系統怎樣才能方便的獲得任務堆棧情況?

    在IAR中將freertos移植到STM32,在進行任務堆棧分配時分配多大的堆棧時一個問題,如何比較方便的獲得任務
    發表于 05-07 08:15

    請問freertos可視化調試打印任務信息是不是只可以打印一次?

    在freertos,使用可視化調試打印任務消息,但是打印不全,還只能打印一次,使用IAR自帶的調試插件看,顯示可視化調試任務堆棧頂全是a,這事怎么回事?
    發表于 05-07 06:16

    STM32F103VE運行的STM32CubeMX生成的freertos工程,FreeRTOS堆棧設置導致任務不執行切換怎么解決?

    我使用的STM32F103VE運行的STM32CubeMX生成的freertos工程。 一共有兩個任務,TSAK1和TASK2都是翻轉LED,TASK1的堆棧設置64,兩個任務切換、運行正常。但是
    發表于 04-26 07:51

    verilog函數和任務對比

    在verilog,函數和任務均用來描述共同的代碼段,并且在模式內任意位置被調用,提高代碼效率,讓代碼更加的直觀,提高代碼可讀性。但是在實際使用的過程,函數和任務也存在諸多的不同,下
    的頭像 發表于 02-12 18:43 ?864次閱讀

    基于多任務優化和人工智能賦能態勢感知技術

    隨著作戰任務系統的復雜性不斷增加,在正確的時間做出正確的作戰決策需要 (1) 實時態勢感知,以及 (2) 提供自動建議的決策支持系統。這兩項功能是作戰任務管理
    的頭像 發表于 01-18 15:22 ?617次閱讀

    請教:有SPC560B的多任務實時系統的例程嗎(freertos)

    請教:有SPC560B的多任務實時系統的例程嗎(freertos)
    發表于 01-15 17:04

    嵌入式系統堆棧監控的作用

    在微控制器或微處理器堆棧是內存的一個保留區域,用于存儲臨時數據和函數調用信息,管理函數的執行,跟蹤返回地址、局部變量和函數參數。堆棧監控是嵌入式系統運行
    的頭像 發表于 01-05 11:13 ?470次閱讀