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

電子發(fā)燒友App

硬聲App

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

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

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

uC/OS-II任務(wù)棧處理的一種改進(jìn)方法

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

資料介紹

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

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)