為什麼U boot程式中要設定成svc模式?

2021-10-01 15:23:11 字數 516 閱讀 3683

特權模式

除使用者模式外,其它模式均為特權模式(privileged modes)。arm 內部暫存器 和一些 片內外設 在硬體設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而使用者模式不能直接切換到別的模式。

異常模式

特權模式中除系統(system)模式之外的其他5種模式又統稱為異常模式。它們除了可以通過在特權下的程式切換進入外,也可以由特定的異常進入。比如硬體產生中斷訊號進入中斷異常模式,讀取沒有許可權資料進入中止異常模式,執行未定義指令時進入未定義指令中止異常模式。其中管理模式也稱為超級使用者模式,是為作業系統提供軟中斷的特有模式,正是由於有了軟中斷,使用者程式才可以通過系統呼叫切換到管理模式。

使用者模式和系統模式

這二者共用一組暫存器。因此他們之間的切換不需要儲存暫存器的值也就不需要spsr暫存器。區分是,系統模式屬於特權模式,可以訪問所有系統資源。

u-boot中,要執行開啟時鐘,初始化記憶體,關閉看門狗能硬體操作,顯然需要處於可利用硬體的狀態,因此設定為svc模式是正確的選擇。

HashMap的負載因子為什麼不設定成1

為什麼hashmap的負載因子設定成0.75,而不是1也不是0.5?這背後到底有什麼考慮?在hashmap原始碼中 hashmap預設容量大小是16,最大容量是2的30次方,預設的負載因子是0.75f static final int default initial capacity 1 4 aka...

ABAP 程式呼叫設定成後台作業模式

data lt rspar type table of rsparams,ls rspar type rsparams,lv jobname type btcjob value z backjog 設定作業名稱 lv jobcount type btcjobcnt.add rspars 執行條件欄位...

String為什麼要設計成final

strings are constant their values cannot be changed after they are created.string buffers support mutable strings.because string objects are immutable...