interrupt under uC/OSII
p.62
這個地方用驅動程式底層當例子。
基本上很難看出有interrupt過,除非詳細看過時間。
使中斷enable的code出現在程式開始沒多少。
水藍色:
橘紅色:
(2)的OSInNesting是因為中斷可巢狀,但在OSInNesting==1才需要寫irt。
排程器如果發現目前task和要切過去的task相同,則直接return,不動作。跳(8)
(5)中斷
(6)沒有這行就不能巢狀中斷
同一類的中斷不要用nesting發生第二次,會rest condition。因為重要性一樣,就FIFO就好了。
巢狀是為了在優先權低的中斷發生時,讓高權重的中斷可以搶先。
通常低優先權的中斷不能在高優先權中段時搶先,不論軟硬體皆然。不過也只是"通常"。
例外:Timer沒那麼重要,但是對系統架構很重要,所以可搶先。
窩窩窩喔喔 ch3結束
ch4開始
規定"ISR內不可以create task"
OSTCBInit()用來填參數,沒有就塞0。
OSTaskCreatHook() 方便大家使用的plug-in,本身就是空的大括號。
沒有留言:
張貼留言
Check for typo before sending