天天看點

有關中斷喚醒源的思考

各位大佬好,如下是關于中斷喚醒系統的一個流程上的總結,由于這方面知識過于複雜,又牽扯到SOC廠商的設計,而且我也沒有做過這方面工作,是以一半來自文檔一半靠猜測,都不一定對,反正自己給自己解釋得通了。希望大佬們不小心刷到了本文,如果覺得是合理的,給個贊,如果看出明顯的錯誤,也幫忙指出下,不勝感激,多謝!

當一個

藍牙中斷

(如NS group 1中斷)做為喚醒源産生中斷時,此時的流程應當是這樣的:

  • Redistribute發生一個Wake Request給Power controller,Power controller給PE上電,即reset
  • 此時PE為最高異常級别,即EL3,PC指針指向RVBAR_EL3中的位址,也就是之前寫入的bl31_warm_entrypoint
  • 然後PE在ATF中繼續執行,在ATF(EL3)中, PE不會taken該

    藍牙中斷

    ,因為SCR_EL3.IRQ=0,目前有處于EL3級别,是以中斷不會被taken,中斷保持remains pending
  • 當ATF相關邏輯執行完畢後,退出ATF,傳回到REE側時,此時異常級别不再是EL3,變成了EL1,該中斷則會變為pending狀态,繼而再根據中斷優先級排序置為Active,然後檢查PSTATE,進而中斷被taken
  • 此時跳轉到REE側的中斷向量表,然後跳轉到

    藍牙中斷

    注冊的handler函數
有關中斷喚醒源的思考
有關中斷喚醒源的思考