TIMER 使用
前言
RK3399有12 個Timers (timer0-timer11),有12 個Secure Timers(stimer0~stimer11) 和 2 個Timers(pmutimer0~pmutimer1), 我們主要用到的是Timers(timer0-timer11)時鐘頻率為24MHZ ,工作模式有 free-running 和 user-defined count 模式
框架圖
工作模式
user-defined count:Timer 先載入初始值到 TIMERn_LOAD_COUNT3 和 TIMER_LOADn_COUNT2寄存器, 當時間累加的值在寄存器TIMERn_LOAD_COUNT1和TIMERn_LOAD_COUNT0時,將不會自動載入到計數(shù)寄存器。 用戶需要重新關閉計數(shù)器和然后重新設置計數(shù)器相關才能繼續(xù)工作。
free-running:Timer先載入初始值到TIMER_LOAD_COUNT3 和 TIMER_LOAD_COUNT2寄存器, 當時間累加的值在寄存器TIMERn_LOAD_COUNT1和TIMERn_LOAD_COUNT0時,Timer將一直自動加載計數(shù)寄存器。
軟件配置
1.在 dts 文件中定義 Timer 的相關配置 kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
rktimer: rktimer@ff850000 { compatible = "rockchip,rk3399-timer"; reg = <0x0 0xff850000 0x0 0x1000>; interrupts =
其中定義的Timer0 的寄存器和中斷號和時鐘等
其他Timer 對應的中斷號可看如下圖片
2.對應的驅(qū)動文件Kernel/drivers/clocksource/rockchip_timer.c
對應寄存器和使用
1.寄存器如下圖片
2.使用方式 查看對應寄存器
root@rk3399_firefly_box:/ # io -4 0xff85001c //查看當前控制寄存器的狀態(tài) ff85001c: 00000007 root@rk3399_firefly_box:/ # io -4 0xff850000 //查看寄存器時時的值 ff850000: 0001639f
控制對應寄存器
root@rk3399_firefly_box:/ # io -4 -w 0xff85001c 0x06 //關閉時間計數(shù)功能
-
嵌入式主板
+關注
關注
7文章
6083瀏覽量
35092 -
Firefly
+關注
關注
2文章
538瀏覽量
6946
發(fā)布評論請先 登錄
相關推薦
評論