思特雅大學 ucos ii是怎么實現(xiàn)多任務運行的?
ucos ii是怎么實現(xiàn)多任務運行的?這是一個很好的問題。要想知道這個問題,首先需要對單片機的原理有一定的了解,單片機是如何運行的,單片機的中斷是如何實現(xiàn)的?單片機運行時,需要一些基本數(shù)據(jù),如PC指針
ucos ii是怎么實現(xiàn)多任務運行的?
這是一個很好的問題。
要想知道這個問題,首先需要對單片機的原理有一定的了解,單片機是如何運行的,單片機的中斷是如何實現(xiàn)的?
單片機運行時,需要一些基本數(shù)據(jù),如PC指針、一些堆棧數(shù)據(jù)、進位標記等
!這些數(shù)據(jù)都存儲在幾個固定的寄存器中,每個相同的MCU可能會不同,但差別不會太大
這時就有中斷,中斷是多任務的核心!中斷是如何工作的?當MCU中斷時,主功能將停止運行,下一步是保存操作中使用的所有數(shù)據(jù),即上述基礎(chǔ)數(shù)據(jù),然后去中斷源執(zhí)行中斷,等待中斷完成以上過程中的關(guān)鍵點是數(shù)據(jù)的保存和恢復。主函數(shù)運行需要保存的數(shù)據(jù),例如主函數(shù)運行的位置(PC地址)、函數(shù)調(diào)用關(guān)系(堆棧數(shù)據(jù))!如果我們復制這部分數(shù)據(jù)并保存到自己的內(nèi)存中,那么如果我們再保存幾份數(shù)據(jù),是否可以虛擬化CPU,等待所需的任務運行
我們會將相應的數(shù)據(jù)還原到物理CPU的寄存器中,這樣我們就可以完美地達到偷梁換柱的目的!CPU真的不知道!它還在繼續(xù)運行
!所以UCOS操作必須要求MCU有中斷!不,不能移植
!我真的為設(shè)計師的智慧而嘆息!利用中斷真是太巧妙了!