什麼是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...