這個問題問的好.
要想知道這個問題首先你要有些微控制器原理的知識,微控制器是如何執行的,微控制器的中斷是如何實現的?
微控制器執行時需要一些基本的資料,比如PC指標,還有一些棧資料,進位標識什麼的等等!
這些資料都儲存在固定的幾個暫存器裡的,每個微控制器都可能不同,但是差別不會太大
再有就是中斷了,中斷是實現多工的核心!中斷是如何運作的呢?當單片機發生中斷時,主函式會停止執行,接下來就是把執行用到的所有的資料,這個就是前面說的基本資料儲存起來,然後轉去中斷源執行中斷,等中斷完成了,在把剛剛儲存的資料恢復回去,主函式接著執行.
上面的過程中有個關鍵的地方就是資料儲存和恢復,儲存的資料都是主函式執行需要的比如主函式執行到哪裡了(PC地址),函式的呼叫關係(壓棧資料)!那如果我們把這部分資料複製出來儲存到我們自己的記憶體,然後在恢復的時候在複製回去!那如果我們多儲存幾份資料是不是就可以實現把CPU虛擬化了,等需要的任務執行時
我們就把對應的資料恢復到實體CPU的暫存器裡,這樣就完美的實現了偷樑換柱!CPU確不知道!只是繼續執行著!
所以ucos執行必須要求微控制器有中斷!沒有中斷是無法移植上去的!
真的感嘆設計者的聰明智慧!能把中斷利用的如此巧妙!
這個問題問的好.
要想知道這個問題首先你要有些微控制器原理的知識,微控制器是如何執行的,微控制器的中斷是如何實現的?
微控制器執行時需要一些基本的資料,比如PC指標,還有一些棧資料,進位標識什麼的等等!
這些資料都儲存在固定的幾個暫存器裡的,每個微控制器都可能不同,但是差別不會太大
再有就是中斷了,中斷是實現多工的核心!中斷是如何運作的呢?當單片機發生中斷時,主函式會停止執行,接下來就是把執行用到的所有的資料,這個就是前面說的基本資料儲存起來,然後轉去中斷源執行中斷,等中斷完成了,在把剛剛儲存的資料恢復回去,主函式接著執行.
上面的過程中有個關鍵的地方就是資料儲存和恢復,儲存的資料都是主函式執行需要的比如主函式執行到哪裡了(PC地址),函式的呼叫關係(壓棧資料)!那如果我們把這部分資料複製出來儲存到我們自己的記憶體,然後在恢復的時候在複製回去!那如果我們多儲存幾份資料是不是就可以實現把CPU虛擬化了,等需要的任務執行時
我們就把對應的資料恢復到實體CPU的暫存器裡,這樣就完美的實現了偷樑換柱!CPU確不知道!只是繼續執行著!
所以ucos執行必須要求微控制器有中斷!沒有中斷是無法移植上去的!
真的感嘆設計者的聰明智慧!能把中斷利用的如此巧妙!