uboot step 2 設定cpu為svc模式

2021-09-20 10:09:52 字數 1015 閱讀 3480

什麼是svc模式

首先,得說下arm的工作模式,如圖所示,處理器一般執行在user模式,當發生異常時,便會進入相應的模式去執行,svc模式即supervisor,管理模式,一般情況下是作業系統所執行的模式 此模式下處理器有許可權去訪問一些受保護的暫存器,因此我們需要將處理器設定為此模式來進行一些必要的初始化。

如何修改到svc模式

修改處理器的工作模式需要更改處理器的狀態暫存器cpsr的相應位,如下圖所示,cpsr的[0-4]位為mode位,當其值為10011=0x13時,即可設定為svc模式

**實現

set_svc:

mrsr0 ,cpsr

bicr0 ,#0x1f

orrr0 ,#0xd3 @理論上m[4-0]位為10011

0x13即可,此處為1101

0011 多了i,f,t:關閉了irq和fiq,處理器工作在arm模式

msr cpsr,r0

mov pc,lr

第一步: 將這5位全部清零 bic指令

第二步: 在給某些位置1 orr指令

同時這裡會用到msr指令 和 mrs指令

原因: 因為在訪問cpsr/spsr這兩個暫存器時 ,先要把暫存器匯入到通用暫存器當中做相應修改然後再寫入,而不能直接修改gpsr/spsr這兩個暫存器。

msr: 將通用暫存器的值寫入cpsr或者spsr暫存器

mrs: 將cpsr暫存器的值匯入到通用暫存器中

設定CPU主頻

define strict include include include inline unsigned int64 getcyclecount void class ktimer void start void unsigned int64 stop void int winapi winmai...

8s保留cpu設定 使用資源設定控制CPU資源

如果即使在前面討論過的所有方案之後也無法重新平衡cpu負載或提高處理器效率,那麼可能還有一些原因是保持主機cpu仍然飽和 它可以是資源池及其對vm的資源分配。許多應用程式 例如批處理作業 通過花費更長時間來完成但仍然產生正確且有用的結果來響應缺乏cpu資源。其他應用程式可能會遇到故障,或者在被拒絕足...

CPU 和 GPU頻率設定

在嵌入式裝置中為了降低功耗防止晶元發熱,廠商一般預設都將cpu和gpu頻率為最小,為了提高效能,減少演算法耗時需要手動將cpu或者gpu頻率設到效能模式。echo performance sys devices system cpu cpu0 cpufreq scaling governor,一般c...