99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>uC/OS-II任務棧處理的一種改進方法

uC/OS-II任務棧處理的一種改進方法

2017-11-01 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

關(guān)于μC/OS-II這個實時內(nèi)核及其應用已經(jīng)有很多文章介紹了,對于學習RTOS的人來說,這個系統(tǒng)是很好的學習起點。雖然文獻[1]的源代碼沒有行號和函數(shù)名交叉索引表等,給源代碼閱讀造成一些困難(可使用BC31的grep查找功能,提高閱讀效率),好在代碼不是很長,前面又有詳細的中文說明,對于有一定X86匯編C語言基礎(chǔ)的人來說,仍然可以在不長的時間內(nèi)掌握。
  μC/OS-II內(nèi)核是一個搶先式內(nèi)核,可以進行任務間切換,也可以讓一個任務在得不到某個資源時休眠一定時間后再繼續(xù)運行;提供了用于共享資源管理的信號燈,用于進程通信的消息隊列和郵箱,甚至提供了存儲器管理機制,是一個比較全面的系統(tǒng)。
  μC/OS-II內(nèi)核有些地方仍然值得改進,比如該系統(tǒng)不支持時間片調(diào)度。如果有一個任務中一段死循環(huán)代碼(或者條件循環(huán)代碼),代碼就會永遠(或長時間)在此處執(zhí)行,調(diào)度程序無法控制,其它任務也就是不到及時執(zhí)行。這種搶先式實際上和非搶先式系統(tǒng)存在著同樣問題。當然,如果這種代碼不一個BUG,問題是可以解決的,在不提供時間片調(diào)度的搶先式系統(tǒng)中,一般采取信號燈,或者任務主動休眠的方法(對于μC/OS-II,很容易改造成支持時間片調(diào)度,只要在定時中斷服務程序調(diào)用OSIntCtxSw()函數(shù)即可);非搶先式系統(tǒng)一般采取有限狀態(tài)機方法,不使用這種耗時很長的循環(huán)代碼。不過,無論如何,對RTOS的使用者來說,這畢竟會使得任務函數(shù)的編碼不能隨心所欲。
  uC/OS-II內(nèi)核的另外一個值得改進的地方就是其任務棧管理方法。在μC/OS-II內(nèi)核中,各個不同的任務使用獨立的堆棧空間,堆棧的大小按每個任務所需要的最大堆棧深度來定義,這種方法可能會造成堆??臻g的浪費。下面討論如何在RTOS中多個任務共用一段連續(xù)存儲空間作為堆棧。
  1 任務切換要保存的數(shù)據(jù)
  簡單地說,一個任務可看作一個運行中的C函數(shù)。對于搶先式RTOS來說,在任務切換時,應保存當前任務的各種現(xiàn)場數(shù)據(jù)?,F(xiàn)場數(shù)據(jù)包括局部變量、各個CPU寄存器、堆棧指針和程序被中止的任務指針。CPU寄存器是任何任務代碼均會用到的;而局部變量,一般的編譯器是將其它安排在堆??臻g中,堆棧指針也是各任務公用的,所以也需要保存。 對于全局變量,由于一般是在內(nèi)存中的固定位置,各任務所占用的空間完全獨立,所以不需要保存。 在X86環(huán)境中,要保存的CPU寄存器共14個16位寄存器;通用寄存器8個(AX、BX、CX、DX、SP、BP、SI、BI)、段寄存器4個(CS、DS、ES、SS)以及指令指針I(yè)P和標志寄存器FR各1個。
  2 C編譯器中變量在堆棧中的位置
  對于一個存在函數(shù)調(diào)用嵌套的C程序來說,大部分編譯器將傳遞的參數(shù)和函數(shù)本身的局部變量放在了堆棧中,編譯器會自動生成壓棧(push)和彈棧(pop)代碼,以保存上級函數(shù)的運行寄存器。 假設(shè)函數(shù)main()調(diào)用funl(),而funl()調(diào)用fun2(),則在執(zhí)行fun2()中的代碼時,堆棧映像如圖1所示(X86 CPU的情況)。
  uC/OS-II任務棧處理的一種改進方法
  對于RTOS軟件,堆棧中的各種數(shù)據(jù)就是一個任務的現(xiàn)場。一般CPU的堆棧指針SP只有一個,在進行任務切換時,必須將掛起任務所使用的堆棧內(nèi)容保存起來,以便使該任務在下次喚醒時能從原地繼續(xù)運行。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1PC2596 40V 輸入 150KHz 3A 降壓型電源轉(zhuǎn)換器數(shù)據(jù)手冊
  2. 2.44 MB   |  3次下載  |  免費
  3. 2臺式主板DDR5內(nèi)存插槽引腳功能表資料
  4. 0.17 MB   |  2次下載  |  5 積分
  5. 3高壓LED線性驅(qū)動芯片NU517應用規(guī)格書
  6. 0.61 MB   |  2次下載  |  免費
  7. 4ZYNALOG徴格半導體|ZGAD125S14技術(shù)參數(shù)書
  8. 982.53 KB  |  2次下載  |  免費
  9. 5SM9001電磁爐IGBT驅(qū)動芯片應用原理圖資料
  10. 0.12 MB   |  2次下載  |  1 積分
  11. 6BK4802P 玩具無線對講/遙控 IC數(shù)據(jù)手冊
  12. 1.81 MB   |  1次下載  |  2 積分
  13. 7SE10F10B5.0UA 低電容ESD二極管
  14. 199.49 KB  |  1次下載  |  免費
  15. 8電阻元件\電感元件\電容元件知識大全
  16. 4.67 MB   |  1次下載  |  5 積分

本月

  1. 1常用電子元器件集錦
  2. 1.72 MB   |  24495次下載  |  免費
  3. 2三相逆變主電路的原理圖和PCB資料合集免費下載
  4. 27.35 MB   |  111次下載  |  1 積分
  5. 3蘋果iphone 11電路原理圖
  6. 4.98 MB   |  17次下載  |  5 積分
  7. 4運算放大器基本電路中文資料
  8. 1.30 MB   |  16次下載  |  免費
  9. 5常用電子元器件介紹
  10. 3.21 MB   |  13次下載  |  免費
  11. 6PC2456高壓浪涌抑制器控制器數(shù)據(jù)手冊
  12. 3.03 MB   |  13次下載  |  免費
  13. 7PC2464具理想二極管的浪涌抑制控制器數(shù)據(jù)手冊
  14. 4.42 MB   |  8次下載  |  免費
  15. 8PC2466高電壓浪涌抑制器數(shù)據(jù)手冊
  16. 3.37 MB   |  8次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935132次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191401次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183345次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81591次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73816次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65990次下載  |  10 積分